sass-cms-template-common 0.0.13 → 0.0.14
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/index.d.ts +319 -28
- package/dist/index.js +1720 -1315
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +50 -0
- package/dist/server.js +2 -2
- package/dist/{services-DS4p6Tpl.js → services-DB5GX5UJ.js} +201 -92
- package/dist/services-DB5GX5UJ.js.map +1 -0
- package/package.json +1 -1
- package/dist/services-DS4p6Tpl.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/lib/version.ts","../src/lib/theme/material-theme.json","../src/lib/theme/createAppTheme.ts","../src/lib/theme/buttonStyles.ts","../src/lib/theme/selectStyles.ts","../src/lib/theme/fonts/Roboto-400.woff2","../src/lib/theme/fonts/Roboto-500.woff2","../src/lib/theme/fonts/Roboto-700.woff2","../src/lib/theme/fonts/ProductSans-Regular.ttf","../src/lib/theme/fonts/ProductSans-Italic.ttf","../src/lib/theme/fonts/ProductSans-Medium.ttf","../src/lib/theme/fonts/ProductSans-Bold.ttf","../src/lib/theme/fonts/ProductSans-BoldItalic.ttf","../src/lib/theme/fonts.ts","../src/lib/i18n/createTranslator.ts","../src/lib/i18n/messages/en.ts","../src/lib/i18n/messages/es.ts","../src/lib/i18n/messages/pt.ts","../src/lib/i18n/messages/index.ts","../src/lib/i18n/types.ts","../src/lib/i18n/normalizeLocale.ts","../src/lib/i18n/CmsI18nProvider.tsx","../src/lib/i18n/useCmsTranslation.ts","../src/lib/components/toast/CmsToast.styles.ts","../src/lib/components/toast/CmsToast.tsx","../src/lib/components/toast/CmsToastProvider.tsx","../src/lib/components/toast/useCmsToast.ts","../src/lib/components/link.tsx","../src/lib/components/sidebar/nav-helpers.ts","../src/lib/components/sidebar/nav-blocks.ts","../src/lib/components/sidebar/SidebarRail.styles.ts","../src/lib/components/sidebar/SidebarRail.tsx","../src/lib/utils/legacy-admin.ts","../src/lib/components/site-selector-menu/SiteSelectorMenu.styles.ts","../src/lib/components/site-selector-menu/SiteSelectorMenu.tsx","../src/lib/components/top-bar/AppearanceMenu.styles.ts","../src/lib/components/top-bar/TopBar.styles.ts","../src/lib/components/top-bar/AppearanceMenu.tsx","../src/lib/components/top-bar/newContentMenu.config.ts","../src/lib/components/top-bar/NewContentMenu.styles.ts","../src/lib/components/top-bar/NewContentMenu.tsx","../src/lib/components/top-bar/notificationsFeed.ts","../src/lib/components/top-bar/NotificationsMenu.styles.ts","../src/lib/components/top-bar/NotificationsMenu.tsx","../src/lib/components/dropdowns/SimpleDropdown.styles.ts","../src/lib/components/dropdowns/SimpleDropdown.tsx","../src/lib/components/top-bar/previewMenu.config.ts","../src/lib/components/top-bar/PreviewMenu.tsx","../src/lib/utils/cms-asset.ts","../src/lib/utils/profile-avatar.ts","../src/lib/components/user-avatar/UserAvatar.styles.ts","../src/lib/components/user-avatar/CurrentUserPhotoProvider.tsx","../src/lib/components/user-avatar/useCurrentUserPhoto.ts","../src/lib/components/user-avatar/UserAvatar.tsx","../src/lib/components/top-bar/ProfileMenu.tsx","../src/lib/components/top-bar/TopBarClock.tsx","../src/lib/components/top-bar/TopBar.tsx","../src/lib/components/shell/AppShell.styles.ts","../src/lib/components/shell/AppShell.tsx","../src/lib/components/sidebar/Sidebar.styles.ts","../src/lib/components/sidebar/Sidebar.tsx","../src/lib/components/error-page/CmsErrorPage.styles.ts","../src/lib/components/error-page/CmsErrorPage.tsx","../src/lib/components/mui-provider/CmsColorSchemeVars.tsx","../src/lib/components/mui-provider/CmsFontFaces.tsx","../src/lib/components/mui-provider/CmsMuiProvider.tsx","../src/lib/components/mui-provider/NextCmsMuiProvider.tsx","../src/lib/components/dropdowns/BtnDropdown.styles.ts","../src/lib/components/dropdowns/BtnDropdown.tsx","../src/lib/components/dropdowns/SelectDropdown.tsx","../src/lib/components/search/CmsSearchField.styles.ts","../src/lib/components/search/CmsSearchField.tsx","../src/lib/components/fields/fieldStyles.ts","../src/lib/components/fields/CmsCheckboxField.tsx","../src/lib/components/fields/FieldShell.tsx","../src/lib/components/fields/CmsComboboxField.tsx","../src/lib/components/fields/CmsDateField.styles.ts","../src/lib/components/fields/CmsDateField.tsx","../src/lib/components/fields/CmsMultiSelectField.tsx","../src/lib/components/fields/CmsNumberField.tsx","../src/lib/components/fields/CmsSelectField.tsx","../src/lib/components/fields/CmsTagsField.tsx","../src/lib/components/fields/CmsTextField.tsx","../src/lib/components/fields/FieldRenderer.tsx","../src/lib/components/advanced-search/CmsAdvancedSearch.styles.ts","../src/lib/components/advanced-search/defaultFields.ts","../src/lib/components/advanced-search/CmsAdvancedSearch.tsx","../src/lib/components/confirm-dialog/CmsConfirmDialog.styles.ts","../src/lib/components/confirm-dialog/CmsDialogActions.styles.ts","../src/lib/components/confirm-dialog/CmsDialogActions.tsx","../src/lib/components/confirm-dialog/CmsConfirmDialog.tsx"],"sourcesContent":["export const LIB_VERSION = '0.0.0' as const\n","{\n \"description\": \"TYPE: CUSTOM\\nMaterial Theme Builder export 2026-05-08 02:18:51\",\n \"seed\": \"#0067C4\",\n \"coreColors\": {\n \"primary\": \"#0067C4\",\n \"secondary\": \"#D8E2FF\",\n \"tertiary\": \"#B4BEDA\"\n },\n \"extendedColors\": [\n {\n \"name\": \"Bluestack color\",\n \"color\": \"#2962FF\",\n \"description\": \"primario de bluestack\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado publicada\",\n \"color\": \"#00C853\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado Redaccion\",\n \"color\": \"#0091EA\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado frescura\",\n \"color\": \"#30FF5D\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado Programado\",\n \"color\": \"#FF6D00\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado bloqueada\",\n \"color\": \"#D50000\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado borrador\",\n \"color\": \"#FFAB00\",\n \"description\": \"\",\n \"harmonized\": false\n }\n ],\n \"schemes\": {\n \"light\": {\n \"primary\": \"#536dfe\",\n \"surfaceTint\": \"#3E5F90\",\n \"onPrimary\": \"#FFFFFF\",\n \"primaryContainer\": \"#D5E3FF\",\n \"onPrimaryContainer\": \"#254777\",\n \"secondary\": \"#455E91\",\n \"onSecondary\": \"#FFFFFF\",\n \"secondaryContainer\": \"#D8E2FF\",\n \"onSecondaryContainer\": \"#2C4678\",\n \"tertiary\": \"#455E91\",\n \"onTertiary\": \"#FFFFFF\",\n \"tertiaryContainer\": \"#D8E2FF\",\n \"onTertiaryContainer\": \"#2C4678\",\n \"error\": \"#BA1A1A\",\n \"onError\": \"#FFFFFF\",\n \"errorContainer\": \"#FFDAD6\",\n \"onErrorContainer\": \"#93000A\",\n \"background\": \"#F9F9FF\",\n \"onBackground\": \"#191C20\",\n \"surface\": \"#F9F9FF\",\n \"onSurface\": \"#191C20\",\n \"surfaceVariant\": \"#E0E2EC\",\n \"onSurfaceVariant\": \"#43474E\",\n \"outline\": \"#74777F\",\n \"outlineVariant\": \"#C4C6CF\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#2E3035\",\n \"inverseOnSurface\": \"#F0F0F7\",\n \"inversePrimary\": \"#A8C8FF\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#001B3C\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#254777\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#001A42\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#2C4678\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#001A42\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#2C4678\",\n \"surfaceDim\": \"#D9D9E0\",\n \"surfaceBright\": \"#F9F9FF\",\n \"surfaceContainerLowest\": \"#FFFFFF\",\n \"surfaceContainerLow\": \"#F3F3FA\",\n \"surfaceContainer\": \"#EDEDF4\",\n \"surfaceContainerHigh\": \"#E7E8EE\",\n \"surfaceContainerHighest\": \"#E1E2E9\"\n },\n \"light-medium-contrast\": {\n \"primary\": \"#0F3665\",\n \"surfaceTint\": \"#3E5F90\",\n \"onPrimary\": \"#FFFFFF\",\n \"primaryContainer\": \"#4E6EA0\",\n \"onPrimaryContainer\": \"#FFFFFF\",\n \"secondary\": \"#193566\",\n \"onSecondary\": \"#FFFFFF\",\n \"secondaryContainer\": \"#546CA1\",\n \"onSecondaryContainer\": \"#FFFFFF\",\n \"tertiary\": \"#193566\",\n \"onTertiary\": \"#FFFFFF\",\n \"tertiaryContainer\": \"#546CA1\",\n \"onTertiaryContainer\": \"#FFFFFF\",\n \"error\": \"#740006\",\n \"onError\": \"#FFFFFF\",\n \"errorContainer\": \"#CF2C27\",\n \"onErrorContainer\": \"#FFFFFF\",\n \"background\": \"#F9F9FF\",\n \"onBackground\": \"#191C20\",\n \"surface\": \"#F9F9FF\",\n \"onSurface\": \"#0F1116\",\n \"surfaceVariant\": \"#E0E2EC\",\n \"onSurfaceVariant\": \"#33363D\",\n \"outline\": \"#4F525A\",\n \"outlineVariant\": \"#6A6D75\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#2E3035\",\n \"inverseOnSurface\": \"#F0F0F7\",\n \"inversePrimary\": \"#A8C8FF\",\n \"primaryFixed\": \"#4E6EA0\",\n \"onPrimaryFixed\": \"#FFFFFF\",\n \"primaryFixedDim\": \"#345586\",\n \"onPrimaryFixedVariant\": \"#FFFFFF\",\n \"secondaryFixed\": \"#546CA1\",\n \"onSecondaryFixed\": \"#FFFFFF\",\n \"secondaryFixedDim\": \"#3B5487\",\n \"onSecondaryFixedVariant\": \"#FFFFFF\",\n \"tertiaryFixed\": \"#546CA1\",\n \"onTertiaryFixed\": \"#FFFFFF\",\n \"tertiaryFixedDim\": \"#3B5487\",\n \"onTertiaryFixedVariant\": \"#FFFFFF\",\n \"surfaceDim\": \"#C5C6CD\",\n \"surfaceBright\": \"#F9F9FF\",\n \"surfaceContainerLowest\": \"#FFFFFF\",\n \"surfaceContainerLow\": \"#F3F3FA\",\n \"surfaceContainer\": \"#E7E8EE\",\n \"surfaceContainerHigh\": \"#DCDCE3\",\n \"surfaceContainerHighest\": \"#D0D1D8\"\n },\n \"light-high-contrast\": {\n \"primary\": \"#002C5A\",\n \"surfaceTint\": \"#3E5F90\",\n \"onPrimary\": \"#FFFFFF\",\n \"primaryContainer\": \"#274A79\",\n \"onPrimaryContainer\": \"#FFFFFF\",\n \"secondary\": \"#0B2A5B\",\n \"onSecondary\": \"#FFFFFF\",\n \"secondaryContainer\": \"#2E487A\",\n \"onSecondaryContainer\": \"#FFFFFF\",\n \"tertiary\": \"#0C2A5B\",\n \"onTertiary\": \"#FFFFFF\",\n \"tertiaryContainer\": \"#2F487A\",\n \"onTertiaryContainer\": \"#FFFFFF\",\n \"error\": \"#600004\",\n \"onError\": \"#FFFFFF\",\n \"errorContainer\": \"#98000A\",\n \"onErrorContainer\": \"#FFFFFF\",\n \"background\": \"#F9F9FF\",\n \"onBackground\": \"#191C20\",\n \"surface\": \"#F9F9FF\",\n \"onSurface\": \"#000000\",\n \"surfaceVariant\": \"#E0E2EC\",\n \"onSurfaceVariant\": \"#000000\",\n \"outline\": \"#292C33\",\n \"outlineVariant\": \"#464951\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#2E3035\",\n \"inverseOnSurface\": \"#FFFFFF\",\n \"inversePrimary\": \"#A8C8FF\",\n \"primaryFixed\": \"#274A79\",\n \"onPrimaryFixed\": \"#FFFFFF\",\n \"primaryFixedDim\": \"#093361\",\n \"onPrimaryFixedVariant\": \"#FFFFFF\",\n \"secondaryFixed\": \"#2E487A\",\n \"onSecondaryFixed\": \"#FFFFFF\",\n \"secondaryFixedDim\": \"#143162\",\n \"onSecondaryFixedVariant\": \"#FFFFFF\",\n \"tertiaryFixed\": \"#2F487A\",\n \"onTertiaryFixed\": \"#FFFFFF\",\n \"tertiaryFixedDim\": \"#153162\",\n \"onTertiaryFixedVariant\": \"#FFFFFF\",\n \"surfaceDim\": \"#B7B8BF\",\n \"surfaceBright\": \"#F9F9FF\",\n \"surfaceContainerLowest\": \"#FFFFFF\",\n \"surfaceContainerLow\": \"#F0F0F7\",\n \"surfaceContainer\": \"#E1E2E9\",\n \"surfaceContainerHigh\": \"#D3D4DB\",\n \"surfaceContainerHighest\": \"#C5C6CD\"\n },\n \"dark\": {\n \"primary\": \"#A8C8FF\",\n \"surfaceTint\": \"#A8C8FF\",\n \"onPrimary\": \"#05305F\",\n \"primaryContainer\": \"#254777\",\n \"onPrimaryContainer\": \"#D5E3FF\",\n \"secondary\": \"#AEC6FF\",\n \"onSecondary\": \"#112F60\",\n \"secondaryContainer\": \"#2C4678\",\n \"onSecondaryContainer\": \"#D8E2FF\",\n \"tertiary\": \"#AEC6FF\",\n \"onTertiary\": \"#122F60\",\n \"tertiaryContainer\": \"#2C4678\",\n \"onTertiaryContainer\": \"#D8E2FF\",\n \"error\": \"#FFB4AB\",\n \"onError\": \"#690005\",\n \"errorContainer\": \"#93000A\",\n \"onErrorContainer\": \"#FFDAD6\",\n \"background\": \"#111318\",\n \"onBackground\": \"#E1E2E9\",\n \"surface\": \"#111318\",\n \"onSurface\": \"#E1E2E9\",\n \"surfaceVariant\": \"#43474E\",\n \"onSurfaceVariant\": \"#C4C6CF\",\n \"outline\": \"#8E9199\",\n \"outlineVariant\": \"#43474E\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#E1E2E9\",\n \"inverseOnSurface\": \"#2E3035\",\n \"inversePrimary\": \"#3E5F90\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#001B3C\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#254777\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#001A42\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#2C4678\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#001A42\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#2C4678\",\n \"surfaceDim\": \"#111318\",\n \"surfaceBright\": \"#37393E\",\n \"surfaceContainerLowest\": \"#0C0E13\",\n \"surfaceContainerLow\": \"#191C20\",\n \"surfaceContainer\": \"#1D2024\",\n \"surfaceContainerHigh\": \"#282A2F\",\n \"surfaceContainerHighest\": \"#33353A\"\n },\n \"dark-medium-contrast\": {\n \"primary\": \"#CCDDFF\",\n \"surfaceTint\": \"#A8C8FF\",\n \"onPrimary\": \"#00254E\",\n \"primaryContainer\": \"#7292C6\",\n \"onPrimaryContainer\": \"#000000\",\n \"secondary\": \"#CFDCFF\",\n \"onSecondary\": \"#012455\",\n \"secondaryContainer\": \"#7790C7\",\n \"onSecondaryContainer\": \"#000000\",\n \"tertiary\": \"#CFDCFF\",\n \"onTertiary\": \"#022455\",\n \"tertiaryContainer\": \"#7890C7\",\n \"onTertiaryContainer\": \"#000000\",\n \"error\": \"#FFD2CC\",\n \"onError\": \"#540003\",\n \"errorContainer\": \"#FF5449\",\n \"onErrorContainer\": \"#000000\",\n \"background\": \"#111318\",\n \"onBackground\": \"#E1E2E9\",\n \"surface\": \"#111318\",\n \"onSurface\": \"#FFFFFF\",\n \"surfaceVariant\": \"#43474E\",\n \"onSurfaceVariant\": \"#DADCE5\",\n \"outline\": \"#AFB2BB\",\n \"outlineVariant\": \"#8D9099\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#E1E2E9\",\n \"inverseOnSurface\": \"#282A2F\",\n \"inversePrimary\": \"#264878\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#001129\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#0F3665\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#00102E\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#193566\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#00102E\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#193566\",\n \"surfaceDim\": \"#111318\",\n \"surfaceBright\": \"#42444A\",\n \"surfaceContainerLowest\": \"#06070C\",\n \"surfaceContainerLow\": \"#1B1E22\",\n \"surfaceContainer\": \"#26282D\",\n \"surfaceContainerHigh\": \"#303338\",\n \"surfaceContainerHighest\": \"#3B3E43\"\n },\n \"dark-high-contrast\": {\n \"primary\": \"#EAF0FF\",\n \"surfaceTint\": \"#A8C8FF\",\n \"onPrimary\": \"#000000\",\n \"primaryContainer\": \"#A4C4FB\",\n \"onPrimaryContainer\": \"#000B1F\",\n \"secondary\": \"#ECEFFF\",\n \"onSecondary\": \"#000000\",\n \"secondaryContainer\": \"#A9C2FC\",\n \"onSecondaryContainer\": \"#000A23\",\n \"tertiary\": \"#ECEFFF\",\n \"onTertiary\": \"#000000\",\n \"tertiaryContainer\": \"#A9C2FC\",\n \"onTertiaryContainer\": \"#000A23\",\n \"error\": \"#FFECE9\",\n \"onError\": \"#000000\",\n \"errorContainer\": \"#FFAEA4\",\n \"onErrorContainer\": \"#220001\",\n \"background\": \"#111318\",\n \"onBackground\": \"#E1E2E9\",\n \"surface\": \"#111318\",\n \"onSurface\": \"#FFFFFF\",\n \"surfaceVariant\": \"#43474E\",\n \"onSurfaceVariant\": \"#FFFFFF\",\n \"outline\": \"#EEF0F9\",\n \"outlineVariant\": \"#C0C2CC\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#E1E2E9\",\n \"inverseOnSurface\": \"#000000\",\n \"inversePrimary\": \"#264878\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#000000\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#001129\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#000000\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#00102E\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#000000\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#00102E\",\n \"surfaceDim\": \"#111318\",\n \"surfaceBright\": \"#4E5055\",\n \"surfaceContainerLowest\": \"#000000\",\n \"surfaceContainerLow\": \"#1D2024\",\n \"surfaceContainer\": \"#2E3035\",\n \"surfaceContainerHigh\": \"#393B41\",\n \"surfaceContainerHighest\": \"#45474C\"\n }\n },\n \"palettes\": {\n \"primary\": {\n \"0\": \"#000000\",\n \"5\": \"#001129\",\n \"10\": \"#001B3C\",\n \"15\": \"#00264E\",\n \"20\": \"#003061\",\n \"25\": \"#003B75\",\n \"30\": \"#004689\",\n \"35\": \"#00529E\",\n \"40\": \"#005EB3\",\n \"50\": \"#2777D5\",\n \"60\": \"#4A91F1\",\n \"70\": \"#76ACFF\",\n \"80\": \"#A8C8FF\",\n \"90\": \"#D5E3FF\",\n \"95\": \"#ECF1FF\",\n \"98\": \"#F9F9FF\",\n \"99\": \"#FDFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"secondary\": {\n \"0\": \"#000000\",\n \"5\": \"#061025\",\n \"10\": \"#111B30\",\n \"15\": \"#1B263B\",\n \"20\": \"#263046\",\n \"25\": \"#313B52\",\n \"30\": \"#3D475E\",\n \"35\": \"#48526A\",\n \"40\": \"#545E76\",\n \"50\": \"#6D7790\",\n \"60\": \"#8690AB\",\n \"70\": \"#A1ABC6\",\n \"80\": \"#BCC6E2\",\n \"90\": \"#D8E2FF\",\n \"95\": \"#EDF0FF\",\n \"98\": \"#F9F9FF\",\n \"99\": \"#FEFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"tertiary\": {\n \"0\": \"#000000\",\n \"5\": \"#061025\",\n \"10\": \"#111B30\",\n \"15\": \"#1B253B\",\n \"20\": \"#263046\",\n \"25\": \"#313B52\",\n \"30\": \"#3D475E\",\n \"35\": \"#48526A\",\n \"40\": \"#545E77\",\n \"50\": \"#6D7790\",\n \"60\": \"#8690AB\",\n \"70\": \"#A1ABC6\",\n \"80\": \"#BCC6E2\",\n \"90\": \"#D8E2FF\",\n \"95\": \"#EDF0FF\",\n \"98\": \"#FAF9FF\",\n \"99\": \"#FEFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"neutral\": {\n \"0\": \"#000000\",\n \"5\": \"#101114\",\n \"10\": \"#1A1C1E\",\n \"15\": \"#252629\",\n \"20\": \"#2F3033\",\n \"25\": \"#3A3B3E\",\n \"30\": \"#46474A\",\n \"35\": \"#525256\",\n \"40\": \"#5E5E62\",\n \"50\": \"#76777A\",\n \"60\": \"#909094\",\n \"70\": \"#ABABAF\",\n \"80\": \"#C7C6CA\",\n \"90\": \"#E3E2E6\",\n \"95\": \"#F1F0F4\",\n \"98\": \"#FAF9FD\",\n \"99\": \"#FDFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"neutral-variant\": {\n \"0\": \"#000000\",\n \"5\": \"#0D1117\",\n \"10\": \"#181C22\",\n \"15\": \"#22262D\",\n \"20\": \"#2D3038\",\n \"25\": \"#383B43\",\n \"30\": \"#43474E\",\n \"35\": \"#4F525A\",\n \"40\": \"#5B5E66\",\n \"50\": \"#74777F\",\n \"60\": \"#8E9199\",\n \"70\": \"#A8ABB4\",\n \"80\": \"#C4C6CF\",\n \"90\": \"#E0E2EC\",\n \"95\": \"#EEF0FA\",\n \"98\": \"#F9F9FF\",\n \"99\": \"#FDFBFF\",\n \"100\": \"#FFFFFF\"\n }\n }\n}\n","import { alpha, createTheme } from '@mui/material/styles';\nimport type { PaletteMode, PaletteOptions } from '@mui/material/styles';\n\nimport materialThemeSource from './material-theme.json';\nimport { fontFamilies } from './variables';\n\ntype SchemeDef = (typeof materialThemeSource)['schemes']['light'];\n\nfunction extendedColor(name: string): string | undefined {\n return materialThemeSource.extendedColors.find((e) => e.name === name)?.color;\n}\n\nfunction neutralToGrey(p: (typeof materialThemeSource)['palettes']['neutral']) {\n return {\n 50: p['98'],\n 100: p['95'],\n 200: p['90'],\n 300: p['80'],\n 400: p['70'],\n 500: p['60'],\n 600: p['50'],\n 700: p['40'],\n 800: p['30'],\n 900: p['20'],\n A100: p['90'],\n A200: p['80'],\n A400: p['60'],\n A700: p['40'],\n };\n}\n\nfunction schemeToPalette(mode: PaletteMode, scheme: SchemeDef): PaletteOptions {\n const onSurfaceToken = scheme.onSurface;\n\n return {\n mode,\n primary: {\n main: scheme.primary,\n light: scheme.primaryContainer,\n dark: scheme.onPrimaryContainer,\n contrastText: scheme.onPrimary,\n },\n secondary: {\n main: scheme.secondary,\n light: '#D8E2FF',\n dark: scheme.onSecondaryContainer,\n contrastText: scheme.onSecondary,\n },\n tertiary: {\n main: scheme.tertiary,\n light: scheme.tertiaryContainer,\n dark: scheme.onTertiaryContainer,\n contrastText: scheme.onTertiary,\n },\n error: {\n main: scheme.error,\n light: scheme.errorContainer,\n dark: scheme.onErrorContainer,\n contrastText: scheme.onError,\n },\n warning: {\n main: extendedColor('Estado Programado') ?? '#FF6D00',\n light: '#FF9E40',\n dark: '#C25400',\n contrastText: '#FFFFFF',\n },\n info: {\n main: extendedColor('Estado Redaccion') ?? '#0091EA',\n light: '#64B5F6',\n dark: '#0064B7',\n contrastText: '#FFFFFF',\n },\n success: {\n main: extendedColor('Estado publicada') ?? '#00C853',\n light: '#69F0AE',\n dark: '#009624',\n contrastText: '#FFFFFF',\n },\n brand: {\n main: extendedColor('Bluestack color') ?? '#2962FF',\n },\n text: {\n primary: scheme.onSurface,\n secondary: scheme.onSurfaceVariant,\n disabled: alpha(scheme.onSurface, 0.38),\n },\n divider: scheme.outlineVariant,\n background: {\n default: scheme.background,\n // En claro, `paper` es el blanco base (surfaceContainerLowest). En oscuro,\n // usamos una superficie elevada (surfaceContainerHigh) para que las cards\n // se lean por encima del fondo del shell y no queden \"hundidas\" en negro.\n paper:\n mode === 'dark'\n ? scheme.surfaceContainerHigh\n : scheme.surfaceContainerLowest,\n },\n action: {\n active: alpha(onSurfaceToken, 0.56),\n hover: alpha(onSurfaceToken, mode === 'light' ? 0.04 : 0.08),\n selected: alpha(scheme.primary, 0.12),\n focus: alpha(scheme.primary, 0.12),\n disabled: alpha(onSurfaceToken, 0.26),\n disabledBackground: alpha(onSurfaceToken, 0.12),\n },\n common: {\n black: scheme.shadow,\n white: '#FFFFFF',\n },\n grey: neutralToGrey(materialThemeSource.palettes.neutral),\n m3: {\n surfaceTint: scheme.surfaceTint,\n surfaceDim: scheme.surfaceDim,\n surfaceBright: scheme.surfaceBright,\n surface: scheme.surface,\n surfaceContainerLowest: scheme.surfaceContainerLowest,\n surfaceContainerLow: scheme.surfaceContainerLow,\n surfaceContainer: scheme.surfaceContainer,\n surfaceContainerHigh: scheme.surfaceContainerHigh,\n surfaceContainerHighest: scheme.surfaceContainerHighest,\n outline: scheme.outline,\n outlineVariant: scheme.outlineVariant,\n inverseSurface: scheme.inverseSurface,\n inverseOnSurface: scheme.inverseOnSurface,\n inversePrimary: scheme.inversePrimary,\n onBackground: scheme.onBackground,\n surfaceVariant: scheme.surfaceVariant,\n onSurfaceVariant: scheme.onSurfaceVariant,\n },\n };\n}\n\nexport function createAppTheme() {\n const lightPalette = schemeToPalette(\n 'light',\n materialThemeSource.schemes.light,\n );\n const darkPalette = schemeToPalette('dark', materialThemeSource.schemes.dark);\n\n return createTheme({\n cssVariables: {\n // Atributo explícito y legible: MUI togglea `data-mui-color-scheme=\"dark\"`\n // sobre <html>. Las CSS vars de `variables.ts` se enganchan a ese selector.\n colorSchemeSelector: 'data-mui-color-scheme',\n },\n defaultColorScheme: 'light',\n colorSchemes: {\n light: { palette: lightPalette },\n dark: { palette: darkPalette },\n },\n typography: {\n fontFamily: fontFamilies.roboto,\n },\n });\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows, sizes } from './variables';\n\n/**\n * Estilos de botón unificados de la librería.\n *\n * Define las dos variantes de botón pill del CMS y las piezas reutilizables\n * (superficie + hover) para que cualquier componente las componga sin repetir\n * colores ni medidas. `BtnDropdown` los usa para su botón principal y su flecha;\n * `sxPillButton` sirve para cualquier botón pill suelto.\n */\n\n/** Variante visual de los botones de la lib. */\nexport type CmsButtonVariant = 'cta' | 'white';\n\n/** Fondo, color de texto y borde según la variante (compartido por todas las piezas). */\nexport function cmsButtonSurface(variant: CmsButtonVariant): SxProps<Theme> {\n if (variant === 'white') {\n return {\n bgcolor: 'm3.surfaceContainerLowest',\n color: cmsColors.whiteBtnText,\n border: '1px solid',\n borderColor: cmsColors.whiteBtnBorder,\n };\n }\n return {\n bgcolor: cmsColors.primary,\n color: cmsColors.white,\n border: 'none',\n borderColor: 'transparent',\n };\n}\n\n/** Color de fondo en hover según la variante. */\nexport function cmsButtonHoverBg(variant: CmsButtonVariant): string {\n return variant === 'cta' ? cmsColors.primaryHover : 'action.hover';\n}\n\n/** Borde divisor (p. ej. entre botón principal y flecha de un split button). */\nexport function cmsButtonDivider(variant: CmsButtonVariant): string {\n return variant === 'white'\n ? cmsColors.whiteBtnBorder\n : 'rgba(255, 255, 255, 0.28)';\n}\n\n/** Botón pill completo y autónomo. Reutilizable en cualquier CTA de la lib. */\nexport function sxPillButton(variant: CmsButtonVariant = 'cta'): SxProps<Theme> {\n return {\n height: sizes.buttonHeight,\n px: '20px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontSize: 14,\n fontWeight: 500,\n minWidth: 0,\n gap: 1,\n boxShadow: shadows.button,\n ...(cmsButtonSurface(variant) as object),\n '& .MuiSvgIcon-root': { fontSize: 18 },\n '&:hover': {\n boxShadow: shadows.button,\n bgcolor: cmsButtonHoverBg(variant),\n },\n '&.Mui-disabled': {\n bgcolor:\n variant === 'white'\n ? 'm3.surfaceContainerLowest'\n : cmsColors.primaryDisabled,\n color: 'action.disabled',\n },\n };\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows, sizes } from './variables';\n\n/**\n * Estilos del `SelectDropdown` — el selector tipo \"vista/filtro\" del CMS\n * (mismo patrón visual que el dropdown \"Últimas Noticias\" del diseño).\n *\n * Vive en `theme/` (no junto al componente) porque es parte del set de estilos\n * compartidos y reutilizables: cualquier proyecto que consuma la librería puede\n * importarlo para construir un trigger/menú coherente con el sistema.\n *\n * Reglas de color (todas con variables de `variables.ts`):\n * - Trigger por defecto: borde `controlBorder` (#727784), texto `controlText`\n * (#000) en negrita, fondo transparente; hover → `controlHoverBg` (#F9F9FF).\n * - Trigger activo (abierto) o resaltado (valor activo): fondo `secondary`\n * (#D8E2FF), sin borde.\n * - Opción del menú: hover → `secondaryHover` (#E1E2EA); seleccionada →\n * fondo `secondary` (#D8E2FF). El menú es full-bleed (sin padding lateral ni\n * radio en los ítems): el resaltado llega de borde a borde.\n */\nexport const SelectStyles = {\n /**\n * Disparador outlined con label + chevron. Se rellena con `secondary` cuando\n * está abierto (`open`) o resaltado (`highlighted`, valor activo).\n */\n sxTrigger: (highlighted: boolean, open: boolean): SxProps<Theme> => {\n const filled = highlighted || open;\n return {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '10px',\n height: sizes.buttonHeight,\n pl: '16px',\n pr: '10px',\n borderRadius: radii.md,\n textTransform: 'none',\n fontSize: 14,\n // La negrita va en el input principal, no en la opción activa del menú.\n fontWeight: 600,\n minWidth: 0,\n border: '1px solid',\n color: cmsColors.controlText,\n bgcolor: filled ? cmsColors.secondary : 'transparent',\n borderColor: filled ? 'transparent' : cmsColors.controlBorder,\n '&:hover': {\n bgcolor: filled ? cmsColors.secondary : cmsColors.controlHoverBg,\n borderColor: filled ? 'transparent' : cmsColors.controlBorder,\n },\n '& .sel-lead': {\n display: 'inline-flex',\n },\n '& .sel-lead .MuiSvgIcon-root': { fontSize: 18, width: 18, height: 18 },\n '& .sel-chevron': {\n display: 'inline-flex',\n color: 'm3.onSurfaceVariant',\n transition: 'transform 0.18s ease',\n transform: open ? 'rotate(180deg)' : 'none',\n },\n '& .sel-chevron .MuiSvgIcon-root': { fontSize: 18 },\n };\n },\n\n /** Paper sin padding lateral: los ítems llegan de borde a borde. */\n sxMenuPaper: (minWidth: number | string): SxProps<Theme> => ({\n mt: 0.75,\n py: '8px',\n px: 0,\n minWidth,\n borderRadius: radii.lg,\n bgcolor: 'm3.surfaceContainerLowest',\n border: '1px solid',\n borderColor: 'm3.outlineVariant',\n boxShadow: shadows.menuSoft,\n overflow: 'hidden',\n }),\n\n sxList: {\n p: 0,\n display: 'flex',\n flexDirection: 'column',\n } as SxProps<Theme>,\n\n /**\n * Ítem full-bleed (sin radio): hover → `secondaryHover`; activo → `secondary`.\n * Peso normal incluso en la opción activa (la negrita vive en el trigger).\n */\n sxItem: (selected: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n px: '16px',\n py: '10px',\n borderRadius: 0,\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 400,\n color: cmsColors.textNav,\n bgcolor: selected ? cmsColors.secondary : 'transparent',\n // El color del ícono lo define cada opción (`iconColor`) desde el\n // componente; acá solo se ajusta el ancho para que pegue al label.\n '& .MuiListItemIcon-root': {\n minWidth: 0,\n },\n '& .MuiSvgIcon-root': { fontSize: 18, width: 18, height: 18 },\n '&:hover': {\n bgcolor: cmsColors.secondaryHover,\n },\n '&.Mui-selected': {\n bgcolor: cmsColors.secondary,\n '&:hover': { bgcolor: cmsColors.secondaryHover },\n },\n }),\n};\n","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/ttf;base64,AAEAAAARAQAABAAQR1BPU4MNpswAAAEcAAA6WEdTVUIhPy2IAAA7dAAABepPUy8ya4P0iwAAQWAAAABgY21hcCk50TgAAEHAAAABmGN2dCAVrwh3AABDWAAAAGxmcGdtkkHa+gAAQ8QAAAFhZ2FzcAAYACEAAEUoAAAAEGdseWbqz23gAABFOAAAqVBoZG14YWA5OAAA8MAAAEtoaGVhZBp/TnsAATwoAAAANmhoZWEP5wxDAAE8YAAAACRobXR4fYwqAAABPIQAAARsbG9jYfU1HeAAAO6IAAACOG1heHADOAQEAAFA8AAAACBuYW1lIFA89gABQRAAAAG4cG9zdCNfmHMAAULIAAAEe3ByZXD2229OAAFHRAAAAYIAAQAAAAoAVAB0AARERkxUABpjeXJsACZncmVrADJsYXRuAD4ABAAAAAD//wABAAAABAAAAAD//wABAAEABAAAAAD//wABAAIABAAAAAD//wABAAMABGtlcm4AGmtlcm4AGmtlcm4AGmtlcm4AGgAAAAEAAAABAAQAAgAAAAIACgDIAAEAJgAEAAAADgBGAKwAVABeAGwAbAByAHwAjgCYAKIArACyALgAAQAOAAYAEAAdACMAJAAlACYAJwAoACsAMAAyAKUAyQADAE7/2ABR/7AApf/sAAIAI//iACX/9gADACQACgAnAAoAKAAFAAEAI//2AAIADP/2ACP/9gAEAAn/9gAK//YADP/2ACP/7AACAAr/9gAj/+IAAgAm/+IAKP/sAAIAI//sACT/9gABACP/4gABAAL/zgABAAL/9gACNDYABAAANL427ABZAEsAAP/2//H/8f/s//b/9v/2//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/i/87/7P/s/9gAAAAA/9j/zgAA/9gAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAP/2AAD/9gAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAA/84AAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/5z/fv/sAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/2/+IAAP/s/84AAAAAAAAAAAAAAAAAAAAA/+IAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/7AAAAAA//YAAP/Y/+z/2AAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAA/8QAAP/O/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/YAAAAAP/i/9gAAAAAAAAAAAAAAAAAAAAA/9gAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7P/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/sAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/i/84AAAAAAAAAAAAA/84AAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/O/5z/4v/E/8T/2P/E/87/2AAAAAD/4gAA/5IAAP/EAAAAAP/OAAD/2AAA/6YAAP+m/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/9j/2AAA/87/7P/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//YAAP/2AAD/9v/s/+z/2P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/E/7AAAAAA/87/7P/O/+IAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAA/7AAAP/O/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/7oAAP/d/93/5//O/9j/0wAAAAAAAAAA/7X/9v/xAAAAAAAAAAAAAAAA/7//2P/O//YAAAAAAAD/xAAAAAAAAP+w/87/4gAAAAAAAAAAAAAAAAAAAAAAAP/2/87/pv/Y/+z/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/7oABQAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/2//YAAP/2AAD/9v/2/+wAAP/x/+IAAAAAAAAAAAAA/+z/+wAA//b/7P/2AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAD/xAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/7P/i/+L/8f/s/+z/7AAAAAAAAAAAAAD/8f/sAAAAAP/2AAD/9v/2AAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//b/9gAAAAAAAP/2AAD/9gAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAP/7AAD/+//i/9j/9v/s/+L/9v/x/+wAAP/2/+L/9v/2/+L/9v/2AAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAP/2AAAAAAAAAAD/7AAAAAD/4gAA/+wAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/8f/s/+z/9v/s//b/7AAAAAD/9gAAAAD/9v/sAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/2AAD/9gAAAAAAAAAA/+wAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/7P/2//b/7P/s//b/7P/E/7r/pv/2AAD/7P/i/87/4v/s/8T/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAX/9gAAAAAAAP/2//b/7AAAAAAAAAAA/+cAAAAA/9j/7P/EAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/2/+wAAP/2//b/9v/2/+z/9v/s/+wAAP/7/+wAAAAA/+z/9gAA/+f/7P/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/7AAAAAD/2AAA//YAAAAA//YAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/2//H/8f/s//b/9v/2//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//H/8f/s//b/9v/2//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAP/2AAAAAP/2//H/9v/2AAD/+//2/+z/7AAAAAAAAP/2AAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/iAAD/9v/i/9j/7P/T/+L/2AAAAAD/9gAAAAD/9v/sAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAP/O/+wAAAAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAP/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/x/8QAAP/Y/9P/9v/O/+L/2AAAAAAAAAAA/6b/9gAAAAAAAP/2AAAAAAAA/7X/xP/Y//YAAAAA/+z/sAAAAAAAAP+6/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/nAAA/+z/4v/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+IAAAAA//YAAP/7AAD/9v/s/9j/9v/d/9gAAAAA/+wAAAAA/9j/9gAA/+L/9v/2AAAAAAAAAAD/9gAAAAAAAAAA//YAAP/7//b/+wAAAAAAAP/7AAAAAAAAAAD/2AAA//YAAAAA/+wAAP/EAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/7AAAAAD/9gAAAAAAAP+6/5L/fv/s/+L/5//d/7D/xP/x/6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAD/7P/s/9gAAAAA/7r/2P+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//2/+z/9gAAAAAAAAAAAAD/9gAA/+z/9v/2AAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/i/+wAAP/2AAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/n/+f/8f/x//b/7P/2//YAAP/2/+IAAAAAAAAAAAAA//YAAAAA//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAD/tf/i/9j/xP+//7r/xP+//6b/kgAAAAD/xP+w/8T/uv+w/5L/2P/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAX/2AAA//YAAP/E/9j/xP/YAAAAAP/Y/+IAAAAAAAD/zv+w/+L/2P/YAAAAAAAAAAAAAP/sAAD/sAAAAAD/9v/Y/+IAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAD/zv/s//b/3f/2AAD/9v+6/7D/nAAAAAD/zv/O/7D/zv/T/6b/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/7AAA//YAAP/Y/8T/4v/iAAAAAP/Y/+L/9gAAAAD/xP+w/+L/4v/Y/+z/9gAAAAAAAP/sAAD/4gAAAAAAAP/sAAD/7AAAAAAAAP/2AAD/2P/i/+z/4v/s/+z/9v/T/8T/ugAAAAD/zv/J/8T/2P/Y/7r/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/7P/2AAAAAP/Y/+L/4v/2AAAAAP/s/+IAAAAA/8T/2P/O//b/7P/sAAAAAAAAAAAAAP/sAAD/4gAAAAAAAP/iAAAAAP/2AAAAAP/dAAAAAP/s/+L/7P/i/+L/zgAAAAD/7AAAAAD/7P/nAAAAAP/sAAAAAAAAAAD/7AAAAAAAAAAAAAD/4gAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/2/9gAAP/2/+wAAP/Y/+wAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAAAAP/sAAD/9gAAAAD/9gAAAAAAAAAAAAAAAP/YAAD/q//O/9j/tf/O/87/2P+1/5z/iAAAAAD/pv+c/7D/xP+r/5z/2P/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/9j/zgAAAAD/9v+6/8T/uv/OAAAAAP/Y/9gAAAAAAAD/sP/E/8T/zgAA//YAAAAAAAAAAP/YAAD/uv/iAAD/8f/Y/+L/9v/sAAAAAP/sAAAAAP/2/+z/9v/s/+L/4gAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//2//YAAP/2//b/9gAAAAAAAAAAAAD/+//7AAAAAP/7AAD/+wAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//H/+//x//b/7AAAAAAAAAAAAAAAAAAAAAAAAP/7/+z/8f/2AAD/xAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAP/7//v/+//7AAAAAP/7AAD/9gAAAAD/xAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAA//sAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAD/+wAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAP/sAAAAAP/s/9gAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAA/9gAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP+IAAAAAAAAAAAAAAAAAAAABf/2//EAAP/2//b/9gAAAAAAAAAAAAAABQAFAAAAAAAFAAD/9v/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/s//b/9gAAAAAAAAAAAAAAAAAAAAD/5//i/7r/4v/s/8QAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2ABT/9gAAAAAAAP/2AAAAAP/sAAAAAAAA/+wAAAAA/+wAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAABQAAAAAAAD/+wAA//v/+wAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAP/7AAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAP/2AAD/9gAAAAAAAAAAAAAAAAAA/+wAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/sAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAD/4gAAAAAAAP/i/7oAAAAAAAAAAAAAAAD/4gAA/9gAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAA//sAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAA//sAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAP/7AAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/xAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAAAAUAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAP/7AAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//7//YAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/+//2/+cAAP/s//b/9gAAAAAAAAAA/9j/+wAAAAAAAP/7AAD/+wAA/+L/7P/2AAAAAAAAAAD/4gAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/+//2//b/7AAAAAAAAAAAAAAAAAAAAAAAAP/7/+z/9v/2AAD/2AAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAP/2//b/9v/7AAAAAP/2AAD/9gAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAAAA/+wAAAAAAAAAAAAAAAAAAP/x/+z/+//2//b/7AAAAAAAAAAAAAAAAAAAAAAAAP/7/+z/9v/2AAD/4gAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAP/7//v/+//7AAAAAP/7AAD/+wAAAAD/xAAAAAAAAAAA/+IAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAP/s/7AAAP/Y/8QAAP/O/+L/2AAAAAAAAAAA/7AAAAAAAAAAAAAAAAAAAAAA/8QAAP/E//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/84AAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAP/i/9gAAP/Y/9j/zgAAAAAAAAAA/8QAAAAAAAD/zgAAAAAAAAAA/7oAAP/YAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/E/4j/sAAAAAD/4v/EAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAP/YAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAP/i/+z/2P/i/+z/7P/E/4j/zgAAAAD/2P/OAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/i/+L/4gAAAAAAAP/iAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAoAAAAKAAoACgAAAAAAAAAAAAD/5//i/6b/zv/s/7oACv/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAA/+IAAAAA/9gAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAA//sAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//v/+//7AAAAAP/7AAD/+wAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAP/O/5z/sAAAAAD/2P/Y/5IAAP/i/7oAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAD/ugAAAAAAAP/E/+wAAP/2/84AAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/xP/iAAD/zv/i/+L/7P+6/4j/kgAAAAD/uv+wAAAAAP/E/0L/4v/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y//b/2AAA/+wAAP/YAAAAAAAAAAAAAAAA/84AAAAAAAD/xAAAAAAAAP/YAAAAAP/2AAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAP/s/9gAAP/sAAAAAAAAAAAAAP/i/9j/xP/s/9gAAAAAAAAAAAAAAAAAAAAA/9gAAP/Y/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/9gAK//sAAAAFAA8ABQAAAAAAAAAAAAD/+//7AAAAAAAKAAAADwAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAF//YAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/+wAFAAUAAAAAAAAAAAAAAAAAAAAAAAD/+//7AAAAAP/7//YAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8f/x/87/zv/2/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+IAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+L/4gAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8f/xAAAAAP/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/s/7r/zv/2/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/7AAA/+IAAAAA/8QAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAUABQAKAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAKAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAMAKQAbAPgAAwAqABsA+QADACsAGwABAAQA6AACADAAAQAEAOsAAgAwAAQACgASABoAIADvAAMAHwAaAPAAAwAfABsA7wACABoA8AACABsAAwAIAA4AFADmAAIAHwDsAAIAIQDqAAIATgABAAQA7QACADAAAgAGAAwA6QACAC4A5wACADAAAQAHABoAHwAhACwALgBOAG4ABAAAAAEACAABAMIAAwAMAJQAsAAPACAAKAAwADgAQABIAFAAWABeAGQAagBwAHYAfACCAQUAAwBYAFQBBgADAFgAWgEHAAMAWABbAQgAAwBYAFwBCQADAFgAXQEKAAMAWABeAQsAAwBYAGYBAwACAFQBBAACAFgBDAACAFoAqgACAFsBDQACAFwBDgACAF0AqwACAF4BDwACAGYAAwAIABAAFgERAAMAWABYARAAAgBYARIAAgBmAAIABgAMARMAAgBYARQAAgBmAAEAAwBYAGQAZgAEAAAAAQAIAAEACAABAA4AAQABAFkAAgAGAA4BFwADAF4AVwEWAAMAYQBhAAEAAAABAAgAAQA4AMYABAAAAAEACAABAAgAAQAOAAEAAQBeAAEABAEYAAQAYQBZAGEAAQAAAAEACAABAAYAyAABAAEAUQAEAAAAAQAIAAEACAABAA4AAQABAGYAAQAEARoABABXAGoAZgABAAAAAQAIAAEABv+nAAEAAQBqAAAABAJGAZAABQAAAooCWAAAAEsCigJYAAABXgBUASYAAAILBAMDBQIEAgOAAAKHAAAAEAAAAAAAAAAAR09PRwHAAAD4/wPA/wMAAAPGATIgAAGfAAAAAAHqAswAAAAgABAAAAACAAAAAwAAABQAAwABAAAAFAAEAYQAAAAqACAABAAKAAAADQB+AP8BMQFTAsYC2gLcIBQgGiAeICIgJiA6IEQgdCCsIhIiFf//AAAAAAANACAAoAExAVICxgLaAtwgEyAYIBwgIiAmIDkgRCB0IKwiEiIV//8A1//7//IAAP+g/17+DP37/ffgnwAAAADgc+CG4IPgduBv4A/d/t7ZAAEAAAAAAAAAJAAAAAAAAAAAAAAAAADWANoAAAAAAAAAAAAAAAAAAAAAAAAA2ACmAJIAkwDgAJ8ADwCUAJsAmQChAKgApwDhAJgA1ACRAJ4ADgANAJoAoACWAL4A1gALAKIAqQAKAAkADAClAK0AwwDBAK4AcQByAJwAcwDFAHQAwgDEAMkAxgDHAMgAAQB1AM0AygDLAK8AdgARAJ0A0ADOAM8AdwAEAAYAlwB5AHgAegB8AHsAfQCjAH4AgAB/AIEAggCEAIMAhQCGAAIAhwCJAIgAigCMAIsAuACkAI4AjQCPAJAABQAHALkAtgC3AL8AtAC1AMAAFABYAFYAVABSAEoATACCAIgAcABDAOIASABAADwAaABhAIAAfgAqAHIAMAAsADgANQF2AVYA5gDoADoAmAChAKYAaABwAAAAAAAQ/ygAEP8DAAEB6gAQAswAEAKsABACAAACAyUAAQMIAACwACxLsAlQWLEBAY5ZuAH/hbBEHbEJA19eLbABLCAgRWlEsAFgLbACLLABKiEtsAMsIEawAyVGUlgjWSCKIIpJZIogRiBoYWSwBCVGIGhhZFJYI2WKWS8gsABTWGkgsABUWCGwQFkbaSCwAFRYIbBAZVlZOi2wBCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv/S2wBSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktsAYsICBFaUSwAWAgIEV9aRhEsAFgLbAHLLAGKi2wCCxLILADJlNYsEAbsABZioogsAMmU1gjIbCAioobiiNZILADJlNYIyGwwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kgsAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtsAksS1NYRUQbISFZLQAAAAABAAMACAAKABAABf//AA8AAgBIAAAB8gLMAAMABwAysgAFAyuyBAEDKwCwAEVYsAYvG7EGLD5ZsABFWLAFLxuxBSQ+WbEADvSwBhCxAw70MDE3IREhASERIYgBKv7WAWr+VgGqPAJU/XACzAACADgAAALKAswADAAZAG+yDQUDK7IAEgMrsAUQsAjQsA0QsBfQALAARViwCi8bsQosPlmwAEVYsAMvG7EDJD5Zsg0DChESObANL7KPDQFdsl8NAV20Hw0vDQJxsAXQsAUvsA0QsRcG9LAI0LAIL7ADELEPAfSwChCxFQH0MDEBFAYrAREjNTMRMzIWBRUzMjY1NCYrARUzFQLKx6TbTEzbpMf+Fn99kJB9f8gBZqHFAT9MAUHGx+ePf36Q6UwAAAACACj/8AITAtQAHgAuAMmyIwgDK7IAKwMrALAARViwGC8bsRgsPlmwAEVYsAQvG7EEJD5ZsgwYBBESObAML7JQDAFdsg4MBBESObISDBgREjmwEi9AFQ8SHxIvEj8STxJfEm8SfxKPEp8SCl2yGxgMERI5fLAbLxiyoBsBXbLAGwFdsRwK9EAJvxzPHN8c7xwEXbIREhwREjmwEhCxEwr0QAmwE8AT0BPgEwRdshQTGxESObAYELEXBvSyGhsTERI5sh0cEhESObAMELEfAvSwBBCxJwH0MDEBFAcGIyInJjU0NzYzMhc3JicHJzcuASc3Fhc3FwcWByIHBhUUFxYzMjc2NTQnJgITRENvZUhIRkZiUiwEIzyBHFYZNx4fY0hlHEOH9EIrLCsrQUAsLCwsAQR7TUxISWdoRUUvA08yOUMmDRQHTRsyLUIeg0wtLkNELi0tL0NDLi0AAAABACoAAAImAswADQBtsgwDAyuwAxCwBtCwDBCwCdAAsABFWLAILxuxCCw+WbAARViwAS8bsQEkPlmxAAH0sgQBCBESObAEL7IKCAEREjmwCi+xCwr0sgMECxESObAEELEFCvSyBgUKERI5sgkKBRESObIMCwQREjkwMSUVIREHJzcRMxE3FwcVAib+bkAqalx9KqdYWAEVKENCAVr+5k5EaPwA//8ADAAAAkYDhAImAEsAAAEHAJoAYwC4ABQAtC8LPwsCXbJwCwFdsrALAV0wMQAA//8ABP8oAe4CzAAmAJo6AAAGAGsAAAAAAAIASAAAAhwCzAAKABkAUrIMDQMrshUGAyuwDBCwAdCwAS+wENCwEC8AsABFWLAPLxuxDyw+WbAARViwDC8bsQwkPlmyGQwPERI5sBkvsQIB9LIRDwwREjmwES+xCgH0MDETFTMyNzY1NCcmIwMVIxEzFTMyFxYVFAcGI6SaNyQlJSQ3mlxcmF1BQkJAXgH6+iUlMzIlJv6uqALMej4+WVs9PQAAAgA4/ygCJALMAA8AJgBjshYXAyuyIwQDK7AWELAM0LAa0ACwAEVYsBkvG7EZLD5ZsABFWLAfLxuxHyo+WbAARViwFi8bsRYmPlmwAEVYsBAvG7EQJD5ZsQAD9LAfELEIA/SyExAfERI5shwfEBESOTAxJTI3NjU0JyYjIgcGFRQXFhciJicjFxUjETMVBzM+ATMyFxYVFAcGASxCLS0tLUJDLSwsLVI2WRgEBFxcBAQYWTZhQ0VFQ0QyMU5NMjIyMk1OMjFULiZE2AOk4kQmLkxNbG1MTAD//wAw//gC0ALUACcA2gG8AAAAJwC6AQwAAAAGANkYAP//ADD/+AKoAtQAJwDdAWsAAAAnALoBFAAAAAYA2RgA//8AGAFeALYCzAIGANkAAP//ADD/+AMDAtQAJwDdAcYAAAAnALoBYwAAAAYA3BgA//8AGAFWASMC1AIGANwAAP//ABgBXgEUAtQCBgDbAAAAAgBI/4gAnAL0AAMABwAfsgQHAyuwBBCwAdCwBxCwAtAAsAAvsAUvsgQBAyswMRMRIxETESMRnFRUVAL0/oQBfP4w/mQBnAAAAQA4AOkB7gE1AAMACgCwAS+xAAb0MDEBFSE1Ae7+SgE1TEwAAQA8AEEB4gHdAAsAY7IKBAMrsAoQsADQsAQQsAbQALADL7AE0D2wBC8YsADQsAMQsAHQsAEvsAMQsAfcsgIDBxESObIIBwMREjmyBQgCERI5sAbQPbAGLxiwBxCwCdCwCS+wBhCwCtCwBRCwC9AwMSUHJwcnNyc3FzcXBwHiM6CgM5+fM6CgM590M5ycM5ubM5ycM5sAAAACADD/+gC4AswABQARAC6yBgwDK7IEAwMrALAARViwAy8bsQMsPlmwAEVYsAkvG7EJJD5ZsQ8I9LAA3DAxNyMDNTMVExQGIyImNTQ2MzIWmEgKXBYnHRwoKBwdJ94BDOLi/lQcKCgcHScnAAACACwB6gEUAswAAwAHAC2yAAMDK7IEBwMrALAARViwAC8bsQAsPlmxAQv0sAbQsAYvsAAQsAfQsAcvMDETFSM1MxUjNYBU6FQCzOLi4uIAAAIAFwAAAmACrAADAB8BBLIICQMrsgQFAyuwCBCwB9CwANCwBRCwBtCwAdCwAtCwABCwA9CwCRCwCtCwDdCwDtCwEdCwEtCwAxCwFNCwE9CwAhCwFdCwFtCwBBCwH9CwHNCwG9CwGNCwF9AAsABFWLAQLxuxECo+WbAARViwFC8bsRQqPlmwAEVYsBgvG7EYKj5ZsABFWLASLxuxEi4+WbAARViwFi8bsRYuPlmwAEVYsAQvG7EEJD5ZsABFWLAILxuxCCQ+WbAYELECBvSyDQIIERI5sA0vsADQsAAvsAIQsAPQsA0QsQoG9LAH0LAHL7ADELAO0LAP0LAa0LAb0LANELAc0LAd0LAHELAf0LAfLzAxEzM3IxMjNyMHIzcjNzM3IzczNzMHMzczBzMHIwczByPuiBSImlAeiB5QHnsNehR9DHwdUB2IHVAdewx6FH0MfQEXh/5iy8vLTIdMwsLCwkyHTAAAAAMAGP+cAe0DEAAFAAoAKwDHsikGAyuyABkDK7ILDgMrsA4QsBXQsALQsAsQsAnQsBkQsBHQsAAQsBLQsAIQsBzQsAkQsCbQsB/QsCkQsCLQsAYQsCPQALAARViwHC8bsRwuPlmwAEVYsAsvG7ELJD5ZsggLHBESObAIELEmEPSwAtCwHBCxAwH0sAsQsQkB9LALELAM3LALELAO0LIRCxwREjmyEgkDERI5sAkQsBXQsAgQsBbQsBwQsB3csBwQsB/QsiIcCxESObIjAwkREjmwAxCwJdAwMRMUFzUOAQE0JxU2BxUjNS4BJzceARc1LgE1NDY3NTMVHgEXByYnFR4BFRQGjVwqMgEEXFxcTExyE1IMRS5kVGZSTD5bEFISRWZSYwIFPC3FBzL+jD4qzxVvV1YKYkshMEUK8ChhQUdnCFVYCkoyIz4R4StcQE9nAAUAIP/wAw4CvAAPABMAIQAxAD8AkLIbCAMrsgAUAyuyOSoDK7IiMgMrshESAyuyEBMDKwCwAEVYsAwvG7EMLj5ZsABFWLATLxuxEy4+WbAARViwJi8bsSYkPlmwAEVYsBEvG7ERJD5ZsAwQsATcsBMQsBDQPbAQLxiwERCwEtA9sBIvGLAMELEXCvSwBBCxHwr0sCYQsC7csTUK9LAmELE9CvQwMQEUBwYjIicmNTQ3NjMyFxYlAScBBTQmIyIHBhUUFxYzMjYBFAcGIyInJjU0NzYzMhcWBzQmIyIHBhUUFxYzMjYBdjMyRkU0MjIzRkYyMwEb/kQ5Ab3+0zcqKRwcHBwpKjcB4jMyRkU0MjIzRkYyM0o3KikcHBwcKSo3AhFGMzIyNEVGMjMzMjf9aiUCl6MtOx4dLS0dHjv+t0YzMjI0RUYyMzMyRi07Hh0tLR0eOwACACT/8AJVAtwAHgAnANiyHwgDK7ITFAMrsh4dAyuyAQIDK7INCB8REjmwDS+wGdyyAAEZERI5sgMCDRESObILDQIREjmyHBkBERI5siQCDRESObIlDQIREjkAsABFWLAQLxuxECw+WbAARViwAi8bsQIkPlmwAEVYsAUvG7EFJD5ZsBAQsRYB9LIDBRYREjmyHRAFERI5sB0vsB7QPbAeLxiyAAMeERI5sAIQsAHQPbABLxiyCxAFERI5sAsvshsLFhESObIcFgUREjmwBRCxIgP0siQcIhESObALELAl0D2wJS8YMDElFwcnBiMiJjU0NjcmNTQ2MzIWFwcmIyIGFRQXEzcXBRQWMzI3Aw4BAgJDRTFJXW2YQzk0Zkc5VBNPHDUjLRftQEj+I2ZLRyzJKjF8WDRBQZJrP3EjQzREYUE4KksqIyIe/sprLBNIYTABCRdOAAAAAAEALAHqAIACzAADABmyAAMDKwCwAEVYsAAvG7EALD5ZsQEL9DAxExUjNYBUAszi4gAAAAABAED/eAE2AwwAEQAksgQNAysAsBEvsAkvsBEQsADQPbAALxiwCRCwCNA9sAgvGDAxAQYHBhUUFxYXByYnJjU0NzY3ATZFKyoqK0VEUzAvLy9UAtxScG5qa21wUjBhd3t3eHl3YgAAAAEAFP94AQoDDAASACGyBQ4DKwCwAC+wCS+wCtA9sAovGLAAELAS0D2wEi8YMDETHgEXFhUUBwYHJzY3NjU0JyYnWCpBFzAwLlRERSsqKitFAwwwbD14eXl5dmIwUnBta2pucFIAAAAAAQAoAXABjALMABMAkbINDAMrsAwQsAjQsAgvsA0QsBHQsBEvALAARViwDC8bsQwsPlmwBNyyfwQBXbIQBAFdsoAEAXGwBdA9sAUvGLAA0LAEELAB0LABL7IDBAwREjmyCQwEERI5sAkvsQgF9LZvCH8IjwgDcbIHCAQREjmyCgkEERI5sAoQsA/QsAkQsBDQsAgQsBHQsAcQsBLQMDEBBycjByc3LwE3Fzc1MxUXNxcPAQFnPkwGTD5NAnAYbwVMBW8YcAIBnS1oaC1oByZJKAN2dgMoSSYHAAAAAAEAOAA0Ae4B6gALADqyAgUDK7AFELAI0LACELAL0ACwAEVYsAovG7EKKj5ZsAvcsQIG9LAD0LADL7ACELAF0LALELAI0DAxARUjFSM1IzUzNTMVAe61TLW1TAE1TLW1TLW1AAABACz/kAC4AIIADQAusgsFAyuwCxCwAtwAsABFWLACLxuxAiQ+WbEACfSwAdA9sAEvGLACELEIB/QwMRcnNy4BNTQ2MzIWFRQHVys2FR0oHB0nFHAcVAQiGB0nJx0bIAABADgBEAF4AVwAAwAKALAAL7EDBvQwMQEhNSEBeP7AAUABEEwAAAAAAQAw//oAuACCAAsAGbIABgMrALAARViwAy8bsQMkPlmxCQj0MDE3FAYjIiY1NDYzMha4Jx0cKCgcHSc+HCgoHB0nJwABABsAAAGaAswAAwAnsgECAyuyAAMDKwCwAEVYsAAvG7EALD5ZsABFWLABLxuxASQ+WTAxCQEjAQGa/tdWASkCzP00AswAAAACACz/8AJSArwADwAfADWyGAADK7IIEAMrALAARViwBC8bsQQuPlmwAEVYsAwvG7EMJD5ZsAQQsRQB9LAMELEcAfQwMRM0NzYzMhcWFRQHBiMiJyYlNCcmIyIHBhUUFxYzMjc2LE1NeXlNTU1NeXlNTQHIMjFSUjEyMjFSUjEyAVacZWVmZZuaZ2VlZ5p2TExMTHZ2TUtMTQAAAAABACgAAAEsAqwABgA3sgECAysAsABFWLAALxuxAC4+WbAARViwAS8bsQEkPlmyBQABERI5sAUvsQQG9LIDBAAREjkwMQERIxEHJzcBLFyFI8kCrP1UAjo6Tl4AAAEAKAAAAdwCvAAXAGOyFAcDK7INDgMrsBQQsADQsA4QsAPQsA0QsBfQALAARViwES8bsREuPlmwAEVYsAEvG7EBJD5ZsQAB9LAD0LARELEKAfSyBAoDERI5sg0KAxESObIOEQAREjmyFgARERI5MDElFSE1Nz4BNTQmIyIGByc+ATMyFhUUDwEB3P5MsVlERjcvRApUFHJNXXxtyFhYXLNbWzItQDgoIj9XclNjc8kAAQAk//AB6wK8ACwAhLIAEAMrsicaAyuyCQgDK7IfIAMrALAARViwIy8bsSMuPlmwAEVYsAQvG7EEJD5ZshQEIxESObAUL7KwFAFxsmAUAXGyCAQUERI5sAQQsQwB9LIJFAwREjmwFBCxFwL0sCMQsR0B9LIfFx0REjmyICMXERI5sikUFxESObIqFxQREjkwMSUUBwYjIicmJzceATMyNzY1NCcmKwE1MzI2NTQmIyIHJz4BMzIXFhUUBxUeAQHrQ0JiTT4/FlQQSTM4KSgqKTo7NDdGQjZXIFUXbElbPj1cNj3CWjw8LjBNIzk9IyQzMyMjVj0xLThZJD9ONjRTYzAEF1gAAAAAAgAoAAACIQKsAAoADgBtsgECAyuyCwUDK7ABELAH0LACELAM0ACwAEVYsAYvG7EGLj5ZsABFWLABLxuxASQ+WbIAAQYREjmwAC+wA9CwABCxCAL0sgUIABESObAL0LIOAQYREjk9sA4vGEANSw5bDmsOew6LDpsOBl0wMSUVIzUhNQEzETMVJTMRIwHJXP67AT1kWP5v3QSQkJBGAdb+OlZWAT8AAAAAAQAo//AB+wKsAB0AbrIADQMrshgTAyuyBwYDKwCwAEVYsBQvG7EULj5ZsABFWLADLxuxAyQ+WbIbFAMREjmwGy+yBgMbERI5sAMQsQoB9LAbELEQA/SyBwoQERI5shIQChESObITGwMREjmwFBCxFgH0shkbAxESOTAxJRQGIyImJzceATMyNjU0JiMiBycTIRUhBxc2MzIWAfuIZFCCFVIPTzVAUVE/SSpdLAFn/uYZBDNJXIHWYoRkVSE8Rk8+P1A7KAFbWMQBKYIAAgAo//AB/QK8ABMAIwBnshQMAyuyBBwDK7IQDwMrALAARViwDy8bsQ8uPlmwAEVYsAgvG7EIJD5ZsgAPCBESObAAL7KQAAFdsA8QsBDQPbAQLxhACWsQexCLEJsQBF2yEgAIERI5sAgQsRgB9LAAELEgBPQwMQEyFxYVFAcGIyInJjU0NxMXBxc2BxQXFjMyNzY1NCcmIyIHBgEnU0FCRkddY0REQ8dKqQIfbykpPDwoKSopOjkrKgGyQkFaXEVERERdU2oBKjPqAhXeOykoKCk7OikpKSkAAQAo//AB4wKsAAYAPLIBAgMrsgADAysAsABFWLAFLxuxBS4+WbAARViwAS8bsQEkPlmwBRCxAwH0sADQsAEQsALQPbACLxgwMQkBJwEhNyEB4/60UgE9/qYCAbkCTv2iKgI6WAAAAAADACj/8AH4ArwAHQApADsAebIqCAMrshckAyuyNCQXERI5sDQvsADcsg8IKhESObAPL7Ae3LIMDx4REjmyGyQXERI5ALAARViwEy8bsRMuPlmwAEVYsAQvG7EEJD5ZsjgEExESObA4L7EhAvSyDDghERI5shs4IRESObATELEnAfSwBBCxLwH0MDElFAcGIyInJjU0Njc1LgE1NDc2MzIXFhUUBgcVHgEBFBYzMjY1NCYjIgYDFB4CMzI+AjU0JyYjIgcGAfhDRGFhREM6NigxOzpcXDo7MSg2Ov6lQDMzQEAzM0AXFSUyHh4yJRUoKDo6KSe9WDo7OzpYNlkaBBpMKlM4Nzc4UypMGgQaWQEJMDs7MDA4OP6WGywhEhIhLBs0IiMjIwAAAAIAKP/wAf0CvAATACMAZ7IcBAMrsgwUAyuyDxADKwCwAEVYsAgvG7EILj5ZsABFWLAPLxuxDyQ+WbIADwgREjmwAC+ynwABXbAPELAQ0D2wEC8YQAlkEHQQhBCUEARdshIIABESObAIELEYAfSwABCxIAT0MDE3IicmNTQ3NjMyFxYVFAcDJzcnBjc0JyYjIgcGFRQXFjMyNzb+UkNBRkZeY0REQ8dKqQIgcCopOzspKSkrOTkrKvpBQ1ldQ0VERF1Tav7WM+oCFd46KSkpKTo6KSkpKAAAAAIAMP/6ALgB8AALABcAPLIABgMrsAAQsAzQsAYQsBLQALAARViwCS8bsQkqPlmwAEVYsA8vG7EPJD5ZsAkQsQMI9LAPELEVCPQwMRMUBiMiJjU0NjMyFhEUBiMiJjU0NjMyFrgnHRwoKBwdJycdHCgoHB0nAawcKCgcHScn/nUcKCgcHScnAAACACz/owC4AfAACwAZAEGyAAYDK7AAELAX0LAO3LAGELAR0ACwDi+wAEVYsAkvG7EJKj5ZsQMI9LAOELEMCfSwDdA9sA0vGLAOELEUB/QwMRMUBiMiJjU0NjMyFgMnNy4BNTQ2MzIWFRQHuCcdHCgoHB0nYSs2FR0oHB0nFAGsHCgoHB0nJ/3aHFQEIhgdJycdGyAAAQA4ADQBvgHqAAcAOgCwAEVYsAQvG7EEKj5ZsAHcsQAD9LICAQQREjmyAwQBERI5sAQQsQUD9LIGAwIREjmyBwIDERI5MDElFSU1JRUFFQG+/noBhv7aiFS5RLlUhQQAAgA4ALoB+gHEAAMABwAUALAAL7EDBvSwABCwB9yxBAb0MDEBITUhESE1IQH6/j4Bwv4+AcIBeEz+9kwAAQA8ADQBwgHqAAcAOgCwAEVYsAcvG7EHKj5ZsALcsgAHAhESObIBAgcREjmxAwP0sgQBABESObIFAAEREjmwBxCxBgP0MDEBFQU1JTUlNQHC/noBJv7aATFEuVSFBIVUAAAAAAIAJP/6Ab0C3AAXACMAVbIYHgMrshMHAyuyDA0DK7IBHhgREjmwAS+wANwAsABFWLAQLxuxECw+WbAARViwGy8bsRskPlmxIQj0sADcsBAQsQoB9LIMCgAREjmyDQAQERI5MDElIzU0PgI1NCYjIgcnPgEzMhYVFA4BBxcUBiMiJjU0NjMyFgEeXiFdITwzVx9WGGxIWnMqdAEVJx0cKCgcHSfeLylAVjIgLzdgJEJSa1MqTWo0yxwoKBwdJycAAAIALP+uAzgCsgA+AFIAirIhMQMrsj8LAyuyFBMDK7IAGQMrsgUTFBESObATELBJ0ACwKi+wAEVYsDkvG7E5Lj5ZsCoQsSUM9LA5ELEdDPSyByUdERI5sAcvsAPQsg8dJRESObAPL7IFBw8REjmyEQ8HERI5sAMQsRcG9LInJR0REjmyKDkqERI5sAcQsUQG9LAPELFOBvQwMQEUBiMiJwYjIicmNTQ3NjMyFzM1MxUUMzI1NCcmIyIHBhUUFxYzMjcXBiMiJyYnLgE1NDY3PgMzMhcWFxYFFB4CMzI+AjU0LgIjIg4CAzhQRkslMVtUNzc3OE9NMwRIO0dcXISEXFxcW4VINxxIU2tbWTUaGhkaGklZZDVqWVozNP38EiEsGhosIRISISwaGiwhEgEwYHBJSTo6WFc6Ozst+VCPglxcXFyCg1xbHEQgMzNaLmIzMmEtLUgxGzMzWlltHC8iExMhLx0cMCETEyIvAAACAAwAAAKQAswAAwALAHmyBAUDK7IICQMrsAQQsAvQsAHQsAkQsArQsALQALAARViwBi8bsQYsPlmwAEVYsAQvG7EEJD5ZsABFWLAILxuxCCQ+WbIKCAYREjmwCi+yjwoBXbECAvSyAwYIERI5PbADLxhAESsDOwNLA1sDawN7A4sDmwMIXTAxAQMzCwEjATMBIychAUx17nXeZgEOaAEOZkX+0wJb/r0BQ/2lAsz9NMIAAAADAEgAAAIyAswAEAAbACYAXLIdAAMrsgwiAyuyBhcDK7AdELAS0ACwAEVYsAEvG7EBLD5ZsABFWLAALxuxACQ+WbIcAAEREjmwHC+xEgL0sggSHBESObIJHBIREjmwARCxEQH0sAAQsR0B9DAxMxEhMhcWFRQHFR4BFRQHBiMDFTMyNzY1NCcmIwMVMzI3NjU0JyYjSAEDVT09YTdCQD5btacxISEgIC+ruTIjIiMjNQLMODdUaisEElk5WDo6AnTbISIrKiIh/s/rIyMwLyMjAAAAAAEAJf/wArUC3AAaAHKyEQQDK7IKCwMrshgXAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmwCBCxDQH0sAAQsRUB9LILDRUREjmwCy+yCgsIERI5PbAKLxiyFxUNERI5sBcvshgXABESOT2wGC8YQAlrGHsYixibGARdMDEFIicmNTQ3NjMyFwcmIyIHBhUUFxYzMjcXDgEBmZ9rampqoKJlQk14d1BPT1B3fVxDM5QQa2ugoGpsdUBdUE9/f09QaUE9QwAAAgBIAAACjgLMAAgAEQA1sgoAAyuyBQ4DKwCwAEVYsAEvG7EBLD5ZsABFWLAALxuxACQ+WbABELEJAfSwABCxCgH0MDEzETMyFhUUBiMDETMyNjU0JiNI26THx6R/f32QkH0CzMagocUCdP3kj39+kAAAAAABAEgAAAHqAswACwBasgcKAyuwBxCwAtAAsABFWLAALxuxACw+WbAARViwCS8bsQkkPlmwABCxAQH0sgUJABESObAFL7JfBQFdso8FAV2y/wUBXbQfBS8FAnGxBAL0sAkQsQcB9DAxARUhFSEVIRUhFSERAer+ugEm/toBRv5eAsxY41bjWALMAAAAAAEASAAAAeoCzAAJAECyAQIDK7ABELAG0ACwAEVYsAMvG7EDLD5ZsABFWLABLxuxASQ+WbIAAQMREjmwAC+wAxCxBQH0sAAQsQcC9DAxExEjESEVIRUhFaRcAaL+ugEmATP+zQLMWOtWAAAAAAEAJf/wAvkC3AAjAFOyAB8DK7IXCAMrsg8QAysAsABFWLAMLxuxDCw+WbAARViwBC8bsQQkPlmyDwwEERI5sRsB9LAMELETAfSyEBsTERI5siEMBBESObAhL7EgAvQwMQEUBwYjIicmNTQ3NjMyFhcHLgEjIgcGFRQXFjMyNzY3ITUhFgL5WWSjnGxsbGycT4wtQiFpPHVRUFBRdWtHRwv+/AFbBQFJlllqbGyenmxsODNCKC1RUnt7UlE8PGlWHAAAAAABAEgAAAJmAswACwBhsgABAyuyCAkDK7AAELAE0LAEL7AJELAF0LAFLwCwAEVYsAIvG7ECLD5ZsABFWLAGLxuxBiw+WbAARViwAC8bsQAkPlmwAEVYsAgvG7EIJD5ZsgoIBhESObAKL7EFAvQwMTMjETMRIREzESMRIaRcXAFmXFz+mgLM/s0BM/00AUMAAAABAEgAAACkAswAAwAisgABAysAsABFWLACLxuxAiw+WbAARViwAC8bsQAkPlkwMTMjETOkXFwCzAAAAAABABj/8AHQAswADgA9sgwJAyuyBAMDKwCwAEVYsAovG7EKLD5ZsABFWLAALxuxACQ+WbEGAfSyBAoGERI5sAQvsAPQPbADLxgwMRciJic3FjMyNjURMxEUBvdRdhhXImY4RVx1EFhOJHJPPwH2/hJvfwAAAAEASAAAAmwCzAAOAJWyCQoDK7IFBgMrsgEAAyuwCRCwDdCwDS8AsABFWLAMLxuxDCw+WbAARViwAC8bsQAsPlmwAEVYsAYvG7EGJD5ZsABFWLAJLxuxCSQ+WbICAAYREjmyCAkMERI5QAtZCGkIeQiJCJkIBV2yAwAIERI5sgQGABESObIHCAAREjmyDgwJERI5QAtWDmYOdg6GDpYOBV0wMQEzFQkBFSMDBxUjETMRMwHjd/72ARxx6W5cXAQCzAT+zf5vBAFOf88CzP6PAAABAEgAAAHaAswABQAmsgQBAysAsABFWLACLxuxAiw+WbAARViwAC8bsQAkPlmxBAH0MDEpAREzESEB2v5uXAE2Asz9jAAAAAABAEgAAAL2AswAEQCMsgABAyuyCAkDK7AAELAD0LADL7AJELAG0LAGLwCwAEVYsAIvG7ECLD5ZsABFWLAGLxuxBiw+WbAARViwAC8bsQAkPlmwAEVYsAgvG7EIJD5Zsg4AAhESObAOL7IEAg4REjk9sAQvGLIQAAIREjk9sBAvGEARKxA7EEsQWxBrEHsQixCbEAhdsAvQMDEzIxEzEzMTMxEjETcjAyMDIxekXFz5BPlcXAQE4DbgBAQCzP5MAbT9NAGpeP53AYl4AAABAEgAAAJwAswADQCTsgABAyuyCAcDK7AAELAD0LADL7AHELAK0LAKLwCwAEVYsAIvG7ECLD5ZsABFWLAHLxuxByw+WbAARViwAC8bsQAkPlmwAEVYsAkvG7EJJD5ZsgUAAhESOT2wBS8YQBEmBTYFRgVWBWYFdgWGBZYFCF2yDAACERI5PbAMLxhAESkMOQxJDFkMaQx5DIkMmQwIXTAxMyMRMwEzJxEzESMBIxekXHABXAQEXGD+lAQEAsz904oBo/00AkiKAAIAJf/wAwUC3AAPAB8AMrIQCAMrsgAYAysAsABFWLAMLxuxDCw+WbAARViwBC8bsQQkPlmxFAH0sAwQsRwB9DAxARQHBiMiJyY1NDc2MzIXFgUUFxYzMjc2NTQnJiMiBwYDBWprm5xqampqnJxqav1+Tk91dU5PT051dU9OAWafa2xsa5+fa2xta558UVFRUH19UFFRUQAAAgBIAAACHALMAAwAFwBMsgECAyuyCBMDK7ABELAO0LAOLwCwAEVYsAQvG7EELD5ZsABFWLABLxuxASQ+WbIAAQQREjmwAC+0oACwAAJdsQ4B9LAEELEXAfQwMRMRIxEzMhcWFRQHBiMDFTMyNzY1NCcmI6Rc9F1BQkJAXpiaNyQlJSQ3ASL+3gLMPj5ZWz09AVL6JSUzMiUmAAAAAgAl/9ADBQLcABMAJgBusiMIAyuyEBsDKwCwAEVYsAwvG7EMLD5ZsABFWLAELxuxBCQ+WbAB3LAA0D2wAC8YsgIEDBESObITDAQREjmwBBCxFAH0sAwQsR8B9LIWFB8REjmyGB8UERI5sBgvsBfQPbAXLxiyGR8UERI5MDEFBycGIyInJjU0NzYzMhcWFRQGDwEyNyc3FzY1NCcmIyIHBhUUFxYCukgxVFicampqapycampBPPNAOVRIU1JPTnV1T05OTwEvSSlsa5+fa2xta55UkjYCHH4xfU+BfVBRUVF8fFFRAAAAAAIASAAAAjgCzAAIABgAZbIVFgMrsgkKAyuyDwUDK7AJELAB0LABLwCwAEVYsAsvG7ELLD5ZsABFWLAJLxuxCSQ+WbAARViwFi8bsRYkPlmwCxCxAAH0shcJCxESObAXL7ECAvSyExcCERI5shQWFxESOTAxExUzMjY1NCYjAyMRMzIWFRQGDwETFSMDI6SUOE5JN5pc9F2DYUoCyW3BZgJ0/Ek2Mkv9jALMe1pKcxAD/t0EASIAAAABABj/8AICAtwALwCEsikZAyuyABEDK7AZELAI0LApELAJ0LAAELAh0LARELAi0ACwAEVYsB0vG7EdLD5ZsABFWLAELxuxBCQ+WbEOAfSyFQQdERI5sgkOFRESObAJL7IICQQREjk9sAgvGLAdELElAfSwFRCxLQL0siIlLRESObAiL7IhIh0REjk9sCEvGDAxJRQHBiMiJyYnNx4DMzI2NTQnJicmJyY1NDc2MzIXFhcHLgEjIgcGFRQXFhceAQICRUZkWUREGlgJICs0HT9QIR9VVhVyP0BdUjw8FFYMRzM2JSUdIGttXb9eOTg0NFokIDQlFUE2LSAfHR8LOnFPODgqKT4kKDUeHC0lGxslJWsAAAABABgAAAIEAswABwAvsgECAysAsABFWLAFLxuxBSw+WbAARViwAS8bsQEkPlmwBRCxAAH0sAPQsATQMDEBESMRIzUhFQE8XMgB7AJ0/YwCdFhYAAABADj/8AJKAswAEwA4sgYFAyuyDw4DKwCwAEVYsAUvG7EFLD5ZsABFWLAOLxuxDiw+WbAARViwAC8bsQAkPlmxCgH0MDEFIicmNREzERQWMzI2NREzERQHBgFBd0lJXFxRUVxcSEgQTk1/AcL+OlhmZlgBxv4+gkxMAAAAAQAMAAACbALMAAcAVLIHBgMrsgMCAysAsABFWLACLxuxAiw+WbAARViwBi8bsQYsPlmwAEVYsAAvG7EAJD5ZsgUAAhESOT2wBS8YQBEkBTQFRAVUBWQFdAWEBZQFCF0wMSEjAzMTMxMzAWhg/GbEBMxmAsz9uwJFAAAAAAEAEAAAA4oCzAAPAJWyCQgDK7IBAAMrALAARViwAC8bsQAsPlmwAEVYsAgvG7EILD5ZsABFWLACLxuxAiQ+WbAARViwBi8bsQYkPlmyDQACERI5sA0vsgQCDRESOT2wBC8YQAlrBHsEiwSbBARdQAkpBDkESQRZBARdsgsCABESOT2wCy8YtiYLNgtGCwNdQAtUC2QLdAuEC5QLBV2wDtAwMQEzAyMDIwMjAzMTMxMzEzMDKmC/XpoEml7HYJcEm1abBALM/TQB2P4oAsz9zQHT/i0AAQAQAAACaALMAA0AgbIAAQMrsgoLAyuwARCwA9CwAy+wABCwBNCwBC+wCxCwB9CwBy+wChCwCNCwCC8AsABFWLADLxuxAyw+WbAARViwBy8bsQcsPlmwAEVYsAAvG7EAJD5ZsABFWLAKLxuxCiQ+WbINAAMREjmyBgADERI5sgINBhESObIJBg0REjkwMTMjEwMzEzMTMwMTIwMjfGzw4m6uBK5u4vBsvgQBcgFa/u4BEv6m/o4BJQAAAAABAAwAAAJGAswACQBZsgECAyuyBQQDK7IJCAMrsgcCARESOQCwAEVYsAQvG7EELD5ZsABFWLAILxuxCCw+WbAARViwAS8bsQEkPlmyAAEIERI5sAAQsAPQsgcIABESOT2wBy8YMDEBESMRAzMTMxMzAVlc8WyxBK1sAU3+swFNAX/+3QEjAAAAAQAgAAACDALMAAkASrIHAwMrsggCAyuwAhCwBNCwBC+wBxCwCdCwCS8AsABFWLAFLxuxBSw+WbAARViwAC8bsQAkPlmxCAH0sALQsAUQsQMB9LAH0DAxKQE1ASE1IRUBIQIM/hQBff6TAdj+gwGBYAIUWGD97AAAAQBI/4QBFAMYAAcAHLIGAQMrALADL7AAL7ADELEEBvSwABCxBwb0MDEFIxEzFSMRMwEUzMx4eHwDlEz9BAAAAAEAGwAAAZoCzAADACeyAAMDK7IBAgMrALAARViwAC8bsQAsPlmwAEVYsAEvG7EBJD5ZMDETASMBcQEpVv7XAsz9NALMAAAAAAEAIP+EAOwDGAAHAByyAAMDKwCwAC+wBy+wABCxAwb0sAcQsQQG9DAxFyM1MxEjNTPszHh4zHxMAvxMAAEADAGaAcoCzAAHACyyBQYDK7IBAgMrALAARViwBy8bsQcsPlmwBdywAtCyBAUHERI5PbAELxgwMQETIycjByMTAQ+7YH0EfWC7Asz+ztraATIAAAEAAP8oAeD/dAADABQAsABFWLAALxuxACY+WbEDBvQwMQUhNSEB4P4gAeDYTAAAAAEAYAJMAPgCzAADABSyAAMDKwCwAi+yfwIBXbEAEfQwMRMXIyfENFBIAsyAgAAAAAIAHP/wAc4B+gAKACQAnrIAFwMrsg4dAyuwHRCwBtCwBi+wEdCwES+wABCwItCwIi+wFxCwI9CwIy8AsABFWLALLxuxCyo+WbAARViwFC8bsRQkPlmwAEVYsBAvG7EQJD5ZsBQQsQME9LIaCxQREjmwGi+xCAX0sgYIAxESObISFBoREjmyHBoUERI5sAsQsSAE9LIiIBoREjl8sCIvGLIjIgsREjk9sCMvGDAxNxQWMzI2NSYjIgYTMhYVESM1IwYjIiY1NDYzMhc1NCYjIgcnNns9KTpbK004S3dmdlgEOV9RbXNgUjVMM00tUUOWJDBWOiI2ATxtX/7SRFRgSExaHhUwQ0EzYAAAAAACADj/8AIkAswAFQAlAGyyEhoDK7IIBwMrsAgQsCLQsCIvsATQsAQvALAARViwBy8bsQcsPlmwAEVYsA4vG7EOKj5ZsABFWLAALxuxACQ+WbAARViwBS8bsQUkPlmyAwAOERI5sgsOABESObAAELEWA/SwDhCxHgP0MDEFIiYnIxUjETMVBzM+ATMyFxYVFAcGJzI3NjU0JyYjIgcGFRQXFgE7NlkYBFhcBAQYWTZhQ0VFQ3BCLS0tLUJDLSwsLRAuJkQCzOJEJi5MTWxtTExUMjFOTTIyMjJNTjIxAAAAAAEAHP/wAfIB+gAbAGayEgQDK7IZGAMrsgsMAysAsABFWLAILxuxCCo+WbAARViwAC8bsQAkPlmwCBCxDgP0sAAQsRYD9LIMDhYREjmwDC+yCwwIERI5PbALLxiyGBYOERI5sBgvshkYABESOT2wGS8YMDEFIicmNTQ3NjMyFhcHJiMiBwYVFBcWMzI3Fw4BARhtSEdHSG1LcBxUJ2I/Li0tLj9lKVIbcxBKTG9xSkpLQiNcMzNLSzMzXCNCSwAAAAIAHP/wAggCzAAPACUAbLIMFAMrsh8eAyuwHhCwBNCwBC+wItCwIi8AsABFWLAeLxuxHiw+WbAARViwGC8bsRgqPlmwAEVYsBAvG7EQJD5ZsABFWLAhLxuxISQ+WbAQELEAA/SwGBCxCAP0shsYEBESObIjEBgREjkwMSUyNzY1NCcmIyIHBhUUFxYXIicmNTQ3NjMyFhczJzUzESM1Iw4BARREKy0tLENCLS0tLTNgRURERWA2WRgEBFxYBBhZRDExT00yMjIyTU4xMlRMTWxsTUwuJkTi/TREJi4AAAAAAgAc//AB/AH6ABMAGgCOsgsDAyuyCRUDK7AVELAQ0LAQL7AJELAR0LARL7ALELAU0LAULwCwAEVYsAYvG7EGKj5ZsABFWLAALxuxACQ+WbIKBgAREjmwCi+yYAoBcbagCrAKwAoDXbRQCmAKAnKwABCxDgP0shAOChESOX2wEC8YshEQABESOT2wES8YsAoQsRUG9LAGELEYA/QwMQUiJjU0NjMyFhUHIR4BMzI3Fw4BAyEuASMiBgEUbIyIam2BAf5/AlxAWDJSIXXdARkESz80SxCUcXCVjX8KSFhYKD5GAUAzQ0AAAAEAGAAAAWwC1AAVAGqyDQ4DK7ANELAI0LAOELAS0ACwAEVYsAAvG7EALD5ZsABFWLAJLxuxCSo+WbAARViwES8bsREqPlmwAEVYsA0vG7ENJD5ZsgIACRESObAAELEFAvSyAwkFERI5sAkQsQsD9LAP0LAQ0DAxATIXByYjIgYdATMVIxEjESM1MzU0NgEaMiAZGB4iK4CAXFxcXQLUEVEMLyc+VP5qAZZUR0laAAAAAgAc/xgCCAH6AA8AMwCTsgwlAyuyMBwDK7AcELAE0LAEL7AlELAV0LAVL7AMELAW0LAWL7AEELAt0LAtLwCwAEVYsCkvG7EpKj5ZsABFWLAuLxuxLio+WbAARViwEC8bsRAmPlmwAEVYsCEvG7EhJD5ZsQAD9LApELEIA/SyFSEQERI5sBAQsRkD9LIWGSEREjmyHiEpERI5siwpIRESOTAxJTI3NjU0JyYjIgcGFRQXFhMiLgInNx4BMzI2PQEjDgEjIicmNTQ3NjMyFhczNTMRFAcGARREKy0tLENCLS0tLT8pSDsqC1cPSjFLVAQaWTRgRURERWA0WRoEWENERDExT00yMjIyTU4xMv7UFSY0ICQrNFpPLyctS01tbUxMLSdE/it2Q0QAAAAAAQA4AAAB6gLMABQAWLITFAMrsgsMAyuwExCwAtCwAi8AsABFWLAALxuxACw+WbAARViwBy8bsQcqPlmwAEVYsAsvG7ELJD5ZsABFWLATLxuxEyQ+WbIEBxMREjmwBxCxDwP0MDETMxUHMz4BMzIWFREjETQjIgYVESM4XAQEFVcvWmFcdThNXALM4kQkMGdf/swBIoRdPv71AAAAAgAtAAAArwLUAAsADwAxsgAGAyuyDQ4DKwCwAEVYsA8vG7EPKj5ZsABFWLANLxuxDSQ+WbAPELAD3LEJB/QwMRMUBiMiJjU0NjMyFgcRIxGvJhsbJiYbGyYTXAKTGyYmGxsmJsT+FgHqAAAAAv/T/x4ArwLUAAsAFwBGshUUAyuyAAYDKwCwAEVYsBQvG7EUKj5ZsABFWLAMLxuxDCY+WbAUELAD3LEJB/SyDgwUERI5sAwQsRED9LIPERQREjkwMRMUBiMiJjU0NjMyFgMiJzcWMzI3ETMRFK8mGxsmJhsbJqYeGBgQCzgCXAKTGyYmGxsmJvxwClAGRQIz/dunAAEAOAAAAecCzAANAHayBAUDK7IAAQMrsgoJAyuwBBCwB9AAsABFWLAGLxuxBiw+WbAARViwCS8bsQkqPlmwAEVYsAQvG7EEJD5ZsABFWLABLxuxASQ+WbIDBAkREjmyAgMJERI5sggJBBESObILAwkREjmyDAkDERI5sg0BDBESOTAxISMnBxUjETMRNzMVBxMB52+ZS1xc1Ha/yOdKnQLM/kfXBL7+3AAAAAABADgAAACUAswAAwAisgECAysAsABFWLAALxuxACw+WbAARViwAS8bsQEkPlkwMRMRIxGUXALM/TQCzAABADgAAAMgAfoAIgCBsgABAyuyGhsDK7IREgMrsAAQsAXQsAUvALAARViwCC8bsQgqPlmwAEVYsA0vG7ENKj5ZsABFWLADLxuxAyo+WbAARViwAC8bsQAkPlmwAEVYsBEvG7ERJD5ZsABFWLAaLxuxGiQ+WbIFCAAREjmyCwAIERI5sAgQsR8D9LAW0DAxMyMRMxUzPgEzMhYXNjMyFhURIxE0JiMiBhURIxE0JiMiBhWUXFgEFVcrNlITPWxVXFwyOzVIXDI7NUgB6kQkMDIsXmhg/s4BJEU9Wj3+8QEkRT1aPQABADgAAAHqAfoAEwBYshITAyuyCgsDK7ASELAD0LADLwCwAEVYsAYvG7EGKj5ZsABFWLABLxuxASo+WbAARViwCi8bsQokPlmwAEVYsBIvG7ESJD5ZsgMGEhESObAGELEOA/QwMRMzFTM+ATMyFhURIxEmIyIGFREjOFgEFVcvWmFcA3Y3SlwB6kQkMGdf/swBLnhZPv7xAAIAHP/wAhQB+gAPAB8AMrIQAAMrsggYAysAsABFWLAELxuxBCo+WbAARViwDC8bsQwkPlmxFAP0sAQQsRwD9DAxNzQ3NjMyFxYVFAcGIyInJjcUFxYzMjc2NTQnJiMiBwYcR0htbUdISEdtbUhHXC4uREQuLi4vQ0MvLvVxSkpKSnFySUpKSnFPMTExMU9OMTIyMQACADT/KAIgAfoADwAlAGmyIgQDK7IWFwMrsBYQsAzQsAwvsBrQsBovALAARViwHi8bsR4qPlmwAEVYsBkvG7EZKj5ZsABFWLAWLxuxFiY+WbAARViwEC8bsRAkPlmxAAP0sB4QsQgD9LITEB4REjmyGx4QERI5MDElMjc2NTQnJiMiBwYVFBcWFyImJyMXFSMRMxUzPgEzMhcWFRQHBgEoQi0tLS1CQy0sLC1SNlkYBARcWAQYWTZhQ0VFQ0QyMU5NMjIyMk1OMjFULiZE2ALCRCYuTE1sbUxMAAAAAgAc/ygCCAH6ABUAJQBpsiILAyuyAAEDK7ABELAa0LAaL7AT0LATLwCwAEVYsBUvG7EVKj5ZsABFWLAPLxuxDyo+WbAARViwAC8bsQAmPlmwAEVYsAcvG7EHJD5ZsgQHDxESObISDwcREjmxFgP0sA8QsR4D9DAxBSM1NyMOASMiJyY1NDc2MzIWFzM1MwMyNzY1NCcmIyIHBhUUFxYCCFwEBBhZNmBFRERFYDZZGARY9EQrLS0sQ0ItLS0t2NhEJi5MTWxsTUwuJkT+WjExT00yMjIyTU4xMgAAAAEAOAAAAWcB+AAQAFSyAAEDK7AAELAF0LAFLwCwAEVYsAMvG7EDKj5ZsABFWLAILxuxCCo+WbAARViwAC8bsQAkPlmyBQgAERI5sgoIABESObAIELENEPSyCwANERI5MDEzIxEzFTM+ATMyFwcmIyIGFZRcWAQOVyooHBwRJTRNAepQJzcMWQdUOAAAAQAY//ABrwH6ACMA97IfEgMrsgANAyuwEhCwBtCwBi+wHxCwB9CwBy+wABCwGNCwGC+wDRCwGdCwGS8AsABFWLAVLxuxFSo+WbAARViwAy8bsQMkPlmxCgT0sBUQsRwE9LIHChwREjl9sAcvGLIGBwMREjk9sAYvGLQUBiQGAl2yEAoVERI5tGQQdBACcbKGEAFxtDgQSBACXbKcEAFdtHoQihACXbRXEGcQAl2ypRABXbS0EMQQAl22AhASECIQA3KyDxAKERI5shkcChESOXywGS8YtFAZYBkCXbIYGRUREjk9sBgvGEAJGxgrGDsYSxgEXbAQELEhBPSyIiEDERI5MDElFAYjIiYnNx4BMzI2NTQvASY1NDYzMhYXBy4BIyIGFRQfARYBr3BVSnAYUhJFKSw7SFSPbVVBaRVSDj8nJDlPSpKIQFhNPyMsMSYaLxYVJGZDUT40Ih8jJBoqEhMkAAABABj/+AFOAoAAFgBmsg4DAyuwAxCwB9CwDhCwCdAAsABFWLAGLxuxBio+WbAARViwCi8bsQoqPlmwAEVYsAAvG7EAJD5ZsAYQsQQD9LAGELAI3LAEELAM0LAN0LAAELERAvSyFBEEERI5shUKABESOTAxFyImJxEjNTM1MxUzFSMVFBYzMjY3Fwb6PE8BVlZceHgmGAsVCR0kCEpCARJUlpZU9DEjBQRSDQAAAQA0//AB5gHqABMAWLILCgMrshMSAyuwEhCwA9CwAy8AsABFWLAKLxuxCio+WbAARViwEi8bsRIqPlmwAEVYsAYvG7EGJD5ZsABFWLABLxuxASQ+WbIDBhIREjmwBhCxDgP0MDEhIzUjDgEjIiY1ETMRFjMyNjURMwHmWAQVVy9aYVwDdjdKXEQkMGdfATT+0nhZPgEPAAABAAQAAAHuAeoABwBAsgMCAyuyBwYDKwCwAEVYsAIvG7ECKj5ZsABFWLAGLxuxBio+WbAARViwAC8bsQAkPlmyBQACERI5PbAFLxgwMSEjAzMTMxMzASZcxmSQApJiAer+hAF8AAAAAAEABAAAAu4B6gAOAGmyBwYDK7IADgMrALAARViwAC8bsQAqPlmwAEVYsAYvG7EGKj5ZsABFWLAKLxuxCio+WbAARViwAS8bsQEkPlmwAEVYsAQvG7EEJD5ZsgMBABESOT2wAy8YsgkBABESOT2wCS8YsAzQMDEBAyMLASMDMxMzEzMTMxMC7p5eenldnmBtAXlfeQFsAer+FgF4/ogB6v6OAXL+jgFyAAEACAAAAdAB6gALAIGyBAUDK7IBAgMrsAUQsAfQsAcvsAQQsAjQsAgvsAIQsArQsAovsAEQsAvQsAsvALAARViwBy8bsQcqPlmwAEVYsAovG7EKKj5ZsABFWLABLxuxASQ+WbAARViwBC8bsQQkPlmyAwEHERI5sgkBBxESObIAAwkREjmyBgkDERI5MDElFyMnByM3JzMXNzMBIa9seXdsraloeXNs+fm1tfnxra0AAQAE/ygB7gHqAAgAU7IACAMrsgUEAyuwCBCwB9CwA9CwAtAAsABFWLAALxuxACo+WbAARViwBC8bsQQqPlmwAEVYsAEvG7EBJj5ZsgMBABESObIHAAMREjk9sAcvGDAxCQEjNwMzEzMTAe7+zV9yymSSAo4B6v0+9wHL/qABYAABACAAAAGsAeoACQBEsgcDAyuyCAIDK7ACELAE0LAHELAJ0ACwAEVYsAUvG7EFKj5ZsABFWLAALxuxACQ+WbEIA/SwAtCwBRCxAwP0sAfQMDEpATUBITUhFQEhAaz+dAEX/vEBgP7pARtQAUZUUP66AAAAAAEAGP+EAR4DGAAdAESyFAoDK7AKELAF0LAUELAZ0ACwDy+wAC+yBwAPERI5sAcvsQgG9LAPELEQBvSyFggHERI5shcHCBESObAAELEdBvQwMQUjIiY9ATQjNTI9ATQ2OwEVIyIdAQYHFRYXFRQ7AQEeFkxaSkpaTBYPWQFEQwJZD3xZTKJdTF2iTFlMZaZZGAQWWKllAAAAAQBI/4gAnAMYAAMADrIAAQMrALADL7AALzAxFyMRM5xUVHgDkAAAAAEAIP+EASYDGAAdAEGyGgQDK7AEELAK0LAaELAU0ACwDy+wAC+xAQb0shcADxESObAXL7EWBvSyBxcWERI5sggWFxESObAPELEOBvQwMRc1MzI9ATY3NSYnNTQrATUzMhYdARQzFSIdARQGIyAPWQJDRAFZDxZMWkpKWkx8TGWpWBYEGFmmZUxZTKJdTF2iTFkAAAABACAA6gHyAX4AEwA3sgYHAyuyERADKwCwAC+wA9ywABCwBtB9sAYvGLADELEKA/SwABCxDQP0sAoQsBDQfLAQLxgwMSUiJiMiBgcjNDYzMhYzMjY3MxQGAXkfqxQVHAJIRzIjpBcVHAJIR+pBHhU6TEEeFTpMAP//AAwAAAKQA4QCJgAzAAABBwCbAIYAuAAlALQvDz8PAl2ycA8BXbKwDwFdtC8bPxsCXbJwGwFdsrAbAV0wMQAAAwAMAAACkANcAAsADwAkAJKyEhMDK7IjJAMrsgAWAyuyIAYDK7ASELAR0LAN0LAkELAQ0LAO0ACwAEVYsAMvG7EDLD5ZsABFWLASLxuxEiQ+WbAARViwJC8bsSQkPlmwAxCwCdyynwkBXbKgCQFdshAkAxESObAQL7EOAvSyDwMkERI5PbAPLxiymw8BXbADELAU3LAJELEbDfSwFBCwItAwMQEUFjMyNjU0JiMiBhcDMwMTIQcjEyY1ND4CMzIeAhUUBxMjASYYEBEXFxEQGCZ17nWV/tNGZv8lEB0mFRUmHRAl/2YC9BAYGBARFxeq/r0BQ/5nwgKkIS8WJhwQEB0mFTAf/VsAAQAl/xMCtQLcADIArLIkFwMrsi4TAyuyAAwDKwCwAEVYsBsvG7EbLD5ZsABFWLAuLxuxLiQ+WbAw3LEPGPSwCdyxAxf0sgYDMBESObIHCQ8REjmyEQ8JERI5shIwAxESObAuELAT0LATL7AbELEgAfSwLhCxKAH0sh4gKBESObAeL7IdHhsREjk9sB0vGLIqKCAREjmwKi+yKyouERI5PbArLxhACWsreyuLK5srBF2yLzADERI5MDEFFAYjIiYnNxYzMjY1NCYjIgcnNyYnJjU0NzYzMhcHJiMiBwYVFBcWMzI3Fw4BDwE3MhYCAzorHzQLNAogEhcXEhQNLx6QW1xqaqCiZUJNeHdQT09Qd31cQzGQUg4UJjWNKDglHhciFxESGBAWUBFnaJOgamx1QF1QT39/T1BpQTpEAiACNv//AEgAAAHqA4QCJgA3AAABBwCaAFMAuAAKALQvDT8NAl0wMf//AEgAAAJwA4oCJgBAAAABBwDTAJwAuAAUALQvDj8OAl2ycA4BXbKwDgFdMDEAAP//ACX/8AMFA4QCJgBBAAABBwCbAM0AuAAlALQvIz8jAl2ycCMBXbKwIwFdtC8vPy8CXbJwLwFdsrAvAV0wMQD//wA4//ACSgOEAiYARwAAAQcAmwB5ALgAJQC0Lxc/FwJdsnAXAV2ysBcBXbQvIz8jAl2ycCMBXbKwIwFdMDEA//8AHP/wAc4CzAImAFMAAAAGAJo1AAAA//8AHP/wAc4CzAImAFMAAAAGAFI4AAAA//8AHP/wAc4CzAImAFMAAAAGANIwAAAA//8AHP/wAc4CywImAFMAAAAGAJs4/wAA//8AHP/wAc4C0wImAFMAAAAGANM7AQAA//8AHP/wAc4DBAImAFMAAAAGANU5/AAAAAEAHP8TAfIB+gAzAK6yJRcDK7IsKwMrsi8TAyuyAAwDK7AsELAe0LArELAf0ACwAEVYsBsvG7EbKj5ZsABFWLAvLxuxLyQ+WbAx3LEPGPSwCdyxAxf0sgYDMRESObIHCQ8REjmyEQ8JERI5shIxAxESObAvELAT0LAbELEhA/SwLxCxKQP0sh8hKRESObAfL7IeHxsREjk9sB4vGLIrKSEREjmwKy+yLCsvERI5PbAsLxiyMDEDERI5MDEFFAYjIiYnNxYzMjY1NCYjIgcnNyYnJjU0NzYzMhYXByYjIgcGFRQXFjMyNxcOAQ8BNzIWAYA6Kx80CzQKIBIXFxIUDS8eXDk4R0htS3AcVCdiPy4tLS4/ZSlSGm5LDhQmNY0oOCUeFyIXERIYEBZREUZHY3FKSktCI1wzM0tLMzNcI0BLAiACNgAAAP//ABz/8AH8AswCJgBXAAAABgCaRAAAAP//ABz/8AH8AswCJgBXAAAABgBSPwAAAP//ABz/8AH8AsICJgBXAAAABgDSR/YAAP//ABz/8AH8AssCJgBXAAAABgCbQv8AAP//AEAAAADcAswCJgDRAAAABgCarAAAAP//AAAAAACcAswCJgDRAAAABgBSoAAAAP///98AAAD9AswCJgDRAAAABgDSpgAAAAAD//EAAADrAswACwAXABsAP7IZGgMrsgAGAyuyDBIDKwCwAEVYsBgvG7EYKj5ZsABFWLAZLxuxGSQ+WbAYELAP3LAD0LAPELEVFPSwCdAwMRMUBiMiJjU0NjMyFhcUBiMiJjU0NjMyFgcRIxFjIRgWIyIXGSCIIRgWIyIXGSBPXAKTFyIjFhghIBkXIiMWGCEgwv4WAeoA//8AOAAAAeoC0wImAGAAAAAGANNPAQAA//8AHP/wAhQCzAImAGEAAAAGAJpUAAAA//8AHP/wAhQCzAImAGEAAAAGAFJDAAAA//8AHP/wAhQCzAImAGEAAAAGANJQAAAA//8AHP/wAhQCywImAGEAAAAGAJtQ/wAA//8AHP/wAhQC0wImAGEAAAAGANNQAQAA//8ANP/wAeYCzAImAGcAAAAGAJpHAAAA//8ANP/wAeYCzAImAGcAAAAGAFJFAAAA//8ANP/wAeYCvAImAGcAAAAGANJH8AAA//8ANP/wAeYCzAImAGcAAAAGAJtJAAAAAAIAIAG6ASUCvAAPAB4ASbIaCAMrsgATAysAsABFWLAMLxuxDC4+WbAE3LTfBO8EAl20jwSfBAJxsh8EAXG0nwSvBAJdtM8E3wQCcbEQDfSwDBCxFg30MDEBFAcGIyInJjU0NzYzMhcWBzI2NTYmIyIHBhUUHgIBJScmNTUoJiYoNTYmJoIZJQEoGRkSEgkRFwI7NiUmJiY1NSYmJiZ2JxocJRMRGg0ZEwwAAAACABwAAAHyAqwACgAjAKKyBRQDK7INEAMrsgsjAyuwEBCwCtCwGNCwDRCwIdCwG9CwCxCwHdCwIxCwHtAAsABFWLAZLxuxGS4+WbAARViwDy8bsQ8kPlmwGRCwGNyxAAP0sA8QsBDcsQoD9LIjCgAREjmwIy+yCyMQERI5PbALLxiwEBCwDdCwGBCwG9CyHgAKERI5sB4vsh0eGBESOT2wHS8YsAAQsCDQsAoQsCHQMDETDgMVFB4CFyUGBxUjNSYnJjU0NzY3NTMVFhcHJicRNjfwGywfEhIfLBsBAjODTF86Ozo7X0yAM1QeQUYeAgMIIC05HyA4LSEHNXgRVVYNR0dlZUZHDlZVEXgjRhH+qBBHAAABACAAAAH3ArwAJQCEshwFAyuyFgoDK7IQEQMrsiMiAyuwBRCwCNCwHBCwGdAAsABFWLANLxuxDS4+WbAARViwJS8bsSUkPlmxIAH0sAHQsA0QsRMB9LIbIBMREjmwGy+wBdCwBS+wGxCxGgb0sAjQsAgvshANGhESObIRGhMREjmyIiAaERI5siMaJRESOTAxMzU2PQEnIzUzJjU0NjMyFhcHJiMiBhUUFhczFSMUBxczMjcXBgcgYgFhRER1WUhpFVQcVjJASASHczsDsj4XTC1xUC1oCgdNZk1Tc05AI1lALjB6CU1gOwM5IG8CAAACACj/GAHvAtwADAA4AO2yMSQDK7I1BgMrsgAfAyuyDRoDK7IqKwMrshQTAysAsABFWLAnLxuxJyw+WbAARViwEC8bsRAmPlmyAxAnERI5sAMvsgonEBESObAKL7ITECcREjmwEBCxFwH0sCcQsS4B9LIUFy4REjmyIgknERI5sosiAV2yGhciERI5spkaAV1AC6YathrGGtYa5hoFXbKEGgFdsh8iFxESObKZHwFdQAulH7UfxR/VH+UfBV2yKicQERI5sisuFxESObI3AxAREjmyljcBXbI2NwFdsjEuNxESOUANmTGpMbkxyTHZMekxBl2yNTcuERI5MDETFB8BPgE1NCYvAQ4BARQGIyImJzceATMyNjU0LgI1NDY3JjU0NjMyFhcHLgEjIgYVFB4BFRQHFp1LfhMYRlsEIi0BUoJdUoAWVhFNNDZLRrFbLShVdFpHchNVC0IoMELvY0FBARc1IS8OMxgxPhwBCjj+olVqaFkjQUs6Ky8+NllEKEoXM1xHaFY7IyU3NCM/TGZNWjA1AAEAUADMAUABvAALAA6yAAYDKwCwAy+wCdwwMQEUBiMiJjU0NjMyFgFARjIxR0cxMkYBRDFHRzEyRkYAAAEAGP8oAiACzAANAEGyBAUDK7IAAQMrALAARViwDS8bsQ0sPlmwAEVYsAQvG7EEJj5ZsABFWLABLxuxASY+WbANELECAfSwDRCwBtwwMQUjESMRIxEjIiY0NjMhAiBUVFQsYICAYAEo2ANM/LQCAHa4dgAAAQBI//gCEgLcACUAebIDDAMrshwdAyuyJBUDKwCwAEVYsCEvG7EhLD5ZsABFWLAcLxuxHCQ+WbAARViwBi8bsQYkPlmyDwYhERI5sA8vsuAPAV2ycA8BcbSgD7APAl2yAA8BcrESAvSyABIPERI5sgEPEhESObAGELEJAfSwIRCxGAH0MDEBFRYVFAYjJzUXMjY1NCYrATUzMjY1NCYjIgYVESMRNDYzMhYVFAGcdoFkNTU5TlU6JRk5QkMyOUBedWJbeAGFBDN7X3wEWARMNzVMVjw0LjxFO/38AgRhd25UaQAABAAkARAB8ALcAA8AHwAnADcApbIQCAMrsgAYAyuyKywDK7I2KAMrsjEkAyuwKxCwINCyXzkBXQCwAEVYsAwvG7EMLD5ZsATQslAEAV2yAAQBXbEUFfSwDBCxHBX0sisUHBESObArL7IPKwFdsj8rAV2yoCsBXbIuHBQREjmwLi+yEC4BXbIqKy4REjmwKi+ykCoBcbEgFvSwLhCxJhb0sCsQsCjQsCgvsCoQsDXQsDUvsps1AXEwMQEUBwYjIicmNTQ3NjMyFxYFFBcWMzI3NjU0JyYjIgcGFzMyNjU0KwEXJyMVIzUzMhYVFAYPARcVAfBEQ19gQ0NDRF9eRET+ZDY2Sks1NjU1TEs2NZcuDRIlKE83GC5gHiscFgI8AfZfRENDQ2BfQ0RERF5KNjY1NktMNTU2NT4QDBy2VFTiKh4XJQYCVAIAAAMAJAEQAfAC3AAPAB8AOQCIshAIAyuyMCQDK7IAGAMrsl87AV0AsABFWLAMLxuxDCw+WbAE0LIABAFdslAEAV2xFBX0sAwQsRwV9LIgFBwREjmwIC+0LyA/IAJdsg8gAV2yKBwUERI5sCgvshAoAV2yKiggERI5sS0W9LAgELE1FvSyKy01ERI5sjctNRESObI4ICgREjkwMQEUBwYjIicmNTQ3NjMyFxYFFBcWMzI3NjU0JyYjIgcGFyInJjU0NzYzMhcHJiMiBhUUHgIzMjcXBgHwRENfYENDQ0RfXkRE/mQ2NkpLNTY1NUxLNjW6MyIiIiMyMCcgFyAeKwwUGg8mFiIkAfZfRENDQ2BfQ0RERF5KNjY1NktMNTU2NcIiIjMyIiMnHRgsHw8cFAwfGzAAAAAAAQCYAkwBMALMAAMAFLIAAwMrALABL7J/AQFdsQMR9DAxAQcjNwEwSFA0AsyAgAAAAgA7AloBVQLMAAsAFwAqsgAGAyuyDBIDKwCwAy+yIAMBXbLAAwFdsQkU9LADELAP0LAJELAV0DAxExQGIyImNTQ2MzIWFxQGIyImNTQ2MzIWrSEYFiMiFxkgqCEYFiMiFxkgApMXIiMWGCEgGRciIxYYISAAAAAAAgAEAAADjALMAAMAEwCXsg0AAyuyCAkDK7AIELAH0LAC0LAAELAF0LANELAR0ACwAEVYsAovG7EKLD5ZsABFWLAELxuxBCQ+WbAARViwCC8bsQgkPlmwChCxAAH0sgYEChESObAGL7KPBgFdsQMC9LAAELAM0LAN0LIQBAoREjmwEC+yjxABXbQfEC8QAnGy/xABXbJfEAFdsQ8C9LAEELESAfQwMQEjAzMBITUhByMBIRUhFSEVIRUhAeoEztIBov5e/vtzbgGwAdj+ugEm/toBRgJ0/qT+6MLCAsxY41bjAAAAAwAl/9sDBQLyAAcADwAlAK+yAxsDK7IQCwMrshUYAyuyIyADK7IFGCAREjmyBiAYERI5sg0jFRESObIOFSMREjkAsABFWLAeLxuxHiw+WbAARViwEy8bsRMkPlmwHhCxAAH0sBMQsQgB9LIFCAAREjmyBgAIERI5sg0ACBESObIOCAAREjmyFRMeERI5sBMQsBbcsBfQPbAXLxiyGBMeERI5siAeExESObAeELAh3LAi0D2wIi8YsiMTHhESOTAxASIGFRQXASYDMjY1NCcBFgEUBiMiJwcnNy4BNTQ2MzIXNxcHHgEBlXWdXgErNkF1nV3+1TYBsNScWUwlPyVCStScWE4mPiZDSQKEonyKUgHgGv3EonyIU/4hGgEentgmOyc7NJxZntgnPSg8NZsAAAIAOAAAAe4CEQALAA8ARLICBQMrsAUQsAjQsAIQsAvQALAARViwDS8bsQ0kPlmxDAb0sAPcsALcsAXQsAUvsAIQsQsG9LAI0LAIL7ALELAK3DAxARUjFSM1IzUzNTMVExUhNQHutUy1tUy1/koBdEydnUydnf7YTEwAAAABAAwAAAIwAqwAFwCeshcIAyuyDg0DK7ISEQMrsBcQsALQsAgQsAXQALAARViwES8bsREuPlmwAEVYsA4vG7EOLj5ZsABFWLADLxuxAyQ+WbIAAxEREjmwAC+ybwABcbEBBvSwBdCwBS+wABCwCNCwCC+wABCwFdy2YBVwFYAVA3G2oBWwFcAVA12wCdCwCS+wFRCxFAb0sAzQsAwvshAOAxESOT2wEC8YMDElFSMVIzUjNTM1IzUzAzMTMxMzAzMVIxUB9adcq6urerVpqQSlabJ3p/JMpqZMVEwBGv7mARr+5kxUAAD//wA0/ygB5gHqAgYA4gAAAAIAKAEQAbYC3AAMACgAmrIAEAMrsiIWAyuwFhCwBtCwABCwG9CwEBCwHNCwBhCwJdAAsABFWLAfLxuxHyw+WbAN3LEDBvSyEx8NERI5sBMvsArctqAKsArACgNxQAmgCrAKwArQCgRdsgYKAxESObIVEw0REjmwHxCxGQb0shsZExESOXywGy8YshwbHxESOT2wHC8YsA0QsCTQfbAkLxiyJg0TERI5MDETFBYzMjY1JicmIyIGFyImNTQ2MzIXNTQmIyIHJz4BMzIWFREjNSMOAYQ0JjRQDiIeGTk+TEdha1VLLz8vSSBOE19BWG5UBBVMAZ8eJUcyDAsHLLdTQENQHA8tODcmKzRlVP77PiMpAAAAAAIAJAEQAeAC3AAPAB8AKLIQCAMrsgAYAysAsABFWLAMLxuxDCw+WbAE3LEUBPSwDBCxHAT0MDEBFAcGIyInJjU0NzYzMhcWBRQXFjMyNzY1NCcmIyIHBgHgPz9gYD8/Pz9gYD8//pwnKDc3JygoJzc3KCcB9mNCQUFCY2NBQkJBY0ArKysrQD8rLCssAAAAAAMAHP/wA1oB+gAGAC8APAEHsjAPAyuyABUDK7IlAQMrsDAQsBrQsBovsA8QsBvQsBsvsAAQsCfQsAEQsCzQsCUQsC3QsBUQsDbQALAARViwIi8bsSIqPlmwAEVYsB0vG7EdKj5ZsABFWLAHLxuxByQ+WbAARViwDC8bsQwkPlmyEgwdERI5sBIvsADQsAAvspAAAV203wDvAAJxtFAAYAACcbKwAAFxsCIQsQQD9LIKDB0REjmyFBIMERI5sB0QsRgE9LIaGBIREjl8sBovGLIbGh0REjk9sBsvGLIgHQwREjmwABCxJwb0sAcQsSoD9LIsJyoREjl9sCwvGLItLAcREjk9sC0vGLAMELEzBPSwEhCxOgX0MDEBIS4BIyIGEyImJwYjIiY1NDYzMhc1NCYjIgcnNjMyFhc2MzIWFQchHgEzMjcXDgElFBYzMjY1JicmIyIGAd0BGwRLPzROikFpIESKUW1zYFgzSzNRJVQ5jT1hG0N4bYEB/n0CXUFYMlIhdf2/PSk7XhQnHSQ4SwEwM0NB/os6NnBgSExaHhUwQ0UpbjQwZI1/CkdZWCg+RqYkMFc5DwoJNgAAAAMAHP/fAhQCDAAHAA8AIwCvsgMaAyuyEAsDK7IVGAMrsiIfAyuyBRgfERI5sgYfGBESObINIhUREjmyDhUiERI5ALAARViwHS8bsR0qPlmwAEVYsBMvG7ETJD5ZsB0QsQAD9LATELEIA/SyBQgAERI5sgYACBESObINAAgREjmyDggAERI5shUTHRESObATELAW3LAX0D2wFy8YshgdExESObIfHRMREjmwHRCwINywIdA9sCEvGLIiEx0REjkwMQEiBhUUFxMmAzI2NTQnAxYlFAYjIicHJzcmNTQ2MzIXNxcHFgEYRFwstB4iRFwqsx4BG49tOTIZOxtYj208Mho6HFYBpmNOTTABIA7+nmNOSzD+4Q2xcZQWJyErS39xlBgqIixOAAAAAgAl/xgBvgH6ABcAIwBQsgcTAyuyDQwDK7IBAAMrsh4YAysAsABFWLAbLxuxGyo+WbAARViwEC8bsRAmPlmwGxCxIQj0sADcsBAQsQoB9LIMCgAREjmyDQAQERI5MDETMxUUDgIVFBYzMjcXDgEjIiY1ND4BNyc0NjMyFhUUBiMiJsReIV0hPDNXH1YYbEhacyp0ARUoHB0nJx0cKAEWLylAVjIgLzdgJEJSa1MqTWo0yx0nJx0cKCgAAAACADD/KAC4AfoABQARADGyAQIDK7IGDAMrALAARViwDy8bsQ8qPlmwAEVYsAEvG7EBJj5ZsA8QsQkI9LAE3DAxNxUjNRMzNxQGIyImNTQ2MzIWolwKSCAnHRwoKBwdJwri4gEMoBwoKBwdJycAAAAAAQAwAGkB4gGBAAUAFbIBAgMrALAEL7AC3LAEELEFBvQwMQERIzUhNQHiSP6WAYH+6MxM//8AKAA0AfAB6gAmALwAAAAHALwAyAAA//8APAA0AgQB6gAmAL0AAAAHAL0AyAAAAAIAGAAAAhsC1AALACUAr7IMDwMrsiMkAyuyAAYDK7APELAS0LAMELAh0ACwAEVYsBgvG7EYLD5ZsABFWLASLxuxEio+WbAARViwDS8bsQ0kPlmwAEVYsCQvG7EkJD5ZsBIQsAPcsrADAV20IAMwAwJxspADAXGyjwMBcbJQAwFxsvADAV2ycAMBXbawA8AD0AMDcbEJB/SwEhCxDwP0sAzQshoYDRESObAYELEdAvSyGw0dERI5sBIQsCHQMDEBFAYjIiY1NDYzMhYBESMRIzUzNTQ+AjMyFwcmIyIGHQEhESMRAhsmGxsmJhsbJv61XFxcGSw9JDIgGRgeIisBOFwCkxsmJhsbJib+6P5qAZZURyQ8KxgRUQwvJz7+FgGWAAEAGAAAAggC0AAUAGSyCg0DK7IBAgMrsAoQsAfQsA0QsBDQALAARViwFC8bsRQsPlmwAEVYsBAvG7EQKj5ZsABFWLACLxuxAiQ+WbAARViwCy8bsQskPlmwFBCxBAP0sBAQsAfQsBAQsQ0D9LAK0DAxAREjESMiHQEzFSMRIxEjNTM1NDYzAghcilKAgFxcXGBOAtD9MAJ8XDZU/moBllRBSlv//wAw//oCkACCACYAIAAAACcAIADsAAAABwAgAdgAAP//AAwAAAKQA4QCJgAzAAABBwBSAHwAuAAPALQvDT8NAl2ysA0BXTAxAAAA//8ADAAAApADigImADMAAAEHANMAiQC4ABQAtC8MPwwCXbJwDAFdsrAMAV0wMQAA//8AJf/wAwUDigImAEEAAAEHANMAzQC4ABQAtC8gPyACXbJwIAFdsrAgAV0wMQAAAAIAJf/wBEkC3AAPACgAnrIAGAMrsicRAyuwERCwCNCwHtCwJxCwI9AAsABFWLAcLxuxHCw+WbAARViwHy8bsR8sPlmwAEVYsBQvG7EUJD5ZsABFWLAQLxuxECQ+WbAUELEEAfSwHBCxDAH0shIUHBESObIeHBQREjmwHxCxIQH0siUQHxESObAlL7L/JQFdso8lAV20HyUvJQJxsl8lAV2xJAL0sBAQsScB9DAxExQXFjMyNzY1NCcmIyIHBgEhNQYjIicmNTQ3NjMyFzUhFSEVIRUhFSGDTk91dU5PT051dU9OA8b+XmWtnGpqamqcrGYBov66ASb+2gFGAWZ8UVFRUH19UFFRUf4ebn5sa5+fa2x/b1jjVuMAAAAAAwAc//ADnAH6ACMAKgA6AM6yKwkDK7IaMwMrshgkAyuyAhozERI5shAzGhESObAkELAg0LAYELAh0LAaELAq0ACwAEVYsA0vG7ENKj5ZsABFWLATLxuxEyo+WbAARViwBS8bsQUkPlmwAEVYsAAvG7EAJD5ZsgIFDRESObIQDQUREjmyGRMAERI5sBkvtqAZsBnAGQNdsmAZAXG0UBlgGQJysAAQsR4D9LIgGR4REjl9sCAvGLIhIAAREjk9sCEvGLAZELEkBvSwExCxJwP0sAUQsS8D9LANELE3A/QwMQUiJw4BIyInJjU0NzYzMhYXPgEzMh4CFQchFhcWMzI3Fw4BEy4BIyIGBwUUFxYzMjc2NTQnJiMiBwYCtIpDIGxDbUhHR0htQ20gH2g/Nlg+IgH+fQIuL0FZMVIhdDsESz80Tgv+WS4uREQuLi4vQ0MvLhB1OTxKTG9xSko8OTk8JEVkPwpHLSxYKD9FAUAzQ0A2O08xMTExT04xMjIxAAAAAQA4ARACGAFcAAMACgCwAC+xAwb0MDEBITUhAhj+IAHgARBMAAAAAAEAOAEQA0QBXAADAAoAsAAvsQMG9DAxASE1IQNE/PQDDAEQTAAAAP//ADAB8gFoAtwAJgC2AAAABwC2ALAAAP//ADAB8gFoAtwAJwC3ALAAAAAGALcAAAABADAB8gC4AtwADgA1sgULAyuwCxCwAtwAsABFWLAALxuxACw+WbAB0D2wAS8YsAAQsQIP9LEIB/SyDggAERI5MDETFwceARUUBiMuATU0NjeNKzIVHScdHScKCwLcHEwEIhgcKAEoHQ4eDwABADAB8gC4AtwADQAqsgsFAyuwCxCwAtwAsABFWLAILxuxCCw+WbECB/SxAA/0sg0IABESOTAxEyc3LgE1NDYzMhYVFAdbKzIVHSgcHScVAfIcTAQiGB0nJx0cIQAAAAADADgAFAHuAgoACwAPABsALLIQFgMrsBAQsADQsBYQsAbQALANL7EMBvSwA9yxCQj0sA0QsBncsRMI9DAxARQGIyImNTQ2MzIWFxUhNQUUBiMiJjU0NjMyFgFXJx0cKCgcHSeX/koBHycdHCgoHB0nAcYcKCgcHScnrkxM3RwoKBwdJycAAAD//wAE/ygB7gLMAiYAawAAAAYAmzMAAAAAAf9Q//gBWgLUAAMAPbICAQMrsgADAysAsABFWLADLxuxAyw+WbAARViwAS8bsQEkPlmwAxCwANA9sAAvGLABELAC0D2wAi8YMDEJAScBAVr+LzkB0gKu/UolArcAAAAAAQAY//ACXQK8ACUAvLIdCgMrsAoQsAnQsAbQsAoQsAvQsA7QsB0QsBzQsBnQsB0QsB7QsCHQALAARViwES8bsREuPlmwAEVYsAMvG7EDJD5ZsSQB9LARELEWAfSyACQWERI5sgEDERESObIfJBYREjmwHy+0vx/PHwJdsSAG9LAG0LAGL7AfELAJ0LAJL7AfELAb3LZgG3AbgBsDcbagG7AbwBsDXbAL0LALL7AbELEaBvSwDtCwDi+yExEDERI5shQWJBESOTAxJRcGIyImJyM1Myc3IzUzPgEzMhcHJiMiBgczFSMHFzMVIx4BMzICMypGXnGuIWFSAgJSYSGucVVALDA5TXcb3/ECAvHfG3dNQmlQKYJuTCoqTG6CKUsbUEdMKipMR1AAAAAAAQAoADQBKAHqAAUAJgCwAEVYsAUvG7EFKj5ZsADQPbAALxiwBRCwA9ywAtA9sAIvGDAxAQcXByc3ASigoDbKygG4qaky29sAAQA8ADQBPAHqAAUAJgCwAEVYsAQvG7EEKj5ZsADcsAHQPbABLxiwBBCwA9A9sAMvGDAxNyc3JzcXcjagoDbKNDKpqTLbAAAAAQAUAQAAnAGIAAsAD7IABgMrALADL7EJCPQwMRMUBiMiJjU0NjMyFpwnHRwoKBwdJwFEHCgoHB0nJwD//wAw/5gAuACCAgcAtwAA/aYAAP//ADD/mAFoAIIAJwC3ALD9pgAHALcAAP2mAAD//wAMAAACkAOEAiYAMwAAAQcA0gCGALgACgC0LxM/EwJdMDH//wBIAAAB6gOEAiYANwAAAQcA0gBRALgACgC0Lww/DAJdMDH//wAMAAACkAOEAiYAMwAAAQcAmgCQALgAFAC0Lw0/DQJdsnANAV2ysA0BXTAxAAD//wBIAAAB6gOEAiYANwAAAQcAmwBNALgAJQC0Lw8/DwJdsnAPAV2ysA8BXbQvGz8bAl2ycBsBXbKwGwFdMDEA//8ASAAAAeoDhAImADcAAAEHAFIAUQC4ABQAtC8OPw4CXbJwDgFdsrAOAV0wMQAA//8ASAAAAOYDhAImADsAAAEHAJr/tgC4ABQAtC8GPwYCXbJwBgFdsrAGAV0wMQAA////5wAAAQUDhAImADsAAAEHANL/rgC4ABQAtC8EPwQCXbJwBAFdsrAEAV0wMQAAAAP/+QAAAPMDhQALABcAGwBCshgZAyuyDBIDK7IABgMrALAARViwGy8bsRssPlmwAEVYsBgvG7EYJD5ZsBsQsAPcsQkU9LADELAP0LAJELAV0DAxExQGIyImNTQ2MzIWBxQGIyImNTQ2MzIWEyMRM/MhGBYjIhcZIIghGBYjIhcZIDlcXANMFyIjFhghIBkXIiMWGCEg/JsCzAAA//8ABgAAAKQDhAImADsAAAEHAFL/pgC4ABQAtC8GPwYCXbJwBgFdsrAGAV0wMQAA//8AJf/wAwUDhAImAEEAAAEHAJoA1QC4ABQAtC8iPyICXbJwIgFdsrAiAV0wMQAA//8AJf/wAwUDhQImAEEAAAEHANIAzQC5ABQAtC8gPyACXbJwIAFdsrAgAV0wMQAAAAEAU//XA4IDFwAiAD2yGg0DK7IFIgMrALAJL7ARL7IBEQkREjmwAS+xAB/0shMRARESObARELEWIPSyFBYBERI5sAkQsR4g9DAxATUhHgEVFAcGIyInJjU0NzYzMhcHJiMiBwYVFBcWMzI3NjcB8wGIBANvbrKsenp5ea6idHdDXGRKSEhKZFc+Pg0BIqERKxq1cHF5eq2seXtseD5KSmZoSUotL0oA//8AJf/wAwUDhAImAEEAAAEHAFIAxQC4ABQAtC8iPyICXbJwIgFdsrAiAV0wMQAA//8AOP/wAkoDhAImAEcAAAEHAJoAewC4ABQAtC8VPxUCXbJwFQFdsrAVAV0wMQAA//8AOP/wAkoDhAImAEcAAAEHANIAeQC4ABQAtC8UPxQCXbJwFAFdsrAUAV0wMQAA//8AOP/wAkoDhAImAEcAAAEHAFIAdwC4ABQAtC8WPxYCXbJwFgFdsrAWAV0wMQAAAAEAQAAAAJwB6gADACKyAQIDKwCwAEVYsAAvG7EAKj5ZsABFWLABLxuxASQ+WTAxExEjEZxcAer+FgHqAAEAOQJSAVcCzAAJACmyAAEDK7IGBwMrALAAL7IgAAFdsQMS9LAAELAH0LIJAwAREjmwCS8wMRMjNTczFxUjJyOSWWdQZ1kyCAJSBXV1BTwAAQAgAlIBcALSABIAPLIFBgMrshAPAysAsAAvsiAAAV2wA9ywABCwBdB9sAUvGLADELEJA/SwABCxDQP0sAkQsA/QfLAPLxgwMQEiJiMiByM0NjMyFxYzMjczFAYBARhVBx8CTEEuHTQeBR8CTEECUi0jNUEeDyM1QQAAAAEAPAJvAVQCtwADAB4AsAEvssABAV2yIAEBXbKgAQFdsoABAV2xAAz0MDEBFSE1AVT+6AK3SEgAAgBgAjgBMAMIABMAHwBDshQAAyuyChoDKwCwDy+yfw8BXbKfDwFdsB3csvAdAV2yHx0BXbLQHQFxtIAdkB0CXbIwHQFysQUO9LAPELEXDvQwMRM0PgIzMh4CFRQOAiMiLgI3FBYzMjY1NCYjIgZgEB0mFRUmHRAQHSYVFSYdEDwaEhIaGhISGgKgFiYcEBAdJhUVJh0QEB0mFRIbGxISGhoAAAABAEf/EwEKAAAAGABEsgAMAyuyFBMDKwCwFi+xDxj0sAncsQMX9LIGAxYREjmyBwkPERI5shEPCRESObISFgMREjmwFhCwFNyyFRYDERI5MDEFFAYjIiYnNxYzMjY1NCYjIgcnNzMHNzIWAQo6Kx80CzQLHxIXFxITDi8jOBUUJjWNKDglHhciFxESGBAWXTACNgAAAQAYAV4AtgLMAAYAM7IBAgMrALAARViwAC8bsQAsPlmxARn0su8BAV2yBQABERI5sAUvsQQN9LIDBAAREjkwMRMRIxEHJze2RkAYcALM/pIBHRo2NQAAAAEAGAAAARQBdgAVAF+yEgYDK7IVAwMrsBIQsADQsBUQsAvQsAMQsAzQALAARViwAS8bsQEkPlmxAA30sAPQsAEQsQ8Z9LLgDwFdsQkN9LIECQMREjmyCwkDERI5sgwPABESObIUAA8REjkwMSUVIzU3NjU0JiMiByc+ATMyFhUUDwEBFPqPIR4WMQxBCUYuNEkzaUBAPJAjGxMZOhsrND0vLDZoAAAAAAEAGAFeARQC1AAVAF+yFQMDK7ISBgMrsBIQsADQsBUQsAvQsAMQsAzQALAARViwDy8bsQ8sPlmxARn0su8BAV2xAA30sAPQsA8QsQkN9LIECQMREjmyCwkDERI5sgwPABESObIUAA8REjkwMQEVIzU3NjU0JiMiByc+ATMyFhUUDwEBFPqPIR4WMQxBCUYuNEkzaQGeQDyQIxsTGTobKzQ9Lyw2aAAAAAEAGAFWASMC1AAjAIKyHwkDK7IbEAMrsgQDAyuwBBCwFdCwAxCwFtAAsABFWLAYLxuxGCw+WbEAGfSy7wABXbILABgREjmwCy+04AvwCwJxsgALAXKyAwALERI5sAAQsQYN9LIECwYREjmwCxCxDg70sBgQsRMN9LIVDhMREjmyFhgOERI5sh0OCxESOTAxEyImJzcWMzI2NTQrATUzMjU0JiMiByc2MzIWFRQHFhUUDgKeM0cMQQ04GSRHHh08HRUqED4cXDZELTkUJDEBVjQwGDwfFzI8LxMYKxlSOjAvHCEzGiogEQACABwAAAE9AW4ACgAOAFmyAAMDK7IMBQMrsAAQsAjQsAMQsA3QALAARViwAS8bsQEkPlmxBxn0suAHAV2yAAcBERI5sAAvsAPQsAAQsQgO9LIFCAAREjmwDdCyDgcBERI5PbAOLxgwMSUVIzUjNTczFTMVJwczNQENRquuQzB6XmJISEgw9uo8v4ODAAIAHAFeAT0CzAAKAA4AWbIAAwMrsgwFAyuwABCwCNCwAxCwDdAAsABFWLAHLxuxByw+WbEBGfSy7wEBXbIAAQcREjmwAC+wA9CwABCxCA70sgUACBESObAN0LIOBwEREjk9sA4vGDAxARUjNSM1NzMVMxUnBzM1AQ1Gq65DMHpeYgGmSEgw9uo8v4ODAAAAAAEAOAAAAVAB+AANAFGyDA0DK7AMELAC0ACwAEVYsAUvG7EFKj5ZsABFWLABLxuxASo+WbAARViwDC8bsQwkPlmyAwUMERI5sgYFDBESObAFELEIEPSyBwwIERI5MDETMxUzNjMXFSciBhURIzhYBCmAEylAU1wB6lBeAmAETz3+8gAAAAIAPABbAhoCMAAcACwAlbIdBAMrshIlAysAsAsvsBkvsl8ZAV2y7xkBXbAA3LAB0D2wAS8YskALAXGyAhkLERI5sgYLGRESObALELAI3LAH0D2wBy8YsgkLGRESObAJELAN0LAIELAO0LAHELAP0LAGELAQ0LACELAU0LABELAV0LAAELAW0LIcGQsREjmwHBCwF9CwGRCxIQT0sAsQsSkE9DAxNyc3JjU0Nyc3FzYzMhc3FwcWFRQHFwcnBiMiJi8BFBcWMzI3NjU0JyYjIgcGcTU8JSU8NTs4R0c4OzU7JCQ7NTs8QyFBHQUmJzc4JScnJjc3JyZbNjo6QEY0OzY5KSk5Njo2RUQ2OjY5KhUVsTopKCgoOzkpKSkpAAAA//8AOAEQAXgBXAIGAB8AAAABADT/KAHmAeoAFQBvsg4NAyuyABUDK7AVELAD0LAOELAK0ACwAEVYsAAvG7EAKj5ZsABFWLANLxuxDSo+WbAARViwCy8bsQsmPlmwAEVYsAYvG7EGJD5ZsABFWLACLxuxAiQ+WbIEDQYREjmyCQYNERI5sAYQsRED9DAxAREjNSMGIyInIxcVIxEzERQzMjY1EQHmWAQyZTUuBARcXHk3SgHq/hZEVCg4uALC/uWLWj4BDv//ABwBXgE9AswCBgDeAAAAAwAg//ADqQK8ABkAKQA4AJWyNCIDK7IaLQMrshEEAysAsABFWLAmLxuxJi4+WbAARViwCC8bsQguPlmwAEVYsAAvG7EAJD5ZsgoIABESObAIELENAfSwABCxFQH0sgsNFRESObIXFQ0REjmyGAAIERI5sCYQsB7csh8eAXG0jx6fHgJxtM8e3x4CcbSfHq8eAl203x7vHgJdsSoN9LAmELEwDfQwMQUiJyY1NDc2MzIXByYjIgcGFRQXFjMyNxcGARQHBiMiJyY1NDc2MzIXFgcyNjU2JiMiBwYVFB4CApmYZmZmZpiYYz9EeHNJSkpKcnlXQGv95ycmNTUoJiYoNTYmJoIZJQEoGRkSEgkRFxBmZ5mZZmdyPldLSnh3TEpjP30CSzYlJiYmNTUmJiYmdicaHCUTERoNGRMMAAMAIAAAAw0CvAAJABkAKACJsiQSAyuyCh0DK7IBAgMrsAEQsAfQsAcvALAARViwFi8bsRYuPlmwAEVYsAQvG7EELj5ZsABFWLACLxuxAiQ+WbAEELEFAfSyCQIEERI5sAkvsQgC9LAWELAO3LTfDu8OAl20nw6vDgJdtI8Onw4CcbTPDt8OAnGyHw4BcbEaDfSwFhCxIA30MDEBESMRIRUhFSEVARQHBiMiJyY1NDc2MzIXFgcyNjU2JiMiBwYVFB4CAdVcAZT+yAEZ/jcnJjU1KCYmKDU2JiaCGSUBKBkZEhIJERcBI/7dAqxY21YBGDYlJiYmNTUmJiYmdicaHCUTERoNGRMMAAEAMABwBAIB/AAGADCyAgQDK7ACELAG0LAGLwCwAS+xAAb0sAEQsAPcsgQAARESOT2wBC8YsAAQsAXcMDEBFSEVJzcVBAL89MbGAVxMoMbGoAAAAAEAKP+IAbQDNAAGADOyAgMDK7K6CAFdso8IAV2yTwgBXbIwCAFdsnAIAV0AsAIvsAAvsATQsAQvsAAQsAbcMDEBIxEjESM3AbSgTKDGAm79GgLmxgAAAAABADgAcAQKAfwABgAtsgYBAyuwARCwBNCwBC8AsAIvsADcsAIQsQMG9LAF3LIGAwIREjk9sAYvGDAxJTUhNSE1FwNE/PQDDMZwoEygxgAAAAEAKP9sAbQDGAAGADOyAQADK7K6CAFdso8IAV2yTwgBXbIwCAFdsnAIAV0AsAEvsAIvsATcsAIQsAbQsAYvMDETMxEzByczyEygxsagAxj9GsbGAAEAKP/wAwQCzAAGAD6yAAYDKwCwAEVYsAYvG7EGLD5ZsABFWLADLxuxAyQ+WbAC0D2wAi8YsgEGAhESObIEBgMREjmwBhCwBdwwMQEHAQcBBxEBQHECNTb9y3ECzHH9yzYCNXEBGAAAAQAA//AC3ALMAAYAPrIEAwMrALAARViwBC8bsQQsPlmwAEVYsAAvG7EAJD5ZsAHQPbABLxiyAgQBERI5sAQQsAXcsgYEABESOTAxFycBJyERJzY2AjVxARhxEDYCNXH+6HEAAAEAKAAAAwQC3AAGAEGyAwQDKwCwAEVYsAAvG7EALD5ZsABFWLADLxuxAyQ+WbAAELAB0D2wAS8YsgIDARESObADELAF3LIGAwAREjkwMQEXARchERcCzjb9y3H+6HEC3Db9y3EBGHEAAQAAAAAC3ALcAAYAQbIGAAMrALAARViwAy8bsQMsPlmwAEVYsAYvG7EGJD5ZsAMQsALQPbACLxiyAQIGERI5sgQDBhESObAGELAF3DAxITcBNwE3EQHEcf3LNgI1cXECNTb9y3H+6P//ABsAAAGaAswCBgAhAAAABQAs//ADGALcAA8AHwArADcARQCNshAEAyuyDBgDK7IsMgMrsiAmAyuyQkMDK7I7PAMrALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZsRQN9LAIELEcDfSyNRwUERI5sDUvsC/csCPQsCMvsDUQsCnQsCkvskIUHBESObBCL7A/3LA43LSwOMA4Al2wQhCwQ9A9sEMvGLA70LBCELA80DAxBSInJjU0NzYzMhcWFRQHBgEUFxYzMjc2NTQnJiMiBwYFFAYjIiY1NDYzMhYFFAYjIiY1NDYzMhYXMhYXBy4BIyIGByc+AQGimm5ubm6amm5ubm7+MFtbgIBbW1tagYBbWwHxIRcXISEXFyH++iEXFyEhFxchSz9jGUMQQiYnQBBEGGYQbm6amm5ubm6amm5uAXaAW1tbW4CBWltbWyIYISEYFyAgFxghIRgXICCuQDcfIikpIh82QQAABQAs//ADGALcAA8AHwArADcARQCQshAEAyuyICYDK7IsMgMrsgwYAyuyQ0IDK7I8OwMrALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZsRQN9LAIELEcDfSyKRwUERI5sCkvsCPcsC/QsC8vsCkQsDXQsDUvsjgUHBESObA4L7A/3LSwP8A/Al2wPNywO9A9sDsvGLA8ELBC0LBCL7A7ELBD0DAxBSInJjU0NzYzMhcWFRQHBgEUFxYzMjc2NTQnJiMiBwYXFAYjIiY1NDYzMhYFFAYjIiY1NDYzMhYDIiYnNx4BMzI2NxcOAQGimm5ubm6amm5ubm7+MFtbgIBbW1tagYBbW+shFxchIRcXIQEGIRcXISEXFyG7PWYYRBBAJyZCEEMZYxBubpqabm5ubpqabm4BdoBbW1tbgIFaW1tbIhghIRgXICAXGCEhGBcgIP69QTYfIikpIh83QAAAAAMALP/wAxgC3AAPAB8AJgB9shAEAyuyISIDK7IMGAMrALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZsRQN9LAIELEcDfSyIBwUERI5sCAvsl8gAV2y/yABXbIPIAFxsiIUHBESObAiL7JQIgFdsvAiAV2yACIBcbIlIiAREjmwJS+wJNyyIyQgERI5MDEFIicmNTQ3NjMyFxYVFAcGARQXFjMyNzY1NCcmIyIHBiURIxEHJzcBoppubm5umppubm5u/jBbW4CAW1tbWoGAW1sBZkZAGHAQbm6amm5ubm6amm5uAXaAW1tbW4CBWltbWzn+kgEdGjY1AAAAAAMALP/wAxgC3AAPAB8ANgCVshAEAyuyDBgDK7IzJgMrsissAyuyNiMDKwCwAEVYsAgvG7EILD5ZsABFWLAALxuxACQ+WbEUDfSwCBCxHA30siEUHBESObAhL7JQIQFdsvAhAV2yACEBcbEgDfSwI9CyLxwUERI5sC8vsl8vAV2yDy8BcbEpDfSyJCkjERI5sispIxESObIsLyAREjmyNTMgERI5MDEFIicmNTQ3NjMyFxYVFAcGARQXFjMyNzY1NCcmIyIHBgUVIzU3NjU0JiMiByc+ATMyFxYVFA8BAaKabm5ubpqabm5ubv4wW1uAgFtbW1qBgFtbAbP6jyEeFjEMQQlGLjUjJTNpEG5umppubm5umppubgF2gFtbW1uAgVpbW1v1QDyQIhwTGTobKzQfHi8sNmgAAAMALP/wAxgC3AAPAB8AQwC8sgQQAyuyDBgDK7IkIwMrsj8pAyuyOzADK7AkELA10LAjELA20ACwAEVYsAgvG7EILD5ZsABFWLAALxuxACQ+WbEUDfSwCBCxHA30siAUHBESObAgL7JQIAFdsvAgAV2yACABcbI4HBQREjmwOC+yDzgBcbJfOAFdsisgOBESObArL7IjICsREjmwIBCxJg30sDgQsTMN9LIkJjMREjmwKxCxLg70sjUzJhESObI2OC4REjmyPS4rERI5MDEFIicmNTQ3NjMyFxYVFAcGARQXFjMyNzY1NCcmIyIHBgEiJic3FjMyNjU0KwE1MzI1NCYjIgcnNjMyFhUUBxYVFA4CAaKabm5ubpqabm5ubv4wW1uAgFtbW1qBgFtbATMzRwxBDTgZJEceHTwdFSoQPhxcNkQtORQkMRBubpqabm5ubpqabm4BdoBbW1tbgIFaW1tb/sM0MBg8HxcyPC8TGCsZUjowLxwhMxoqIBEABAAs//ADGALcAA8AHwAqAC4ApLIQBAMrsislAyuyDBgDK7IoLAMrsCgQsCDQsCwQsCPQALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZsRQN9LAIELEcDfSyJhwUERI5sCYvsv8mAV2yDyYBcbJfJgFdsiIUHBESObAiL7JQIgFdsvAiAV2yACIBcbIjJiIREjmwIy+wINCwIxCxLA70siUsJhESObAo0LItJiIREjk9sC0vGDAxBSInJjU0NzYzMhcWFRQHBgEUFxYzMjc2NTQnJiMiBwYFFSM1IzU3MxUzFSczNSMBoppubm5umppubm5u/jBbW4CAW1tbWoGAW1sBgUarrkMw2GIEEG5umppubm5umppubgF2gFtbW1uAgVpbW1vtSEgw9uo8PIMAAAMALP/wAxgC3AAPAB8APgC4shAEAyuyDBgDK7IgLQMrsignAyuyODMDK7A4ELAy0ACwAEVYsAgvG7EILD5ZsABFWLAALxuxACQ+WbEUDfSwCBCxHA30siQUHBESObAkL7JQJAFdsvAkAV2yACQBcbI1HBQREjmwNS+y/zUBXbIPNQFxsl81AV2xNg70sjo2JBESObA6L7InJDoREjmwJBCxKg30sDoQsTAO9LIoKjAREjmyMjAqERI5sjM6JBESObI4OiQREjkwMQUiJyY1NDc2MzIXFhUUBwYBFBcWMzI3NjU0JyYjIgcGBRQHBiMiJic3FjMyNjU0JiMiByc3MxUjBzYzMh4CAaKabm5ubpqabm5ubv4wW1uAgFtbW1qBgFtbAbwoJjgxSAxBDTcaJCQaJBk9GdGWDBckGy4hExBubpqabm5ubpqabm4BdoBbW1tbgIFaW1tbvjUlJTArGTQlGxslIRm9PFEUEyEuAAAABAAs//ADGALcAA8AHwAyAD4AlLIQBAMrsjMoAyuyIDkDK7IMGAMrALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZsRQN9LAIELEcDfSyJBQcERI5sCQvslAkAV2y8CQBXbIAJAFxsisUHBESObArL7IqKyQREjmwLNA9sCwvGLIvLyQREjmwLy+yLxwUERI5sC8vsTwO9LItPC8REjmwJBCxNg30MDEFIicmNTQ3NjMyFxYVFAcGARQXFjMyNzY1NCcmIyIHBgUUBwYjIicmNTQ/ARcHNjMyFxYHFBYzMjY1NCYjIgYBoppubm5umppubm5u/jBbW4CAW1tbWoGAW1sBtygmNzcoJyV0NlQFEDIkJcMjGhokJBoaIxBubpqabm5ubpqabm4BdoBbW1tbgIFaW1tbvzQlJSUlNDM0oSZqBCUlMRolJRoaJSUAAAAAAwAs//ADGALcAA8AHwAmAG6yEAQDK7IMGAMrsiAjAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmxFA30sAgQsRwN9LIlHBQREjmwJS+y/yUBXbIPJQFxsl8lAV2xJA30sCDQsiEUHBESObAhL7IAIQFxsCLQPbAiLxgwMQUiJyY1NDc2MzIXFhUUBwYBFBcWMzI3NjU0JyYjIgcGBQMnEyM1MwGimm5ubm6amm5ubm7+MFtbgIBbW1tagYBbWwG7rz6frPoQbm6amm5ubm6amm5uAXaAW1tbW4CBWltbWwP+vyEBHEAAAAAFACz/8AMYAtwADwAfADgARABQAJ2yEAQDK7JCLAMrsjU8AyuyDBgDK7JOKAMrsiBIAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmxFA30sAgQsRwN9LIkFBwREjmwJC+yUCQBXbLwJAFdsgAkAXGyMRwUERI5sDEvsl8xAV2yDzEBcbJLMSQREjmwSy+xOQ70sipLORESObI3SzkREjmwMRCxPw30sCQQsUUN9DAxBSInJjU0NzYzMhcWFRQHBgEUFxYzMjc2NTQnJiMiBwYFFAcGIyInJjU0NyY1ND4CMzIXFhUUBxYnMjY1NCYjIgYVFBYXMjY1NCYjIgYVFBYBoppubm5umppubm5u/jBbW4CAW1tbWoGAW1sBvCgoNjYpJzMnEyEsGjMjJCczhhQeHRUVHR0VGCYmGBklJRBubpqabm5ubpqabm4BdoBbW1tbgIFaW1tbyzEhICAhMTQjGS8YKB0QHyAuKh4jPhoTExoaExMapB8WFR8eFhYfAAAABAAs//ADGALcAA8AHwAyAD4AkLIQBAMrsjkgAyuyKDMDK7IMGAMrALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZsRQN9LAIELEcDfSyJBwUERI5sCQvsl8kAV2yDyQBcbIrFBwREjmwKy+yACsBcbIqKyQREjmwLNA9sCwvGLIvLyQREjmwLy+yLxQcERI5sC8vsCQQsTYN9LAvELE8DvQwMQUiJyY1NDc2MzIXFhUUBwYBFBcWMzI3NjU0JyYjIgcGFzQ3NjMyFxYVFA8BJzcGIyInJjc0JiMiBhUUFjMyNgGimm5ubm6amm5ubm7+MFtbgIBbW1tagYBbW64nKTU4JigtbDZUBRAyJSTDIxoaJCQaGiMQbm6amm5ubm6amm5uAXaAW1tbW4CBWltbWz0yJiYlJTQ2PJYmagQlJTEaJSUaGiUlAAIALP/wAxgC3AAPABYAY7IREAMrsgwEAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmyEQAIERI5sBEvslARAV2yABEBcbISCAAREjmwEi+yDxIBcbJfEgFdshQSERESObAUL7AV3LIWFRIREjkwMQUiJyY1NDc2MzIXFhUUBwYnMxEjBxc3AaKabm5ubpqabm5ubrBGLnAYQBBubpqabm5ubpqabm7BAW41NhoAAgAs//ADGALcAA8AJgB/sgQMAyuyFiMDK7ITJgMrsh4dAyuwFhCwEtAAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmyEQAIERI5sBEvslARAV2yABEBcbESDfSyGggAERI5sBovshQSGhESObIdGhEREjmxIA30sh4SIBESObASELAm0LIlICYREjkwMQUiJyY1NDc2MzIXFhUUBwYlMzUjNzY1NCcmIyIGBxc2MzIWFRQPAQGimm5ubm6amm5ubm7+6fqeaTMlIzUuRglBDDEWHiGPEG5umppubm5umppubsFAaDYsLx4fNCsbOhkTHCKQAAIALP/wAxgC3AAPADIAjbIMBAMrshgjAyuyFCoDK7IvMAMrsDAQsB3QsC8QsB7QALAARViwCC8bsQgsPlmwAEVYsAAvG7EAJD5ZshAACBESObAQL7IoEAgREjmwKC+xJQ70shYlKBESObIbCAAREjmwGy+yHRsQERI5sSAN9LAQELEtDfSyHiAtERI5si8tIBESObIwEBsREjkwMQUiJyY1NDc2MzIXFhUUBwYnMjc2NTQnNjU0JiMiBxc2MzIWFRQrARUzMhUUBiMiJwceAQGimm5ubm6amm5ubm6dOSYmOS1ENlwcPhAqFR08HR5HJBk4DUEMRxBubpqabm5ubpqabm61ISEzMyEcLzA6UhkrGBMvPDEXIDwYMDQAAwAs//ADGALcAA8AGgAeAI2yDAQDK7ISGgMrsh0YAyuwEhCwFdCwGhCwHNAAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmyEQAIERI5sBEvslARAV2yABEBcbIWCAAREjmwFi+yXxYBXbIPFgFxshMRFhESObATL7EUDvSyGBQTERI5sBMQsBrQshsWERESOT2wGy8YsBQQsBzQMDEFIicmNTQ3NjMyFxYVFAcGJzM1MzUjNSMHFTM1FSM3AaKabm5ubpqabm5ubpVGMDBDrqtiXhBubpqabm5ubpqabm7BSDzq9jC/g4MAAAACACz/8AMYAtwADwAuAJeyDAQDK7IrLAMrshsgAyuyFCYDK7AUELAd0ACwAEVYsAgvG7EILD5ZsABFWLAALxuxACQ+WbIQAAgREjmwEC+yHggAERI5sB4vsl8eAV2yDx4BcbIZHhAREjmwGS+yGxkQERI5sB4QsR0O9LIgGRAREjmwGRCxIw70sBAQsSkN9LIhIykREjmyKykjERI5siwQGRESOTAxBSInJjU0NzYzMhcWFRQHBicyNzY1NC4CIyIHNzM1IwcXNjMyFhUUBiMiJwceAQGimm5ubm6amm5ubm6aOCYoEyEuGyQXDJbRGT0ZJBokJBo3DUEMSBBubpqabm5ubpqabm65JSU1Gy4hExRRPL0ZISUbGyU0GSswAAADACz/8AMYAtwADwAiAC4AarIMBAMrsikQAyuyGCMDKwCwAEVYsAgvG7EILD5ZsABFWLAALxuxACQ+WbIUAAgREjmwFC+yIAgAERI5sCAvshwUIBESObAcL7AgELAf0D2wHy8YsiEgFBESObAUELEmDfSwHBCxLA70MDEFIicmNTQ3NjMyFxYVFAcGARQXFjMyNzY1NCcmIyIHNycHBhcUBiMiJjU0NjMyFgGimm5ubm6amm5ubm7+3CcoNzcmKCUkMhAFVDZ0JcMkGhojIxoaJBBubpqabm5ubpqabm4BNzQlJSUlNDIlJQRqJqE0MholJRoaJSUAAAIALP/wAxgC3AAPABYAVLITEAMrsgwEAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmyEgAIERI5sBIvsBHQPbARLxiyFQgAERI5sBUvsg8VAXGyXxUBXbEWDfSwE9AwMQUiJyY1NDc2MzIXFhUUBwYLARcTNSMVAaKabm5ubpqabm5ubmOfPq/6EG5umppubm5umppubgHv/uQhAUE8QAAABAAs//ADGALcAA8AJwAzAD8AdLIMBAMrsjoQAyuyGDQDK7IrJAMrshwxAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmyFAAIERI5sBQvsiAIABESObAgL7I9IBQREjmwPS+xKA70sho9KBESObImKD0REjmwIBCxLg30sBQQsTcN9DAxBSInJjU0NzYzMhcWFRQHBgEUFxYzMjc2NTQnNjU0JyYjIgcGFRQXBjciJjU0NjMyFhUUBhcUBiMiJjU0NjMyFgGimm5ubm6amm5ubm7+4CcpNjYoKDMnJCMzNCMjJzOGFR0dFRUdHiomGBklJRkYJhBubpqabm5ubpqabm4BKzEhICAhMTQjHiouIB8fIC4vGSM+GhMTGhoTExpvFh8fFhYeHwAAAwAs//ADGALcAA8AIgAuAG+yDAQDK7IjGAMrshApAysAsABFWLAILxuxCCw+WbAARViwAC8bsQAkPlmyFAgAERI5sBQvsiAACBESObAgL7IcIBQREjmwHC+wIBCwH9A9sB8vGLIhIBQREjmy9CEBXbAUELEmDfSwHBCxLA70MDEFIicmNTQ3NjMyFxYVFAcGAzQnJiMiBwYVFBcWMzI3Bxc3Nic0NjMyFhUUBiMiJgGimm5ubm6amm5ubm4XKCY4NSknJCUyDgZTNmwtwyQaGiMjGhokEG5umppubm5umppubgG5NCUlJiYyMiUlA2kmljw1GiUlGholJQAAAgAY//ADmALQACgAOACoshwfAyuyABUDK7IKLQMrsAAQsDXQsBLQsBwQsBnQsB8QsCLQALAARViwKC8bsSgsPlmwAEVYsAYvG7EGKj5ZsABFWLAiLxuxIio+WbAARViwDi8bsQ4kPlmwAEVYsB0vG7EdJD5ZsABFWLAULxuxFCQ+WbIDBg4REjmyEQ4GERI5sCgQsRYD9LAiELAZ0LAiELEfA/SwHNCwDhCxKQP0sAYQsTED9DAxARUHMz4BMzIXFhUUBwYjIiYnIxUjESMiHQEzFSMRIxEjNTM1ND4CMwEyNzY1NCcmIyIHBhUUFxYCCAQEGFk2YUNFRUNhNlkYBFiKUoCAXFxcGS5AJwF+Qi0tLS1CQy0sLC0C0OZEJi5MTWxtTEwuJkQCfFw2VP5qAZZUQSU9Kxj9dDIxTk0yMjIyTU4yMQAAAAEAGAAAAqQC1AAnAKmyFRgDK7IRFAMrsBUQsADQsBQQsAHQsBEQsA7QsBgQsBvQALAARViwGy8bsRsqPlmwAEVYsB8vG7EfLD5ZsABFWLAFLxuxBSw+WbAARViwFi8bsRYkPlmwAEVYsBMvG7ETJD5ZsBsQsADQsgcFExESObAFELEKAvSyCBMKERI5sAAQsA7QsBsQsRgD9LAV0LAR0LIhHxYREjmwHxCxJAL0siIWJBESOTAxEzM1NDYzMhcHJiMiBh0BMxUjESMRIxEjESM1MzU0NjMyFwcmIyIGFdDcXUkyIBkYHiIrgIBc3FxcXF1JMiAZGB4iKwHqR0laEVEMLyc+VP5qAZb+agGWVEdJWhFRDC8nAAACABj/8ATQAtQAPABMAPGyKSoDK7IlJgMrsggdAyuyEkEDK7ApELAA0LAmELAB0LAIELBJ0LAb0LAlELAh0LAqELAu0ACwAEVYsDQvG7E0LD5ZsABFWLAHLxuxByw+WbAARViwLi8bsS4qPlmwAEVYsA4vG7EOKj5ZsABFWLAWLxuxFiQ+WbAARViwGy8bsRskPlmwAEVYsCUvG7ElJD5ZsABFWLApLxuxKSQ+WbAuELAA0LILDhYREjmyGRYOERI5sAcQsR4D9LAAELAh0LAuELErA/SwKNCwJNCyNjQuERI5sDQQsTkC9LI3LjkREjmwFhCxPQP0sA4QsUUD9DAxEzM1ND4COwEVBzM+ATMyFxYVFAcGIyImJyMVIxEjIh0BMxUjESMRIxEjESM1MzU0PgIzMhcHJiMiBhUBMjc2NTQnJiMiBwYVFBcW0NwZLkAn5gQEGFk2YUNFRUNhNlkYBFiKUoCAXNxcXFwZLD0kMiAZGB4iKwMIQi0tLS1CQy0sLC0B6kElPSsY5kQmLkxNbG1MTC4mRAJ8XDZU/moBlv5qAZZURyQ8KxgRUQwvJ/4cMjFOTTIyMjJNTjIxAAAAAQAYAAAElgLUADcA4LIlKAMrsiEkAyuyGBkDK7IQEQMrsCUQsADQsCQQsAHQsBgQsAfQsCEQsB7QsCgQsCvQALAARViwLy8bsS8sPlmwAEVYsAUvG7EFLD5ZsABFWLArLxuxKyo+WbAARViwDC8bsQwqPlmwAEVYsCYvG7EmJD5ZsABFWLAjLxuxIyQ+WbAARViwGS8bsRkkPlmwAEVYsBEvG7ERJD5ZsCsQsAHQsgkMGRESObAMELEUA/SwBRCxGwP0sAEQsB7QsCsQsSgD9LAl0LAh0LIxLyYREjmwLxCxNAL0sjImNBESOTAxEzM1NDY7ARUHMz4BMzIWFREjETQjIgYVESMRIyIdATMVIxEjESMRIxEjNTM1NDYzMhcHJiMiBhXQ3GBO5gQEFVcvWmFcdThNXIpSgIBc3FxcXF1JMiAZGB4iKwHqQUpb5kQkMGdf/swBIoRdPv71AnxcNlT+agGW/moBllRHSVoRUQwvJwAAAgAYAAADUwLUAAsAOQD4siUoAyuyISQDK7IdIAMrsgAGAyuwJRCwDNCwJBCwDdCwIRCwHNCwKBCwK9AAsABFWLArLxuxKyo+WbAARViwMS8bsTEsPlmwAEVYsBMvG7ETLD5ZsABFWLAeLxuxHiQ+WbAARViwIi8bsSIkPlmwAEVYsCYvG7EmJD5ZsCsQsAPcsrADAV20IAMwAwJxspADAXGyjwMBcbJQAwFxsvADAV2ycAMBXbawA8AD0AMDcbEJB/SwKxCwDNCyFRMiERI5sBMQsRgC9LIWIhgREjmwDBCwHNCwKxCxKAP0sCXQsCHQsjMxJhESObAxELE2AvSyNCY2ERI5MDEBFAYjIiY1NDYzMhYFMzU0PgIzMhcHJiMiBh0BIREjESMRIxEjESMRIzUzNTQ+AjMyFwcmIyIGFQNTJhsbJiYbGyb9fdwZLD0kMiAZGB4iKwE4XNxc3FxcXBksPSQyIBkYHiIrApMbJiYbGyYmxEckPCsYEVEMLyc+/hYBlv5qAZb+agGWVEckPCsYEVEMLycAAgAY/x4DUwLUAAsAQgEYsi4xAyuyKi0DK7IeKAMrsgAGAyuwLhCwDNCwLRCwDdCwKhCwHNCwMRCwNNAAsABFWLA6LxuxOiw+WbAARViwEy8bsRMsPlmwAEVYsB0vG7EdKj5ZsABFWLA0LxuxNCo+WbAARViwLy8bsS8kPlmwAEVYsCwvG7EsJD5ZsABFWLAhLxuxISY+WbAdELAD3LKwAwFdtCADMAMCcbKQAwFxso8DAXGyUAMBcbLwAwFdsnADAV22sAPAA9ADA3GxCQf0sDQQsA3QshUTLBESObATELEYAvSyFiwYERI5siMhExESObAhELEmA/SyJBgmERI5sB0QsSkD9LA0ELExA/SwLtCyPC86ERI5sDoQsT8C9LI9Py8REjkwMQEUBiMiJjU0NjMyFgUzNTQ+AjMyFwcmIyIGHQEhERQGIyInNxYzMjcRIxEjESMRIxEjNTM1ND4CMzIXByYjIgYVA1MmGxsmJhsbJv193BksPSQyIBkYHiIrAThLSB4YGBALOALcXNxcXFwZLD0kMiAZGB4iKwKTGyYmGxsmJsRHJDwrGBFRDC8nPv3UTlIKUAZFAd/+agGW/moBllRHJDwrGBFRDC8nAAABABgAAASTAtQAMAD6sh4hAyuyGh0DK7IREgMrsg0OAyuwHhCwANCwHRCwAdCwERCwB9CwDhCwCNCwDRCwCtCwGhCwF9CwIRCwJNAAsABFWLAILxuxCCo+WbAARViwBS8bsQUsPlmwAEVYsCgvG7EoLD5ZsABFWLAkLxuxJCo+WbAARViwHy8bsR8kPlmwAEVYsBwvG7EcJD5ZsABFWLASLxuxEiQ+WbAARViwDi8bsQ4kPlmwJBCwANCyBxIIERI5shAIEhESObILCBAREjmyDxAIERI5sAUQsRQD9LAAELAX0LAkELEhA/SwHtCwGtCyKigfERI5sCgQsS0C9LIrHy0REjkwMRMzNTQ2OwERNzMVBxMVIycHFSMRIyIdATMVIxEjESMRIxEjNTM1NDYzMhcHJiMiBhXQ3GBO5tR2v8hvmUtcilKAgFzcXFxcXUkyIBkYHiIrAepBSlv+Q9cEvv7cBOdKnQJ8XDZU/moBlv5qAZZUR0laEVEMLycAAAABABgAAANAAtQAJgCtshQXAyuyEBMDK7IHCAMrsBQQsADQsBMQsAHQsBAQsA3QsBcQsBrQALAARViwHi8bsR4sPlmwAEVYsAUvG7EFLD5ZsABFWLAaLxuxGio+WbAARViwFS8bsRUkPlmwAEVYsBIvG7ESJD5ZsABFWLAILxuxCCQ+WbAaELAA0LAFELEKA/SwABCwDdCwGhCxFwP0sBTQsBDQsiAeFRESObAeELEjAvSyIRUjERI5MDETMzU0NjsBESMRIyIdATMVIxEjESMRIxEjNTM1NDYzMhcHJiMiBhXQ3GBO5lyKUoCAXNxcXFxdSTIgGRgeIisB6kFKW/0wAnxcNlT+agGW/moBllRHSVoRUQwvJwAAAQAY//gDxALUAD4A67IrLAMrsicoAyuyGCQDK7ArELAA0LAoELAB0LAnELAQ0LAkELAR0LAYELAU0LAsELAw0ACwAEVYsDYvG7E2LD5ZsABFWLAHLxuxByw+WbAARViwFC8bsRQqPlmwAEVYsCEvG7EhJD5ZsABFWLAoLxuxKCQ+WbAARViwKy8bsSskPlmwFBCwEdCwAdCyCQcoERI5sAcQsQwC9LIKKAwREjmwFBCwE9ywFBCxFwP0sCEQsRsC9LIeGxQREjmyHxQhERI5sBcQsCXQsCnQsC3QsAEQsDDQsjgrNhESObA2ELE7AvSyOTsrERI5MDETMzU0PgIzMhcHJiMiBh0BMzUzFTMVIxUUFjMyNjcXBiMiJicRIxEjESMRIxEjNTM1ND4CMzIXByYjIgYV0NwZLD0kMiAZGB4iK9xceHgmGAsVCR0kMDxPAdxc3FxcXBksPSQyIBkYHiIrAepHJDwrGBFRDC8nPpaWVPQxIwUEUg1KQgES/moBlv5qAZZURyQ8KxgRUQwvJwAAAAABABgAAANeAtAAJQCXshwdAyuyEhMDK7IKCwMrsBIQsAHQsBwQsBjQsB0QsCHQALAARViwJS8bsSUsPlmwAEVYsAYvG7EGKj5ZsABFWLAhLxuxISo+WbAARViwHC8bsRwkPlmwAEVYsBMvG7ETJD5ZsABFWLALLxuxCyQ+WbIDBhMREjmwBhCxDgP0sCUQsRUD9LAhELAY0LAhELEeA/SwG9AwMQEVBzM+ATMyFhURIxE0IyIGFREjESMiHQEzFSMRIxEjNTM1NDYzAggEBBVXL1phXHU4TVyKUoCAXFxcYE4C0OZEJDBnX/7MASKEXT7+9QJ8XDZU/moBllRBSlsAAgAY/x4CGwLUAAsALgDEshYXAyuyLBMDK7IABgMrsBcQsBvQsBYQsCrQALAARViwIS8bsSEsPlmwAEVYsBsvG7EbKj5ZsABFWLAMLxuxDCY+WbAARViwFi8bsRYkPlmwGxCwA9yysAMBXbQgAzADAnGykAMBcbKPAwFxslADAXGy8AMBXbJwAwFdtrADwAPQAwNxsQkH9LIODBsREjmwDBCxEQP0sg8bERESObAbELEYA/SwFdCyIyEWERI5sCEQsSYC9LIkFiYREjmwGxCwKtAwMQEUBiMiJjU0NjMyFgMiJzcWMzI3ESMRIxEjNTM1ND4CMzIXByYjIgYdASERFAYCGyYbGyYmGxsmph4YGBALOALcXFxcGSw9JDIgGRgeIisBOEsCkxsmJhsbJib8cApQBkUB3/5qAZZURyQ8KxgRUQwvJz791E5SAAABABgAAANbAtAAHgCxshQXAyuyCwwDK7IHCAMrsAsQsAHQsAgQsALQsAcQsATQsBQQsBHQsBcQsBrQALAARViwAi8bsQIqPlmwAEVYsB4vG7EeLD5ZsABFWLAaLxuxGio+WbAARViwFS8bsRUkPlmwAEVYsAwvG7EMJD5ZsABFWLAILxuxCCQ+WbIBAgwREjmyCgwCERI5sgUCChESObIJCgIREjmwHhCxDgP0sBoQsBHQsBoQsRcD9LAU0DAxARE3MxUHExUjJwcVIxEjIh0BMxUjESMRIzUzNTQ2MwII1Ha/yG+ZS1yKUoCAXFxcYE4C0P5D1wS+/twE50qdAnxcNlT+agGWVEFKWwAAAQAY//gCjALUACoAorIHCgMrsiMGAyuwChCwDdCwBxCwHNCwBhCwHdCwIxCwINAAsABFWLATLxuxEyw+WbAARViwDS8bsQ0qPlmwAEVYsAgvG7EIJD5ZsABFWLACLxuxAiQ+WbANELAc0LAg0LIAAiAREjmwDRCxCgP0sAfQshUIExESObATELEYAvSyFhgIERI5sA0QsB7csAcQsCPQsAIQsScC9LIqICcREjkwMSUGIyImJxEjESMRIzUzNTQ+AjMyFwcmIyIGHQEzNTMVMxUjFRQWMzI2NwKMJDA8TwHcXFxcGSw9JDIgGRgeIivcXHh4JhgLFQkFDUpCARL+agGWVEckPCsYEVEMLyc+lpZU9DEjBQQA//8AOAAAAugC1AAnAFgBfAAAAAYA3wAA//8AOAAABCAC1AAmAN8AAAAHAQQBfAAA//8AOP/4AsoCgAAnAGYBfAAAAAYA3wAAAAEAGP/4Ap4C1AAnAKWyHwQDK7IbHgMrsAQQsAfQsB8QsArQsB4QsAvQsBsQsBjQALAARViwBy8bsQcqPlmwAEVYsA8vG7EPLD5ZsABFWLAALxuxACQ+WbAARViwHC8bsRwkPlmwBxCxBAP0sAcQsAjcsAcQsArQshEPHBESObAPELEUAvSyEhwUERI5sAoQsBjQsAQQsB/QsBvQsAAQsSMC9LIlByMREjmyJgAHERI5MDEXIiYnESM1MzUzFTM1NDYzMhcHJiMiBh0BMxUjESMRIxUUFjMyNxcG+jtQAVZWXNxdSTIgGRgeIiuAgFzcIxgXFR0lCEpCARJUlpZHSVoRUQwvJz5U/moBlvcrJglSDQAAAAEAGP/4Ao4CgAAoAJ6yBRIDK7IfBAMrsBIQsBXQsAUQsBjQsAQQsBnQsB8QsBzQALAARViwFS8bsRUqPlmwAEVYsA4vG7EOJD5ZsABFWLAALxuxACQ+WbAVELESA/SwBdCwDhCxCQL0sgsVCRESObIMDhUREjmwFRCwFtywFRCwGNCwFhCwGtCwGBCwHNCwBRCwH9CwABCxIwL0siYjFRESObInFQAREjkwMQUiJicRIxUUFjMyNxcGIyImJxEjNTM1MxUzNTMVMxUjFRQWMzI2NxcGAjo8TwHkIxgXFR0kMDxPAVZWXORceHgmGAsVCR0kCEpCARL3KyYJUg1KQgESVJaWlpZU9DEjBQRSDQAACgAs/wMM1AMkAAMAKQA/AE8AXwBnAHcAhwCXALcCCrIZCgMrsiYhAyuyiFgDK7JQkAMrsnhIAyuyQIADK7JoqwMrsrSzAyuyAgMDK7JkLgMrsjhlAyuwZBCwOdCwZRCwPdCwOBCwPtCwsxCwcNCwqxCwndCwaBCwntCwcBCwo9AAsABFWLAQLxuxEDI+WbAARViwXC8bsVwwPlmwAEVYsEwvG7FMMD5ZsABFWLCvLxuxrzA+WbAARViwMi8bsTIwPlmwAEVYsAEvG7EBND5ZsABFWLAELxuxBCQ+WbAARViwVC8bsVQkPlmwAEVYsEQvG7FEJD5ZsABFWLCnLxuxpyQ+WbAARViwmC8bsZgoPlmwAEVYsCovG7EqJD5ZsABFWLACLxuxAiQ+WbIjEAQREjmwIy+yEiMQERI5sBAQsRUi9LITFSMREjmwBBCxHSL0sCMQsSIi9LAqELE7IfSwMhCxYCH0sjk7YBESObJkOQFdtOQ59DkCXbLkOQFxQBFgOXA5gDmQOaA5sDnAOdA5CHGwORCwONCyOzgBXbJpOAFdsj07YBESObI+MioREjm2Gz4rPjs+A12yZGA7ERI5sotkAXGyZmQBXbBkELBl0LCnELFsIfSwrxCxdCH0sEQQsXwh9LBMELGEIfSwVBCxjCH0sFwQsZQh9LKdmKcREjmwmBCxoSH0sp6hpxESObKlp68REjmysa+nERI5sK8QsLPQfLCzLxgwMQEzESMFIicmJyY1NDc2NzYzMhcHJiMiBwYVFBcWMzI3NjchNSEWFRQHBiEiJyY1NDc2MzIeAh8BBRYzMjcXBgEUBwYjIicmNTQ3NjMyFxYFFAcGIyInJjU0NzYzMhcWJSIHBhc3LgEFFBcWMzI3NjU0JyYjIgcGBRQXFjMyNzY1NCcmIyIHBgUUFxYzMjc2NTQnJiMiBwYBIi4CJzceATMyPQEjBiMiJyY1NDc2MzIXMzUzERQGCkF0dPeLbmJiNzc3OGFibqJ3T1Z0fFVVVVV8a0lLDf70AXkGbG0JgXBLS0dIaidGOi0ODP6fKVdRMVpQ+0hNTHBwTE1MTHFwTE39vk1McHBMTUxMcXBMTQZlNiwqAuwKNvxfKis+OykpKSg8PCwr/b4rKz8+KywrKz8/Kyv9visrPz4rLCsrPz8rKwUPKEg9Lg9lEkYtjQQyWWVNS0tMZlkyBG6FAwj8+BA4N19ebm1eYDc4cU9QV1Z9fVZXOjtqcB4oqmdoTExwcUxLGC0+JR6SUEk8dQEIb01MTE1vcUtMTEtxb01MTE1vcUtMTEsxLCtDYhkfo0MuLi0vQ0QvLi8uQ0QuLi4vQ0YsLi4sRkQuLi4vQ0YsLi4s/cUXKTkjKio0phs8TU5sbU5OOyv+JoSPAAAAAQAs//ADSwMkACUAXLIVBgMrsiIdAysAsABFWLAMLxuxDDI+WbAARViwAC8bsQAkPlmwDBCxESL0sh8MABESObAfL7IPER8REjmwDy+yDg8MERI5PbAOLxiwABCxGSL0sB8QsR4i9DAxBSInJicmNTQ3Njc2MzIXByYjIgcGFRQXFjMyNzY3ITUhFhUUBwYBzG5iYjc3NzhhYm6id09WdHxVVVVVfGtJSw3+9AF5BmxtEDg3X15ubV5gNzhxT1BXVn19Vlc6O2pwHiiqZ2gAAAIAFv/wAigCAAAPAB8AMrIQCAMrsgAYAysAsABFWLAMLxuxDDA+WbAARViwBC8bsQQkPlmxFCH0sAwQsRwh9DAxJRQHBiMiJyY1NDc2MzIXFgUUFxYzMjc2NTQnJiMiBwYCKE1McHBMTUxMcXBMTf5iKys/PissKys/Pysr+G9NTExNb3FLTExLcUQuLi4vQ0YsLi4sAAAAAgAW/wMCEAIAAAsAJwCIsgAcAyuyJCMDK7AjELAG0LAcELAP0LAAELAQ0LAGELAV0ACwAEVYsB8vG7EfMD5ZsABFWLAZLxuxGSQ+WbAARViwDC8bsQwoPlmwGRCxAyH0sB8QsQkh9LIPDBkREjmwDBCxEyH0shATGRESObIXGR8REjmyIR8ZERI5sB8QsCPQfLAjLxgwMTcUFjMyNjU0JiMiBhMiJic3HgEzMj0BIwYjIiY1NDYzMhczNTMRFAaKVT48UVE8PVaLUH0dZRJHLI0EMVpml5dmWTIEbob3Q1xbREVcXf3IVkYqKjSmGzybbG2cOyv+JoOQAAAAAQAqAAAAngMIAAMAPbICAwMrsk4FAV2ybwUBXbKfBQFdtH0FjQUCXbK3BQFdALAARViwAS8bsQE0PlmwAEVYsAIvG7ECJD5ZMDETMxEjKnR0Awj8+AAAAAIAG//wAgICAAARABgAuLIVAwMrsgoWAyuwFRCwC9CwFhCwD9CwChCwENAAsABFWLAGLxuxBjA+WbAARViwAC8bsQAkPlmxDSH0sAYQsRIh9LILDRIREjm05Av0CwJdsmQLAV1AE2ALcAuAC5ALoAuwC8AL0AvgCwlxsAsQsArQsjsKAV2yaQoBXbIPEg0REjmyEAAGERI5thsQKxA7EANdshULEhESOUANixWbFasVuxXLFdsVBnG06RX5FQJdsBUQsBbQMDEFIiY1NDYzMhYfAQUWMzI3FwYDIgYXNy4BASFwlo9qTngcDP6fKFhRMVpPljdVAuwKNhCYcHKWXUseklBJPHUBqlhCYhkfAAAAAAAuAI4BPAGOAaYBsgIEAnACcAKAApACmAKoArACuALcAu4DOgM6A3ADmARMBPQFngZKBmQGmAbMBzoHbAecB7AH0gf2CEQIcgjKCU4JogoICnQKqAs8C6gL7Aw2DGYMhAy2DRYNzA4mDpAO9A8uD3QPqhAMEFQQchCsERQROBGeEgISThKcExATbBP2FCAUXhScFQYVZBWoFeQWBBYoFkYWcBaIFqAXJheWF/YYZhjaGTIZyBoWGkwalhrsGwobfBvIHBIcgBzuHTQd5h48HogevB8QH2gfqB/iIC4gQiCMIMgg6CFsIgwiHiI2IlYidiKCIo4imiKmIrIiviNiI24jeiOGI5IjniOqI7YkAiQOJBokJiQyJD4kSiRWJGIkbiR6JNAlWiXSJpwmuib0J2YoCiikKLwo+ClqKgIqQCq0KrwrRiuOLGwtAC1eLZYtsC28LcguWC6qLrou0C7oLwAvjjBOMGIwdjCCMI4wxDD0MTgxRDF0MgoyLjJSMnAyejKIMpoyrDLEMuQy/DMUMywzejOSM6ozwjQWNC40RjReNHY0lDS8NPo1FjVoNbI1sjWyNd42MjaGNvo3QDeIN8o4WjhiOLw4xDliOeY6EDo8OmQ6jjrCOvQ7KDtcO2Q8EjzCPUA93D6aPzI/6kCSQQhBykJuQsZDQEPORERE1EVQRaJGOEa2R1pH5kjGSYBKTEs0S/RMgE1KTcpOcE72T4JPjk+aT6ZQMFC4UsJTKlN2U/RUIFSoAAAAQwAAASAJHgUHBQUFBAUFAAcHAgcDAwIFBQICAwYFBwYCAwMEBQIEAgQGAwUFBQUFBQUFAgIFBQUECAYFBwYFBQcGAgUGBAcGBwUHBQUFBgYIBgUFAwQDBAQEBQUFBQUDBQUCAgQCCAUFBQUDBAMFBAcEBAQDAgMFBgYHBQYHBgUFBQUFBQUFBQUFAgICAgUFBQUFBQUFBQUDBQUFBAYFBQUEBAkHBQUFBAUIBQQCBQUFBQUGBgYHCgkFCAQEAgIFBAIGAwMCAgQGBQYFBQICAgIHBwkHBgYGAgQEBAQEAAICAwMDAwMDBQQFAwkHCgQKBAcHBwcECAgICAgICAgICAgICAgICAgICAgJBgsLCAgLCAkIBQgGBwoHBgYeCAUFAgUAAAAKIQYIBgYGBQYGAAgHAggDAwIGBQICAwYFCAYCAwMEBgIEAgQGBAUFBgYFBQUFAgIFBgUFCQcGBwcFBQgHAgUGBQgHCAYIBgYFBgYJBgYGAwQDBQUEBQYFBgUEBgUCAgUCCQUGBgYEBQQFBQgFBQUDAgMFBwcHBQcIBgUFBQUFBQUFBQUFAgICAgUGBgYGBgUFBQUDBQUFBAYGBQUEBAoIBgYFBQUJBgUCBgYGBgYHBwcICwoGCQQEAgIGBQIGBAQCAgQHBQcFBQICAgIICAoIBgYGAgQEBAQEAAICAwMDAwMEBgQFAwoICwULBQgICAgECAgICAgICAgICAgICAgICAgICAgJBw0MCQkMCQoJBgkHBwsHBwchCQYGAgUAAAALJAYIBgYHBQYGAAkIAwkEAwMGBgIDBAcGCQcCBAQFBgMFAwUHBAYGBgYGBgYGAwMGBgYFCgcHCAgGBgkIAwYHBQkICQYJBgYGBwcKBwcGAwUDBQUEBgYGBgYEBgYCAgUCCQYGBgYEBQQGBQgFBQUEAwQGBwcIBggJBwYGBgYGBgYGBgYGAgICAgYGBgYGBgYGBgYEBgYGBAcGBgYEBAsJBgYGBQYKBgUDBgYGBgYIBwcJDQoHCgQEAwMGBQIHBAQCAwQHBgcGBgMDAwMJCQsJBwcHAgQEBAQEAAIDAwMEBAQEBwUGBAsJDAUMBQgICAgFCQkJCQkJCQkJCQkJCQkJCQkJCQkKBw4NCgoNCgsKBgkHCAwIBwckCQYGAgYAAAAMJwcJBwcHBgcHAAkJAwoEBAMHBwMDBAgGCgcCBAQFBwMFAwUIBQYGBwcHBgcHAwMGBwYGCggHCQgHBgoIAwYHBgoICgcKBwcGCAgLCAcHBAUEBgYFBgcGBwYEBwcDAwYCCgcHBwcEBQQHBgkGBgYEAwQGCAgJBwgKCAYGBgYGBgYGBgYGAwMDAwcHBwcHBwcHBwcEBgYGBQcHBgYFBQwKBwcHBgYLBwYDBwcHBwcICAgKDgsHCwUFAwMHBgIIBAQCAwUIBwgHBwMDAwMKCgwKCAgIAwUFBQUFAAMDBAQEBAQEBwUHBAwKDQUNBQkJCQkFCgoKCgoKCgoKCgoKCgoKCgoKCgoLCA8PCwsOCwwLBwoICQ0JCAgnCgcHAgYAAAANKwcKBwcIBgcHAAoKAwsEBAMHBwMDBAgHCwgCBAQGBwMGAwYIBQcHCAcHBwcHAwMHBwcGCwkICQkHBwoJAwcIBgsJCwcLCAcHCAgMCAgHBAYEBgYFBwcHBwcFBwcDAwYDCwcHBwcFBgUHBgoGBgYEAwQHCQkJBwkLCAcHBwcHBwcHBwcHAwMDAwcHBwcHBwcHBwcEBwcHBQgHBwcFBQwLBwcHBgcMBwYDBwcHCAcJCQkLDwwIDAUFAwMHBgIIBQUCAwUJBwkHBwMDAwMLCw0LCAgIAwUFBQUFAAMDBAQEBAQFCAYHBA0LDgcOBwoKCgoGCwsLCwsLCwsLCwsLCwsLCwsLCwsMCRAQDAwPDA0MCAsJCg4KCQkrCwgHAwcAAAAOLggLCAgIBwgIAAsKAwwFBAMICAMDBAkHCwkCBQUGCAMGAwYJBQcHCAgIBwgIAwMHCAcHDAkICgoIBwsKAwcJBwwKCwgLCAgICQkNCQgIBAYEBwcGBwgHCAgFCAgDAwcDDAgICAgFBgUIBwsHBwYEAwQHCQkKCAoLCQcHBwcHBwcICAgIAwMDAwgICAgICAgICAgFBwcHBgkICAgGBg0LCAgIBwcMCAcDCAgICAgKCQkLEA0IDAYGAwMIBwIJBQUCAwYJCAkICAMDAwMLCw4LCQkJAwYGBgYGAAMDBAQFBQUFCAYIBQ4LDwcPBwsLCwsGDAwMDAwMDAwMDAwMDAwMDAwMDAwNChIRDQ0QDA4NCAwJCg8KCQkuDAgIAwcAAAAPMQkLCQkJBwgJAAwLBAwFBQMICAMDBQkIDAkDBQUHCAMGAwcKBggICQgICAgIAwMICAgHDQoJCwoICAwKBAgJBwwKDAgMCQgICgkOCQkIBQcFBwcGCAkICQgGCQgDAwcDDQgICQkFBwUIBwsHBwcFAwUICgoLCAoMCggICAgICAgICAgIAwMDAwgICAgICAgICAgFCAgIBgkICAgGBg4MCAkIBwgNCAcDCAgICQkLCgoMEQ4JDQYGAwMIBwMJBQUDAwYKCAoICAQEBAQMDA8MCgoKAwYGBgYGAAMEBQUFBQUFCQYIBQ8MEAcQBwwMDAwHDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0OChMSDQ0SDQ8OCQ0KCxALCgoxDQkIBAgAAAAQNQkMCQkKCAkJAAwMBA0FBQQJCQQEBQoJDQoDBQUHCQQHBAcKBggJCQkJCAkJBAQICQgIDgsKDAsJCA0LBAgKCA0LDQkNCQkJCgoPCgoJBQcFCAgGCAkICQkGCQkEBAgDDgkJCQkGBwYJCAwICAcFBAUICwsMCQsNCggICAgICAgJCQkJBAQEBAkJCQkJCQkJCQkFCAgJBgoJCQkGBg8NCQkJCAgOCQgECQkJCQkLCwsNEg8JDgcHBAQJCAMKBgYDBAcLCQsJCQQEBAQNDRANCgoKBAYGBgYGAAQEBQUFBgYGCgcJBhANEQcRBwwMDAwHDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0PCxQUDg4TDhAPCQ4LDBEMCws1DgkJBAgAAAAROAoNCgoKCAoKAA0NBA4FBQQJCQQEBQsJDgsDBgYHCQQHBAcLBwkJCgkJCQkJBAQJCgkIDwsKDAwJCQ4MBAkLCA4MDgoOCgkJCwsQCwoKBQcFCAgHCQoJCgkGCgkEBAgDDgkKCgoGCAYJCA0ICAgFBAUJCwsMCQwOCwkJCQkJCQkJCQkJBAQEBAkKCgoKCgkJCQkGCQkJBwsKCQkHBxAOCQoJCAkPCggECgkJCgoMCwsOFBAKDwcHBAQJCAMLBgYDBAcLCQsJCQQEBAQODhEOCwsLBAcHBwcHAAQEBQUFBgYGCgcJBhEOEgkSCQ0NDQ0HDg4ODg4ODg4ODg4ODg4ODg4ODg4QDBUVDw8UDxEQCg8LDRIMCws4DwoKBAkAAAASOwoOCgoLCQoKAA4NBA8GBQQKCgQEBgsKDwsDBgYICgQIBAgLBwkKCwoKCQoKBAQJCgkJEAwLDQwKCQ4MBAkLCQ8NDwoPCgoKDAsRCwsKBggGCAkHCQoJCgoHCgoEBAkEDwoKCgoHCAYKCQ4JCQgGBAYKDAwNCg0PDAkJCQkJCQkKCgoKBAQEBAoKCgoKCgoKCgoGCQkKBwsKCgoHBxEPCgoKCQkQCgkECgoKCwoNDAwPFRELEAcHBAQKCQMLBgYDBAcMCgwKCgQEBAQPDxIPDAwMBAcHBwcHAAQEBQUGBgYGCwgKBhIPEwkTCQ4ODg4IDw8PDw8PDw8PDw8PDw8PDw8PDw8RDBcWEBAVEBIQCw8MDRMNDAw7EAoKBAkAAAATPgsOCwsLCQsLAA8OBRAGBgQKCgQEBgwKDwwDBgYICgQIBAgMBwoKCwsKCgoKBAQKCwoJEA0LDg0KCg8NBAoMCRANDwsPCwsKDAwSDAsLBggGCQkICgsKCwoHCwoEBAkEEAoLCwsHCQcKCQ4JCQkGBAYKDQ0OCg0PDAoKCgoKCgoKCgoKBAQEBAoLCwsLCwoKCgoGCgoKCAwLCgoICBIPCgsKCQoRCwkECwsLCwsNDQ0PFhILEQgIBAQKCQMMBwcDBAgNCg0KCgQEBAQPDxMPDAwMBAgICAgIAAQFBgYGBwcHCwgKBxIPFQkVCQ8PDw8IEBAQEBAQEBAQEBAQEBAQEBAQEBASDRgXEREWERMRCxANDhQODQ0+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BxESEhISEhEREREKERERDRQSERENDR8aEhIRDxEcEg8HEhISExIXFRUaJR4THQ0NBwcSEAUUCwsGBw0VERUREQgICAgaGiAaFRUVBw0NDQ0NAAcICgoKCwsMEw4RCx8aIw8jDxkZGRkOGxsbGxsbGxsbGxsbGxsbGxsbGxseFignHR0lHB8dExsWGCIXFhZpHBMSBhAAAAAhbBMZExMUEBMTABoYCBsLCggSEgcICxUSGxQGCwsOEggOCA4VDRESExISERISCAgRExEQHRYUGBcSERoXCBEVEBsXGxMbExISFRUeFRQTCg4KEBANERMRExIMExIHBxAHHBISExMMDwwSEBkQEA8LCAsRFhYYEhcbFRERERERERESEhISBwcHBxISEhISEhISEhILERESDRUTEhINDSAbEhMSEBEdEhAIExISExMXFhYbJh8UHQ0NCAgSEAYVDAwGCA0WEhYSEggICAgbGyEbFRUVBw0NDQ0NAAcICgoLCwsMFA4SCyAbJBAkEBkZGRkOHBwcHBwcHBwcHBwcHBwcHBwcHBwfFiooHh4nHSAeExwWGSMYFhZsHBMTBhEAAAAicBMaExQUERMUABoZCBwLCggTEgcICxUSHBUGCwsPEwgPCA8WDRISFBMTEhMTCAgRExERHhcUGRgSEhsXCBIVERwYHBMcFBMSFhUfFRQTCg8KEBAOERQSFBINFBIHBxAHHRITExMMDwwSERoQERALCAsSFxcZEhgcFhERERERERISEhISBwcHBxITExMTExISEhILEhISDhUTEhIODiEcExMSEBIeExAIExMTFBQYFxccJyAUHg4OCAgTEQYVDAwGCA4XEhcSEggICAgcHCIcFhYWBw4ODg4OAAcICgoLDAwMFA8SDCEcJRAlEBoaGhoPHBwcHBwcHBwcHBwcHBwcHBwcHBwgFysqHh4oHiEfFB0XGSQZFxdwHRQTBhEAAAAjcxQaFBQVERQUABsaCB0LCwgTEwgICxYTHBYGDAwPEwgPCA8WDRITFRMTEhMTCAgSFBIRHhcVGhgTEhwYCBIWER0YHBQcFBMTFhYgFhUUCw8LEBEOEhQSFBMNFBMICBEHHhMUFBQNEAwTERoRERALCAsTFxcaExgcFhISEhISEhITExMTCAgICBMUFBQUFBMTExMLEhITDhYUExMODiIcExQTERIfFBEIFBMT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GBggKBEgESAvHCYnKykoJigoERElKSUkPzErNTIoJjoyESYtJD0zOyk7KignLy5DLispFiAWIiMdJSomKicbKigQECMPPigpKiobIRooJDciJCIXERcnMTE1KDM7LyUlJSUlJSYnJycnEBAQECgpKSkpKSgoKCgYJiYnHS4pJycdHUY7KCooIyZBKSMRKSkpKyozMTE7VEYrQR4eEREoJAwuGhoNER4xKDEoKBERERE7O0k7Ly8vEB0dHR0dABASFhYYGRkaLCAoGUc7TyNPIzg4ODggPT09PT09PT09PT09PT09PT09PT1FMlxaQUFVQUhDKz4xN002MTHwPyopDiYAAABK8yo4KiosJSorADk2Ej0YFxEpKBARGC8nPC4NGBggKREgESAvHCYnLCkpJygpERElKiUkQDEsNjMoJzszEScuJT00PCo8KykoMC9ELywqFyAXIyQeJisnKygbKygQECQPPygpKiobIhooJTgjJSIYERgnMTE2KDQ8MCYmJiYmJicoKCgoEBAQECgpKSkpKSgoKCgYJyYoHi4qJyceHkc8KSooIyZCKSQRKikpKys0MTE8VUYsQh4eEREpJQ0vGhoNER4xKDEoKBERERE8PEo8MDAwEB4eHh4eABASFxcYGhobLCAoGkg8UCNQIzk5OTkgPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj5GMl1bQkJWQklEKz8yN042MjLzQCsqDiYAAABL9is4KystJSorADo3Ej4YFxEpKRERGC8oPS4NGRkhKREgESEwHScoLCopJykpEREmKiYlQTItNzQpJzwzEicvJT40PSo9KykpMC9FLy0qFyEXIyQeJisnKygcKykRESQPQCkqKysbIhspJTkjJSMYERgoMjI3KTQ9MCYmJiYmJicoKCgoERERESkqKioqKikpKSkYJycoHi8qKCgeHkg9KSspJCdCKiQRKioqLCs1MjI9VkcsQx8fEREpJQ0vGxsNER8yKTIpKRISEhI9PUs9MDAwER4eHh4eABESFxcYGhobLSApGkk9USRRJDo6OjohPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz9HM19cQ0NYQ0pFLEAyOFA3MzP2QSsqDicAAAAAAQAAAAECTvxkDN9fDzz1CB8D6AAAAADTVm4vAAAAANPRmlX/UP8DDNQDwAAAAAkAAgAAAAAAAAABAAADwP8DAAAM1P9Q/1AM1AABAAAAAAAAAAAAAAAAAAABGwI6AEgC7wA4AjsAKAI+ACoCUgAMAfIABAI0AEgCQAA4AAAAAAMIADAC4AAwAPIAGAM9ADABQwAYATAAGADkAEgCJgA4Ah4APADcAAAA6AAwAUAALAJ4ABcCFQAYAy4AIAJqACQArAAsAUoAQAFKABQBtAAoAiYAOADoACwBsAA4AOgAMAG1ABsCfgAsAYAAKAIIACgCEwAkAk0AKAIrACgCJQAoAgsAKAIgACgCJQAoAOgAMADoACwB+gA4AjIAOAH6ADwB7QAkA2QALAKcAAwCUgBIAtkAJQKzAEgCHgBIAgoASAMhACUCrgBIAOwASAIMABgCbgBIAfIASAM+AEgCuABIAyoAJQI0AEgDKgAlAkIASAIpABgCHAAYAoIAOAJ4AAwDmgAQAngAEAJSAAwCNAAgATQASAG1ABsBNAAgAdYADAHgAAABkABgAf4AHAJAADgCCgAcAkAAHAIYABwBcAAYAkAAHAIeADgA3AAtANz/0wHjADgAzAA4A1QAOAIeADgCMAAcAjwANAI8ABwBawA4AccAGAFiABgCHgA0AfIABALyAAQB2AAIAfIABAHMACABPgAYAOQASAE+ACACEgAgApwADAKcAAwC2QAlAh4ASAK4AEgDKgAlAoIAOAH+ABwB/gAcAf4AHAH+ABwB/gAcAf4AHAIKABwCGAAcAhgAHAIYABwCGAAcANwAQADcAAAA3P/fANz/8QIeADgCMAAcAjAAHAIwABwCMAAcAjAAHAIeADQCHgA0Ah4ANAIeADQBRQAgAgoAHAIHACACFwAoAZAAUAJwABgCMgBIAhQAJAIUACQBkACYAZAAOwPAAAQDKgAlAiYAOAI8AAwCHgA0Ad4AKAIEACQDdgAcAjAAHAHiACUA6AAwAjIAMAIsACgCLAA8AkgAGAJAABgCwAAwApwADAKcAAwDKgAlBH0AJQO4ABwCUAA4A3wAOAGYADABmAAwAOgAMADoADACJgA4AfIABACq/1ACdQAYAWQAKAFkADwAsAAUAOgAMAGYADACnAAMAh4ASAKcAAwCHgBIAh4ASADsAEgA7P/nAOz/+QDsAAYDKgAlAyoAJQPoAFMDKgAlAoIAOAKCADgCggA4ANwAQAGQADkBkAAgAZAAPAGQAGABkABHAAAAAADcAAAA8gAYATAAGAEwABgBQwAYAVkAHAFZABwBaAA4AlYAPAGwADgCHgA0AVkAHAPNACADLQAgBDoAMAHcACgEOgA4AdwAKAMEACgDBAAAAwQAKAMEAAABtQAbA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDtAAYAqgAGATsABgEygAYA4AAGAOAABgEjwAYA3gAGAPYABgDkgAYAkgAGANXABgCoAAYAuwAOAQkADgC3gA4AqIAGAKiABgM1AAsA10ALAJCABYCNgAWALsAKgICABsAAQAAARsAuAAKAFkABQABAAAAAAAKAAACAALxAAMAAQAAAAcAWgADAAEECQABABgAAAADAAEECQACAA4AGAADAAEECQADADwAJgADAAEECQAEABgAAAADAAEECQAFAHYAYgADAAEECQAGACYA2AADAAEECQAOAGAA/gBQAHIAbwBkAHUAYwB0ACAAUwBhAG4AcwBSAGUAZwB1AGwAYQByADEALgAwADAAOQA7AEcATwBPAEcAOwBQAHIAbwBkAHUAYwB0AFMAYQBuAHMALQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADkAOwBQAFMAIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA4ADgAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA2ADQANwA4ADAAMABQAHIAbwBkAHUAYwB0AFMAYQBuAHMALQBSAGUAZwB1AGwAYQByAGgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBmAG8AbgB0AHMALwBsAGkAYwBlAG4AcwBlAC8AcAByAG8AZAB1AGMAdABzAGEAbgBzAAIAAAAAAAD/YABUAAAAAAAAAAAAAAAAAAAAAAAAAAABGwAAAOkA6gDiAOsA7ADtAO4BAgD0APUA8QD2APMA8gDoAO8A8AADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIMAhACFAIYAhwCIAIkAigCLAI0AjgCQAJEAkwCWAJcAnQCeAKAAoQCiAKMApACpAKoBAwEEAKsArQCuAK8AsACxALIAswC0ALUAtgC3ALgAugC8AQUAvgC/AMMAxADFAMcAyADJAMoAywDMAM0AzgDPANAA0QEGANMA1ADVANYA1wDYANkA2gDdAN4BBwEIAQkBCgELAQwBDQEOAQ8AvQEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJB3VuaTAwMEQDZl9pA2ZfbARFdXJvB3VuaUY4RkYETlVMTAd1bmkwMEEwDW9uZS5udW1lcmF0b3IPdHdvLmRlbm9taW5hdG9yDXR3by5udW1lcmF0b3IPdGhyZWUubnVtZXJhdG9yEGZvdXIuZGVub21pbmF0b3IOZm91ci5udW1lcmF0b3IFci5hbHQHdW5pMDBBRAd1bmkwM0JDB3VuaTIwNzQHdW5pMjEwMwd1bmkyMTA5B3VuaTIxOTAHdW5pMjE5MQd1bmkyMTkyB3VuaTIxOTMHdW5pMjE5Ngd1bmkyMTk3B3VuaTIxOTgHdW5pMjE5OQd1bmkyMjE1B3VuaTI2MzkHdW5pMjYzQQd1bmkyNzgwB3VuaTI3ODEHdW5pMjc4Mgd1bmkyNzgzB3VuaTI3ODQHdW5pMjc4NQd1bmkyNzg2B3VuaTI3ODcHdW5pMjc4OAd1bmkyNzhBB3VuaTI3OEIHdW5pMjc4Qwd1bmkyNzhEB3VuaTI3OEUHdW5pMjc4Rgd1bmkyNzkwB3VuaTI3OTEHdW5pMjc5MgNmX2IDZl9mBWZfZl9iBWZfZl9oBWZfZl9pBWZfZl9qBWZfZl9rBWZfZl9sBWZfZl90A2ZfaANmX2oDZl9rA2ZfdANyX2YFcl9mX2YDcl90A3RfZgN0X3QLR29vZ2xlLmxvZ28GRy5sb2dvBm8ubG9nbwZnLmxvZ28GbC5sb2dvBmUubG9nbwCwACsAsgEiAisBsiMBAisBtwFAOCkfEwAIKwC3AkA4KR8TAAgrtwNAOCkfEwAIK7cEQDgpHxMACCu3BUs4Lh8TAAgrtwZJOC4fEwAIK7cHKSQbFAwACCu3CCkiGhMMAAgrtwkyKx8ZDQAIK7cKU0UyIhQACCu3CxkUEAsGAAgrtwxNRTIiEwAIK7cNVkU3JxgACCu3DlxFNycYAAgrtw81Kx8ZDQAIK7cQQDgpHxMACCu3ESskHxMKAAgrtxIsJB8TCgAIK7cTg2ZSOyIACCu3FDEkHxkOAAgrtxVzZkk0HgAIK7cWfWZSOyIACCu3F2NRQS8eAAgrtxhoUUEvHgAIK7cZDw0KBwYACCu3GhENCgcGAAgrtxsYFBALBgAIK7ccGBQQCwYACCu3HV9RQS8eAAgrtx4lHRgSDAAIK7cfIhwWDwwACCu3ICEcFg8MAAgrtyE1Kx8XDQAIK7ciMisfFw0ACCsAsiQJByuwACBFfWkYRLKvKgFzsk8yAXOyTzQBcwAA\"","export default \"data:font/ttf;base64,AAEAAAAQAQAABAAAR1BPU4MNpswAAAEMAAA6WEdTVUIhPy2IAAA7ZAAABepPUy8ya4T0ggAAQVAAAABgY21hcCk50TgAAEGwAAABmGN2dCAdUBnGAABDSAAAAPZmcGdtuLJRBgAAREAAAA9zZ2FzcAAHABsAAFO0AAAADGdseWYxL6/3AABTwAAAeSpoZWFkEm1kEAAAzOwAAAA2aGhlYRBZD+0AAM0kAAAAJGhtdHh9zxUvAADNSAAABGxsb2Nh13P0gAAA0bQAAAI4bWF4cARhEPQAANPsAAAAIG5hbWUkpz7/AADUDAAAAdhwb3N0I3+YcwAA1eQAAAR7cHJlcPft2v0AANpgAAACXAABAAAACgBUAHQABERGTFQAGmN5cmwAJmdyZWsAMmxhdG4APgAEAAAAAP//AAEAAAAEAAAAAP//AAEAAQAEAAAAAP//AAEAAgAEAAAAAP//AAEAAwAEa2VybgAaa2VybgAaa2VybgAaa2VybgAaAAAAAQAAAAEABAACAAAAAgAKAMgAAQAmAAQAAAAOAEYArABUAF4AbABsAHIAfACOAJgAogCsALIAuAABAA4ABgAQAB0AIwAkACUAJgAnACgAKwAwADIApQDJAAMATv/YAFH/sACl/+wAAgAj/+IAJf/2AAMAJAAKACcACgAoAAUAAQAj//YAAgAM//YAI//2AAQACf/2AAr/9gAM//YAI//sAAIACv/2ACP/4gACACb/4gAo/+wAAgAj/+wAJP/2AAEAI//iAAEAAv/OAAEAAv/2AAI0NgAEAAA0vjbsAFkASwAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zv/s/+z/2AAAAAD/2P/OAAD/2AAAAAD/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA//YAAP/2AAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/zgAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/nP9+/+wAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA//b/4gAA/+z/zgAAAAAAAAAAAAAAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/sAAAAAD/9gAA/9j/7P/YAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/xAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/9gAAAAA/+L/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/s//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+wAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zgAAAAAAAAAAAAD/zgAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/nP/i/8T/xP/Y/8T/zv/YAAAAAP/iAAD/kgAA/8QAAAAA/84AAP/YAAD/pgAA/6b/2AAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/YAAD/zv/s/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/9gAA//YAAP/2/+z/7P/Y//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/sAAAAAD/zv/s/87/4gAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/sAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/ugAA/93/3f/n/87/2P/TAAAAAAAAAAD/tf/2//EAAAAAAAAAAAAAAAD/v//Y/87/9gAAAAAAAP/EAAAAAAAA/7D/zv/iAAAAAAAAAAAAAAAAAAAAAAAA//b/zv+m/9j/7P/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//b/9gAA//YAAP/2//b/7AAA//H/4gAAAAAAAAAAAAD/7P/7AAD/9v/s//YAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAP/EAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s/+L/4v/x/+z/7P/sAAAAAAAAAAAAAP/x/+wAAAAA//YAAP/2//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/2AAAAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAA//sAAP/7/+L/2P/2/+z/4v/2//H/7AAA//b/4v/2//b/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAP/sAAAAAP/iAAD/7AAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/x/+z/7P/2/+z/9v/sAAAAAP/2AAAAAP/2/+wAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s//b/9v/s/+z/9v/s/8T/uv+m//YAAP/s/+L/zv/i/+z/xP/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YABf/2AAAAAAAA//b/9v/sAAAAAAAAAAD/5wAAAAD/2P/s/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/x//b/7AAA//b/9v/2//b/7P/2/+z/7AAA//v/7AAAAAD/7P/2AAD/5//s//YAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/sAAAAAP/YAAD/9gAAAAD/9gAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAA//YAAAAA//b/8f/2//YAAP/7//b/7P/sAAAAAAAA//YAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/2/+L/2P/s/9P/4v/YAAAAAP/2AAAAAP/2/+wAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA/87/7AAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//H/xAAA/9j/0//2/87/4v/YAAAAAAAAAAD/pv/2AAAAAAAA//YAAAAAAAD/tf/E/9j/9gAAAAD/7P+wAAAAAAAA/7r/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+cAAD/7P/i/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/4gAAAAD/9gAA//sAAP/2/+z/2P/2/93/2AAAAAD/7AAAAAD/2P/2AAD/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAA//v/9v/7AAAAAAAA//sAAAAAAAAAAP/YAAD/9gAAAAD/7AAA/8QAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/sAAAAAP/2AAAAAAAA/7r/kv9+/+z/4v/n/93/sP/E//H/pgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/s/+z/2AAAAAD/uv/Y/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/7P/2AAAAAAAAAAAAAP/2AAD/7P/2//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/7AAA//YAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/+f/5//x//H/9v/s//b/9gAA//b/4gAAAAAAAAAAAAD/9gAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP+1/+L/2P/E/7//uv/E/7//pv+SAAAAAP/E/7D/xP+6/7D/kv/Y/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IABf/YAAD/9gAA/8T/2P/E/9gAAAAA/9j/4gAAAAAAAP/O/7D/4v/Y/9gAAAAAAAAAAAAA/+wAAP+wAAAAAP/2/9j/4gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/O/+z/9v/d//YAAP/2/7r/sP+cAAAAAP/O/87/sP/O/9P/pv/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/9gAA/9j/xP/i/+IAAAAA/9j/4v/2AAAAAP/E/7D/4v/i/9j/7P/2AAAAAAAA/+wAAP/iAAAAAAAA/+wAAP/sAAAAAAAA//YAAP/Y/+L/7P/i/+z/7P/2/9P/xP+6AAAAAP/O/8n/xP/Y/9j/uv/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/s//YAAAAA/9j/4v/i//YAAAAA/+z/4gAAAAD/xP/Y/87/9v/s/+wAAAAAAAAAAAAA/+wAAP/iAAAAAAAA/+IAAAAA//YAAAAA/90AAAAA/+z/4v/s/+L/4v/OAAAAAP/sAAAAAP/s/+cAAAAA/+wAAAAAAAAAAP/sAAAAAAAAAAAAAP/iAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//b/2AAA//b/7AAA/9j/7AAAAAAAAP/sAAD/7AAAAAAAAAAAAAAAAAAA/+wAAP/2AAAAAP/2AAAAAAAAAAAAAAAA/9gAAP+r/87/2P+1/87/zv/Y/7X/nP+IAAAAAP+m/5z/sP/E/6v/nP/Y/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/OAAAAAP/2/7r/xP+6/84AAAAA/9j/2AAAAAAAAP+w/8T/xP/OAAD/9gAAAAAAAAAA/9gAAP+6/+IAAP/x/9j/4v/2/+wAAAAA/+wAAAAA//b/7P/2/+z/4v/iAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/9gAA//b/9v/2AAAAAAAAAAAAAP/7//sAAAAA//sAAP/7AAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/7//H/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/x//YAAP/EAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/2AAAAAP/EAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//sAAAAAAAAAAP/7AAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA/+wAAAAA/+z/2AAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAAAAAAAAAAAAAAF//b/8QAA//b/9v/2AAAAAAAAAAAAAAAFAAUAAAAAAAUAAP/2//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/9v/2AAAAAAAAAAAAAAAAAAAAAP/n/+L/uv/i/+z/xAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAFP/2AAAAAAAA//YAAAAA/+wAAAAAAAD/7AAAAAD/7AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/7AAD/+//7AAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAA//YAAP/2AAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAP/iAAAAAAAA/+L/ugAAAAAAAAAAAAAAAP/iAAD/2AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//EAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//v/9gAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/7//b/5wAA/+z/9v/2AAAAAAAAAAD/2P/7AAAAAAAA//sAAP/7AAD/4v/s//YAAAAAAAAAAP/iAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/8f/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/YAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAA//b/9v/2//sAAAAA//YAAP/2AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAD/7AAAAAAAAAAAAAAAAAAA//H/7P/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/iAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAA/+z/sAAA/9j/xAAA/87/4v/YAAAAAAAAAAD/sAAAAAAAAAAAAAAAAAAAAAD/xAAA/8T/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/zgAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA/+L/2AAA/9j/2P/OAAAAAAAAAAD/xAAAAAAAAP/OAAAAAAAAAAD/ugAA/9gAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/8T/iP+wAAAAAP/i/8QAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/+L/7P/Y/+L/7P/s/8T/iP/OAAAAAP/Y/84AAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+L/4v/iAAAAAAAA/+IAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAACgAAAAoACgAKAAAAAAAAAAAAAP/n/+L/pv/O/+z/ugAK//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/4gAAAAD/2AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/87/nP+wAAAAAP/Y/9j/kgAA/+L/ugAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP+6AAAAAAAA/8T/7AAA//b/zgAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/E/+IAAP/O/+L/4v/s/7r/iP+SAAAAAP+6/7AAAAAA/8T/Qv/i/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/9v/YAAD/7AAA/9gAAAAAAAAAAAAAAAD/zgAAAAAAAP/EAAAAAAAA/9gAAAAA//YAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAA/+z/2AAA/+wAAAAAAAAAAAAA/+L/2P/E/+z/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/2AAr/+wAAAAUADwAFAAAAAAAAAAAAAP/7//sAAAAAAAoAAAAPAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAX/9gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//v/9gAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/zv/O//b/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/4gAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//b/4v/iAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//EAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/uv/O//b/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/4gAAAAD/xAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoABQAFAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\"","export default \"data:font/ttf;base64,AAEAAAAQAQAABAAAR1BPU4MNpswAAAEMAAA6WEdTVUIhPy2IAAA7ZAAABepPUy8ya+f1NgAAQVAAAABgY21hcCk50TgAAEGwAAABmGN2dCAhRhXWAABDSAAAAP5mcGdtuLJRBgAAREgAAA9zZ2FzcAAHABsAAFO8AAAADGdseWaMkEDFAABTyAAAdmhoZWFkGntUggAAzGgAAAA2aGhlYQ/nDEMAAMygAAAAJGhtdHiMuinrAADMxAAABGxsb2NhdyyTXgAAyjAAAAI4bWF4cASSEPIAANEwAAAAIG5hbWUigDy7AADRUAAAAcJwb3N0I5uYUQAA0xQAAAR7cHJlcA2Ps/0AANeQAAACmgABAAAACgBUAHQABERGTFQAGmN5cmwAJmdyZWsAMmxhdG4APgAEAAAAAP//AAEAAAAEAAAAAP//AAEAAQAEAAAAAP//AAEAAgAEAAAAAP//AAEAAwAEa2VybgAaa2VybgAaa2VybgAaa2VybgAaAAAAAQAAAAEABAACAAAAAgAKAMgAAQAmAAQAAAAOAEYArABUAF4AbABsAHIAfACOAJgAogCsALIAuAABAA4ABgAQAB0AIwAkACUAJgAnACgAKwAwADIApQDJAAMATv/YAFH/sACl/+wAAgAj/+IAJf/2AAMAJAAKACcACgAoAAUAAQAj//YAAgAM//YAI//2AAQACf/2AAr/9gAM//YAI//sAAIACv/2ACP/4gACACb/4gAo/+wAAgAj/+wAJP/2AAEAI//iAAEAAv/OAAEAAv/2AAI0NgAEAAA0vjbsAFkASwAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zv/s/+z/2AAAAAD/2P/OAAD/2AAAAAD/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA//YAAP/2AAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/zgAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/nP9+/+wAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA//b/4gAA/+z/zgAAAAAAAAAAAAAAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/sAAAAAD/9gAA/9j/7P/YAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/xAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/9gAAAAA/+L/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/s//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+wAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zgAAAAAAAAAAAAD/zgAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/nP/i/8T/xP/Y/8T/zv/YAAAAAP/iAAD/kgAA/8QAAAAA/84AAP/YAAD/pgAA/6b/2AAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/YAAD/zv/s/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/9gAA//YAAP/2/+z/7P/Y//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/sAAAAAD/zv/s/87/4gAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/sAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/ugAA/93/3f/n/87/2P/TAAAAAAAAAAD/tf/2//EAAAAAAAAAAAAAAAD/v//Y/87/9gAAAAAAAP/EAAAAAAAA/7D/zv/iAAAAAAAAAAAAAAAAAAAAAAAA//b/zv+m/9j/7P/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//b/9gAA//YAAP/2//b/7AAA//H/4gAAAAAAAAAAAAD/7P/7AAD/9v/s//YAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAP/EAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s/+L/4v/x/+z/7P/sAAAAAAAAAAAAAP/x/+wAAAAA//YAAP/2//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/2AAAAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAA//sAAP/7/+L/2P/2/+z/4v/2//H/7AAA//b/4v/2//b/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAP/sAAAAAP/iAAD/7AAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/x/+z/7P/2/+z/9v/sAAAAAP/2AAAAAP/2/+wAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s//b/9v/s/+z/9v/s/8T/uv+m//YAAP/s/+L/zv/i/+z/xP/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YABf/2AAAAAAAA//b/9v/sAAAAAAAAAAD/5wAAAAD/2P/s/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/x//b/7AAA//b/9v/2//b/7P/2/+z/7AAA//v/7AAAAAD/7P/2AAD/5//s//YAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/sAAAAAP/YAAD/9gAAAAD/9gAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAA//YAAAAA//b/8f/2//YAAP/7//b/7P/sAAAAAAAA//YAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/2/+L/2P/s/9P/4v/YAAAAAP/2AAAAAP/2/+wAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA/87/7AAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//H/xAAA/9j/0//2/87/4v/YAAAAAAAAAAD/pv/2AAAAAAAA//YAAAAAAAD/tf/E/9j/9gAAAAD/7P+wAAAAAAAA/7r/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+cAAD/7P/i/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/4gAAAAD/9gAA//sAAP/2/+z/2P/2/93/2AAAAAD/7AAAAAD/2P/2AAD/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAA//v/9v/7AAAAAAAA//sAAAAAAAAAAP/YAAD/9gAAAAD/7AAA/8QAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/sAAAAAP/2AAAAAAAA/7r/kv9+/+z/4v/n/93/sP/E//H/pgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/s/+z/2AAAAAD/uv/Y/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/7P/2AAAAAAAAAAAAAP/2AAD/7P/2//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/7AAA//YAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/+f/5//x//H/9v/s//b/9gAA//b/4gAAAAAAAAAAAAD/9gAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP+1/+L/2P/E/7//uv/E/7//pv+SAAAAAP/E/7D/xP+6/7D/kv/Y/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IABf/YAAD/9gAA/8T/2P/E/9gAAAAA/9j/4gAAAAAAAP/O/7D/4v/Y/9gAAAAAAAAAAAAA/+wAAP+wAAAAAP/2/9j/4gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/O/+z/9v/d//YAAP/2/7r/sP+cAAAAAP/O/87/sP/O/9P/pv/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/9gAA/9j/xP/i/+IAAAAA/9j/4v/2AAAAAP/E/7D/4v/i/9j/7P/2AAAAAAAA/+wAAP/iAAAAAAAA/+wAAP/sAAAAAAAA//YAAP/Y/+L/7P/i/+z/7P/2/9P/xP+6AAAAAP/O/8n/xP/Y/9j/uv/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/s//YAAAAA/9j/4v/i//YAAAAA/+z/4gAAAAD/xP/Y/87/9v/s/+wAAAAAAAAAAAAA/+wAAP/iAAAAAAAA/+IAAAAA//YAAAAA/90AAAAA/+z/4v/s/+L/4v/OAAAAAP/sAAAAAP/s/+cAAAAA/+wAAAAAAAAAAP/sAAAAAAAAAAAAAP/iAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//b/2AAA//b/7AAA/9j/7AAAAAAAAP/sAAD/7AAAAAAAAAAAAAAAAAAA/+wAAP/2AAAAAP/2AAAAAAAAAAAAAAAA/9gAAP+r/87/2P+1/87/zv/Y/7X/nP+IAAAAAP+m/5z/sP/E/6v/nP/Y/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/OAAAAAP/2/7r/xP+6/84AAAAA/9j/2AAAAAAAAP+w/8T/xP/OAAD/9gAAAAAAAAAA/9gAAP+6/+IAAP/x/9j/4v/2/+wAAAAA/+wAAAAA//b/7P/2/+z/4v/iAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/9gAA//b/9v/2AAAAAAAAAAAAAP/7//sAAAAA//sAAP/7AAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/7//H/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/x//YAAP/EAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/2AAAAAP/EAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//sAAAAAAAAAAP/7AAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA/+wAAAAA/+z/2AAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAAAAAAAAAAAAAAF//b/8QAA//b/9v/2AAAAAAAAAAAAAAAFAAUAAAAAAAUAAP/2//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/9v/2AAAAAAAAAAAAAAAAAAAAAP/n/+L/uv/i/+z/xAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAFP/2AAAAAAAA//YAAAAA/+wAAAAAAAD/7AAAAAD/7AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/7AAD/+//7AAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAA//YAAP/2AAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAP/iAAAAAAAA/+L/ugAAAAAAAAAAAAAAAP/iAAD/2AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//EAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//v/9gAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/7//b/5wAA/+z/9v/2AAAAAAAAAAD/2P/7AAAAAAAA//sAAP/7AAD/4v/s//YAAAAAAAAAAP/iAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/8f/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/YAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAA//b/9v/2//sAAAAA//YAAP/2AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAD/7AAAAAAAAAAAAAAAAAAA//H/7P/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/iAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAA/+z/sAAA/9j/xAAA/87/4v/YAAAAAAAAAAD/sAAAAAAAAAAAAAAAAAAAAAD/xAAA/8T/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/zgAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA/+L/2AAA/9j/2P/OAAAAAAAAAAD/xAAAAAAAAP/OAAAAAAAAAAD/ugAA/9gAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/8T/iP+wAAAAAP/i/8QAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/+L/7P/Y/+L/7P/s/8T/iP/OAAAAAP/Y/84AAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+L/4v/iAAAAAAAA/+IAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAACgAAAAoACgAKAAAAAAAAAAAAAP/n/+L/pv/O/+z/ugAK//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/4gAAAAD/2AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/87/nP+wAAAAAP/Y/9j/kgAA/+L/ugAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP+6AAAAAAAA/8T/7AAA//b/zgAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/E/+IAAP/O/+L/4v/s/7r/iP+SAAAAAP+6/7AAAAAA/8T/Qv/i/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/9v/YAAD/7AAA/9gAAAAAAAAAAAAAAAD/zgAAAAAAAP/EAAAAAAAA/9gAAAAA//YAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAA/+z/2AAA/+wAAAAAAAAAAAAA/+L/2P/E/+z/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/2AAr/+wAAAAUADwAFAAAAAAAAAAAAAP/7//sAAAAAAAoAAAAPAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAX/9gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//v/9gAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/zv/O//b/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/4gAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//b/4v/iAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//EAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/uv/O//b/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/4gAAAAD/xAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoABQAFAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AlsAGAJTABgC2AAwArQADAK0AAwDMAAlBHsAJQO2ABwCWQA4A4kAOAHAADABwAAwAPsAMAD7ADACLwA4Ag4ABAC1/1ACgQAYAXMAKAFzADwAwwAUAPsAMAG7ADACtAAMAjAASAK0AAwCMABIAjAASAEBAEgBAf/lAQH/9AEBAAYDMAAlAzAAJQPoAFMDMAAlAo8AOAKPADgCjwA4AO8AQAGsADkBmQAgAZgAPAGUAGABlQBHAAAAAADcAAABAQAYATcAGAE3ABgBSQAYAWEAHAFhABwBfAA4AlsAPAG5ADgCLgA0AWEAHAPLACADNwAgBE4AMAIFACgETgA4AgUAKAMOACgDDgAAAw4AKAMOAAABygAbA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDwAAYArkAGAT6ABgE3AAYA5UAGAOVABgEqAAYA40AGAPyABgDogAYAlsAGANuABgCuAAYAwsAOARFADgDBgA4ArUAGAK5ABgM1AAsA10ALAJCABYCNgAWALsAKgICABsAAQAAARsA5QAKAGYABQACABAALwCaAAACug91AAMAAQAAAAcAWgADAAEECQABACYAAAADAAEECQACAA4AJgADAAEECQADADoANAADAAEECQAEACYAAAADAAEECQAFAHYAbgADAAEECQAGACQA5AADAAEECQAOAGABCABQAHIAbwBkAHUAYwB0ACAAUwBhAG4AcwAgAE0AZQBkAGkAdQBtAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsARwBPAE8ARwA7AFAAcgBvAGQAdQBjAHQAUwBhAG4AcwAtAE0AZQBkAGkAdQBtAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADkAOwBQAFMAIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA4ADgAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA2ADQANwA4ADAAMABQAHIAbwBkAHUAYwB0AFMAYQBuAHMALQBNAGUAZABpAHUAbQBoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBnAG8AbwBnAGwAZQAuAGMAbwBtAC8AZgBvAG4AdABzAC8AbABpAGMAZQBuAHMAZQAvAHAAcgBvAGQAdQBjAHQAcwBhAG4AcwAAAAIAAAAAAAD/nAAyAAAAAAAAAAAAAAAAAAAAAAAAAAABGwAAAOkA6gDiAOsA7ADtAO4BAgD0APUA8QD2APMA8gDoAO8A8AADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIMAhACFAIYAhwCIAIkAigCLAI0AjgCQAJEAkwCWAJcAnQCeAKAAoQCiAKMApACpAKoBAwEEAKsArQCuAK8AsACxALIAswC0ALUAtgC3ALgAugC8AQUAvgC/AMMAxADFAMcAyADJAMoAywDMAM0AzgDPANAA0QEGANMA1ADVANYA1wDYANkA2gDdAN4BBwEIAQkBCgELAQwBDQEOAQ8AvQEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJB3VuaTAwMEQDZl9pA2ZfbARFdXJvB3VuaUY4RkYETlVMTAd1bmkwMEEwDW9uZS5udW1lcmF0b3IPdHdvLmRlbm9taW5hdG9yDXR3by5udW1lcmF0b3IPdGhyZWUubnVtZXJhdG9yEGZvdXIuZGVub21pbmF0b3IOZm91ci5udW1lcmF0b3IFci5hbHQHdW5pMDBBRAd1bmkwM0JDB3VuaTIwNzQHdW5pMjEwMwd1bmkyMTA5B3VuaTIxOTAHdW5pMjE5MQd1bmkyMTkyB3VuaTIxOTMHdW5pMjE5Ngd1bmkyMTk3B3VuaTIxOTgHdW5pMjE5OQd1bmkyMjE1B3VuaTI2MzkHdW5pMjYzQQd1bmkyNzgwB3VuaTI3ODEHdW5pMjc4Mgd1bmkyNzgzB3VuaTI3ODQHdW5pMjc4NQd1bmkyNzg2B3VuaTI3ODcHdW5pMjc4OAd1bmkyNzhBB3VuaTI3OEIHdW5pMjc4Qwd1bmkyNzhEB3VuaTI3OEUHdW5pMjc4Rgd1bmkyNzkwB3VuaTI3OTEHdW5pMjc5MgNmX2IDZl9mBWZfZl9iBWZfZl9oBWZfZl9pBWZfZl9qBWZfZl9rBWZfZl9sBWZfZl90A2ZfaANmX2oDZl9rA2ZfdANyX2YFcl9mX2YDcl90A3RfZgN0X3QLR29vZ2xlLmxvZ28GRy5sb2dvBm8ubG9nbwZnLmxvZ28GbC5sb2dvBmUubG9nbwBA/345/x99NyAffDcyH3s3ZB96N/8feTd9H3g3Px93OP8fdjh9H3U2EB90Nf8fczSnH3I0/x9xMqcfcDL/H28yfR9uM/8fbTP6H2wzSB9rMf8fajD6H2kw/x9oMPofZy3/H2YtZB9lLTIfZC7/H2Mv/x9iL6cfYSz/H2Ar/x9fK30fXitIH10rKh9cKv8fWyp9H1oqPx9ZKfofWCn/H1cpfR9WKP8fVSenH1Qn/x9TJv8fUib6H1El/x9QJacfTyVkH04iZB9NIvofTCL/H0sipx9KI/8fSST/H0gk+h9HIf8fRiD/H0UgfR9EH/ofQx//H0Iepx9BHv8fQB59Hz8eP0C+Hz4d/x89HfofPB1UHzsc+h86HP8fODcuHzc2px80MjgfMzIyHzAtZB8vLqcfLi0gHyclKh8mJUgfJRIbGVwkI30fIyJkHyIbGhlcIRoqHyAZ/x8fFvofHhj/Hx0X/x8cFv8fGzcZIFsYPRZnWxo3GSBbFz0WZ1sVGT4W/VoTIBJVESAQVRJZEFkNIAxVBSAEVQxZBFkPIA5VCyAKVQcgBlUBPwBVDlkKWQZZAFkJIAhVAyACVQhZAlkDQEAFAbgBkLBUK0u4B/9SS7AIUFuwAYiwJVOwAYiwQFFasAaIsABVWltYsQEBjlmFjY0AHUJLsJBTWLIDAAAdQlmxAgJDUVixBAOOWQArACsrKwArACsAKwArKysrKwArACsrKwArACsrKwErASsBKwErASsBKwArKysBKwArACsrKwErKysBKysrACsrKysBKysAKysrKysrKysrASsrACsrKysrKysrKysrKysrKwErKysrACsrKysrKysrASsrKysrKysrKysAKysrKysrKysrKysrKysrKysrKxgAAA==\"","export default \"data:font/ttf;base64,AAEAAAAQAQAABAAAR1BPU4MNpswAAAEMAAA6WEdTVUIhPy2IAAA7ZAAABepPUy8ybK/3ZAAAQVAAAABgY21hcCk50TgAAEGwAAABmGN2dCAp6BxBAABDSAAAASJmcGdtuLJRBgAARGwAAA9zZ2FzcAAHABsAAFPgAAAADGdseWYxsR3tAABT7AAAdcxoZWFkGmxVBwAAy/AAAAA2aGhlYQ/nDEMAAMwoAAAAJGhtdHicESnTAADMTAAABGxsb2NhTj5qPAAAybgAAAI4bWF4cATcEPQAANC4AAAAIG5hbWUiyT1FAADQ2AAAAchwb3N0I5uYUQAA0qAAAAR7cHJlcJw3JfAAANccAAAC+gABAAAACgBUAHQABERGTFQAGmN5cmwAJmdyZWsAMmxhdG4APgAEAAAAAP//AAEAAAAEAAAAAP//AAEAAQAEAAAAAP//AAEAAgAEAAAAAP//AAEAAwAEa2VybgAaa2VybgAaa2VybgAaa2VybgAaAAAAAQAAAAEABAACAAAAAgAKAMgAAQAmAAQAAAAOAEYArABUAF4AbABsAHIAfACOAJgAogCsALIAuAABAA4ABgAQAB0AIwAkACUAJgAnACgAKwAwADIApQDJAAMATv/YAFH/sACl/+wAAgAj/+IAJf/2AAMAJAAKACcACgAoAAUAAQAj//YAAgAM//YAI//2AAQACf/2AAr/9gAM//YAI//sAAIACv/2ACP/4gACACb/4gAo/+wAAgAj/+wAJP/2AAEAI//iAAEAAv/OAAEAAv/2AAI0NgAEAAA0vjbsAFkASwAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zv/s/+z/2AAAAAD/2P/OAAD/2AAAAAD/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA//YAAP/2AAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/zgAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/nP9+/+wAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA//b/4gAA/+z/zgAAAAAAAAAAAAAAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/sAAAAAD/9gAA/9j/7P/YAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/xAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/9gAAAAA/+L/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/s//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+wAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zgAAAAAAAAAAAAD/zgAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/nP/i/8T/xP/Y/8T/zv/YAAAAAP/iAAD/kgAA/8QAAAAA/84AAP/YAAD/pgAA/6b/2AAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/YAAD/zv/s/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/9gAA//YAAP/2/+z/7P/Y//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/sAAAAAD/zv/s/87/4gAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/sAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/ugAA/93/3f/n/87/2P/TAAAAAAAAAAD/tf/2//EAAAAAAAAAAAAAAAD/v//Y/87/9gAAAAAAAP/EAAAAAAAA/7D/zv/iAAAAAAAAAAAAAAAAAAAAAAAA//b/zv+m/9j/7P/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//b/9gAA//YAAP/2//b/7AAA//H/4gAAAAAAAAAAAAD/7P/7AAD/9v/s//YAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAP/EAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s/+L/4v/x/+z/7P/sAAAAAAAAAAAAAP/x/+wAAAAA//YAAP/2//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/2AAAAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAA//sAAP/7/+L/2P/2/+z/4v/2//H/7AAA//b/4v/2//b/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAP/sAAAAAP/iAAD/7AAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/x/+z/7P/2/+z/9v/sAAAAAP/2AAAAAP/2/+wAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s//b/9v/s/+z/9v/s/8T/uv+m//YAAP/s/+L/zv/i/+z/xP/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YABf/2AAAAAAAA//b/9v/sAAAAAAAAAAD/5wAAAAD/2P/s/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/x//b/7AAA//b/9v/2//b/7P/2/+z/7AAA//v/7AAAAAD/7P/2AAD/5//s//YAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/sAAAAAP/YAAD/9gAAAAD/9gAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAA//YAAAAA//b/8f/2//YAAP/7//b/7P/sAAAAAAAA//YAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/2/+L/2P/s/9P/4v/YAAAAAP/2AAAAAP/2/+wAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA/87/7AAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//H/xAAA/9j/0//2/87/4v/YAAAAAAAAAAD/pv/2AAAAAAAA//YAAAAAAAD/tf/E/9j/9gAAAAD/7P+wAAAAAAAA/7r/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+cAAD/7P/i/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/4gAAAAD/9gAA//sAAP/2/+z/2P/2/93/2AAAAAD/7AAAAAD/2P/2AAD/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAA//v/9v/7AAAAAAAA//sAAAAAAAAAAP/YAAD/9gAAAAD/7AAA/8QAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/sAAAAAP/2AAAAAAAA/7r/kv9+/+z/4v/n/93/sP/E//H/pgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/s/+z/2AAAAAD/uv/Y/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/7P/2AAAAAAAAAAAAAP/2AAD/7P/2//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/7AAA//YAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/+f/5//x//H/9v/s//b/9gAA//b/4gAAAAAAAAAAAAD/9gAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP+1/+L/2P/E/7//uv/E/7//pv+SAAAAAP/E/7D/xP+6/7D/kv/Y/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IABf/YAAD/9gAA/8T/2P/E/9gAAAAA/9j/4gAAAAAAAP/O/7D/4v/Y/9gAAAAAAAAAAAAA/+wAAP+wAAAAAP/2/9j/4gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/O/+z/9v/d//YAAP/2/7r/sP+cAAAAAP/O/87/sP/O/9P/pv/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/9gAA/9j/xP/i/+IAAAAA/9j/4v/2AAAAAP/E/7D/4v/i/9j/7P/2AAAAAAAA/+wAAP/iAAAAAAAA/+wAAP/sAAAAAAAA//YAAP/Y/+L/7P/i/+z/7P/2/9P/xP+6AAAAAP/O/8n/xP/Y/9j/uv/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/s//YAAAAA/9j/4v/i//YAAAAA/+z/4gAAAAD/xP/Y/87/9v/s/+wAAAAAAAAAAAAA/+wAAP/iAAAAAAAA/+IAAAAA//YAAAAA/90AAAAA/+z/4v/s/+L/4v/OAAAAAP/sAAAAAP/s/+cAAAAA/+wAAAAAAAAAAP/sAAAAAAAAAAAAAP/iAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//b/2AAA//b/7AAA/9j/7AAAAAAAAP/sAAD/7AAAAAAAAAAAAAAAAAAA/+wAAP/2AAAAAP/2AAAAAAAAAAAAAAAA/9gAAP+r/87/2P+1/87/zv/Y/7X/nP+IAAAAAP+m/5z/sP/E/6v/nP/Y/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/OAAAAAP/2/7r/xP+6/84AAAAA/9j/2AAAAAAAAP+w/8T/xP/OAAD/9gAAAAAAAAAA/9gAAP+6/+IAAP/x/9j/4v/2/+wAAAAA/+wAAAAA//b/7P/2/+z/4v/iAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/9gAA//b/9v/2AAAAAAAAAAAAAP/7//sAAAAA//sAAP/7AAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/7//H/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/x//YAAP/EAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/2AAAAAP/EAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//sAAAAAAAAAAP/7AAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA/+wAAAAA/+z/2AAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAAAAAAAAAAAAAAF//b/8QAA//b/9v/2AAAAAAAAAAAAAAAFAAUAAAAAAAUAAP/2//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/9v/2AAAAAAAAAAAAAAAAAAAAAP/n/+L/uv/i/+z/xAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAFP/2AAAAAAAA//YAAAAA/+wAAAAAAAD/7AAAAAD/7AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/7AAD/+//7AAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAA//YAAP/2AAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAP/iAAAAAAAA/+L/ugAAAAAAAAAAAAAAAP/iAAD/2AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//EAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//v/9gAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/7//b/5wAA/+z/9v/2AAAAAAAAAAD/2P/7AAAAAAAA//sAAP/7AAD/4v/s//YAAAAAAAAAAP/iAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/8f/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/YAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAA//b/9v/2//sAAAAA//YAAP/2AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAD/7AAAAAAAAAAAAAAAAAAA//H/7P/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/iAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAA/+z/sAAA/9j/xAAA/87/4v/YAAAAAAAAAAD/sAAAAAAAAAAAAAAAAAAAAAD/xAAA/8T/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/zgAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA/+L/2AAA/9j/2P/OAAAAAAAAAAD/xAAAAAAAAP/OAAAAAAAAAAD/ugAA/9gAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/8T/iP+wAAAAAP/i/8QAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/+L/7P/Y/+L/7P/s/8T/iP/OAAAAAP/Y/84AAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+L/4v/iAAAAAAAA/+IAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAACgAAAAoACgAKAAAAAAAAAAAAAP/n/+L/pv/O/+z/ugAK//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/4gAAAAD/2AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/87/nP+wAAAAAP/Y/9j/kgAA/+L/ugAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP+6AAAAAAAA/8T/7AAA//b/zgAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/E/+IAAP/O/+L/4v/s/7r/iP+SAAAAAP+6/7AAAAAA/8T/Qv/i/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/9v/YAAD/7AAA/9gAAAAAAAAAAAAAAAD/zgAAAAAAAP/EAAAAAAAA/9gAAAAA//YAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAA/+z/2AAA/+wAAAAAAAAAAAAA/+L/2P/E/+z/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/2AAr/+wAAAAUADwAFAAAAAAAAAAAAAP/7//sAAAAAAAoAAAAPAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAX/9gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//v/9gAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/zv/O//b/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/4gAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//b/4v/iAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//EAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/uv/O//b/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/4gAAAAD/xAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoABQAFAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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KWoTEwAdM2odAAAvLysSOS8rKxEzMDEFIi4CJzceAzMyNj0BIw4BIyIuAjU0PgIzMhYXMzUzERQOAgMyPgI1NC4CIyIOAhUUHgIBFTBNOigLZQcXISsbQksEFEcwMltGKipGWzIwRxQEbihFWyseMyYWFiYzHh41KRcXKTX9HS04GioQIhsRT0wmGCQpRmA4OGFHKSQXK/4mSWhDHwFVGCo6IyM7KxgYKzsjIzoqGAAAAQAqAAAAngMIAAMACLECAAAvLzAxMyMRM550dAMIAAACABv/8AICAgAAGwAkABC3ABNqCh9qCgAALy8rKzAxBSIuAjU0PgIzMh4CHwEFFjMyNjcXDgMTLgEjIg4CFwEhOGBGKChDWzMzTjciCAz+nylXLT4XWgslN0gsCjUjFjIpGgEQKUdgODthRiYkNDoWHpJQKCE8ECkkGAFyGR8TJzomAAAAAB4AYADCAOYA/gEWAU4BngGmAbYBxgHOAd4B5gHuAgYCFgI4AkACZAJ8AsgDLAOoA/4EDgQyBFYEgASgBMAE0gTuBQIFRgVeBaQGAgYsBnoGygboB1QHogfOB/4IFggyCEoImgkmCVIJnAnaCg4KNgpYCqoK0grmCw4LNgtOC3gLngviDBgMbAyuDQoNJA1YDXYNqA3ODewODg4oDjwOVg5wDoAOkg7mDzQPcg/AEA4QRhCqENwRCBFGEWwRfhHIEfwSQhKQEt4TDhNgE5gTyBPiFAwUMBRMFGwUphS4FPIVJBU+FY4V9BYMFiQWPhZYFnAWiBagFroW0hbsF1QXbBeEF5wXthfOF+YX/hg4GFAYaBiAGJgYshjKGOIY+hkSGSwZZhmqGgQafBqgGsgbIhuQHAYcGBxEHHoc2B0CHUAdSB2aHdweZh7GHxQfOB9OH1ofZh+6H+wf/CAUICwgRCCkISQhNiFIIVQhYCGCIaIh2CHyIggiaiKAIpYisCK6Isgi4CL4IxAjKiNCI1ojciOqI8Ij2iPyJDwkVCRsJIQknCSuJMok/iUQJUglgiWKJZIlqCXmJiQmcCaUJrgm4CdGJ04nhieOJ/4oVChuKIQonii0KMwo5Cj8KRQpHCmgKiQqdir0K4Ar3ixiLOYtOi3SLlguii7kL0wviC/iMEIwdDDoMUoxtDIQMqIzGjOSNBw0hDTaNVo1rDYUNlY2sjbMN0o3ZDfAOCA5nDnuOjA6lDqkOuYAAQAAAAECTt/hvktfDzz1CAsD6AAAAADTVnTxAAAAANPRmjv/UP7jDNQDxAABAAkAAgAAAAAAAAABAAADwP8DAAAM1P9Q/1AM1AABAAAAAAAAAAAAAAAAAAABGwI6AEgDCwA4AkIAKAJpACoCfQAMAikABAJQAEgCWAA4AAAAAAMoADADAwAwARAAGANLADABTwAYAT0AGAEIAEgCOQA4AmMAPADcAAABDQAwAXsALAKRABcCLwAYA0kAIAKHACQAzwAsAWcAQAFnABQB0AAoAjkAOAEPACwBwwA4AQ0AMAHgABsClgAsAagAKAIhACgCMAAkAmgAKAI+ACgCOAAoAiIAKAJAACgCOAAoAQ0AMAEPACwCEwA4AkUAOAITADwCAgAkA20ALALMAAwCdQBIAt4AJQLPAEgCQgBIAi4ASAMqACUCywBIARcASAIrABgCnQBIAhYASANZAEgC0wBIAzYAJQJQAEgDNgAlAmwASAI/ABgCRwAYAp0AOAKoAAwDugAQArAAEAJ9AAwCVAAgAWAASAHgABsBYAAgAgMADAHzAAABuwBgAhcAHAJYADgCIQAcAlgAHAIsABwBjQAYAlUAHAI+ADgBAwAtAQP/0AISADgA8wA4A3AAOAI+ADgCQAAcAlQANAJUABwBlwA4AeMAGAGRABgCPgA0Ai0ABAMlAAQCAgAIAikABAHfACABUQAYAQgASAFRACACKgAgAswADALMAAwC3gAlAkIASALTAEgDNgAlAp0AOAIXABwCFwAcAhcAHAIXABwCFwAcAhcAHAIhABwCLAAcAiwAHAIsABwCLAAcAQMAQAED//YBA//XAQP/6AI+ADgCQAAcAkAAHAJAABwCQAAcAkAAHAI+ADQCPgA0Aj4ANAI+ADQBRQAgAhsAHAIaACACMAAoAaUAUAKDABgCSQBIAhQAJAIUACQBuwCYAcQAOwPtAAQDNgAlAjkAOAJ4AAwCPgA0Ae8AKAIXACQDdwAcAkAAHAH3ACUBDQAwAlIAMAJiACgCYgA8Am8AGAJnABgC8AAwAswADALMAAwDNgAlBHoAJQO0ABwCYwA4A5UAOAHoADAB6AAwAQ0AMAENADACOQA4AikABADA/1ACjQAYAYMAKAGDADwA1QAUAQ0AMAHfADACzAAMAkIASALMAAwCQgBIAkIASAEXAEgBF//hARf/8AEXAAYDNgAlAzYAJQPoAFMDNgAlAp0AOAKdADgCnQA4AQMAQAHIADkBowAgAaAAPAGYAGABmwBHAAAAAADcAAABEAAYAT0AGAE9ABgBTwAYAWoAHAFqABwBkQA4AmEAPAHDADgCPgA0AWoAHAPJACADQQAgBGMAMAIvACgEYwA4Ai8AKAMYACgDGAAAAxgAKAMYAAAB4AAbA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDRAAsA0QALANEACwDzAAYAskAGAUIABgE7gAYA6sAGAOrABgEwgAYA6MAGAQLABgDsgAYAm8AGAOGABgCzwAYAykAOARlADgDLQA4AscAGALQABgM1AAsA10ALAJCABYCNgAWALsAKgICABsAAQAAARsA5QAKAGgABQACABAALwCaAAADBA91AAMAAQAAAAcAWgADAAEECQABABgAAAADAAEECQACAAgAGAADAAEECQADADYAIAADAAEECQAEACIAVgADAAEECQAFAHYAeAADAAEECQAGACAA7gADAAEECQAOAGABDgBQAHIAbwBkAHUAYwB0ACAAUwBhAG4AcwBCAG8AbABkADEALgAwADAAOQA7AEcATwBPAEcAOwBQAHIAbwBkAHUAYwB0AFMAYQBuAHMALQBCAG8AbABkAFAAcgBvAGQAdQBjAHQAIABTAGEAbgBzACAAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMQAuADAAMAAwADsAaABvAHQAYwBvAG4AdgAgADEALgAwAC4AOAA4ADsAbQBhAGsAZQBvAHQAZgAuAGwAaQBiADIALgA1AC4ANgA0ADcAOAAwADAAUAByAG8AZAB1AGMAdABTAGEAbgBzAC0AQgBvAGwAZABoAHQAdABwAHMAOgAvAC8AdwB3AHcALgBnAG8AbwBnAGwAZQAuAGMAbwBtAC8AZgBvAG4AdABzAC8AbABpAGMAZQBuAHMAZQAvAHAAcgBvAGQAdQBjAHQAcwBhAG4AcwACAAAAAAAA/5wAMgAAAAAAAAAAAAAAAAAAAAAAAAAAARsAAADpAOoA4gDrAOwA7QDuAQIA9AD1APEA9gDzAPIA6ADvAPAAAwAEAAUABgAH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\"","export default \"data:font/ttf;base64,AAEAAAAQAQAABAAAR1BPU4MNpswAAAEMAAA6WEdTVUIhPy2IAAA7ZAAABepPUy8ybLD3mwAAQVAAAABgY21hcCk50TgAAEGwAAABmGN2dCAtuSsgAABDSAAAAVJmcGdtuLJRBgAARJwAAA9zZ2FzcAAHABsAAFQQAAAADGdseWa9cz3tAABUHAAAd6RoZWFkEnNmGwAAy8AAAAA2aGhlYRBeD/EAAMv4AAAAJGhtdHicRBSBAADMHAAABGxsb2NhpkTC5wAA0IgAAAI4bWF4cAUfEPEAANLAAAAAIG5hbWUnzEK6AADS4AAAAfxwb3N0I5GYUQAA1NwAAAR7cHJlcO61r+cAANlYAAADTwABAAAACgBUAHQABERGTFQAGmN5cmwAJmdyZWsAMmxhdG4APgAEAAAAAP//AAEAAAAEAAAAAP//AAEAAQAEAAAAAP//AAEAAgAEAAAAAP//AAEAAwAEa2VybgAaa2VybgAaa2VybgAaa2VybgAaAAAAAQAAAAEABAACAAAAAgAKAMgAAQAmAAQAAAAOAEYArABUAF4AbABsAHIAfACOAJgAogCsALIAuAABAA4ABgAQAB0AIwAkACUAJgAnACgAKwAwADIApQDJAAMATv/YAFH/sACl/+wAAgAj/+IAJf/2AAMAJAAKACcACgAoAAUAAQAj//YAAgAM//YAI//2AAQACf/2AAr/9gAM//YAI//sAAIACv/2ACP/4gACACb/4gAo/+wAAgAj/+wAJP/2AAEAI//iAAEAAv/OAAEAAv/2AAI0NgAEAAA0vjbsAFkASwAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zv/s/+z/2AAAAAD/2P/OAAD/2AAAAAD/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA//YAAP/2AAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/zgAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/nP9+/+wAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA//b/4gAA/+z/zgAAAAAAAAAAAAAAAAAAAAD/4gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/sAAAAAD/9gAA/9j/7P/YAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/xAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/9gAAAAA/+L/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/s//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+wAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+L/zgAAAAAAAAAAAAD/zgAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/nP/i/8T/xP/Y/8T/zv/YAAAAAP/iAAD/kgAA/8QAAAAA/84AAP/YAAD/pgAA/6b/2AAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/YAAD/zv/s/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/9gAA//YAAP/2/+z/7P/Y//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/sAAAAAD/zv/s/87/4gAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAD/sAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/ugAA/93/3f/n/87/2P/TAAAAAAAAAAD/tf/2//EAAAAAAAAAAAAAAAD/v//Y/87/9gAAAAAAAP/EAAAAAAAA/7D/zv/iAAAAAAAAAAAAAAAAAAAAAAAA//b/zv+m/9j/7P/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAFAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//b/9gAA//YAAP/2//b/7AAA//H/4gAAAAAAAAAAAAD/7P/7AAD/9v/s//YAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAP/EAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s/+L/4v/x/+z/7P/sAAAAAAAAAAAAAP/x/+wAAAAA//YAAP/2//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/2AAAAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAA//sAAP/7/+L/2P/2/+z/4v/2//H/7AAA//b/4v/2//b/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAP/sAAAAAP/iAAD/7AAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/x/+z/7P/2/+z/9v/sAAAAAP/2AAAAAP/2/+wAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA//YAAP/2AAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/s//b/9v/s/+z/9v/s/8T/uv+m//YAAP/s/+L/zv/i/+z/xP/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YABf/2AAAAAAAA//b/9v/sAAAAAAAAAAD/5wAAAAD/2P/s/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/x//b/7AAA//b/9v/2//b/7P/2/+z/7AAA//v/7AAAAAD/7P/2AAD/5//s//YAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/sAAAAAP/YAAD/9gAAAAD/9gAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/x/+z/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAA//YAAAAA//b/8f/2//YAAP/7//b/7P/sAAAAAAAA//YAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/2/+L/2P/s/9P/4v/YAAAAAP/2AAAAAP/2/+wAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAA/87/7AAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//H/xAAA/9j/0//2/87/4v/YAAAAAAAAAAD/pv/2AAAAAAAA//YAAAAAAAD/tf/E/9j/9gAAAAD/7P+wAAAAAAAA/7r/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+cAAD/7P/i/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/4gAAAAD/9gAA//sAAP/2/+z/2P/2/93/2AAAAAD/7AAAAAD/2P/2AAD/4v/2//YAAAAAAAAAAP/2AAAAAAAAAAD/9gAA//v/9v/7AAAAAAAA//sAAAAAAAAAAP/YAAD/9gAAAAD/7AAA/8QAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/sAAAAAP/2AAAAAAAA/7r/kv9+/+z/4v/n/93/sP/E//H/pgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/s/+z/2AAAAAD/uv/Y/5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/7P/2AAAAAAAAAAAAAP/2AAD/7P/2//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/7AAA//YAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/+f/5//x//H/9v/s//b/9gAA//b/4gAAAAAAAAAAAAD/9gAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP+1/+L/2P/E/7//uv/E/7//pv+SAAAAAP/E/7D/xP+6/7D/kv/Y/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IABf/YAAD/9gAA/8T/2P/E/9gAAAAA/9j/4gAAAAAAAP/O/7D/4v/Y/9gAAAAAAAAAAAAA/+wAAP+wAAAAAP/2/9j/4gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/O/+z/9v/d//YAAP/2/7r/sP+cAAAAAP/O/87/sP/O/9P/pv/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/9gAA/9j/xP/i/+IAAAAA/9j/4v/2AAAAAP/E/7D/4v/i/9j/7P/2AAAAAAAA/+wAAP/iAAAAAAAA/+wAAP/sAAAAAAAA//YAAP/Y/+L/7P/i/+z/7P/2/9P/xP+6AAAAAP/O/8n/xP/Y/9j/uv/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/s//YAAAAA/9j/4v/i//YAAAAA/+z/4gAAAAD/xP/Y/87/9v/s/+wAAAAAAAAAAAAA/+wAAP/iAAAAAAAA/+IAAAAA//YAAAAA/90AAAAA/+z/4v/s/+L/4v/OAAAAAP/sAAAAAP/s/+cAAAAA/+wAAAAAAAAAAP/sAAAAAAAAAAAAAP/iAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//b/2AAA//b/7AAA/9j/7AAAAAAAAP/sAAD/7AAAAAAAAAAAAAAAAAAA/+wAAP/2AAAAAP/2AAAAAAAAAAAAAAAA/9gAAP+r/87/2P+1/87/zv/Y/7X/nP+IAAAAAP+m/5z/sP/E/6v/nP/Y/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/2P/OAAAAAP/2/7r/xP+6/84AAAAA/9j/2AAAAAAAAP+w/8T/xP/OAAD/9gAAAAAAAAAA/9gAAP+6/+IAAP/x/9j/4v/2/+wAAAAA/+wAAAAA//b/7P/2/+z/4v/iAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//b/9gAA//b/9v/2AAAAAAAAAAAAAP/7//sAAAAA//sAAP/7AAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/8f/7//H/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/x//YAAP/EAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/2AAAAAP/EAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//sAAAAAAAAAAP/7AAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA/+wAAAAA/+z/2AAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAAAAAAAAAAAAAAF//b/8QAA//b/9v/2AAAAAAAAAAAAAAAFAAUAAAAAAAUAAP/2//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/9v/2AAAAAAAAAAAAAAAAAAAAAP/n/+L/uv/i/+z/xAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAFP/2AAAAAAAA//YAAAAA/+wAAAAAAAD/7AAAAAD/7AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/7AAD/+//7AAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAA//YAAP/2AAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAP/iAAAAAAAA/+L/ugAAAAAAAAAAAAAAAP/iAAD/2AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//EAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//v/9gAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/7//b/5wAA/+z/9v/2AAAAAAAAAAD/2P/7AAAAAAAA//sAAP/7AAD/4v/s//YAAAAAAAAAAP/iAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//H/8f/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/YAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAA//b/9v/2//sAAAAA//YAAP/2AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAAAAD/7AAAAAAAAAAAAAAAAAAA//H/7P/7//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAA//v/7P/2//YAAP/iAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAD/4gAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAA/+z/sAAA/9j/xAAA/87/4v/YAAAAAAAAAAD/sAAAAAAAAAAAAAAAAAAAAAD/xAAA/8T/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/zgAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA/+L/2AAA/9j/2P/OAAAAAAAAAAD/xAAAAAAAAP/OAAAAAAAAAAD/ugAA/9gAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/8T/iP+wAAAAAP/i/8QAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/+L/7P/Y/+L/7P/s/8T/iP/OAAAAAP/Y/84AAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAA/+L/4v/iAAAAAAAA/+IAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAACgAAAAoACgAKAAAAAAAAAAAAAP/n/+L/pv/O/+z/ugAK//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/4gAAAAD/2AAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//v/+//7//sAAAAA//sAAP/7AAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/87/nP+wAAAAAP/Y/9j/kgAA/+L/ugAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP+6AAAAAAAA/8T/7AAA//b/zgAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/E/+IAAP/O/+L/4v/s/7r/iP+SAAAAAP+6/7AAAAAA/8T/Qv/i/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/9v/YAAD/7AAA/9gAAAAAAAAAAAAAAAD/zgAAAAAAAP/EAAAAAAAA/9gAAAAA//YAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAA/+z/2AAA/+wAAAAAAAAAAAAA/+L/2P/E/+z/2AAAAAAAAAAAAAAAAAAAAAD/2AAA/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/2AAr/+wAAAAUADwAFAAAAAAAAAAAAAP/7//sAAAAAAAoAAAAPAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAX/9gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAUABQAAAAAAAAAAAAAAAAAAAAAAAP/7//sAAAAA//v/9gAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/zv/O//b/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/4gAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//b/4v/iAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//EAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAP/iAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+z/uv/O//b/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/sAAD/4gAAAAD/xAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoABQAFAAoAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAoAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAwABBAkAAgAWABgAAwABBAkAAwBCAC4AAwABBAkABAAwAHAAAwABBAkABQB2AKAAAwABBAkABgAsARYAAwABBAkADgBgAUIAUAByAG8AZAB1AGMAdAAgAFMAYQBuAHMAQgBvAGwAZAAgAEkAdABhAGwAaQBjADEALgAwADAAOQA7AEcATwBPAEcAOwBQAHIAbwBkAHUAYwB0AFMAYQBuAHMALQBCAG8AbABkAEkAdABhAGwAaQBjAFAAcgBvAGQAdQBjAHQAIABTAGEAbgBzACAAQgBvAGwAZAAgAEkAdABhAGwAaQBjAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADkAOwBQAFMAIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA4ADgAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA2ADQANwA4ADAAMABQAHIAbwBkAHUAYwB0AFMAYQBuAHMALQBCAG8AbABkAEkAdABhAGwAaQBjAGgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAGcAbwBvAGcAbABlAC4AYwBvAG0ALwBmAG8AbgB0AHMALwBsAGkAYwBlAG4AcwBlAC8AcAByAG8AZAB1AGMAdABzAGEAbgBzAAIAAP/2AAD/nAAyAAAAAAAAAAAAAAAAAAAAAAAAAAABGwAAAOkA6gDiAOsA7ADtAO4BAgD0APUA8QD2APMA8gDoAO8A8AADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIMAhACFAIYAhwCIAIkAigCLAI0AjgCQAJEAkwCWAJcAnQCeAKAAoQCiAKMApACpAKoBAwEEAKsArQCuAK8AsACxALIAswC0ALUAtgC3ALgAugC8AQUAvgC/AMMAxADFAMcAyADJAMoAywDMAM0AzgDPANAA0QEGANMA1ADVANYA1wDYANkA2gDdAN4BBwEIAQkBCgELAQwBDQEOAQ8AvQEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJB3VuaTAwMEQDZl9pA2ZfbARFdXJvB3VuaUY4RkYETlVMTAd1bmkwMEEwDW9uZS5udW1lcmF0b3IPdHdvLmRlbm9taW5hdG9yDXR3by5udW1lcmF0b3IPdGhyZWUubnVtZXJhdG9yEGZvdXIuZGVub21pbmF0b3IOZm91ci5udW1lcmF0b3IFci5hbHQHdW5pMDBBRAd1bmkwM0JDB3VuaTIwNzQHdW5pMjEwMwd1bmkyMTA5B3VuaTIxOTAHdW5pMjE5MQd1bmkyMTkyB3VuaTIxOTMHdW5pMjE5Ngd1bmkyMTk3B3VuaTIxOTgHdW5pMjE5OQd1bmkyMjE1B3VuaTI2MzkHdW5pMjYzQQd1bmkyNzgwB3VuaTI3ODEHdW5pMjc4Mgd1bmkyNzgzB3VuaTI3ODQHdW5pMjc4NQd1bmkyNzg2B3VuaTI3ODcHdW5pMjc4OAd1bmkyNzhBB3VuaTI3OEIHdW5pMjc4Qwd1bmkyNzhEB3VuaTI3OEUHdW5pMjc4Rgd1bmkyNzkwB3VuaTI3OTEHdW5pMjc5MgNmX2IDZl9mBWZfZl9iBWZfZl9oBWZfZl9pBWZfZl9qBWZfZl9rBWZfZl9sBWZfZl90A2ZfaANmX2oDZl9rA2ZfdANyX2YFcl9mX2YDcl90A3RfZgN0X3QLR29vZ2xlLmxvZ28GRy5sb2dvBm8ubG9nbwZnLmxvZ28GbC5sb2dvBmUubG9nbwBA/6hMpx+nTP8fpkt9H6VL/x+kR/8fo0enH6JHSB+hSv8foEp9H59J/x+eSfofnUj/H5xG/x+bRf8fmj8LH5lAFR+YRGQfl0T6H5ZE/x+VQ6cflEP/H5NBfR+SQfofkUH/H5BBSB+PPqcfjj7/H409/x+MPP8fizynH4o6VB+JO0gfiDv6H4c7/x+GO/ofhTlUH4Q5px+DOf8fgjmnH4E5Px+AN1Qffzf6H343/x99OPoffDj/H3s3Lh96Nn0feTb/H3g1/x93NacfdjVkH3U0/x90M1QfczOnH3Iz/x9xM6cfcDL/H28xfR9uMf8fbTBkH2ww+h9rMP8fai6nH2ku/0D/H2guZB9nLjgfZi//H2UvfR9kLf8fYytIH2Ir+h9hK/8fYCynH18s/x9eKjgfXSpkH1wqpx9bKv8fWif/H1kn+h9YKf8fVyl9H1Yo/x9VKFQfVCX/H1Mm/x9SJqcfUSUqH1AkJx9PJKcfTiT/H00kOB9MS1QfS0c/H0pHKh9JSGQfSEcVH0RC+h9DQlQfQkD6H0FAJB9AP30fPj1kHzw6+h87OhkfODdUHzY1+h8zMlQfMjE4HzEpIyFcMCOnHy8uIh8uISIhXC0iHB8sKz8fKyH/HyonOB8pJz8fKCcgHyce/x8mfSVVJQofHlwkHv8fIzchG1sgPR5YWyI3IRtbQEwfPR5YWx0hPh59WhMgElURIBBVElkQWQ0gDFUFIARVDFkEWQ8gDlULIApVByAGVQE/AFUOWQpZBlkAWQkgCFUDIAJVCFkCWQNAQAUBuAGQsFQrS7gH/1JLsAhQW7ABiLAlU7ABiLBAUVqwBoiwAFVaW1ixAQGOWYWNjQAdQkuwkFNYsgMAAB1CWbECAkNRWLEEA45ZACsAKysrACsAKwArACsrKysrACsAKysrACsAKysrASsBKwErASsBKwErACsAKysrKysBKysAKwArKysBKysrASsAKwErKysAKysrKysrKysrKwErKysrACsrKysrKysrKysrKysrASsrKysrACsrKysrKysrKysrKysrKysrASsrKysrKwArKysrKysrKysrKwErKysrKysrKysrACsrKysrKysrKysrKysrKysrKysrKysrKysYAA==\"","/// <reference types=\"vite/client\" />\n/**\n * Fuentes compartidas del CMS Bluestack: **Roboto** (texto general, default del\n * theme) y **Product Sans** (marca / títulos). Migradas del CMS Angular\n * `cmsmedios-ux`, ahora **self-hosted** dentro de la lib: los archivos viven en\n * `theme/fonts/` y Vite los inlinea como data URI en el build (ver\n * `assetsInlineLimit` en `vite.config.ts`). Así cada gestor que use el provider\n * MUI hereda las fuentes sin CDN ni configuración de `public/`.\n *\n * Roboto se trae en los pesos 400/500/700 (subconjunto latin, vía\n * `@fontsource/roboto`). Product Sans en 400, 400 italic, 500, 700 y 700 italic.\n */\n\n// Roboto (woff2, subconjunto latin)\nimport Roboto400 from './fonts/Roboto-400.woff2';\nimport Roboto500 from './fonts/Roboto-500.woff2';\nimport Roboto700 from './fonts/Roboto-700.woff2';\n\n// Product Sans (ttf)\nimport ProductSansRegular from './fonts/ProductSans-Regular.ttf';\nimport ProductSansItalic from './fonts/ProductSans-Italic.ttf';\nimport ProductSansMedium from './fonts/ProductSans-Medium.ttf';\nimport ProductSansBold from './fonts/ProductSans-Bold.ttf';\nimport ProductSansBoldItalic from './fonts/ProductSans-BoldItalic.ttf';\n\n/**\n * Reglas `@font-face` de todas las fuentes del CMS, listas para inyectarse como\n * estilos globales (ver el componente `CmsFontFaces`).\n */\nexport const cmsFontFaces = `\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(${Roboto400}) format('woff2');\n}\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(${Roboto500}) format('woff2');\n}\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(${Roboto700}) format('woff2');\n}\n@font-face {\n font-family: 'Product Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(${ProductSansRegular}) format('truetype');\n}\n@font-face {\n font-family: 'Product Sans';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(${ProductSansItalic}) format('truetype');\n}\n@font-face {\n font-family: 'Product Sans';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(${ProductSansMedium}) format('truetype');\n}\n@font-face {\n font-family: 'Product Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(${ProductSansBold}) format('truetype');\n}\n@font-face {\n font-family: 'Product Sans';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(${ProductSansBoldItalic}) format('truetype');\n}\n`;\n","import type {\n AppMessageNode,\n AppMessages,\n CmsMessages,\n ErrorPageMessageKey,\n NavigationModule,\n NewMenuMessageKey,\n NotificationsMenuMessageKey,\n PreviewMenuMessageKey,\n ProfileMenuMessageKey,\n SidebarMessageKey,\n ToastMessageKey,\n TopBarMessageKey,\n UserAvatarMessageKey,\n} from './types';\n\n/** Parámetros de interpolación para placeholders `{nombre}` en un mensaje. */\nexport type TranslationParams = Record<string, string | number>;\n\n/** Traductor genérico de claves del gestor por ruta con puntos (`ns.clave`). */\nexport type AppTranslate = (path: string, params?: TranslationParams) => string;\n\nexport type CmsTranslator = {\n messages: CmsMessages;\n /** Árbol de mensajes del gestor ya resuelto al locale activo (con fallback en). */\n appMessages: AppMessages;\n navigation: (module: NavigationModule | string) => string;\n sidebar: (key: SidebarMessageKey) => string;\n topBar: (key: TopBarMessageKey) => string;\n newMenu: (key: NewMenuMessageKey) => string;\n previewMenu: (key: PreviewMenuMessageKey) => string;\n profileMenu: (key: ProfileMenuMessageKey) => string;\n notificationsMenu: (\n key: NotificationsMenuMessageKey,\n params?: { count?: number },\n ) => string;\n toast: (key: ToastMessageKey) => string;\n userAvatar: (key: UserAvatarMessageKey) => string;\n errorPage: (key: ErrorPageMessageKey) => string;\n /**\n * Resuelve una clave propia del gestor por ruta con puntos\n * (p. ej. `t.app('usuarios.modal.deactivate.title')`). Si falta, devuelve la\n * ruta tal cual (útil para detectar claves ausentes en desarrollo).\n */\n app: AppTranslate;\n /**\n * Devuelve un traductor del gestor con un namespace fijado:\n * `const tu = t.scoped('usuarios'); tu('modal.deactivate.title')`.\n */\n scoped: (namespace: string) => AppTranslate;\n};\n\nfunction interpolate(template: string, params?: TranslationParams): string {\n if (!params) return template;\n return template.replace(/\\{(\\w+)\\}/g, (_, key: string) => {\n const value = params[key];\n return value === undefined ? `{${key}}` : String(value);\n });\n}\n\n/** Navega un árbol de mensajes del gestor por ruta con puntos. */\nfunction resolveAppPath(tree: AppMessages, path: string): string | undefined {\n let node: AppMessageNode | undefined = tree;\n for (const segment of path.split('.')) {\n if (typeof node !== 'object' || node === null) return undefined;\n node = node[segment];\n }\n return typeof node === 'string' ? node : undefined;\n}\n\nexport function createTranslator(\n messages: CmsMessages,\n appMessages: AppMessages = {},\n): CmsTranslator {\n const navigationLookup = messages.navigation as Record<string, string>;\n\n const app: AppTranslate = (path, params) => {\n const value = resolveAppPath(appMessages, path);\n return value === undefined ? path : interpolate(value, params);\n };\n\n return {\n messages,\n appMessages,\n navigation: (module) => navigationLookup[module] ?? module,\n sidebar: (key) => messages.sidebar[key],\n topBar: (key) => messages.topBar[key],\n newMenu: (key) => messages.newMenu[key],\n previewMenu: (key) => messages.previewMenu[key],\n profileMenu: (key) => messages.profileMenu[key],\n notificationsMenu: (key, params) =>\n interpolate(messages.notificationsMenu[key], params),\n toast: (key) => messages.toast[key],\n userAvatar: (key) => messages.userAvatar[key],\n errorPage: (key) => messages.errorPage[key],\n app,\n scoped: (namespace) => (path, params) => app(`${namespace}.${path}`, params),\n };\n}\n","export const enMessages = {\n navigation: {\n COMMENTS: 'Comments',\n POLLS: 'Polls',\n MEDIA: 'Media',\n AUDIOS: 'Audio',\n IMAGES: 'Images',\n PLAYLISTS: 'Playlist',\n VIDEOS: 'Videos',\n NEWS: 'News',\n PLANNING: 'Planning',\n ANALYTICS: 'Analytics',\n TAGS: 'Tags',\n TRIVIAS: 'Trivia',\n OTHERS: 'Other',\n NEWSWIRES: 'News Wires',\n EVENTS: 'Events',\n PAGES: 'Pages',\n FEEDS: 'Feed',\n PERSONS: 'People',\n CONTRIBUTIONS: 'Contributions',\n RECIPES: 'Recipes',\n POSTS: 'Posts',\n BANNERS: 'Banners',\n BLOCKS: 'Blocks',\n MENUS: 'Menu',\n TOPICS: 'Topics',\n ADVANCEDQUERYS: 'Advanced search',\n IMPORTS: 'Imports',\n NEWSLETTERS: 'Newsletters',\n NOTIFICATIONS: 'Notifications',\n PAYMENTS: 'Payments',\n PLANS: 'Plans',\n REPORTS: 'Reports',\n SECTIONS: 'Sections',\n TWITTERS: 'Twitter Feeds',\n USERS: 'Users',\n ZONES: 'Zones',\n IA: 'IA',\n },\n sidebar: {\n navAriaLabel: 'Main navigation',\n collapse: 'Collapse',\n expand: 'Expand',\n newBadge: 'New',\n pin: 'Pin to top',\n unpin: 'Unpin',\n },\n topBar: {\n openSidebar: 'Open sidebar menu',\n closeSidebar: 'Close sidebar menu',\n new: 'New',\n language: 'Language',\n analytics: 'Analytics',\n preview: 'Preview',\n help: 'Help',\n publication: 'Publication',\n appearance: 'Appearance',\n newTheme: 'New theme',\n newThemeSubtitle: 'Redesigned interface',\n modeLabel: 'Mode',\n modeLight: 'Light',\n modeDark: 'Dark',\n classicUnavailable: 'The classic view is not available in this prototype.',\n },\n newMenu: {\n frequentsTitle: 'Frequent',\n othersTitle: 'Others',\n videosTitle: 'Videos',\n post: 'New Post',\n trivia: 'New Trivia',\n poll: 'New Poll',\n listicle: 'New Listicle',\n tag: 'New Tag',\n gamecast: 'New Gamecast',\n liveblog: 'New LiveBlog',\n aiPost: 'New AI Post',\n aiListicle: 'New AI Listicle',\n videoNative: 'New Video Native',\n videoEmbedded: 'New Video Embedded',\n videoYoutube: 'New Video Youtube',\n },\n previewMenu: {\n desktop: 'Preview Desktop',\n mobile: 'Preview Mobile',\n tablet: 'Preview Tablet',\n },\n profileMenu: {\n ariaLabel: 'My profile',\n myProfile: 'My Profile',\n webmasterView: 'Webmaster View',\n signOff: 'Sign off',\n },\n notificationsMenu: {\n title: 'Notifications',\n unreadCount: '{count} unread',\n empty: 'No notifications',\n ariaLabel: 'Notifications',\n close: 'Close',\n today: 'Today',\n yesterday: 'Yesterday',\n assignedBefore: 'You have',\n assignedAfter: 'new assigned topics.',\n pendingBefore: 'You have',\n pendingAfter: 'assigned topics about to expire.',\n assignedToday: 'Assigned today',\n assignedYesterday: 'Assigned yesterday',\n assignedOn: 'Assigned on',\n expires: 'Due',\n editorialOpportunityLabel: 'Editorial opportunity',\n editorialOpportunityText: '{count} topics require your attention',\n editorialOpportunityTop: 'Top',\n editorialOpportunityMatch: 'Match',\n editorialOpportunityTrending: 'Trending',\n editorialOpportunitySeeMoreOpportunities: 'See {count} more opportunities',\n editorialOpportunityHide: 'Hide',\n editorialOpportunityRemindLater: 'Remind me later',\n editorialOpportunitySeeMore: 'See more',\n },\n search: {\n placeholder: 'Search…',\n inputAriaLabel: 'Search',\n clearAriaLabel: 'Clear search',\n advancedAriaLabel: 'Advanced search',\n title: 'Advanced search',\n apply: 'Apply',\n reset: 'Reset',\n close: 'Close',\n noOptions: 'No matches',\n dateToday: 'Today',\n dateClear: 'Clear',\n dateOpenAriaLabel: 'Open calendar',\n prevMonthAriaLabel: 'Previous month',\n nextMonthAriaLabel: 'Next month',\n },\n searchFields: {\n text: 'Text',\n textPlaceholder: 'Title, summary or body',\n type: 'Type',\n typePlaceholder: 'All types',\n section: 'Section',\n sectionPlaceholder: 'All sections',\n category: 'Category',\n categoryPlaceholder: 'All categories',\n states: 'Statuses',\n statesPlaceholder: 'All statuses',\n creator: 'Creator',\n creatorPlaceholder: 'Type to search a creator',\n author: 'Author',\n authorPlaceholder: 'Type to search an author',\n tags: 'Tags',\n tagsPlaceholder: 'Type and press Enter',\n groups: 'Groups',\n groupsPlaceholder: 'All groups',\n amount: 'Amount to show',\n amountPlaceholder: 'e.g. 50',\n dateFrom: 'Date from',\n dateTo: 'Date to',\n sortBy: 'Sort by',\n sortByPlaceholder: 'Relevance',\n zone: 'Zone',\n zonePlaceholder: 'Any zone',\n priority: 'Priority',\n priorityPlaceholder: 'All',\n order: 'Order',\n orderPlaceholder: 'Descending',\n includeDrafts: 'Include drafts',\n includeHistory: 'Include historical content',\n },\n searchOptions: {\n typeNews: 'Article',\n typeList: 'List note',\n typeLiveblog: 'LiveBlog',\n statePublished: 'Published',\n stateDraft: 'In drafting',\n stateScheduled: 'Scheduled',\n stateReview: 'In review',\n stateDone: 'Finished',\n sortRelevance: 'Relevance',\n sortDate: 'Date',\n sortTitle: 'Title',\n orderDesc: 'Descending',\n orderAsc: 'Ascending',\n priorityHigh: 'High (1–10)',\n priorityMid: 'Medium (11–30)',\n priorityLow: 'Low (31+)',\n },\n toast: {\n close: 'Close',\n copyDetail: 'Copy error detail',\n copied: 'Copied',\n defaultSuccess: 'Operation completed successfully.',\n defaultError: 'An error occurred in the service.',\n defaultWarning: 'Please review the request.',\n defaultInfo: 'Information',\n },\n userAvatar: {\n alt: 'User avatar',\n unknownUser: 'Unknown user',\n },\n errorPage: {\n homeButton: 'Home',\n notFoundTitle: 'Sorry an error occurred.',\n notFoundSubtitle: 'This website is no longer available. Keep browsing!',\n notFoundCode: '404',\n errorLabel: 'Error',\n copyDetail: 'Copy detail.',\n copyDetailText:\n 'The route {url} you are trying to access is no longer available.',\n copied: 'Text copied to clipboard!',\n notAllowedTitle: 'Sorry.\\nYou do not have access.',\n notAllowedSubtitle:\n 'What you want to see is restricted by permissions. Keep browsing!',\n },\n} as const;\n","import type { CmsMessages } from '../types';\n\nexport const esMessages = {\n navigation: {\n COMMENTS: 'Comentarios',\n POLLS: 'Encuestas',\n MEDIA: 'Media',\n AUDIOS: 'Audio',\n IMAGES: 'Imágenes',\n PLAYLISTS: 'Playlist',\n VIDEOS: 'Videos',\n NEWS: 'Noticias',\n PLANNING: 'Planificación',\n ANALYTICS: 'Analíticas',\n TAGS: 'Tags',\n TRIVIAS: 'Trivias',\n OTHERS: 'Otros',\n NEWSWIRES: 'News Wires',\n EVENTS: 'Eventos',\n PAGES: 'Páginas',\n FEEDS: 'Feed',\n PERSONS: 'Personas',\n CONTRIBUTIONS: 'Contribuciones',\n RECIPES: 'Recetas',\n POSTS: 'Posts',\n BANNERS: 'Banners',\n BLOCKS: 'Bloques',\n MENUS: 'Menú',\n TOPICS: 'Temas',\n ADVANCEDQUERYS: 'Búsqueda avanzada',\n IMPORTS: 'Importaciones',\n NEWSLETTERS: 'Newsletters',\n NOTIFICATIONS: 'Notificaciones',\n PAYMENTS: 'Pagos',\n PLANS: 'Planes',\n REPORTS: 'Reportes',\n SECTIONS: 'Secciones',\n TWITTERS: 'Twitter Feeds',\n USERS: 'Usuarios',\n ZONES: 'Zonas',\n IA: 'IA',\n },\n sidebar: {\n navAriaLabel: 'Principal',\n collapse: 'Contraer',\n expand: 'Expandir',\n newBadge: 'Nuevo',\n pin: 'Anclar arriba',\n unpin: 'Desanclar',\n },\n topBar: {\n openSidebar: 'Abrir menú lateral',\n closeSidebar: 'Cerrar menú lateral',\n new: 'Nuevo',\n language: 'Idioma',\n analytics: 'Analíticas',\n preview: 'Previsualizar',\n help: 'Ayuda',\n publication: 'Publicación',\n appearance: 'Apariencia',\n newTheme: 'Tema nuevo',\n newThemeSubtitle: 'Interfaz rediseñada',\n modeLabel: 'Modo',\n modeLight: 'Claro',\n modeDark: 'Oscuro',\n classicUnavailable: 'La vista clásica no está disponible en este prototipo.',\n },\n newMenu: {\n frequentsTitle: 'Frecuentes',\n othersTitle: 'Otros',\n videosTitle: 'Videos',\n post: 'Nueva Nota',\n trivia: 'Nueva Trivia',\n poll: 'Nueva Encuesta',\n listicle: 'Nueva Nota Lista',\n tag: 'Nuevo Tag',\n gamecast: 'Nuevo Gamecast',\n liveblog: 'Nuevo LiveBlog',\n aiPost: 'Nueva Nota IA',\n aiListicle: 'Nueva Lista IA',\n videoNative: 'Nuevo Video Nativo',\n videoEmbedded: 'Nuevo Video Embebido',\n videoYoutube: 'Nuevo Video Youtube',\n },\n previewMenu: {\n desktop: 'Previsualizar Escritorio',\n mobile: 'Previsualizar Móvil',\n tablet: 'Previsualizar Tablet',\n },\n profileMenu: {\n ariaLabel: 'Mi perfil',\n myProfile: 'Mi perfil',\n webmasterView: 'Vista Webmaster',\n signOff: 'Cerrar sesión',\n },\n notificationsMenu: {\n title: 'Notificaciones',\n unreadCount: '{count} sin leer',\n empty: 'No hay notificaciones',\n ariaLabel: 'Notificaciones',\n close: 'Cerrar',\n today: 'Hoy',\n yesterday: 'Ayer',\n assignedBefore: 'Tienes',\n assignedAfter: 'nuevos temas asignados.',\n pendingBefore: 'Tienes',\n pendingAfter: 'temas asignados por vencer.',\n assignedToday: 'Asignado hoy',\n assignedYesterday: 'Asignado ayer',\n assignedOn: 'Asignado el',\n expires: 'Vence',\n editorialOpportunityLabel: 'Oportunidad editorial',\n editorialOpportunityText: '{count} temas requieren tu atención',\n editorialOpportunityTop: 'Top',\n editorialOpportunityMatch: 'Coincidencia',\n editorialOpportunityTrending: 'Trending',\n editorialOpportunitySeeMoreOpportunities: 'Ver {count} oportunidades más',\n editorialOpportunityHide: 'Ocultar',\n editorialOpportunityRemindLater: 'Recordar luego',\n editorialOpportunitySeeMore: 'Ver más',\n },\n search: {\n placeholder: 'Buscar…',\n inputAriaLabel: 'Buscar',\n clearAriaLabel: 'Borrar búsqueda',\n advancedAriaLabel: 'Búsqueda avanzada',\n title: 'Búsqueda avanzada',\n apply: 'Aplicar',\n reset: 'Restablecer',\n close: 'Cerrar',\n noOptions: 'Sin coincidencias',\n dateToday: 'Hoy',\n dateClear: 'Limpiar',\n dateOpenAriaLabel: 'Abrir calendario',\n prevMonthAriaLabel: 'Mes anterior',\n nextMonthAriaLabel: 'Mes siguiente',\n },\n searchFields: {\n text: 'Texto',\n textPlaceholder: 'Título, copete o cuerpo',\n type: 'Tipo',\n typePlaceholder: 'Todos los tipos',\n section: 'Sección',\n sectionPlaceholder: 'Todas las secciones',\n category: 'Categoría',\n categoryPlaceholder: 'Todas las categorías',\n states: 'Estados',\n statesPlaceholder: 'Todos los estados',\n creator: 'Creador',\n creatorPlaceholder: 'Escribí para buscar creador',\n author: 'Autor',\n authorPlaceholder: 'Escribí para buscar autor',\n tags: 'Etiquetas',\n tagsPlaceholder: 'Escribí y presioná Enter',\n groups: 'Grupos',\n groupsPlaceholder: 'Todos los grupos',\n amount: 'Cantidad a mostrar',\n amountPlaceholder: 'Ej: 50',\n dateFrom: 'Fecha desde',\n dateTo: 'Fecha hasta',\n sortBy: 'Ordenar por',\n sortByPlaceholder: 'Relevancia',\n zone: 'Zona',\n zonePlaceholder: 'Cualquier zona',\n priority: 'Prioridad',\n priorityPlaceholder: 'Todas',\n order: 'Orden',\n orderPlaceholder: 'Descendente',\n includeDrafts: 'Incluir borradores',\n includeHistory: 'Incluir contenido histórico',\n },\n searchOptions: {\n typeNews: 'Noticia',\n typeList: 'Nota Lista',\n typeLiveblog: 'LiveBlog',\n statePublished: 'Publicada',\n stateDraft: 'En Redacción',\n stateScheduled: 'Programada',\n stateReview: 'En Revisión',\n stateDone: 'Terminada',\n sortRelevance: 'Relevancia',\n sortDate: 'Fecha',\n sortTitle: 'Título',\n orderDesc: 'Descendente',\n orderAsc: 'Ascendente',\n priorityHigh: 'Alta (1–10)',\n priorityMid: 'Media (11–30)',\n priorityLow: 'Baja (31+)',\n },\n toast: {\n close: 'Cerrar',\n copyDetail: 'Copiar detalle del error',\n copied: 'Copiado',\n defaultSuccess: 'Operación realizada correctamente.',\n defaultError: 'Se produjo un error en el servicio.',\n defaultWarning: 'Revisá el requerimiento.',\n defaultInfo: 'Información',\n },\n userAvatar: {\n alt: 'Avatar de usuario',\n unknownUser: 'Usuario sin nombre',\n },\n errorPage: {\n homeButton: 'Inicio',\n notFoundTitle: 'Lo sentimos.\\nHa ocurrido un error.',\n notFoundSubtitle:\n 'Lo que quieres ver ya no está disponible. ¡Sigue navegando!',\n notFoundCode: '404',\n errorLabel: 'Error',\n copyDetail: 'Copiar detalle.',\n copyDetailText:\n 'La ruta {url} donde estás intentando acceder ya no está disponible.',\n copied: '¡Texto copiado en el portapapeles!',\n notAllowedTitle: 'Lo sentimos.\\nNo tienes acceso.',\n notAllowedSubtitle:\n 'Lo que quieres ver está restringido por permisos. ¡Sigue navegando!',\n },\n} satisfies CmsMessages;\n","import type { CmsMessages } from '../types';\n\nexport const ptMessages = {\n navigation: {\n COMMENTS: 'Comentários',\n POLLS: 'Enquetes',\n MEDIA: 'Mídia',\n AUDIOS: 'Áudio',\n IMAGES: 'Imagens',\n PLAYLISTS: 'Playlist',\n VIDEOS: 'Vídeos',\n NEWS: 'Notícias',\n PLANNING: 'Planejamento',\n ANALYTICS: 'Análises',\n TAGS: 'Tags',\n TRIVIAS: 'Trivias',\n OTHERS: 'Outros',\n NEWSWIRES: 'News Wires',\n EVENTS: 'Eventos',\n PAGES: 'Páginas',\n FEEDS: 'Feed',\n PERSONS: 'Pessoas',\n CONTRIBUTIONS: 'Contribuições',\n RECIPES: 'Receitas',\n POSTS: 'Posts',\n BANNERS: 'Banners',\n BLOCKS: 'Blocos',\n MENUS: 'Menu',\n TOPICS: 'Tópicos',\n ADVANCEDQUERYS: 'Busca avançada',\n IMPORTS: 'Importações',\n NEWSLETTERS: 'Newsletters',\n NOTIFICATIONS: 'Notificações',\n PAYMENTS: 'Pagamentos',\n PLANS: 'Planos',\n REPORTS: 'Relatórios',\n SECTIONS: 'Seções',\n TWITTERS: 'Twitter Feeds',\n USERS: 'Usuários',\n ZONES: 'Zonas',\n IA: 'IA',\n },\n sidebar: {\n navAriaLabel: 'Principal',\n collapse: 'Recolher',\n expand: 'Expandir',\n newBadge: 'Novo',\n pin: 'Fixar no topo',\n unpin: 'Desafixar',\n },\n topBar: {\n openSidebar: 'Abrir menu lateral',\n closeSidebar: 'Fechar menu lateral',\n new: 'Novo',\n language: 'Idioma',\n analytics: 'Análises',\n preview: 'Pré-visualizar',\n help: 'Ajuda',\n publication: 'Publicação',\n appearance: 'Aparência',\n newTheme: 'Tema novo',\n newThemeSubtitle: 'Interface redesenhada',\n modeLabel: 'Modo',\n modeLight: 'Claro',\n modeDark: 'Escuro',\n classicUnavailable: 'A visualização clássica não está disponível neste protótipo.',\n },\n newMenu: {\n frequentsTitle: 'Frequentes',\n othersTitle: 'Outros',\n videosTitle: 'Vídeos',\n post: 'Nova Matéria',\n trivia: 'Novo Quiz',\n poll: 'Nova Enquete',\n listicle: 'Nova Lista',\n tag: 'Nova Tag',\n gamecast: 'Novo Gamecast',\n liveblog: 'Novo LiveBlog',\n aiPost: 'Nova Matéria IA',\n aiListicle: 'Nova Lista IA',\n videoNative: 'Novo Vídeo Nativo',\n videoEmbedded: 'Novo Vídeo Incorporado',\n videoYoutube: 'Novo Vídeo Youtube',\n },\n previewMenu: {\n desktop: 'Pré-visualizar Desktop',\n mobile: 'Pré-visualizar Celular',\n tablet: 'Pré-visualizar Tablet',\n },\n profileMenu: {\n ariaLabel: 'Meu perfil',\n myProfile: 'Meu perfil',\n webmasterView: 'Visão Webmaster',\n signOff: 'Sair',\n },\n notificationsMenu: {\n title: 'Notificações',\n unreadCount: '{count} não lidas',\n empty: 'Nenhuma notificação',\n ariaLabel: 'Notificações',\n close: 'Fechar',\n today: 'Hoje',\n yesterday: 'Ontem',\n assignedBefore: 'Você tem',\n assignedAfter: 'novos temas atribuídos.',\n pendingBefore: 'Você tem',\n pendingAfter: 'temas atribuídos a vencer.',\n assignedToday: 'Atribuído hoje',\n assignedYesterday: 'Atribuído ontem',\n assignedOn: 'Atribuído em',\n expires: 'Vence',\n editorialOpportunityLabel: 'Oportunidade editorial',\n editorialOpportunityText: '{count} temas exigem sua atenção',\n editorialOpportunityTop: 'Top',\n editorialOpportunityMatch: 'Correspondência',\n editorialOpportunityTrending: 'Em alta',\n editorialOpportunitySeeMoreOpportunities: 'Ver mais {count} oportunidades',\n editorialOpportunityHide: 'Ocultar',\n editorialOpportunityRemindLater: 'Lembrar depois',\n editorialOpportunitySeeMore: 'Ver mais',\n },\n search: {\n placeholder: 'Buscar…',\n inputAriaLabel: 'Buscar',\n clearAriaLabel: 'Limpar busca',\n advancedAriaLabel: 'Busca avançada',\n title: 'Busca avançada',\n apply: 'Aplicar',\n reset: 'Redefinir',\n close: 'Fechar',\n noOptions: 'Sem correspondências',\n dateToday: 'Hoje',\n dateClear: 'Limpar',\n dateOpenAriaLabel: 'Abrir calendário',\n prevMonthAriaLabel: 'Mês anterior',\n nextMonthAriaLabel: 'Mês seguinte',\n },\n searchFields: {\n text: 'Texto',\n textPlaceholder: 'Título, resumo ou corpo',\n type: 'Tipo',\n typePlaceholder: 'Todos os tipos',\n section: 'Seção',\n sectionPlaceholder: 'Todas as seções',\n category: 'Categoria',\n categoryPlaceholder: 'Todas as categorias',\n states: 'Estados',\n statesPlaceholder: 'Todos os estados',\n creator: 'Criador',\n creatorPlaceholder: 'Digite para buscar um criador',\n author: 'Autor',\n authorPlaceholder: 'Digite para buscar um autor',\n tags: 'Etiquetas',\n tagsPlaceholder: 'Digite e pressione Enter',\n groups: 'Grupos',\n groupsPlaceholder: 'Todos os grupos',\n amount: 'Quantidade a mostrar',\n amountPlaceholder: 'Ex: 50',\n dateFrom: 'Data de',\n dateTo: 'Data até',\n sortBy: 'Ordenar por',\n sortByPlaceholder: 'Relevância',\n zone: 'Zona',\n zonePlaceholder: 'Qualquer zona',\n priority: 'Prioridade',\n priorityPlaceholder: 'Todas',\n order: 'Ordem',\n orderPlaceholder: 'Decrescente',\n includeDrafts: 'Incluir rascunhos',\n includeHistory: 'Incluir conteúdo histórico',\n },\n searchOptions: {\n typeNews: 'Notícia',\n typeList: 'Nota Lista',\n typeLiveblog: 'LiveBlog',\n statePublished: 'Publicada',\n stateDraft: 'Em redação',\n stateScheduled: 'Programada',\n stateReview: 'Em revisão',\n stateDone: 'Concluída',\n sortRelevance: 'Relevância',\n sortDate: 'Data',\n sortTitle: 'Título',\n orderDesc: 'Decrescente',\n orderAsc: 'Crescente',\n priorityHigh: 'Alta (1–10)',\n priorityMid: 'Média (11–30)',\n priorityLow: 'Baixa (31+)',\n },\n toast: {\n close: 'Fechar',\n copyDetail: 'Copiar detalhe do erro',\n copied: 'Copiado',\n defaultSuccess: 'Operação realizada com sucesso.',\n defaultError: 'Ocorreu um erro no serviço.',\n defaultWarning: 'Revise a solicitação.',\n defaultInfo: 'Informação',\n },\n userAvatar: {\n alt: 'Avatar do usuário',\n unknownUser: 'Usuário sem nome',\n },\n errorPage: {\n homeButton: 'Início',\n notFoundTitle: 'Desculpe, ocorreu um erro.',\n notFoundSubtitle: 'Este site não está mais disponível. Continue navegando!',\n notFoundCode: '404',\n errorLabel: 'Erro',\n copyDetail: 'Copiar detalhe.',\n copyDetailText:\n 'A rota {url} que você está tentando acessar não está mais disponível.',\n copied: 'Texto copiado para a área de transferência!',\n notAllowedTitle: 'Sentimos muito.\\nVocê não tem acesso.',\n notAllowedSubtitle:\n 'O que você deseja ver é restrito por permissões. Continue navegando!',\n },\n} satisfies CmsMessages;\n","import type {\n AppLocaleCatalog,\n AppMessageNode,\n AppMessages,\n CmsMessages,\n CmsMessagesOverride,\n Locale,\n LocaleCatalog,\n} from '../types';\nimport { enMessages } from './en';\nimport { esMessages } from './es';\nimport { ptMessages } from './pt';\n\nexport { enMessages, esMessages, ptMessages };\n\nexport const defaultLocaleCatalog: LocaleCatalog = {\n en: enMessages,\n es: esMessages,\n pt: ptMessages,\n};\n\nfunction mergeNamespace<T extends Record<string, string>>(\n base: T,\n override?: Partial<T>,\n): T {\n if (!override) return base;\n return { ...base, ...override };\n}\n\n/** Deep-merge custom overrides on top of the locale catalog entry. */\nexport function mergeMessages(\n locale: Locale,\n catalog: LocaleCatalog,\n overrides?: CmsMessagesOverride,\n): CmsMessages {\n const base = catalog[locale];\n const fallback = catalog.en;\n\n return {\n navigation: mergeNamespace(\n { ...fallback.navigation, ...base.navigation },\n overrides?.navigation,\n ),\n sidebar: mergeNamespace(\n { ...fallback.sidebar, ...base.sidebar },\n overrides?.sidebar,\n ),\n topBar: mergeNamespace({ ...fallback.topBar, ...base.topBar }, overrides?.topBar),\n newMenu: mergeNamespace(\n { ...fallback.newMenu, ...base.newMenu },\n overrides?.newMenu,\n ),\n previewMenu: mergeNamespace(\n { ...fallback.previewMenu, ...base.previewMenu },\n overrides?.previewMenu,\n ),\n profileMenu: mergeNamespace(\n { ...fallback.profileMenu, ...base.profileMenu },\n overrides?.profileMenu,\n ),\n notificationsMenu: mergeNamespace(\n { ...fallback.notificationsMenu, ...base.notificationsMenu },\n overrides?.notificationsMenu,\n ),\n search: mergeNamespace(\n { ...fallback.search, ...base.search },\n overrides?.search,\n ),\n searchFields: mergeNamespace(\n { ...fallback.searchFields, ...base.searchFields },\n overrides?.searchFields,\n ),\n searchOptions: mergeNamespace(\n { ...fallback.searchOptions, ...base.searchOptions },\n overrides?.searchOptions,\n ),\n toast: mergeNamespace({ ...fallback.toast, ...base.toast }, overrides?.toast),\n userAvatar: mergeNamespace(\n { ...fallback.userAvatar, ...base.userAvatar },\n overrides?.userAvatar,\n ),\n errorPage: mergeNamespace(\n { ...fallback.errorPage, ...base.errorPage },\n overrides?.errorPage,\n ),\n };\n}\n\n/** Deep-merge recursivo de dos árboles de mensajes del gestor (override gana). */\nfunction deepMergeAppNode(base: AppMessageNode, override: AppMessageNode): AppMessageNode {\n // Si alguno es hoja (string), el override reemplaza directamente.\n if (typeof base === 'string' || typeof override === 'string') {\n return override;\n }\n const result: Record<string, AppMessageNode> = { ...base };\n for (const key of Object.keys(override)) {\n const overrideChild = override[key];\n result[key] =\n key in base ? deepMergeAppNode(base[key], overrideChild) : overrideChild;\n }\n return result;\n}\n\n/**\n * Resuelve el árbol de mensajes del gestor para el locale activo, usando `en`\n * como fallback (igual criterio que `mergeMessages`). Devuelve `{}` si no se\n * pasó catálogo del gestor.\n */\nexport function mergeAppMessages(\n locale: Locale,\n appCatalog?: AppLocaleCatalog,\n): AppMessages {\n if (!appCatalog) return {};\n const fallback = appCatalog.en ?? {};\n const base = appCatalog[locale] ?? {};\n return deepMergeAppNode(fallback, base) as AppMessages;\n}\n","import type { enMessages } from './messages/en';\n\nexport const SUPPORTED_LOCALES = ['es', 'en', 'pt'] as const;\n\nexport type Locale = (typeof SUPPORTED_LOCALES)[number];\n\nexport const DEFAULT_LOCALE: Locale = 'en';\n\ntype DeepStringMap<T> = {\n [K in keyof T]: T[K] extends Record<string, unknown>\n ? { [K2 in keyof T[K]]: string }\n : string;\n};\n\n/** Message tree shape; values are strings, keys are inferred from `enMessages`. */\nexport type CmsMessages = DeepStringMap<typeof enMessages>;\n\nexport type NavigationModule = keyof CmsMessages['navigation'];\n\nexport type SidebarMessageKey = keyof CmsMessages['sidebar'];\n\nexport type TopBarMessageKey = keyof CmsMessages['topBar'];\n\nexport type NewMenuMessageKey = keyof CmsMessages['newMenu'];\n\nexport type PreviewMenuMessageKey = keyof CmsMessages['previewMenu'];\n\nexport type ProfileMenuMessageKey = keyof CmsMessages['profileMenu'];\n\nexport type NotificationsMenuMessageKey = keyof CmsMessages['notificationsMenu'];\n\nexport type ToastMessageKey = keyof CmsMessages['toast'];\n\nexport type UserAvatarMessageKey = keyof CmsMessages['userAvatar'];\n\nexport type ErrorPageMessageKey = keyof CmsMessages['errorPage'];\n\n/** Partial override tree; missing keys fall back to the active locale, then `en`. */\nexport type CmsMessagesOverride = {\n [Namespace in keyof CmsMessages]?: Partial<CmsMessages[Namespace]>;\n};\n\nexport type LocaleCatalog = Record<Locale, CmsMessages>;\n\n/**\n * Nodo de un árbol de mensajes propio de un gestor: una hoja string o un\n * sub-árbol anidable. Permite namespaces arbitrarios (`usuarios.*`, etc.)\n * que la lib desconoce.\n */\nexport type AppMessageNode = string | { [key: string]: AppMessageNode };\n\n/** Árbol de mensajes del gestor (namespaces → claves → string anidable). */\nexport type AppMessages = Record<string, AppMessageNode>;\n\n/**\n * Catálogo de mensajes del gestor por idioma. Cada gestor declara su propio\n * `en` como fuente de la forma y valida `es`/`pt` con `satisfies typeof enTree`\n * para garantizar que las tres lenguas comparten las mismas claves.\n */\nexport type AppLocaleCatalog = Record<Locale, AppMessages>;\n","import { DEFAULT_LOCALE, SUPPORTED_LOCALES, type Locale } from './types';\n\n/** Normaliza códigos BCP 47 o variantes (`es-MX`, `pt_BR`) al `Locale` soportado. */\nexport function normalizeLocale(value?: string | null): Locale {\n if (!value) return DEFAULT_LOCALE;\n\n const normalized = value.trim().toLowerCase().replace('_', '-');\n const primary = normalized.split('-')[0];\n\n if ((SUPPORTED_LOCALES as readonly string[]).includes(normalized)) {\n return normalized as Locale;\n }\n\n if ((SUPPORTED_LOCALES as readonly string[]).includes(primary)) {\n return primary as Locale;\n }\n\n return DEFAULT_LOCALE;\n}\n","'use client';\n\nimport { createContext, useMemo, type ReactNode } from 'react';\n\nimport { createTranslator, type CmsTranslator } from './createTranslator';\nimport { defaultLocaleCatalog, mergeAppMessages, mergeMessages } from './messages';\nimport { normalizeLocale } from './normalizeLocale';\nimport type {\n AppLocaleCatalog,\n CmsMessagesOverride,\n Locale,\n LocaleCatalog,\n} from './types';\n\nexport type CmsI18nContextValue = {\n locale: Locale;\n t: CmsTranslator;\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CmsI18nContext = createContext<CmsI18nContextValue | null>(null);\n\nexport type CmsI18nProviderProps = {\n locale?: Locale | string;\n /** Alias de `locale` (p. ej. consumidores que pasan `language=\"es\"`). */\n language?: Locale | string;\n messages?: CmsMessagesOverride;\n catalog?: LocaleCatalog;\n /** Catálogo de mensajes propio del gestor (namespaces libres, es/en/pt). */\n appMessages?: AppLocaleCatalog;\n children: ReactNode;\n};\n\nexport function CmsI18nProvider({\n locale,\n language,\n messages,\n catalog = defaultLocaleCatalog,\n appMessages,\n children,\n}: CmsI18nProviderProps) {\n const resolvedLocale = normalizeLocale(locale ?? language);\n\n const value = useMemo<CmsI18nContextValue>(() => {\n const resolvedMessages = mergeMessages(resolvedLocale, catalog, messages);\n const resolvedAppMessages = mergeAppMessages(resolvedLocale, appMessages);\n return {\n locale: resolvedLocale,\n t: createTranslator(resolvedMessages, resolvedAppMessages),\n };\n }, [appMessages, catalog, messages, resolvedLocale]);\n\n return <CmsI18nContext.Provider value={value}>{children}</CmsI18nContext.Provider>;\n}\n","'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { CmsI18nContext } from './CmsI18nProvider';\nimport { createTranslator } from './createTranslator';\nimport { defaultLocaleCatalog, mergeAppMessages, mergeMessages } from './messages';\nimport type {\n AppLocaleCatalog,\n CmsMessagesOverride,\n Locale,\n LocaleCatalog,\n} from './types';\nimport { DEFAULT_LOCALE } from './types';\n\nexport type UseCmsTranslationOptions = {\n locale?: Locale;\n messages?: CmsMessagesOverride;\n catalog?: LocaleCatalog;\n /** Catálogo propio del gestor cuando se usa el hook fuera del provider. */\n appMessages?: AppLocaleCatalog;\n};\n\nexport function useCmsTranslation(options?: UseCmsTranslationOptions) {\n const context = useContext(CmsI18nContext);\n\n const locale = options?.locale ?? context?.locale ?? DEFAULT_LOCALE;\n const catalog = options?.catalog ?? defaultLocaleCatalog;\n const overrides = options?.messages;\n const appCatalog = options?.appMessages;\n\n const t = useMemo(() => {\n if (!overrides && !appCatalog && context && context.locale === locale) {\n return context.t;\n }\n return createTranslator(\n mergeMessages(locale, catalog, overrides),\n mergeAppMessages(locale, appCatalog),\n );\n }, [appCatalog, catalog, context, locale, overrides]);\n\n return { locale, t };\n}\n\n/** BCP 47 tag for `Intl` / `toLocaleString` formatting. */\nexport function getIntlLocaleTag(locale: Locale): string {\n switch (locale) {\n case 'pt':\n return 'pt-BR';\n case 'en':\n return 'en-US';\n case 'es':\n default:\n return 'es-MX';\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport {\n feedbackBadgeColors,\n feedbackColors,\n fontFamilies,\n radii,\n} from '../../theme/variables';\nimport type { ToastSeverity } from './types';\n\nexport const CmsToastStyles = {\n /** Contenedor fijo que apila los toasts (abajo y centrado). */\n sxStack: {\n position: 'fixed',\n bottom: 16,\n left: 0,\n right: 0,\n px: 2,\n zIndex: (theme: Theme) => theme.zIndex.snackbar,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 1.25,\n pointerEvents: 'none',\n } as SxProps<Theme>,\n\n /** Toast compacto (success / warning / info). */\n sxToast: {\n pointerEvents: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n minWidth: 300,\n maxWidth: 420,\n px: 2,\n py: 1.5,\n borderRadius: radii.lg,\n bgcolor: feedbackColors.surface,\n color: feedbackColors.onSurface,\n boxShadow: '0 8px 24px rgba(0, 0, 0, 0.35)',\n } as SxProps<Theme>,\n\n /** Toast de error: más grande, en columna, con detalle copiable. */\n sxToastError: {\n pointerEvents: 'auto',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n gap: 1,\n minWidth: 360,\n maxWidth: 560,\n width: '100%',\n p: 2.5,\n borderRadius: radii.lg,\n bgcolor: feedbackColors.surface,\n color: feedbackColors.onSurface,\n boxShadow: '0 8px 24px rgba(0, 0, 0, 0.35)',\n } as SxProps<Theme>,\n\n /** Fila superior del toast de error (ícono + título + cerrar). */\n sxErrorHeader: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1.25,\n } as SxProps<Theme>,\n\n sxTextWrap: {\n flex: 1,\n minWidth: 0,\n } as SxProps<Theme>,\n\n sxTitle: {\n fontWeight: 600,\n fontSize: 14,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n sxMessage: {\n fontSize: 14,\n lineHeight: 1.4,\n whiteSpace: 'pre-line',\n } as SxProps<Theme>,\n\n /** Título del toast de error. */\n sxErrorTitle: {\n fontFamily: fontFamilies.roboto,\n fontWeight: 700,\n fontSize: 16,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n /** Descripción del toast de error (sin fondo). */\n sxErrorMessage: {\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n color: feedbackColors.onSurfaceSoft,\n lineHeight: 1.4,\n whiteSpace: 'pre-line',\n mt: '10px',\n } as SxProps<Theme>,\n\n /** Detalle crudo del servidor (solo si el servicio devolvió texto de error). */\n sxDetail: {\n mt: '10px',\n p: 1,\n borderRadius: radii.sm,\n bgcolor: feedbackColors.overlay,\n color: feedbackColors.onSurfaceMuted,\n fontSize: 12.5,\n lineHeight: 1.4,\n wordBreak: 'break-word',\n } as SxProps<Theme>,\n\n /** Enlace (url del recurso) sobre la superficie oscura (monoespaciada). */\n sxLink: {\n display: 'block',\n mt: '10px',\n color: feedbackColors.link,\n fontFamily: fontFamilies.mono,\n fontSize: 11.5,\n lineHeight: 1.4,\n textDecoration: 'none',\n wordBreak: 'break-all',\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n\n /** Fila inferior: chip de versión + punto + fecha. */\n sxFooter: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n mt: '10px',\n color: feedbackColors.onSurfaceSoft,\n fontFamily: fontFamilies.roboto,\n fontSize: 11,\n lineHeight: 1.4,\n } as SxProps<Theme>,\n\n /** Chip con la versión (ícono de etiqueta + vX.Y.Z). */\n sxVersionChip: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n px: 0.75,\n py: 0.25,\n borderRadius: radii.pill,\n bgcolor: feedbackColors.versionChipBg,\n color: feedbackColors.onSurfaceSoft,\n fontFamily: fontFamilies.roboto,\n fontSize: 11,\n fontWeight: 600,\n '& svg': { fontSize: 13 },\n } as SxProps<Theme>,\n\n /** Punto separador entre versión y fecha. */\n sxDot: {\n flexShrink: 0,\n width: '3px',\n height: '3px',\n borderRadius: '50%',\n bgcolor: feedbackColors.separator,\n } as SxProps<Theme>,\n\n sxClose: {\n color: feedbackColors.onSurfaceMuted,\n p: 0.5,\n '&:hover': { color: feedbackColors.onSurface },\n } as SxProps<Theme>,\n\n sxCopyButton: {\n color: feedbackColors.onSurfaceMuted,\n p: 0.5,\n flexShrink: 0,\n '&:hover': { color: feedbackColors.onSurface },\n } as SxProps<Theme>,\n};\n\n/** Estilo del círculo de ícono (contenedor tonal + ícono por severidad). */\nexport function sxIconBadge(severity: ToastSeverity): SxProps<Theme> {\n const badge = feedbackBadgeColors[severity];\n return {\n flexShrink: 0,\n width: 28,\n height: 28,\n borderRadius: '50%',\n display: 'grid',\n placeItems: 'center',\n bgcolor: badge.bg,\n color: badge.on,\n '& svg': { fontSize: 18 },\n };\n}\n","'use client';\n\nimport { useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport CloseIcon from '@mui/icons-material/Close';\nimport ContentCopyOutlinedIcon from '@mui/icons-material/ContentCopyOutlined';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutlineOutlined';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport LocalOfferOutlinedIcon from '@mui/icons-material/LocalOfferOutlined';\nimport ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined';\n\nimport type { CmsTranslator } from '../../i18n/createTranslator';\nimport { CmsToastStyles, sxIconBadge } from './CmsToast.styles';\nimport type { ToastItem, ToastSeverity } from './types';\n\nconst ICONS: Record<ToastSeverity, typeof DoneIcon> = {\n success: DoneIcon,\n warning: ReportProblemOutlinedIcon,\n error: ErrorOutlineIcon,\n info: InfoOutlinedIcon,\n};\n\nexport interface CmsToastProps {\n item: ToastItem;\n t: CmsTranslator;\n /** Tag BCP 47 para formatear la fecha del detalle del error. */\n localeTag: string;\n /** Versión a mostrar en el detalle del error (app o lib). */\n appVersion: string;\n onClose: (id: string) => void;\n}\n\n/**\n * Construye el texto copiable del toast de error, con el mismo formato que el\n * Angular legacy (`Message / Error / Url / Service / Params / Version`).\n */\nfunction buildCopyText(\n message: string,\n item: ToastItem,\n url: string,\n version: string,\n dateTime: string,\n): string {\n const detail = item.detail;\n return [\n `Message: ${message}`,\n detail?.error ? `Error: ${detail.error}` : null,\n `Url: ${url}`,\n detail?.service ? `Service: ${detail.service}` : null,\n detail?.params !== undefined\n ? `Params: ${JSON.stringify(detail.params)}`\n : null,\n `Version: v${version} ${dateTime}`,\n ]\n .filter(Boolean)\n .join('\\n');\n}\n\nexport function CmsToast({\n item,\n t,\n localeTag,\n appVersion,\n onClose,\n}: CmsToastProps) {\n const Icon = ICONS[item.severity];\n const [copied, setCopied] = useState(false);\n\n // Url y fecha se capturan una vez al montar el toast (no en cada render).\n const [meta] = useState(() => ({\n url: typeof window !== 'undefined' ? window.location.href : '',\n dateTime: new Date().toLocaleString(localeTag),\n }));\n\n const handleCopy = () => {\n const text = buildCopyText(\n item.message,\n item,\n meta.url,\n appVersion,\n meta.dateTime,\n );\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n navigator.clipboard.writeText(text).then(\n () => {\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1500);\n },\n () => undefined,\n );\n }\n };\n\n const badge = (\n <Box sx={sxIconBadge(item.severity)} aria-hidden>\n <Icon />\n </Box>\n );\n\n const closeButton = (\n <IconButton\n data-testid=\"btn-toast-close\"\n size=\"small\"\n aria-label={t.toast('close')}\n onClick={() => onClose(item.id)}\n sx={CmsToastStyles.sxClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n );\n\n const copyButton = (\n <Tooltip title={copied ? t.toast('copied') : t.toast('copyDetail')}>\n <IconButton\n data-testid=\"btn-toast-copy\"\n size=\"small\"\n aria-label={t.toast('copyDetail')}\n onClick={handleCopy}\n sx={CmsToastStyles.sxCopyButton}>\n {copied ? (\n <DoneIcon fontSize=\"small\" />\n ) : (\n <ContentCopyOutlinedIcon fontSize=\"small\" />\n )}\n </IconButton>\n </Tooltip>\n );\n\n // Toast de error: más grande, con url del recurso, versión y botón copiar.\n if (item.severity === 'error') {\n return (\n <Box\n data-testid={`toast-${item.severity}`}\n data-severity={item.severity}\n sx={CmsToastStyles.sxToastError}\n role=\"alert\">\n <Box sx={CmsToastStyles.sxErrorHeader}>\n {badge}\n <Box sx={CmsToastStyles.sxTextWrap}>\n {item.title ? (\n <Box sx={CmsToastStyles.sxErrorTitle}>{item.title}</Box>\n ) : null}\n <Box sx={CmsToastStyles.sxErrorMessage}>{item.message}</Box>\n\n {item.detail?.error ? (\n <Box sx={CmsToastStyles.sxDetail}>{item.detail.error}</Box>\n ) : null}\n\n {meta.url ? (\n <Box component=\"a\" href={meta.url} sx={CmsToastStyles.sxLink}>\n {meta.url}\n </Box>\n ) : null}\n\n <Box sx={CmsToastStyles.sxFooter}>\n <Box component=\"span\" sx={CmsToastStyles.sxVersionChip}>\n <LocalOfferOutlinedIcon />v{appVersion}\n </Box>\n <Box sx={CmsToastStyles.sxDot} />\n <Box component=\"span\">{meta.dateTime}</Box>\n </Box>\n </Box>\n {copyButton}\n {closeButton}\n </Box>\n </Box>\n );\n }\n\n // Toast compacto (success / warning / info): click en cualquier parte cierra.\n return (\n <Box\n data-testid={`toast-${item.severity}`}\n data-severity={item.severity}\n sx={{ ...CmsToastStyles.sxToast, cursor: 'pointer' }}\n role=\"status\"\n onClick={() => onClose(item.id)}>\n {badge}\n <Box sx={CmsToastStyles.sxTextWrap}>\n {item.title ? <Box sx={CmsToastStyles.sxTitle}>{item.title}</Box> : null}\n <Box sx={CmsToastStyles.sxMessage}>{item.message}</Box>\n </Box>\n {closeButton}\n </Box>\n );\n}\n","'use client';\n\nimport {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport Box from '@mui/material/Box';\n\nimport type { CmsTranslator } from '../../i18n/createTranslator';\nimport { normalizeLocale } from '../../i18n/normalizeLocale';\nimport type { Locale } from '../../i18n/types';\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { LIB_VERSION } from '../../version';\nimport { CmsToast } from './CmsToast';\nimport { CmsToastStyles } from './CmsToast.styles';\nimport type { ToastItem } from './types';\n\nexport interface CmsToastContextValue {\n /** Encola un toast ya normalizado. Devuelve su id. */\n enqueue: (item: Omit<ToastItem, 'id'>) => string;\n /** Cierra un toast por id; sin id, cierra todos. */\n dismiss: (id?: string) => void;\n /** Translator resuelto al locale del provider (para resolver mensajes). */\n t: CmsTranslator;\n /** Locale activo del provider. */\n locale: Locale;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CmsToastContext = createContext<CmsToastContextValue | null>(null);\n\nexport interface CmsToastProviderProps {\n children: ReactNode;\n /** Locale del usuario (sale de `profile.locale` en el gestor). */\n locale?: Locale | string;\n /** Alias de `locale`. */\n language?: Locale | string;\n /** Versión a mostrar en el detalle del toast de error. Default: `LIB_VERSION`. */\n appVersion?: string;\n /** Máximo de toasts simultáneos (se descarta el más viejo). Default: 4. */\n max?: number;\n}\n\n/**\n * Provee el sistema de toasts a toda la app. Renderiza una pila fija (abajo a\n * la izquierda) y expone `useCmsToast()` para disparar feedback de operaciones.\n *\n * El mecanismo vive en la lib; el **disparo** lo hace el gestor (catch de un\n * server action / handler de mutación).\n */\nexport function CmsToastProvider({\n children,\n locale,\n language,\n appVersion,\n max = 4,\n}: CmsToastProviderProps) {\n const resolvedLocale = normalizeLocale(locale ?? language);\n const { locale: tLocale, t } = useCmsTranslation({ locale: resolvedLocale });\n const version = appVersion ?? LIB_VERSION;\n\n const [items, setItems] = useState<ToastItem[]>([]);\n const idRef = useRef(0);\n const timers = useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map());\n\n const dismiss = useCallback((id?: string) => {\n if (id === undefined) {\n timers.current.forEach((tm) => clearTimeout(tm));\n timers.current.clear();\n setItems([]);\n return;\n }\n const tm = timers.current.get(id);\n if (tm) {\n clearTimeout(tm);\n timers.current.delete(id);\n }\n setItems((prev) => prev.filter((it) => it.id !== id));\n }, []);\n\n const enqueue = useCallback(\n (item: Omit<ToastItem, 'id'>) => {\n idRef.current += 1;\n const id = `toast-${idRef.current}`;\n const next: ToastItem = { ...item, id };\n setItems((prev) => {\n const merged = [...prev, next];\n return merged.length > max ? merged.slice(merged.length - max) : merged;\n });\n if (next.duration !== null && next.duration > 0) {\n const tm = setTimeout(() => dismiss(id), next.duration);\n timers.current.set(id, tm);\n }\n return id;\n },\n [dismiss, max],\n );\n\n // Limpia timers pendientes al desmontar.\n useEffect(() => {\n const map = timers.current;\n return () => {\n map.forEach((tm) => clearTimeout(tm));\n map.clear();\n };\n }, []);\n\n const value = useMemo<CmsToastContextValue>(\n () => ({ enqueue, dismiss, t, locale: tLocale }),\n [enqueue, dismiss, t, tLocale],\n );\n\n const localeTag = useMemo(() => {\n switch (tLocale) {\n case 'pt':\n return 'pt-BR';\n case 'en':\n return 'en-US';\n default:\n return 'es-MX';\n }\n }, [tLocale]);\n\n return (\n <CmsToastContext.Provider value={value}>\n {children}\n <Box sx={CmsToastStyles.sxStack}>\n {items.map((item) => (\n <CmsToast\n key={item.id}\n item={item}\n t={t}\n localeTag={localeTag}\n appVersion={version}\n onClose={dismiss}\n />\n ))}\n </Box>\n </CmsToastContext.Provider>\n );\n}\n","'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { getCommonError, resolveErrorSeverity } from '../../errors';\nimport { CmsToastContext } from './CmsToastProvider';\nimport type {\n CmsResponseLike,\n NotifyCmsResponseOptions,\n ToastErrorOptions,\n ToastOptions,\n ToastSeverity,\n} from './types';\n\n/** Duración por defecto (ms) según severidad. Error no se autocierra. */\nconst DEFAULT_DURATION: Record<ToastSeverity, number | null> = {\n success: 5000,\n info: 5000,\n warning: 5000,\n error: null,\n};\n\nexport interface CmsToastApi {\n /** Toast de éxito (verde). */\n success: (message: string, options?: ToastOptions) => string;\n /** Toast informativo (azul). */\n info: (message: string, options?: ToastOptions) => string;\n /** Toast de advertencia (ámbar) — condición esperada/accionable. */\n warning: (message: string, options?: ToastOptions) => string;\n /** Toast de error (rojo, grande, con detalle copiable). */\n error: (message: string, options?: ToastErrorOptions) => string;\n /** Atajo genérico. */\n show: (\n severity: ToastSeverity,\n message: string,\n options?: ToastErrorOptions,\n ) => string;\n /** Cierra un toast por id; sin id, cierra todos. */\n dismiss: (id?: string) => void;\n /**\n * Interpreta un envelope `CmsResponse` y dispara el toast adecuado:\n * - `status: 'ok'` → success.\n * - fallo → severidad por código (`resolveErrorSeverity`) y mensaje legible\n * (`getCommonError` → `error` crudo → default i18n).\n */\n notifyCmsResponse: (\n response: CmsResponseLike | null | undefined,\n options?: NotifyCmsResponseOptions,\n ) => string;\n}\n\n/**\n * Hook para disparar toasts. Debe usarse dentro de `CmsToastProvider`.\n */\nexport function useCmsToast(): CmsToastApi {\n const ctx = useContext(CmsToastContext);\n if (!ctx) {\n throw new Error('useCmsToast debe usarse dentro de <CmsToastProvider>.');\n }\n const { enqueue, dismiss, t, locale } = ctx;\n\n return useMemo<CmsToastApi>(() => {\n const show: CmsToastApi['show'] = (severity, message, options) =>\n enqueue({\n severity,\n message,\n title: options?.title,\n duration:\n options?.duration === undefined\n ? DEFAULT_DURATION[severity]\n : options.duration,\n detail:\n severity === 'error'\n ? {\n errorCode: options?.errorCode,\n error: options?.error,\n service: options?.service,\n params: options?.params,\n }\n : undefined,\n });\n\n const success: CmsToastApi['success'] = (message, options) =>\n show('success', message, options);\n const info: CmsToastApi['info'] = (message, options) =>\n show('info', message, options);\n const warning: CmsToastApi['warning'] = (message, options) =>\n show('warning', message, options);\n const error: CmsToastApi['error'] = (message, options) =>\n show('error', message, options);\n\n const notifyCmsResponse: CmsToastApi['notifyCmsResponse'] = (\n response,\n options,\n ) => {\n if (response?.status === 'ok') {\n return success(options?.successMessage ?? t.toast('defaultSuccess'), {\n title: options?.successTitle,\n });\n }\n const severity = resolveErrorSeverity(response?.errorCode);\n const mapped = getCommonError(response?.errorCode, locale);\n const message =\n mapped ??\n response?.error ??\n (severity === 'warning'\n ? t.toast('defaultWarning')\n : t.toast('defaultError'));\n if (severity === 'warning') {\n return warning(message);\n }\n return error(message, {\n errorCode: response?.errorCode,\n error: response?.error,\n service: options?.service,\n params: options?.params,\n });\n };\n\n return { success, info, warning, error, show, dismiss, notifyCmsResponse };\n }, [enqueue, dismiss, t, locale]);\n}\n","import type {\n AnchorHTMLAttributes,\n ElementType,\n ForwardedRef,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport { forwardRef } from 'react';\n\nexport type CmsLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n children?: ReactNode;\n};\n\nexport type CmsLinkComponent = ElementType<\n CmsLinkProps & RefAttributes<HTMLAnchorElement>\n>;\n\nexport const DefaultCmsLink = forwardRef(function DefaultCmsLink(\n { href, children, ...rest }: CmsLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n return (\n <a href={href} ref={ref} {...rest}>\n {children}\n </a>\n );\n});\n","import type { CmsTranslator } from '../../i18n';\nimport type { NavItemPermissions, NavLinkItem } from '../../types/navigation';\n\nexport function resolveNavLabel(item: NavLinkItem, t: CmsTranslator): string {\n return item.label ?? t.navigation(item.module);\n}\n\nexport function isPathActive(pathname: string, href: string): boolean {\n if (pathname === href) return true;\n if (href !== '/' && pathname.startsWith(`${href}/`)) return true;\n return false;\n}\n\nexport function isItemActive(pathname: string, item: NavLinkItem): boolean {\n if (isPathActive(pathname, item.href)) return true;\n return item.children?.some((child) => isPathActive(pathname, child.href)) ?? false;\n}\n\n/** Prefija `item.href` con `legacyBaseUrl` cuando el ítem apunta al admin legacy. */\nexport function resolveNavHref(item: NavLinkItem, legacyBaseUrl?: string): string {\n if (!item.legacy || !legacyBaseUrl) return item.href;\n return `${legacyBaseUrl.replace(/\\/$/, '')}${item.href}`;\n}\n\nexport function findModulePermission(\n permissions: Array<NavItemPermissions>,\n module: string,\n): NavItemPermissions | undefined {\n return permissions.find((permission) => permission.module === module);\n}\n\nexport function getVisibleChildren(\n item: NavLinkItem,\n permissions: Array<NavItemPermissions>,\n): NavLinkItem[] {\n return item.children?.filter((child) => findModulePermission(permissions, child.module)) ?? [];\n}\n","'use client';\n//import BarChartOutlinedIcon from '@mui/icons-material/BarChartOutlined';\nimport BookmarkBorderOutlinedIcon from '@mui/icons-material/BookmarkBorderOutlined';\nimport ChatBubbleOutlineOutlinedIcon from '@mui/icons-material/ChatBubbleOutlineOutlined';\nimport CreateOutlinedIcon from '@mui/icons-material/CreateOutlined';\nimport EventOutlinedIcon from '@mui/icons-material/EventOutlined';\nimport ExploreOutlinedIcon from '@mui/icons-material/ExploreOutlined';\nimport ImageOutlinedIcon from '@mui/icons-material/ImageOutlined';\nimport ImportExportOutlinedIcon from '@mui/icons-material/ImportExportOutlined';\n//import LabelOutlinedIcon from '@mui/icons-material/LabelOutlined';\nimport MailOutlineOutlinedIcon from '@mui/icons-material/MailOutlineOutlined';\nimport MoreHorizOutlinedIcon from '@mui/icons-material/MoreHorizOutlined';\nimport NotificationsNoneOutlinedIcon from '@mui/icons-material/NotificationsNoneOutlined';\nimport PeopleOutlinedIcon from '@mui/icons-material/PeopleOutlined';\n//import PermMediaOutlinedIcon from '@mui/icons-material/PermMediaOutlined';\nimport PlayCircleOutlineOutlinedIcon from '@mui/icons-material/PlayCircleOutlineOutlined';\nimport RestaurantOutlinedIcon from '@mui/icons-material/RestaurantOutlined';\nimport SearchOutlinedIcon from '@mui/icons-material/SearchOutlined';\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined';\nimport ManageAccountsOutlinedIcon from '@mui/icons-material/ManageAccountsOutlined';\nimport FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';\nimport TimelineOutlinedIcon from '@mui/icons-material/TimelineOutlined';\n//import MessageOutlinedIcon from '@mui/icons-material/MessageOutlined';\nimport MicNoneOutlinedIcon from '@mui/icons-material/MicNoneOutlined';\nimport PlaylistPlayOutlinedIcon from '@mui/icons-material/PlaylistPlayOutlined';\nimport PendingActionsOutlinedIcon from '@mui/icons-material/PendingActionsOutlined';\nimport ForumOutlinedIcon from '@mui/icons-material/ForumOutlined';\nimport UsbOutlinedIcon from '@mui/icons-material/UsbOutlined';\nimport FormatListBulletedOutlinedIcon from '@mui/icons-material/FormatListBulletedOutlined';\nimport GridViewOutlinedIcon from '@mui/icons-material/GridViewOutlined';\nimport ViewQuiltOutlinedIcon from '@mui/icons-material/ViewQuiltOutlined';\nimport SubscriptionsOutlinedIcon from '@mui/icons-material/SubscriptionsOutlined';\nimport InsertChartOutlinedIcon from '@mui/icons-material/InsertChartOutlined';\nimport QuizOutlinedIcon from '@mui/icons-material/QuizOutlined';\nimport SellOutlinedIcon from '@mui/icons-material/SellOutlined';\nimport MenuOutlinedIcon from '@mui/icons-material/MenuOutlined';\nimport type { NavBlock } from '../../types/navigation';\n\n/**\n * Navegación lateral por defecto.\n * `module` debe coincidir exactamente con `module` en POST /auth/modulesAvailable\n * y con las claves en `messages.navigation`.\n */\nexport const ACCOUNT_NAV_BLOCKS: NavBlock[] = [\n {\n href: '/admin/comments/',\n icon: ForumOutlinedIcon,\n module: 'COMMENTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/poll.jsp',\n icon: InsertChartOutlinedIcon,\n module: 'POLLS',\n legacy: true,\n },\n {\n href: '/media',\n icon: ImageOutlinedIcon,\n module: 'MEDIA',\n children: [\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/audios.jsp',\n icon: MicNoneOutlinedIcon,\n module: 'AUDIOS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/playlist.jsp',\n icon: ImageOutlinedIcon,\n module: 'IMAGES',\n legacy: true,\n },\n {\n href: '/media/playlist',\n icon: PlaylistPlayOutlinedIcon,\n module: 'PLAYLISTS',\n },\n {\n href: '/admin/videos/',\n icon: PlayCircleOutlineOutlinedIcon,\n module: 'VIDEOS',\n legacy: true,\n },\n ],\n },\n {\n href: '/admin/posts/',\n icon: FormatAlignCenterIcon,\n module: 'POSTS',\n legacy: true,\n },\n {\n href: '/admin/reports/',\n icon: TimelineOutlinedIcon,\n module: 'PRODUCTION',\n legacy: true,\n },\n\n {\n href: '/planificacion',\n icon: PendingActionsOutlinedIcon,\n module: 'PLANNING',\n },\n /* {\n href: '/analiticas',\n icon: BarChartOutlinedIcon,\n module: 'ANALYTICS',\n }, */\n { href: '/tags', icon: SellOutlinedIcon, module: 'TAGS' },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/trivias.jsp',\n icon: QuizOutlinedIcon,\n module: 'TRIVIAS',\n legacy: true,\n },\n {\n href: '/otros',\n icon: MoreHorizOutlinedIcon,\n module: 'OTHERS',\n children: [\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/newswires.jsp',\n icon: UsbOutlinedIcon,\n module: 'NEWSWIRES',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/event.jsp',\n icon: EventOutlinedIcon,\n module: 'EVENTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminPages.jsp',\n icon: ExploreOutlinedIcon,\n module: 'PAGES',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/dashboard.jsp',\n icon: FormatListBulletedOutlinedIcon,\n module: 'FEEDS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminPages.jsp',\n icon: PeopleOutlinedIcon,\n module: 'PERSONS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminPosts.jsp',\n icon: CreateOutlinedIcon,\n module: 'POSTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/recipe.jsp',\n icon: RestaurantOutlinedIcon,\n module: 'RECIPES',\n legacy: true,\n },\n ],\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/banners.jsp',\n icon: ViewQuiltOutlinedIcon,\n module: 'BANNERS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/dynamicContent.jsp',\n icon: GridViewOutlinedIcon,\n module: 'BLOCKS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/menuSite.jsp',\n icon: MenuOutlinedIcon,\n module: 'MENUS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/navigationTags.jsp',\n icon: BookmarkBorderOutlinedIcon,\n module: 'TOPICS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/filterQueryList.jsp',\n icon: SearchOutlinedIcon,\n module: 'ADVANCEDQUERYS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminImports.jsp',\n icon: ImportExportOutlinedIcon,\n module: 'IMPORTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/newsletter.jsp',\n icon: MailOutlineOutlinedIcon,\n module: 'NEWSLETTERS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminQueues.jsp',\n icon: NotificationsNoneOutlinedIcon,\n module: 'NOTIFICATIONS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/payments.jsp',\n icon: ShoppingCartOutlinedIcon,\n module: 'PAYMENTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/subscriptions.jsp',\n icon: SubscriptionsOutlinedIcon,\n module: 'PAYMENTS',\n legacy: true,\n },\n /* {\n href: '/reportes',\n icon: BarChartOutlinedIcon,\n module: 'REPORTS',\n },\n {\n href: '/secciones',\n icon: ViewListOutlinedIcon,\n module: 'SECTIONS',\n }, */\n {\n href: '/twitter-feeds',\n icon: ChatBubbleOutlineOutlinedIcon,\n module: 'TWITTERS',\n },\n {\n href: '/users',\n icon: ManageAccountsOutlinedIcon,\n module: 'USERS',\n },\n /* {\n href: '/zonas',\n icon: LayersOutlinedIcon,\n module: 'ZONES',\n },\n { href: '/ia', icon: ExploreOutlinedIcon, module: 'IA' }, */\n];\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows, stateColors } from '../../theme/variables';\n\nexport const SIDEBAR_RAIL_WIDTH = 88;\n\nconst ITEM_WIDTH = 56;\nconst ITEM_HEIGHT = 32;\nconst ICON_SIZE = 20;\n\nconst scrollbarHidden = {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n} as const;\n\nfunction activeColors(accent?: 'ai') {\n if (accent === 'ai')\n return { bg: stateColors.generating.bg, on: stateColors.generating.on };\n return { bg: cmsColors.secondary, on: cmsColors.onSecondaryContainer };\n}\n\nexport const SidebarRailStyles = {\n sxRoot: {\n width: SIDEBAR_RAIL_WIDTH,\n maxWidth: SIDEBAR_RAIL_WIDTH,\n minWidth: SIDEBAR_RAIL_WIDTH,\n flexShrink: 0,\n alignSelf: 'stretch',\n minHeight: 0,\n maxHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n bgcolor: 'm3.surfaceContainer',\n boxSizing: 'border-box',\n } as SxProps<Theme>,\n\n sxNavScroll: {\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n width: '100%',\n boxSizing: 'border-box',\n ...scrollbarHidden,\n } as SxProps<Theme>,\n\n sxNav: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 1,\n px: 0.5,\n py: 2,\n width: '100%',\n boxSizing: 'border-box',\n } as SxProps<Theme>,\n\n sxItemWrap: {\n position: 'relative',\n width: '100%',\n '&:hover .rail-pin-btn, &:focus-within .rail-pin-btn': {\n opacity: 1,\n transform: 'none',\n },\n } as SxProps<Theme>,\n\n sxItemButton: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 0,\n width: '100%',\n py: 0.5,\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n textDecoration: 'none',\n font: 'inherit',\n } as SxProps<Theme>,\n\n sxPinButton: (pinned: boolean): SxProps<Theme> => ({\n position: 'absolute',\n top: -2,\n right: 8,\n width: 22,\n height: 22,\n minWidth: 22,\n p: 0,\n borderRadius: '50%',\n bgcolor: 'm3.surfaceContainerHigh',\n color: pinned ? cmsColors.primary : 'm3.onSurfaceVariant',\n boxShadow: shadows.button,\n opacity: pinned ? 1 : 0,\n transform: pinned ? 'none' : 'scale(0.6)',\n transition:\n 'opacity 0.12s, transform 0.12s, background-color 0.12s, color 0.12s',\n zIndex: 2,\n '&:hover': {\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n },\n '& .MuiSvgIcon-root': {\n fontSize: 15,\n },\n }),\n\n sxPinDivider: {\n width: 32,\n height: '1px',\n bgcolor: cmsColors.border,\n my: 0.5,\n } as SxProps<Theme>,\n\n sxItemIconBox: (selected: boolean, accent?: 'ai'): SxProps<Theme> => {\n const active = activeColors(accent);\n return {\n position: 'relative',\n width: ITEM_WIDTH,\n height: ITEM_HEIGHT,\n borderRadius: '16px',\n display: 'grid',\n placeItems: 'center',\n transition: 'background-color 0.15s ease, color 0.15s ease',\n bgcolor: selected ? active.bg : 'transparent',\n color: selected ? active.on : 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: selected ? active.bg : cmsColors.surfaceHover,\n color: selected ? active.on : cmsColors.textStrong,\n },\n };\n },\n\n sxItemIcon: {\n fontSize: ICON_SIZE,\n } as SxProps<Theme>,\n\n sxItemLabel: (selected: boolean, accent?: 'ai'): SxProps<Theme> => ({\n fontSize: 12,\n fontWeight: 500,\n lineHeight: 1,\n textAlign: 'center',\n mt: '4px',\n color: selected ? activeColors(accent).on : cmsColors.textNav,\n }),\n\n sxChildrenChevron: {\n position: 'absolute',\n left: -8,\n top: '50%',\n transform: 'translateY(-50%)',\n fontSize: 14,\n color: cmsColors.textMuted,\n } as SxProps<Theme>,\n\n sxAccentDot: {\n position: 'absolute',\n top: -1,\n right: 6,\n width: 8,\n height: 8,\n borderRadius: '50%',\n bgcolor: stateColors.generating.on,\n boxShadow: `0 0 0 2px ${cmsColors.surface}`,\n } as SxProps<Theme>,\n\n sxChildrenMenuPaper: {\n mt: 0.5,\n borderRadius: radii.xl,\n bgcolor: cmsColors.surface,\n boxShadow: shadows.flyout,\n px: 1,\n } as SxProps<Theme>,\n\n sxChildrenMenuItem: (selected: boolean): SxProps<Theme> => ({\n minHeight: 44,\n borderRadius: '100px',\n px: 2,\n py: 1,\n gap: 1.25,\n color: cmsColors.textNav,\n bgcolor: selected ? cmsColors.secondary : 'transparent',\n '&:hover': {\n bgcolor: selected ? cmsColors.secondary : cmsColors.surfaceHover,\n },\n }),\n\n sxChildrenMenuListItemIcon: {\n minWidth: 34,\n color: 'm3.onSurfaceVariant',\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport PushPinOutlinedIcon from '@mui/icons-material/PushPinOutlined';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport { useCmsTranslation } from '../../i18n';\nimport type { CmsProfileServices } from '../../services/profile';\nimport type { NavItemPermissions, NavLinkItem } from '../../types/navigation';\nimport { toTestId } from '../../utils/toTestId';\nimport { DefaultCmsLink, type CmsLinkComponent } from '../link';\nimport {\n findModulePermission,\n getVisibleChildren,\n isItemActive,\n isPathActive,\n resolveNavHref,\n resolveNavLabel,\n} from './nav-helpers';\nimport { ACCOUNT_NAV_BLOCKS } from './nav-blocks';\nimport { SidebarRailStyles } from './SidebarRail.styles';\n\n/** Servicio de pines usado por el rail: solo necesita estos tres métodos. */\nexport type SidebarRailPinService = Pick<\n CmsProfileServices,\n 'addPins' | 'deletePins' | 'getPins'\n>;\n\n/**\n * `getPins()` devuelve `pines: unknown[]` sin tipar en el backend. Se acepta\n * tanto el string plano (mismo valor enviado a `addPins`) como un objeto que\n * lo traiga en `pin`/`module`, para no romper si el envelope cambia de forma.\n */\nfunction extractPinnedModule(entry: unknown): string | undefined {\n if (typeof entry === 'string') return entry;\n if (entry && typeof entry === 'object') {\n const { pin, module } = entry as { pin?: unknown; module?: unknown };\n if (typeof pin === 'string') return pin;\n if (typeof module === 'string') return module;\n }\n return undefined;\n}\n\nfunction RailItem({\n item,\n blockIndex,\n pathname,\n permissions,\n LinkComponent,\n legacyBaseUrl,\n pinned,\n onTogglePin,\n}: {\n item: NavLinkItem;\n blockIndex: number;\n pathname: string;\n permissions: Array<NavItemPermissions>;\n LinkComponent: CmsLinkComponent;\n legacyBaseUrl?: string;\n pinned: boolean;\n onTogglePin: () => void;\n}) {\n // Mismo escopo que el Sidebar: `module` no es único (POSTS/PAYMENTS repetidos\n // en nav-blocks.ts) y no hay id de bloque estable, así que se usa el índice del\n // bloque para no duplicar testids cuando ambos ítems se ven a la vez.\n const blockScope = `block-${blockIndex}`;\n const { t } = useCmsTranslation();\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const menuOpen = Boolean(anchor);\n\n const permission = findModulePermission(permissions, item.module);\n const visibleChildren = getVisibleChildren(item, permissions);\n const hasChildren = visibleChildren.length > 0;\n if (!permission && !hasChildren) return null;\n\n const label = resolveNavLabel(item, t);\n const selected = hasChildren ? isItemActive(pathname, item) : isPathActive(pathname, item.href);\n const Icon = item.icon;\n const PinIcon = pinned ? PushPinIcon : PushPinOutlinedIcon;\n\n const content = (\n <>\n <Box sx={SidebarRailStyles.sxItemIconBox(selected, item.accent)}>\n <Icon sx={SidebarRailStyles.sxItemIcon} />\n {hasChildren && <ChevronRightIcon sx={SidebarRailStyles.sxChildrenChevron} />}\n {item.accent === 'ai' && !selected && <Box sx={SidebarRailStyles.sxAccentDot} />}\n </Box>\n <Box component=\"span\" sx={SidebarRailStyles.sxItemLabel(selected, item.accent)}>\n {label}\n </Box>\n </>\n );\n\n const pinButton = (\n <IconButton\n className=\"rail-pin-btn\"\n size=\"small\"\n data-testid={`toggle-pin-${blockScope}-${toTestId(item.module)}`}\n data-action={pinned ? 'unpin' : 'pin'}\n aria-label={pinned ? t.sidebar('unpin') : t.sidebar('pin')}\n title={pinned ? t.sidebar('unpin') : t.sidebar('pin')}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onTogglePin();\n }}\n sx={SidebarRailStyles.sxPinButton(pinned)}>\n <PinIcon />\n </IconButton>\n );\n\n if (hasChildren) {\n return (\n <Box sx={SidebarRailStyles.sxItemWrap}>\n <Box\n component=\"button\"\n type=\"button\"\n data-testid={`dropdown-toggle-nav-${blockScope}-${toTestId(item.module)}`}\n aria-label={label}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen ? 'true' : undefined}\n onClick={(e) => setAnchor(e.currentTarget)}\n sx={SidebarRailStyles.sxItemButton}>\n {content}\n </Box>\n {pinButton}\n <Menu\n anchorEl={anchor}\n open={menuOpen}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n transformOrigin={{ vertical: 'center', horizontal: 'left' }}\n slotProps={{\n paper: { sx: SidebarRailStyles.sxChildrenMenuPaper },\n list: { sx: { py: 1 } },\n }}>\n {visibleChildren.map((child) => {\n const ChildIcon = child.icon;\n return (\n <MenuItem\n key={child.href}\n data-testid={`dropdown-item-nav-${toTestId(child.module)}`}\n component={LinkComponent}\n href={resolveNavHref(child, legacyBaseUrl)}\n onClick={() => setAnchor(null)}\n sx={SidebarRailStyles.sxChildrenMenuItem(isPathActive(pathname, child.href))}>\n <ListItemIcon sx={SidebarRailStyles.sxChildrenMenuListItemIcon}>\n <ChildIcon />\n </ListItemIcon>\n <ListItemText primary={resolveNavLabel(child, t)} />\n </MenuItem>\n );\n })}\n </Menu>\n </Box>\n );\n }\n\n return (\n <Box sx={SidebarRailStyles.sxItemWrap}>\n <Box\n component={LinkComponent}\n href={resolveNavHref(item, legacyBaseUrl)}\n data-testid={`nav-${blockScope}-${toTestId(item.module)}`}\n sx={SidebarRailStyles.sxItemButton}>\n {content}\n </Box>\n {pinButton}\n </Box>\n );\n}\n\nexport type SidebarRailProps = {\n pathname: string;\n LinkComponent?: CmsLinkComponent;\n permissions: Array<NavItemPermissions>;\n /** Dominio del admin legacy (JSP/Angular) para prefijar hrefs con `item.legacy`. */\n legacyBaseUrl?: string;\n /** Ítems de navegación. Por defecto, `ACCOUNT_NAV_BLOCKS`. */\n items?: NavLinkItem[];\n /**\n * Servicio de pines (`CmsProfileServices`, construido por el host con su\n * `axiosApi`/`authentication`). Si se omite, el anclado es solo visual y no\n * persiste entre sesiones.\n */\n profileServices?: SidebarRailPinService;\n};\n\n/**\n * Variante compacta del sidebar: rail vertical de íconos con etiqueta debajo,\n * sin modo expandido. Los ítems con hijos abren un menú flotante a la derecha.\n * Al pasar el mouse sobre un ítem aparece un botón para anclarlo arriba del\n * todo. El anclado se identifica por `item.module` y persiste vía\n * `profileServices.addPins`/`deletePins`/`getPins` (recurso de perfil).\n */\nexport function SidebarRail({\n pathname,\n permissions,\n LinkComponent = DefaultCmsLink,\n legacyBaseUrl,\n items = ACCOUNT_NAV_BLOCKS,\n profileServices,\n}: SidebarRailProps) {\n const { t } = useCmsTranslation();\n const [pinnedModules, setPinnedModules] = useState<string[]>([]);\n\n useEffect(() => {\n if (!profileServices) return;\n let cancelled = false;\n profileServices\n .getPins()\n .then((response) => {\n if (cancelled) return;\n const modules = (response.pines ?? [])\n .map(extractPinnedModule)\n .filter((module): module is string => Boolean(module));\n setPinnedModules(modules);\n })\n .catch((error: unknown) => {\n console.error('[SidebarRail] getPins', error);\n });\n return () => {\n cancelled = true;\n };\n }, [profileServices]);\n\n const togglePin = (module: string) => {\n const wasPinned = pinnedModules.includes(module);\n const next = wasPinned\n ? pinnedModules.filter((m) => m !== module)\n : [...pinnedModules, module];\n setPinnedModules(next);\n\n if (!profileServices) return;\n const request = wasPinned\n ? profileServices.deletePins([module])\n : profileServices.addPins([module]);\n request.catch((error: unknown) => {\n console.error('[SidebarRail] togglePin', error);\n setPinnedModules(pinnedModules);\n });\n };\n\n const pinnedSet = new Set(pinnedModules);\n const pinnedItems = pinnedModules\n .map((module) => items.find((item) => item.module === module))\n .filter((item): item is NavLinkItem => Boolean(item));\n const unpinnedItems = items.filter((item) => !pinnedSet.has(item.module));\n\n return (\n <Box component=\"aside\" sx={SidebarRailStyles.sxRoot}>\n <Box sx={SidebarRailStyles.sxNavScroll}>\n <Box component=\"nav\" aria-label={t.sidebar('navAriaLabel')} sx={SidebarRailStyles.sxNav}>\n {pinnedItems.map((item) => (\n <RailItem\n key={item.href}\n item={item}\n blockIndex={items.indexOf(item)}\n pathname={pathname}\n permissions={permissions}\n LinkComponent={LinkComponent}\n legacyBaseUrl={legacyBaseUrl}\n pinned\n onTogglePin={() => togglePin(item.module)}\n />\n ))}\n {pinnedItems.length > 0 && <Box sx={SidebarRailStyles.sxPinDivider} />}\n {unpinnedItems.map((item) => (\n <RailItem\n key={item.href}\n item={item}\n blockIndex={items.indexOf(item)}\n pathname={pathname}\n permissions={permissions}\n LinkComponent={LinkComponent}\n legacyBaseUrl={legacyBaseUrl}\n pinned={false}\n onTogglePin={() => togglePin(item.module)}\n />\n ))}\n </Box>\n </Box>\n </Box>\n );\n}\n","/**\n * Redirección al admin viejo del CMS (JSP) replicando el `openExternalPage()` de\n * cmsmedios-ux: en vez de un enlace, se arma y envía un formulario POST oculto\n * al endpoint `auth/adminBack/login`, que re-establece la sesión en la pestaña\n * nueva y luego redirige a la ruta pedida (campo `r`).\n *\n * Es código de navegador (usa `document`): debe llamarse desde un handler de\n * cliente, no en SSR.\n */\n\n/** Datos de sesión que el form POST envía al admin viejo. */\nexport type LegacyAdminSession = {\n /** Token de autenticación (se envía en base64, igual que el Angular legacy). */\n token: string;\n browserId: string;\n siteName: string;\n publication: string | number;\n userName: string;\n /** Proyecto del CMS. Por defecto `'Offline'`. */\n project?: string;\n};\n\n/** Parámetros de dispositivo para la previsualización (protocolo/queryString). */\nexport type LegacyAdminDevice = {\n /** `'https'` (por defecto) o `'http'`. */\n protocol?: string;\n /** QueryString específico del formato de preview (viene del backend). */\n queryString?: string;\n};\n\nconst ADMIN_BACK_LOGIN_PATH =\n '/system/modules/com.tfsla.diario.webservices/auth/adminBack/login';\n\n/** Devuelve el host de una URL/origen, forzando https (como el Angular legacy). */\nfunction toHttpsOrigin(cmsBaseUrl: string): string {\n const host = cmsBaseUrl.replace(/^https?:\\/\\//, '').replace(/\\/$/, '');\n return `https://${host}`;\n}\n\n/** Crea un `<input type=\"hidden\">` con nombre y valor. */\nfunction hiddenInput(name: string, value: string): HTMLInputElement {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('id', name);\n input.setAttribute('name', name);\n input.setAttribute('value', value);\n return input;\n}\n\n/**\n * Arma y envía el formulario POST que abre una ruta del admin viejo en una\n * pestaña nueva, pasando la sesión del usuario (igual que cmsmedios).\n *\n * @param params.cmsBaseUrl - Origen del CMS (p. ej. `https://dev.cms-medios.com`).\n * @param params.path - Ruta destino dentro del CMS (campo `r`).\n * @param params.session - Datos de sesión a enviar (token, sitio, etc.).\n * @param params.device - Opcional: protocolo/queryString del preview.\n * @returns void\n */\nexport function submitLegacyAdminPage(params: {\n cmsBaseUrl: string;\n path: string;\n session: LegacyAdminSession;\n device?: LegacyAdminDevice;\n}): void {\n const { cmsBaseUrl, path, session, device } = params;\n const loginService = `${toHttpsOrigin(cmsBaseUrl)}${ADMIN_BACK_LOGIN_PATH}`;\n\n // Igual que el legacy: si hay queryString, se concatena a la ruta destino.\n let targetUrl = path;\n const queryString = device?.queryString ?? '';\n if (queryString.length) {\n targetUrl = queryString.includes('/')\n ? `${queryString}?path=${targetUrl}` // redirect\n : `${targetUrl}?${queryString}`; // Apache\n }\n\n const form = document.createElement('form');\n form.setAttribute('method', 'post');\n form.setAttribute('action', loginService);\n form.setAttribute('target', '_blank');\n\n form.appendChild(hiddenInput('token', btoa(session.token)));\n form.appendChild(hiddenInput('project', session.project ?? 'Offline'));\n form.appendChild(hiddenInput('browserId', session.browserId));\n form.appendChild(hiddenInput('siteName', session.siteName));\n form.appendChild(hiddenInput('publication', String(session.publication)));\n form.appendChild(hiddenInput('r', targetUrl));\n form.appendChild(hiddenInput('user', session.userName));\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport { cmsColors, radii, shadows } from '../../theme/variables';\n\nexport const SiteSelectorMenuStyles = {\n // Nameplate del header: píldora con logo + divisor + país + flecha.\n sxTriggerButton: (open: boolean): SxProps<Theme> => ({\n height: 38,\n borderRadius: radii.pill,\n border: 'none',\n color: cmsColors.textStrong,\n bgcolor: open ? cmsColors.secondaryHover : cmsColors.menuItemActive,\n textTransform: 'none',\n px: 1.5,\n py: 0,\n gap: 0,\n flexShrink: 0,\n '&:hover': {\n border: 'none',\n bgcolor: open ? cmsColors.secondaryHover : cmsColors.surfaceHover,\n },\n }),\n\n // Logo de la publicación seleccionada en el trigger (máx 70px de ancho).\n sxTriggerLogo: {\n display: 'block',\n maxWidth: 70,\n maxHeight: 20,\n width: 'auto',\n height: 'auto',\n objectFit: 'contain',\n } as SxProps<Theme>,\n\n sxTriggerDivider: {\n width: '1px',\n height: 18,\n flexShrink: 0,\n bgcolor: cmsColors.border,\n mx: 1.25,\n } as SxProps<Theme>,\n\n sxTriggerCountry: {\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1,\n color: cmsColors.textStrong,\n whiteSpace: 'nowrap',\n } as SxProps<Theme>,\n\n sxTriggerIcon: {\n fontSize: 20,\n ml: 0.5,\n } as SxProps<Theme>,\n\n // Panel flotante: superficie elevada, redondeado y con scroll (look del nuevo diseño).\n sxMenuPaper: {\n mt: 1,\n marginTop: 0,\n bgcolor: cmsColors.surface,\n border: `1px solid ${cmsColors.border}`,\n borderRadius: '20px',\n boxShadow: shadows.menuSoft,\n width: 420,\n maxWidth: '92vw',\n maxHeight: 560,\n overflow: 'hidden',\n p: 1,\n } as SxProps<Theme>,\n\n sxMenuList: {\n p: 0,\n maxHeight: 540,\n overflowY: 'auto',\n } as SxProps<Theme>,\n\n // Cada marca/sitio es una sección; separador superior salvo la primera.\n sxSection: (isFirst: boolean): SxProps<Theme> => ({\n pt: isFirst ? 0 : 0.75,\n mt: isFirst ? 0 : 0.5,\n borderTop: isFirst ? 'none' : `1px solid ${cmsColors.border}`,\n }),\n\n sxSectionTitle: {\n px: 1.5,\n pt: 1,\n pb: 0.5,\n fontSize: 12,\n fontWeight: 500,\n letterSpacing: '0.07em',\n textTransform: 'uppercase',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n // Fila de opción (publicación). `isSub` la indenta como sub-sitio.\n sxOption: (selected: boolean, isSub: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n width: '100%',\n height: 48,\n minHeight: 48,\n boxSizing: 'border-box',\n pl: isSub ? 1.5 : 1.5,\n pr: 1.5,\n py: 0.5,\n borderRadius: '14px',\n bgcolor: selected ? cmsColors.secondary : 'transparent',\n '&:hover': {\n bgcolor: selected ? cmsColors.secondary : 'action.hover',\n },\n '&.Mui-selected': {\n bgcolor: cmsColors.secondary,\n '&:hover': { bgcolor: cmsColors.secondary },\n },\n }),\n\n // Zona inicial de la fila (punto / check / flecha). Más ancha en sub-filas\n // para alinear con la línea-guía vertical.\n sxLead: (isSub: boolean): SxProps<Theme> => ({\n width: isSub ? 42 : 28,\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n }),\n\n sxLeadDot: {\n width: 5,\n height: 5,\n borderRadius: radii.pill,\n bgcolor: cmsColors.border,\n } as SxProps<Theme>,\n\n sxLeadCheck: {\n fontSize: 20,\n color: cmsColors.onSecondaryContainer,\n } as SxProps<Theme>,\n\n // Flecha que despliega los sub-sitios; rota 90° al abrir.\n sxTwist: (open: boolean): SxProps<Theme> => ({\n width: 28,\n height: 28,\n minWidth: 0,\n p: 0,\n borderRadius: radii.pill,\n display: 'grid',\n placeItems: 'center',\n color: 'm3.onSurfaceVariant',\n transition: 'transform .15s, background-color .12s',\n transform: open ? 'rotate(90deg)' : 'none',\n '&:hover': { bgcolor: 'action.hover' },\n }),\n\n sxName: (selected: boolean, isSub: boolean): SxProps<Theme> => ({\n flex: 1,\n minWidth: 0,\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1.4,\n color: selected\n ? cmsColors.onSecondaryContainer\n : isSub\n ? 'm3.onSurfaceVariant'\n : cmsColors.textStrong,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n\n // Contador de sub-sitios (solo cuando la publicación trae hijos).\n sxCount: (selected: boolean): SxProps<Theme> => ({\n flexShrink: 0,\n fontSize: 11,\n fontWeight: 600,\n lineHeight: 1,\n px: 0.875,\n py: '3px',\n borderRadius: radii.pill,\n bgcolor: selected ? cmsColors.surface : cmsColors.menuItemActive,\n color: selected ? cmsColors.onSecondaryContainer : cmsColors.textNav,\n }),\n\n sxLogoWrap: {\n ml: 'auto',\n pl: 1.25,\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxLogoImg: {\n display: 'block',\n maxWidth: 70,\n maxHeight: 24,\n width: 'auto',\n height: 'auto',\n objectFit: 'contain',\n } as SxProps<Theme>,\n\n // Contenedor de sub-sitios con línea-guía vertical a la izquierda.\n sxKids: {\n position: 'relative',\n my: 0.25,\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: 25,\n top: 2,\n bottom: 8,\n width: '1.5px',\n bgcolor: cmsColors.border,\n borderRadius: '2px',\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CheckIcon from '@mui/icons-material/Check';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { useState } from 'react';\n\nimport type { Publication } from '../../types/publication';\nimport type { SiteSection } from '../../types/site';\nimport { findPublicationLabel } from '../../utils/site-selector';\nimport { toTestId } from '../../utils/toTestId';\nimport { SiteSelectorMenuStyles } from './SiteSelectorMenu.styles';\n\n/** ¿La publicación trae sub-sitios (multisitio)? */\nfunction hasChildren(publication: Publication): boolean {\n return Boolean(publication.children && publication.children.length > 0);\n}\n\n/**\n * Fila de una publicación. Si tiene hijos, muestra la flecha para desplegarlos\n * y un contador; si no, un punto (o el check cuando está seleccionada).\n */\nfunction SiteMenuItem({\n publication,\n selected,\n isSub,\n href,\n imageUrl,\n expanded,\n onToggle,\n}: {\n publication: Publication;\n selected: boolean;\n isSub: boolean;\n href: string;\n imageUrl?: string;\n expanded?: boolean;\n onToggle?: () => void;\n}) {\n const parent = hasChildren(publication);\n\n return (\n <a href={href} style={{ textDecoration: 'none', color: 'inherit' }}>\n <MenuItem\n selected={selected}\n data-testid={`link-site-${toTestId(publication.id)}`}\n sx={SiteSelectorMenuStyles.sxOption(selected, isSub)}>\n <Box sx={SiteSelectorMenuStyles.sxLead(isSub)}>\n {parent ? (\n <Box\n component=\"span\"\n role=\"button\"\n data-testid={`toggle-site-children-${toTestId(publication.id)}`}\n data-action={expanded ? 'collapse' : 'expand'}\n aria-label=\"expand\"\n onClick={(event) => {\n // Desplegar/plegar sin navegar a la publicación.\n event.preventDefault();\n event.stopPropagation();\n onToggle?.();\n }}\n sx={SiteSelectorMenuStyles.sxTwist(Boolean(expanded))}>\n <KeyboardArrowRightIcon sx={{ fontSize: 20 }} />\n </Box>\n ) : selected ? (\n <CheckIcon sx={SiteSelectorMenuStyles.sxLeadCheck} />\n ) : (\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxLeadDot} />\n )}\n </Box>\n\n <Typography sx={SiteSelectorMenuStyles.sxName(selected, isSub)}>\n {publication.description}\n </Typography>\n\n {parent ? (\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxCount(selected)}>\n {publication.children!.length}\n </Box>\n ) : null}\n\n {imageUrl ? (\n <Box sx={SiteSelectorMenuStyles.sxLogoWrap}>\n <Box\n component=\"img\"\n src={imageUrl}\n alt={publication.description}\n sx={SiteSelectorMenuStyles.sxLogoImg}\n />\n </Box>\n ) : null}\n </MenuItem>\n </a>\n );\n}\n\nexport type SiteSelectorMenuProps = {\n sites: SiteSection[];\n selectedPublicationId?: string;\n getPublicationHref: (publication: Publication) => string;\n resolvePublicationImageUrl?: (imagePath: string) => string;\n};\n\nexport function SiteSelectorMenu({\n sites,\n selectedPublicationId,\n getPublicationHref,\n resolvePublicationImageUrl,\n}: SiteSelectorMenuProps) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n\n // Sub-sitios desplegados. Arranca con los padres del seleccionado abiertos.\n const [expandedIds, setExpandedIds] = useState<Set<number>>(() => {\n const initial = new Set<number>();\n sites.forEach((section) =>\n section.publications.forEach((publication) => {\n if (\n hasChildren(publication) &&\n publication.children!.some(\n (child) => String(child.id) === selectedPublicationId,\n )\n ) {\n initial.add(publication.id);\n }\n }),\n );\n return initial;\n });\n\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const toggleExpanded = (id: number) => {\n setExpandedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const isSelected = (publication: Publication) =>\n Number(selectedPublicationId) === publication.id;\n\n const resolveImage = (publication: Publication) =>\n publication.imagePath && resolvePublicationImageUrl\n ? resolvePublicationImageUrl(publication.imagePath)\n : undefined;\n\n const labelId = selectedPublicationId ?? '';\n\n // Publicación seleccionada (incluye sub-sitios) para el nameplate del header.\n const selectedPublication = sites\n .flatMap((section) =>\n section.publications.flatMap((publication) => [\n publication,\n ...(publication.children ?? []),\n ]),\n )\n .find((publication) => String(publication.id) === labelId);\n const triggerLabel = selectedPublication?.description\n ? selectedPublication.description\n : findPublicationLabel(sites, labelId);\n const triggerLogo = selectedPublication\n ? resolveImage(selectedPublication)\n : undefined;\n\n return (\n <>\n <Button\n id=\"site-selector-button\"\n data-testid=\"dropdown-toggle-site-selector\"\n aria-controls={open ? 'site-selector-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n variant=\"outlined\"\n onClick={handleOpen}\n endIcon={\n <KeyboardArrowDownIcon sx={SiteSelectorMenuStyles.sxTriggerIcon} />\n }\n sx={SiteSelectorMenuStyles.sxTriggerButton(open)}>\n {triggerLogo ? (\n <Box\n component=\"img\"\n src={triggerLogo}\n alt=\"\"\n sx={SiteSelectorMenuStyles.sxTriggerLogo}\n />\n ) : null}\n {triggerLogo ? (\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxTriggerDivider} />\n ) : null}\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxTriggerCountry}>\n {triggerLabel}\n </Box>\n </Button>\n\n <Menu\n id=\"site-selector-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: SiteSelectorMenuStyles.sxMenuPaper,\n },\n list: {\n 'aria-labelledby': 'site-selector-button',\n disablePadding: true,\n sx: SiteSelectorMenuStyles.sxMenuList,\n },\n }}>\n {sites.map((section, sectionIndex) => (\n <Box\n key={section.title}\n sx={SiteSelectorMenuStyles.sxSection(sectionIndex === 0)}>\n <Typography sx={SiteSelectorMenuStyles.sxSectionTitle}>\n {section.title}\n </Typography>\n\n {section.publications.map((publication) => {\n const parent = hasChildren(publication);\n const expanded = expandedIds.has(publication.id);\n\n return (\n <Box key={publication.id}>\n <SiteMenuItem\n publication={publication}\n selected={isSelected(publication)}\n isSub={false}\n href={getPublicationHref(publication)}\n imageUrl={resolveImage(publication)}\n expanded={expanded}\n onToggle={() => toggleExpanded(publication.id)}\n />\n\n {parent && expanded ? (\n <Box sx={SiteSelectorMenuStyles.sxKids}>\n {publication.children!.map((child) => (\n <SiteMenuItem\n key={child.id}\n publication={child}\n selected={isSelected(child)}\n isSub\n href={getPublicationHref(child)}\n imageUrl={resolveImage(child)}\n />\n ))}\n </Box>\n ) : null}\n </Box>\n );\n })}\n </Box>\n ))}\n </Menu>\n </>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows } from '../../theme/variables';\n\n/**\n * Estilos del menú \"Apariencia\" del TopBar: switch \"Tema nuevo\" + segmentado\n * Claro/Oscuro (dos botones UNIDOS, look de píldora segmentada). Los colores\n * usan tokens mode-aware (los hexes de diseño son los de modo claro; en oscuro\n * se adaptan solos): `m3.onSurfaceVariant` (#43474E), `text.primary` (#191C20),\n * `onSecondaryContainer` (#2C4678) y `m3.outline` (#74777F).\n */\nexport const AppearanceMenuStyles = {\n /** Paper del popover — ancho FIJO (no varía al mostrar/ocultar el texto de ayuda). */\n sxPaper: {\n mt: 1,\n p: 2,\n width: 280,\n borderRadius: radii.lg,\n bgcolor: cmsColors.menuSurface,\n boxShadow: shadows.menu,\n fontFamily: fontFamilies.roboto,\n } as SxProps<Theme>,\n\n /** Título \"Apariencia\": Roboto 14px #43474E. */\n sxTitle: {\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 500,\n color: 'm3.onSurfaceVariant',\n mb: 1.5,\n } as SxProps<Theme>,\n\n /** Fila del switch (label a la izquierda, switch a la derecha). */\n sxRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n } as SxProps<Theme>,\n\n /** Label principal (\"Tema nuevo\"): Roboto 15px #191C20. */\n sxRowLabel: {\n fontFamily: fontFamilies.roboto,\n fontSize: 15,\n fontWeight: 500,\n color: 'text.primary',\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n /** Subtítulo (\"Interfaz rediseñada\"): Roboto 12px #43474E, +5px de separación del título. */\n sxRowSub: {\n fontFamily: fontFamilies.roboto,\n fontSize: 12,\n color: 'm3.onSurfaceVariant',\n lineHeight: 1.3,\n mt: '5px',\n } as SxProps<Theme>,\n\n /** Switch 52×25, con el azul primario del CMS al estar activo. */\n sxSwitch: {\n width: 52,\n height: 25,\n padding: 0,\n display: 'flex',\n '& .MuiSwitch-switchBase': {\n padding: 0,\n margin: '3.5px',\n '&.Mui-checked': {\n transform: 'translateX(27px)',\n color: cmsColors.white,\n '& + .MuiSwitch-track': {\n backgroundColor: cmsColors.primary,\n opacity: 1,\n },\n },\n },\n '& .MuiSwitch-thumb': { width: 18, height: 18, boxShadow: 'none' },\n '& .MuiSwitch-track': {\n borderRadius: '999px',\n backgroundColor: cmsColors.controlBorder,\n opacity: 1,\n },\n } as SxProps<Theme>,\n\n /** Separador. */\n sxDivider: {\n my: 1.5,\n borderColor: cmsColors.border,\n } as SxProps<Theme>,\n\n /** Caption \"MODO\": Roboto 12px #43474E en mayúsculas. */\n sxCaption: {\n fontFamily: fontFamilies.roboto,\n fontSize: 12,\n fontWeight: 600,\n letterSpacing: '0.5px',\n textTransform: 'uppercase',\n color: 'm3.onSurfaceVariant',\n mb: 1,\n } as SxProps<Theme>,\n\n /**\n * Segmentado UNIDO: dos botones de 120×40 pegados, con extremos redondeados\n * (píldora) y un divisor central. Borde #74777F.\n */\n sxToggleGroup: {\n display: 'inline-flex',\n width: 'fit-content',\n '& .MuiToggleButtonGroup-grouped': {\n width: 120,\n height: 40,\n margin: 0,\n border: '1px solid',\n borderColor: 'm3.outline',\n textTransform: 'none',\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 500,\n gap: '6px',\n // Label del botón inactivo (p. ej. \"Oscuro\"): #191C20.\n color: 'text.primary',\n '& .MuiSvgIcon-root': { fontSize: 18 },\n // Botón izquierdo: extremo izquierdo redondeado, sin borde derecho (el divisor lo pone el derecho).\n '&:first-of-type': {\n borderTopLeftRadius: radii.pill,\n borderBottomLeftRadius: radii.pill,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n borderRight: 0,\n },\n // Botón derecho: extremo derecho redondeado, con el borde divisor a la izquierda.\n '&:last-of-type': {\n borderTopRightRadius: radii.pill,\n borderBottomRightRadius: radii.pill,\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderLeft: '1px solid',\n borderColor: 'm3.outline',\n marginLeft: 0,\n },\n '&:hover': { backgroundColor: cmsColors.surfaceHover },\n // Botón activo (p. ej. \"Claro\"): texto #2C4678 sobre contenedor secundario.\n '&.Mui-selected': {\n backgroundColor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n borderColor: 'm3.outline',\n '&:hover': { backgroundColor: cmsColors.secondary },\n },\n '&.Mui-disabled': {\n opacity: 0.45,\n color: 'text.disabled',\n borderColor: 'm3.outline',\n },\n },\n } as SxProps<Theme>,\n\n /** Texto de ayuda cuando el switch está apagado. */\n sxHelper: {\n fontFamily: fontFamilies.roboto,\n fontSize: 12,\n color: 'm3.onSurfaceVariant',\n mt: 1.5,\n lineHeight: 1.4,\n } as SxProps<Theme>,\n};\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, shadows } from '../../theme/variables';\n\nconst CLOCK_TIME_SIZE = 13;\nconst CLOCK_META_SIZE = 11;\n\nexport const ICON_SLOT_SIZE = 48;\nexport const HEADER_HEIGHT = 48;\nexport const FRAME_GAP = '15px';\nconst DIVIDER_HEIGHT = 27.6;\n\nexport const TopBarStyles = {\n sxAppBar: {\n bgcolor: 'm3.surfaceContainer',\n color: 'm3.onSurfaceVariant',\n height: HEADER_HEIGHT,\n } as SxProps<Theme>,\n\n sxToolbar: {\n minHeight: HEADER_HEIGHT,\n height: HEADER_HEIGHT,\n pl: '10px',\n pr: 2,\n gap: 1.5,\n } as SxProps<Theme>,\n\n sxMenuButton: {\n width: 40,\n height: 40,\n flexShrink: 0,\n borderRadius: '100px',\n color: 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: cmsColors.surfaceHover,\n },\n } as SxProps<Theme>,\n\n sxMenuButtonIcon: {\n fontSize: 24,\n } as SxProps<Theme>,\n\n sxLogoBox: {\n width: 200,\n height: 50,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n my: 'auto',\n } as SxProps<Theme>,\n\n sxActionsFrame: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: FRAME_GAP,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxIconActionsRow: {\n display: 'flex',\n alignItems: 'center',\n height: ICON_SLOT_SIZE,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxActionIcon: {\n width: ICON_SLOT_SIZE,\n height: ICON_SLOT_SIZE,\n color: 'm3.onSurfaceVariant',\n borderRadius: '50%',\n } as SxProps<Theme>,\n\n sxActionIconGlyph: {\n fontSize: 24,\n } as SxProps<Theme>,\n\n sxBadge: {\n '& .MuiBadge-badge': {\n fontSize: 11,\n fontWeight: 500,\n minWidth: 16,\n height: 16,\n px: 0.5,\n top: 10,\n right: 10,\n },\n } as SxProps<Theme>,\n\n sxDivider: {\n width: '1px',\n height: DIVIDER_HEIGHT,\n flexShrink: 0,\n bgcolor: cmsColors.border,\n } as SxProps<Theme>,\n\n sxClock: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxClockIcon: {\n fontSize: 20,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n sxClockText: {\n display: 'flex',\n flexDirection: 'column',\n } as SxProps<Theme>,\n\n sxClockTime: {\n fontSize: CLOCK_TIME_SIZE,\n fontWeight: 600,\n lineHeight: 1.2,\n color: cmsColors.textStrong,\n } as SxProps<Theme>,\n\n sxClockMeta: {\n fontSize: CLOCK_META_SIZE,\n lineHeight: 1.2,\n color: cmsColors.textNav,\n } as SxProps<Theme>,\n\n sxProfileButton: {\n p: 0,\n width: 34,\n height: 34,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxProfileAvatar: {\n width: 34,\n height: 34,\n border: `1px solid ${cmsColors.avatarBorder}`,\n bgcolor: cmsColors.avatarBg,\n } as SxProps<Theme>,\n\n sxProfileMenuPaper: {\n mt: 1,\n minWidth: 220,\n borderRadius: 2,\n bgcolor: cmsColors.menuSurface,\n py: 0.5,\n boxShadow: shadows.menu,\n } as SxProps<Theme>,\n\n sxProfileMenuItem: {\n py: 1.25,\n px: 2,\n fontSize: 14,\n color: cmsColors.textStrong,\n '&:hover': {\n bgcolor: 'action.hover',\n },\n } as SxProps<Theme>,\n\n sxProfileMenuListItemIcon: {\n minWidth: 36,\n color: 'm3.onSurfaceVariant',\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n },\n } as SxProps<Theme>,\n\n sxProfileMenuDivider: {\n my: 0.5,\n borderColor: cmsColors.border,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport DarkModeOutlinedIcon from '@mui/icons-material/DarkModeOutlined';\nimport LightModeOutlinedIcon from '@mui/icons-material/LightModeOutlined';\nimport PaletteOutlinedIcon from '@mui/icons-material/PaletteOutlined';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Popover from '@mui/material/Popover';\nimport Switch from '@mui/material/Switch';\nimport ToggleButton from '@mui/material/ToggleButton';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { useColorScheme } from '@mui/material/styles';\nimport { useEffect, useState, type MouseEvent } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { AppearanceMenuStyles } from './AppearanceMenu.styles';\nimport { TopBarStyles } from './TopBar.styles';\n\ntype ThemeMode = 'light' | 'dark';\n\n/**\n * Menú \"Apariencia\" del TopBar (ícono de paleta). Un switch \"Tema nuevo\"\n * habilita la selección de modo; con el switch apagado se fuerza el modo claro\n * y el segmentado Claro/Oscuro queda deshabilitado. Al elegir \"Oscuro\" se\n * togglea el `data-mui-color-scheme` de MUI y todo el sitio pasa a oscuro.\n *\n * Solo afecta estilos: no toca datos ni funcionalidad del gestor.\n */\nexport function AppearanceMenu() {\n const { t } = useCmsTranslation();\n const { setMode } = useColorScheme();\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n // \"Tema nuevo\": habilita la selección de modo. Apagado → se fuerza claro.\n const [enabled, setEnabled] = useState(true);\n // Modo elegido por el usuario (se recuerda aunque se apague el switch).\n const [desiredMode, setDesiredMode] = useState<ThemeMode>('light');\n\n const open = Boolean(anchorEl);\n const title = t.topBar('appearance');\n\n // Modo efectivo del sitio: claro si el switch está apagado.\n useEffect(() => {\n setMode(enabled ? desiredMode : 'light');\n }, [enabled, desiredMode, setMode]);\n\n const handleModeChange = (\n _event: MouseEvent<HTMLElement>,\n value: ThemeMode | null,\n ) => {\n if (value && enabled) setDesiredMode(value);\n };\n\n const selected: ThemeMode = enabled ? desiredMode : 'light';\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n onClick={(event) => setAnchorEl(event.currentTarget)}\n aria-label={title}\n aria-haspopup=\"true\"\n aria-expanded={open}\n data-testid=\"dropdown-toggle-appearance\"\n sx={TopBarStyles.sxActionIcon}>\n <PaletteOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: AppearanceMenuStyles.sxPaper,\n ...({ 'data-testid': 'dropdown-menu-appearance' } as object),\n },\n }}>\n <Typography sx={AppearanceMenuStyles.sxTitle}>{title}</Typography>\n\n <Box sx={AppearanceMenuStyles.sxRow}>\n <Box>\n <Typography sx={AppearanceMenuStyles.sxRowLabel}>\n {t.topBar('newTheme')}\n </Typography>\n <Typography sx={AppearanceMenuStyles.sxRowSub}>\n {t.topBar('newThemeSubtitle')}\n </Typography>\n </Box>\n <Switch\n checked={enabled}\n onChange={(event) => setEnabled(event.target.checked)}\n data-testid=\"check-new-theme\"\n sx={AppearanceMenuStyles.sxSwitch}\n slotProps={{ input: { 'aria-label': t.topBar('newTheme') } }}\n />\n </Box>\n\n <Divider sx={AppearanceMenuStyles.sxDivider} />\n\n <Typography sx={AppearanceMenuStyles.sxCaption}>\n {t.topBar('modeLabel')}\n </Typography>\n\n <ToggleButtonGroup\n exclusive\n value={selected}\n onChange={handleModeChange}\n disabled={!enabled}\n aria-label={t.topBar('modeLabel')}\n sx={AppearanceMenuStyles.sxToggleGroup}>\n <ToggleButton\n value=\"light\"\n aria-label={t.topBar('modeLight')}\n data-testid=\"btn-theme-light\"\n data-action=\"light\">\n <LightModeOutlinedIcon />\n {t.topBar('modeLight')}\n </ToggleButton>\n <ToggleButton\n value=\"dark\"\n aria-label={t.topBar('modeDark')}\n data-testid=\"btn-theme-dark\"\n data-action=\"dark\">\n <DarkModeOutlinedIcon />\n {t.topBar('modeDark')}\n </ToggleButton>\n </ToggleButtonGroup>\n\n {!enabled && (\n <Typography sx={AppearanceMenuStyles.sxHelper}>\n {t.topBar('classicUnavailable')}\n </Typography>\n )}\n </Popover>\n </>\n );\n}\n","import type { NewMenuMessageKey } from '../../i18n';\n\n/**\n * Ítem del menú \"Nuevo\" (botón \"+\"). Replica la estructura del header del CMS\n * Angular legacy (`newContent` de cmsmedios): cada ítem declara su clave i18n y\n * el/los permiso(s) de operación que habilitan su visibilidad.\n */\nexport type NewContentItem = {\n /** Identificador estable; lo recibe `onNewContentSelect` al hacer clic. */\n id: string;\n /** Clave i18n del namespace `newMenu`. */\n labelKey: NewMenuMessageKey;\n /**\n * Permiso(s) de operación requeridos (p. ej. `NEWS_CREATE`). Si es un array,\n * se exigen TODOS (criterio NAA-4038 del Angular legacy). Si se omite, el ítem\n * no requiere permiso.\n */\n permission?: string | string[];\n};\n\n/** Columna del menú \"Nuevo\" (Frecuentes / Otros / Videos). */\nexport type NewContentGroup = {\n /** Clave i18n del título de la columna (namespace `newMenu`). */\n titleKey: NewMenuMessageKey;\n items: NewContentItem[];\n};\n\n/**\n * Estructura por defecto del menú \"Nuevo\", equivalente al `newContent` del\n * header de cmsmedios (frecuentes / otros / videos) con sus permisos. El gestor\n * puede sobreescribirla por props si su producto difiere.\n */\nexport const DEFAULT_NEW_CONTENT_GROUPS: NewContentGroup[] = [\n {\n titleKey: 'frequentsTitle',\n items: [\n { id: 'news', labelKey: 'post', permission: 'NEWS_CREATE' },\n { id: 'trivias', labelKey: 'trivia', permission: 'TRIVIAS_CREATE' },\n { id: 'polls', labelKey: 'poll', permission: 'POLLS_CREATE' },\n { id: 'listas', labelKey: 'listicle', permission: 'NEWS_CREATE' },\n ],\n },\n {\n titleKey: 'othersTitle',\n items: [\n { id: 'tag', labelKey: 'tag', permission: 'TAGS_CREATE' },\n { id: 'gamecast', labelKey: 'gamecast', permission: 'NEWS_CREATE' },\n { id: 'liveblog', labelKey: 'liveblog', permission: 'NEWS_CREATE' },\n { id: 'aiPost', labelKey: 'aiPost', permission: 'IA_NEWS_CREATE' },\n { id: 'aiListicle', labelKey: 'aiListicle', permission: 'IA_NEWS_CREATE' },\n ],\n },\n {\n titleKey: 'videosTitle',\n items: [\n {\n id: 'videoNative',\n labelKey: 'videoNative',\n permission: ['VIDEOS_UPLOAD', 'VIDEOS_NATIVE'],\n },\n { id: 'videoEmbedded', labelKey: 'videoEmbedded', permission: 'VIDEOS_UPLOAD' },\n { id: 'videoYoutube', labelKey: 'videoYoutube', permission: 'VIDEOS_UPLOAD' },\n ],\n },\n];\n\n/**\n * Decide si un ítem es visible según los permisos de operación del usuario.\n *\n * - Si `operationPermissions` es `undefined`, no hay gating (se muestra todo);\n * útil para maquetado/mock antes de cablear `/auth/permissions`.\n * - Si el usuario es admin, ve todo.\n * - Si el ítem no declara permiso, se muestra.\n * - Con un array de permisos, se exigen todos.\n *\n * @param item - Ítem a evaluar.\n * @param operationPermissions - Nombres de operaciones concedidas al usuario.\n * @param isAdmin - Si el usuario es administrador.\n * @returns `true` si el ítem debe mostrarse.\n */\nexport function isNewContentItemVisible(\n item: NewContentItem,\n operationPermissions: string[] | undefined,\n isAdmin: boolean | undefined,\n): boolean {\n if (operationPermissions === undefined) return true;\n if (isAdmin) return true;\n if (!item.permission) return true;\n const required = Array.isArray(item.permission)\n ? item.permission\n : [item.permission];\n return required.every((name) => operationPermissions.includes(name));\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, shadows } from '../../theme/variables';\n\nexport const NewContentMenuStyles = {\n sxMenuPaper: {\n mt: 1,\n borderRadius: 2,\n bgcolor: cmsColors.menuSurface,\n py: 2,\n px: 1,\n boxShadow: shadows.menu,\n } as SxProps<Theme>,\n\n sxContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 4,\n px: 2,\n } as SxProps<Theme>,\n\n sxColumn: {\n display: 'flex',\n flexDirection: 'column',\n minWidth: 132,\n } as SxProps<Theme>,\n\n sxColumnTitle: {\n fontSize: 13,\n fontWeight: 500,\n color: cmsColors.textMuted,\n mb: 1,\n } as SxProps<Theme>,\n\n sxItem: {\n fontSize: 14,\n color: cmsColors.textStrong,\n py: 1,\n px: 1,\n borderRadius: 1,\n cursor: 'pointer',\n textDecoration: 'none',\n display: 'block',\n '&:hover': {\n bgcolor: cmsColors.surfaceHover,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport AddOutlinedIcon from '@mui/icons-material/AddOutlined';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport { useMemo, useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport {\n DEFAULT_NEW_CONTENT_GROUPS,\n isNewContentItemVisible,\n type NewContentGroup,\n type NewContentItem,\n} from './newContentMenu.config';\nimport { NewContentMenuStyles } from './NewContentMenu.styles';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type NewContentMenuProps = {\n /** Columnas e ítems del menú. Por defecto, la estructura del CMS legacy. */\n groups?: NewContentGroup[];\n /**\n * Nombres de operaciones concedidas al usuario (de `POST /auth/permissions`).\n * Si se omite, no hay filtrado por permisos (se muestran todos los ítems).\n */\n operationPermissions?: string[];\n /** Si el usuario es administrador (ve todos los ítems). */\n isAdmin?: boolean;\n /**\n * Dominio del deploy nuevo (master) al que se redirige, p. ej.\n * `https://master.d1c5iid93veq15.amplifyapp.com`. Se navega a\n * `<legacyBaseUrl><getRedirectPath(id)>` en una pestaña nueva.\n */\n legacyBaseUrl?: string;\n /**\n * Ruta/parámetro por ítem que se concatena a `legacyBaseUrl`. Por defecto\n * `/?new=<id>`: el deploy destino lee `new` y dispara la creación.\n */\n getRedirectPath?: (itemId: string) => string;\n /**\n * Fallback cuando no hay `legacyBaseUrl`: se invoca con el `id` del ítem\n * (punto de integración para maquetado).\n */\n onSelect?: (itemId: string) => void;\n};\n\n/** Ruta destino por defecto: el deploy leerá `?new=<id>` y disparará la acción. */\nfunction defaultNewRedirectPath(itemId: string): string {\n return `/?new=${encodeURIComponent(itemId)}`;\n}\n\n/** Une dominio + ruta sin barra doble. */\nfunction joinUrl(baseUrl: string, path: string): string {\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\n/**\n * Menú desplegable del botón \"Nuevo\" (+) del header. Replica las tres columnas\n * del header de cmsmedios (Frecuentes / Otros / Videos) con visibilidad por\n * permisos. El comportamiento de cada ítem lo resuelve el gestor.\n */\nexport function NewContentMenu({\n groups = DEFAULT_NEW_CONTENT_GROUPS,\n operationPermissions,\n isAdmin,\n legacyBaseUrl,\n getRedirectPath = defaultNewRedirectPath,\n onSelect,\n}: NewContentMenuProps) {\n const { t } = useCmsTranslation();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleClose = () => setAnchorEl(null);\n\n /** Filtra ítems por permiso y descarta columnas que quedan vacías. */\n const visibleGroups = useMemo(\n () =>\n groups\n .map((group) => ({\n ...group,\n items: group.items.filter((item) =>\n isNewContentItemVisible(item, operationPermissions, isAdmin),\n ),\n }))\n .filter((group) => group.items.length > 0),\n [groups, operationPermissions, isAdmin],\n );\n\n /**\n * Ejecuta la acción del ítem: navega al deploy master con el parámetro\n * (`<legacyBaseUrl>/?new=<id>`) en pestaña nueva; sin `legacyBaseUrl`, delega\n * en `onSelect`. Cierra el menú.\n * @param item - Ítem clickeado.\n * @returns void\n */\n const handleItemClick = (item: NewContentItem) => {\n if (legacyBaseUrl && typeof window !== 'undefined') {\n window.open(\n joinUrl(legacyBaseUrl, getRedirectPath(item.id)),\n '_blank',\n 'noopener',\n );\n } else {\n onSelect?.(item.id);\n }\n handleClose();\n };\n\n const title = t.topBar('new');\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n aria-label={title}\n aria-haspopup=\"true\"\n aria-expanded={open}\n onClick={(event: MouseEvent<HTMLElement>) =>\n setAnchorEl(event.currentTarget)\n }\n data-testid=\"dropdown-toggle-new-content\"\n sx={TopBarStyles.sxActionIcon}>\n <AddOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{\n paper: { sx: NewContentMenuStyles.sxMenuPaper },\n list: {\n sx: { p: 0 },\n ...({ 'data-testid': 'dropdown-menu-new-content' } as object),\n },\n }}>\n <Box sx={NewContentMenuStyles.sxContainer}>\n {visibleGroups.map((group) => (\n <Box key={group.titleKey} sx={NewContentMenuStyles.sxColumn}>\n <Typography\n component=\"span\"\n sx={NewContentMenuStyles.sxColumnTitle}>\n {t.newMenu(group.titleKey)}\n </Typography>\n {group.items.map((item) => (\n <Box\n key={item.id}\n component=\"span\"\n role=\"menuitem\"\n tabIndex={0}\n onClick={() => handleItemClick(item)}\n data-testid={`dropdown-item-new-${item.id}`}\n sx={NewContentMenuStyles.sxItem}>\n {t.newMenu(item.labelKey)}\n </Box>\n ))}\n </Box>\n ))}\n </Box>\n </Menu>\n </>\n );\n}\n","/**\n * Transforma la respuesta cruda de `POST /dashboard/notification`\n * (`newsTask` / `expireTask` / `videos`) en el feed único, ordenado por hora,\n * que consume el desplegable de la campanita (`NotificationsMenu`).\n *\n * Replica la lógica del header del CMS Angular (`cmsmedios-ux`):\n * `buildAssignedTopicsGroup`, `buildActivityNotificationsGroup`,\n * `buildSystemNote`, `buildDatetimeParts`, `parseSystemDescription`,\n * `highlightVideoFormats` y `buildDueParts`. Todas las fechas se calculan en la\n * zona de redacción de la publicación (offset GMT fijo), igual que el resto del CMS.\n */\n\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport { toSiteWallClock } from '../../utils/site-time';\n\n/** Tipo de tarjeta del feed. */\nexport type NotificationFeedType =\n | 'assigned'\n | 'pending'\n | 'system'\n | 'editorialOpportunity';\n\n/** Tema individual dentro de una tarjeta agrupada (asignados / por vencer / copilot). */\nexport interface NotificationTopic {\n /** Id crudo del ítem. Para copilot es el `opportunity_id` (necesario en el snooze). */\n id?: string;\n title: string;\n /** Código visible del tema (`CP-<id>`), en asignados / por vencer. */\n code: string;\n /** Temas asignados: etiqueta relativa de la fecha de asignación. */\n assignedToday?: boolean;\n assignedYesterday?: boolean;\n assignedDate?: string;\n /** Temas por vencer: fecha (\"DD/MM\") y hora (\"HH:mm\") de vencimiento. */\n dueDate?: string;\n dueTime?: string;\n /** Oportunidades copilot: % de coincidencia editorial (score) y tema. */\n matchPercent?: number;\n topic?: string;\n /** Datos de navegación al planning del evento destino. */\n eventId?: string;\n eventDate?: number;\n site?: string;\n publication?: number;\n unread?: boolean;\n}\n\n/** Item del feed ya listo para renderizar. */\nexport interface NotificationFeedItem {\n id: string;\n type: NotificationFeedType;\n /** Etiquetas de fecha/hora relativas (zona de redacción). */\n isToday: boolean;\n isYesterday: boolean;\n /** Fecha \"DD/MM/AAAA\" (se muestra si no es hoy ni ayer). */\n date: string;\n /** Hora \"HH:mm\" (24h). */\n time: string;\n /** Timestamp crudo usado para ordenar el feed por hora. */\n sortTime: number;\n unread: boolean;\n\n /** Tarjetas agrupadas (asignados / por vencer). */\n count?: number;\n expirationDatetime?: string;\n children?: NotificationTopic[];\n\n /** Notificación del sistema (video). */\n userFullName?: string;\n userLogin?: string;\n /** HTML seguro (escapado + formatos de video resaltados) para `dangerouslySetInnerHTML`. */\n preTextHtml?: string;\n pathPart?: string;\n postTextHtml?: string;\n detailHtml?: string;\n}\n\n/** Formatos de video que se resaltan (negrita + mayúscula) dentro del texto. */\nconst VIDEO_FORMATS = ['hls', 'dash', 'mp4', 'webm', 'mov', 'm3u8', 'mpd'];\n\nfunction pad(n: number): string {\n return String(n).padStart(2, '0');\n}\n\n/**\n * Normaliza un campo de timestamp del backend a epoch ms. Acepta un número, un\n * string numérico, una fecha ISO 8601 (`created_at` de copilot) o un objeto\n * `{ time }` (como `timeStamp.time`).\n */\nfunction readEpoch(value: unknown): number | null {\n if (value == null) return null;\n if (typeof value === 'object') {\n const time = (value as { time?: unknown }).time;\n return readEpoch(time);\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n // String puramente numérico → epoch; si no, se intenta como fecha ISO.\n if (/^\\d+$/.test(trimmed)) return parseInt(trimmed, 10);\n const parsed = Date.parse(trimmed);\n return Number.isNaN(parsed) ? null : parsed;\n }\n const n = Number(value);\n return Number.isNaN(n) ? null : n;\n}\n\n/**\n * Descompone un timestamp (epoch ms, UTC) en las partes de fecha/hora de la\n * zona de redacción, más los indicadores relativos hoy/ayer.\n */\nfunction buildDatetimeParts(\n value: unknown,\n gmt: string | null | undefined,\n nowWall: number,\n): {\n date: string;\n time: string;\n isToday: boolean;\n isYesterday: boolean;\n sortTime: number;\n} {\n const epoch = readEpoch(value);\n if (epoch == null) {\n return { date: '', time: '', isToday: false, isYesterday: false, sortTime: 0 };\n }\n const wall = toSiteWallClock(epoch, gmt);\n const d = new Date(wall);\n const date = `${pad(d.getUTCDate())}/${pad(d.getUTCMonth() + 1)}/${d.getUTCFullYear()}`;\n const time = `${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}`;\n\n const now = new Date(nowWall);\n const yesterday = new Date(nowWall - 86_400_000);\n const sameDay = (a: Date, b: Date) =>\n a.getUTCFullYear() === b.getUTCFullYear() &&\n a.getUTCMonth() === b.getUTCMonth() &&\n a.getUTCDate() === b.getUTCDate();\n\n return {\n date,\n time,\n isToday: sameDay(d, now),\n isYesterday: sameDay(d, yesterday),\n sortTime: epoch,\n };\n}\n\n/** Fecha \"DD/MM\" y hora \"HH:mm\" de vencimiento, en zona de redacción. */\nfunction buildDueParts(\n value: unknown,\n gmt: string | null | undefined,\n): { date: string; time: string } {\n const epoch = readEpoch(value);\n if (epoch == null) return { date: '', time: '' };\n const d = new Date(toSiteWallClock(epoch, gmt));\n return {\n date: `${pad(d.getUTCDate())}/${pad(d.getUTCMonth() + 1)}`,\n time: `${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}`,\n };\n}\n\n/** Escapa HTML y resalta los formatos de video conocidos en negrita + mayúscula. */\nfunction highlightVideoFormats(text: string): string {\n if (!text) return '';\n const escaped = text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n const pattern = new RegExp(`\\\\b(${VIDEO_FORMATS.join('|')})\\\\b`, 'gi');\n return escaped.replace(pattern, (match) => `<strong>${match.toUpperCase()}</strong>`);\n}\n\n/** Separa una descripción en texto previo, path (\"/algo/archivo.ext\") y texto posterior. */\nfunction parseSystemDescription(description: string): {\n preText: string;\n pathPart: string;\n postText: string;\n} {\n if (!description) return { preText: '', pathPart: '', postText: '' };\n const match = description.match(/(\\/[\\w\\-./]+\\.[\\w]+)/);\n if (match && match.index !== undefined) {\n return {\n preText: description.substring(0, match.index).trim(),\n pathPart: match[1],\n postText: description.substring(match.index + match[1].length).trim(),\n };\n }\n return { preText: description, pathPart: '', postText: '' };\n}\n\n/** Construye la card de nuevos temas asignados a partir de `newsTask`. */\nfunction buildAssignedGroup(\n tasks: DashboardNotificationsResponse['newsTask'],\n gmt: string | null | undefined,\n nowWall: number,\n): NotificationFeedItem | null {\n if (!tasks || !tasks.length) return null;\n // Hora de la card: la del delivery (`timeStamp.time`) del tema más reciente.\n const withDelivery = tasks.filter((t) => t && readEpoch(t.timeStamp) != null);\n const latest = withDelivery.length\n ? withDelivery.reduce(\n (max, t) =>\n Number(readEpoch(t.timeStamp)) > Number(readEpoch(max.timeStamp)) ? t : max,\n withDelivery[0],\n )\n : null;\n const datetime = buildDatetimeParts(\n latest ? latest.timeStamp : Date.now(),\n gmt,\n nowWall,\n );\n return {\n id: 'assigned-group',\n type: 'assigned',\n ...datetime,\n count: tasks.length,\n children: tasks.map((task) => {\n const assigned = buildDatetimeParts(task.assignedDate, gmt, nowWall);\n return {\n title: String(task.title ?? ''),\n code: `CP-${task.id}`,\n assignedToday: assigned.isToday,\n assignedYesterday: assigned.isYesterday,\n assignedDate: assigned.date,\n eventId: task.id != null ? String(task.id) : undefined,\n eventDate: task.startdate,\n site: task.site,\n publication: task.publication,\n unread: !task.isRead,\n };\n }),\n unread: tasks.some((t) => !t.isRead),\n };\n}\n\n/** Construye la card de actividades por vencer a partir de `expireTask`. */\nfunction buildPendingGroup(\n activities: DashboardNotificationsResponse['expireTask'],\n gmt: string | null | undefined,\n nowWall: number,\n now: number,\n): NotificationFeedItem | null {\n if (!activities || !activities.length) return null;\n const withDate = activities.filter((a) => a && a.startdate != null);\n const earliest = withDate.length\n ? withDate.reduce(\n (min, a) => (Number(a.startdate) < Number(min.startdate) ? a : min),\n withDate[0],\n )\n : activities[0];\n // `expireTask` no trae hora de entrega desde el back: se sella con \"ahora\"\n // para que la alerta figure como recién recibida (simplificación respecto de\n // la memoria por ids del CMS Angular). Los vencimientos reales de cada tema\n // se muestran en la lista desplegada (dueDate/dueTime).\n const datetime = buildDatetimeParts(now, gmt, nowWall);\n const earliestDue = earliest.startdate != null ? buildDueParts(earliest.startdate, gmt) : null;\n return {\n id: 'pending-group',\n type: 'pending',\n ...datetime,\n count: activities.length,\n expirationDatetime: earliestDue ? `${earliestDue.date}, ${earliestDue.time}hs` : '',\n children: activities.map((activity) => {\n const due = buildDueParts(activity.startdate, gmt);\n return {\n title: String(activity.title ?? ''),\n code: `CP-${activity.id}`,\n dueDate: due.date,\n dueTime: due.time,\n eventId: activity.id != null ? String(activity.id) : undefined,\n eventDate: activity.startdate,\n site: activity.site,\n publication: activity.publication,\n unread: !activity.isRead,\n };\n }),\n unread: activities.some((a) => !a.isRead),\n };\n}\n\n/** Construye una notificación del sistema (video) a partir de un item de `videos`. */\nfunction buildSystemNote(\n item: NonNullable<DashboardNotificationsResponse['videos']>[number],\n gmt: string | null | undefined,\n nowWall: number,\n index: number,\n): NotificationFeedItem {\n const description = String(item.description ?? '');\n const openIdx = description.indexOf('(');\n const closingIdx = description.indexOf(')');\n let userFullName: string;\n let userLogin = '';\n let bodyText = description;\n\n if (openIdx !== -1 && closingIdx !== -1 && closingIdx > openIdx) {\n userFullName = description.substring(0, openIdx).trim();\n userLogin = description.substring(openIdx, closingIdx + 1).trim();\n bodyText = description.substring(closingIdx + 1).trim();\n } else {\n userFullName = String(item.userName ?? '');\n }\n\n const parsed = parseSystemDescription(bodyText);\n const datetime = buildDatetimeParts(item.timeStamp, gmt, nowWall);\n return {\n // El índice garantiza unicidad aunque el backend repita `actionId`.\n id: `system-${item.actionId ?? 'x'}-${index}`,\n type: 'system',\n ...datetime,\n userFullName,\n userLogin,\n pathPart: parsed.pathPart,\n preTextHtml: highlightVideoFormats(parsed.preText),\n postTextHtml: highlightVideoFormats(parsed.postText),\n detailHtml: highlightVideoFormats(description),\n unread: !item.isRead,\n };\n}\n\n/**\n * Construye la card agrupada de oportunidades editoriales copilot a partir del\n * array `copilot` de `dashboard/notification` (NAA-4645). El back manda hasta 3,\n * por `score` desc; la primera es la destacada (siempre visible) y el resto queda\n * tras el botón \"Ver N más\". La hora de la card es el `created_at` más reciente.\n * Se excluyen las oportunidades ya pospuestas en la sesión (`snoozedIds`).\n */\nfunction buildEditorialOpportunitiesGroup(\n opportunities: DashboardNotificationsResponse['copilot'] | null | undefined,\n gmt: string | null | undefined,\n nowWall: number,\n snoozedIds: ReadonlySet<string>,\n): NotificationFeedItem | null {\n if (!opportunities || !opportunities.length) return null;\n const visible = opportunities.filter(\n (o) => o && !(o.id != null && snoozedIds.has(String(o.id))),\n );\n if (!visible.length) return null;\n const withDelivery = visible.filter((o) => readEpoch(o.created_at) != null);\n const latest = withDelivery.length\n ? withDelivery.reduce(\n (max, o) =>\n Number(readEpoch(o.created_at)) > Number(readEpoch(max.created_at)) ? o : max,\n withDelivery[0],\n )\n : null;\n const datetime = buildDatetimeParts(\n latest ? latest.created_at : Date.now(),\n gmt,\n nowWall,\n );\n return {\n id: 'editorial-group',\n type: 'editorialOpportunity',\n ...datetime,\n count: visible.length,\n children: visible.map((opportunity) => ({\n id: opportunity.id != null ? String(opportunity.id) : undefined,\n title: String(opportunity.title ?? ''),\n code: opportunity.id != null ? `CP-${opportunity.id}` : '',\n matchPercent: opportunity.score,\n topic: opportunity.topic,\n unread: !opportunity.isRead,\n })),\n unread: visible.some((o) => !o.isRead),\n };\n}\n\n/**\n * Arma el feed completo de notificaciones, ordenado por hora descendente\n * (lo más reciente primero).\n *\n * @param response Respuesta cruda de `POST /dashboard/notification`.\n * @param opts.now Instante actual (epoch ms) — por defecto `Date.now()`.\n * @param opts.gmtRedaction Offset GMT de la publicación seleccionada.\n * @param opts.snoozedCopilotIds Ids de oportunidades copilot pospuestas (se ocultan).\n */\nexport function buildNotificationsFeed(\n response: DashboardNotificationsResponse | null | undefined,\n opts: {\n now?: number;\n gmtRedaction?: string | null;\n snoozedCopilotIds?: Iterable<string>;\n } = {},\n): NotificationFeedItem[] {\n const now = opts.now ?? Date.now();\n const gmt = opts.gmtRedaction;\n const nowWall = toSiteWallClock(now, gmt);\n const snoozedIds = new Set(opts.snoozedCopilotIds ?? []);\n\n const items: NotificationFeedItem[] = [];\n\n if (response) {\n const editorial = buildEditorialOpportunitiesGroup(\n response.copilot,\n gmt,\n nowWall,\n snoozedIds,\n );\n if (editorial) items.push(editorial);\n const assigned = buildAssignedGroup(response.newsTask, gmt, nowWall);\n if (assigned) items.push(assigned);\n const pending = buildPendingGroup(response.expireTask, gmt, nowWall, now);\n if (pending) items.push(pending);\n (response.videos ?? []).forEach((video, i) => {\n items.push(buildSystemNote(video, gmt, nowWall, i));\n });\n }\n\n items.sort((a, b) => (b.sortTime || 0) - (a.sortTime || 0));\n return items;\n}\n\n/** Une el dominio de `master` (Angular) con una ruta, sin barra doble. */\nfunction joinUrl(baseUrl: string | undefined, path: string): string {\n if (!baseUrl) return path;\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\n/**\n * Construye la URL de redirección de un tema a `master` (el CMS Angular\n * desplegado), replicando la ruta interna que usa cmsmedios: el planning de la\n * publicación destino, abierto en la vista día sobre el evento.\n *\n * @param topic Tema clickeado (trae `publication`, `eventDate`, `eventId`).\n * @param masterBaseUrl Dominio de `master` (`NEXT_PUBLIC_BASE_ANGULAR`).\n * @param currentPublicationId Id de la publicación activa (fallback).\n * @returns URL absoluta a `master`, o `undefined` si no hay publicación destino.\n */\nexport function buildPlanningHref(\n topic: Pick<NotificationTopic, 'eventId' | 'eventDate' | 'publication'>,\n masterBaseUrl: string | undefined,\n currentPublicationId?: number | string,\n): string | undefined {\n const targetPub =\n topic.publication != null ? Number(topic.publication) : Number(currentPublicationId);\n if (!targetPub) return undefined;\n\n let path = `/admin/planning/${targetPub}`;\n if (topic.eventDate) {\n const params = new URLSearchParams({\n view: 'timeGridDay',\n eventDate: String(topic.eventDate),\n });\n if (topic.eventId) params.set('eventId', String(topic.eventId));\n path += `?${params.toString()}`;\n }\n return joinUrl(masterBaseUrl, path);\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport { alpha } from '@mui/material/styles';\n\nimport {\n cmsColors,\n editorialOpportunityColors,\n fontFamilies,\n notificationColors,\n radii,\n shadows,\n} from '../../theme/variables';\n\n/**\n * Estilos del centro de notificaciones (campanita del TopBar).\n * Replican el diseño del mockup \"Gestión de Noticias\" (bloque `.oe-toast`):\n * panel flotante con tarjetas por tipo, acordeones y lista de temas.\n */\nexport const NotificationsMenuStyles = {\n /** Panel flotante (modal): tarjeta independiente anclada arriba a la derecha. */\n sxPanel: {\n position: 'fixed',\n top: 60,\n right: 12,\n width: 380,\n maxWidth: 'calc(100vw - 24px)',\n maxHeight: 'calc(100vh - 84px)',\n display: 'flex',\n flexDirection: 'column',\n bgcolor: 'm3.surfaceContainer',\n border: 1,\n borderColor: 'm3.outlineVariant',\n borderRadius: 4,\n boxShadow: shadows.menuSoft,\n overflow: 'hidden',\n outline: 'none',\n } as SxProps<Theme>,\n\n /** Velo tenue del modal (permite ver el fondo; cierra al hacer clic afuera). */\n sxBackdrop: {\n bgcolor: (theme: Theme) => alpha(theme.palette.common.black, 0.04),\n } as SxProps<Theme>,\n\n /** Pulso rojo del badge de no leídas sobre la campanita. */\n sxBadgePulse: (theme: Theme) => ({\n '@keyframes notifBellPulse': {\n '0%, 100%': {\n boxShadow: `0 0 0 0 ${alpha(theme.palette.error.main, 0.6)}`,\n },\n '50%': {\n boxShadow: `0 0 0 6px ${alpha(theme.palette.error.main, 0)}`,\n },\n },\n '& .MuiBadge-badge': {\n animation: 'notifBellPulse 1.6s ease-out infinite',\n },\n }),\n\n /** Encabezado: título + botón cerrar. */\n sxHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 2,\n py: 1.5,\n } as SxProps<Theme>,\n\n sxHeaderTitle: {\n color: 'm3.onSurface',\n fontWeight: 600,\n } as SxProps<Theme>,\n\n sxCloseButton: {\n color: 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.08),\n },\n } as SxProps<Theme>,\n\n /** Contenedor scrollable de la lista de notificaciones. */\n sxScroll: {\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n px: 1.5,\n pb: 1.5,\n } as SxProps<Theme>,\n\n /** Estado vacío. */\n sxEmpty: {\n px: 2,\n py: 4,\n textAlign: 'center',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Etiqueta de fecha/hora sobre cada notificación (\"Hoy, 14:32\"). */\n sxTimestamp: {\n color: 'm3.onSurfaceVariant',\n letterSpacing: '0.02em',\n px: 0.5,\n pt: 1.5,\n pb: 0.75,\n } as SxProps<Theme>,\n\n /** Fila de notificación (tarjeta). `clickable` agrega hover y cursor. */\n sxRow: (clickable: boolean): SxProps<Theme> => ({\n display: 'grid',\n gridTemplateColumns: clickable ? '36px 1fr 20px' : '36px 1fr',\n columnGap: 1.5,\n alignItems: 'start',\n p: 1.25,\n borderRadius: 3,\n bgcolor: 'm3.surface',\n textAlign: 'left',\n width: '100%',\n border: 0,\n cursor: clickable ? 'pointer' : 'default',\n transition: 'background-color .12s',\n '&:hover': clickable\n ? { bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.06) }\n : undefined,\n }),\n\n /** Avatar cuadrado de ícono. `type` define los colores. */\n sxAvatar: (type: keyof typeof notificationColors): SxProps<Theme> => ({\n position: 'relative',\n width: 36,\n height: 36,\n borderRadius: 3,\n display: 'grid',\n placeItems: 'center',\n bgcolor: notificationColors[type].bg,\n color: notificationColors[type].on,\n '& svg': { fontSize: 20 },\n }),\n\n /** Punto rojo de \"no leído\" sobre el avatar. */\n sxUnreadDot: {\n position: 'absolute',\n top: -2,\n right: -2,\n width: 10,\n height: 10,\n borderRadius: '50%',\n bgcolor: 'error.main',\n border: 2,\n borderColor: 'm3.surfaceContainer',\n } as SxProps<Theme>,\n\n /** Cuerpo de texto de la fila. */\n sxBody: {\n minWidth: 0,\n alignSelf: 'center',\n color: 'm3.onSurface',\n lineHeight: 1.4,\n overflowWrap: 'break-word',\n wordBreak: 'break-word',\n '& b': { fontWeight: 600 },\n '& strong': { fontWeight: 600, textTransform: 'uppercase' },\n } as SxProps<Theme>,\n\n /** Subtítulo (fecha de vencimiento de la card por vencer). */\n sxSubtitle: {\n display: 'block',\n mt: 0.25,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Login del usuario (entre paréntesis, sin negrita). */\n sxUserLogin: {\n color: 'm3.onSurfaceVariant',\n fontWeight: 500,\n } as SxProps<Theme>,\n\n /** Chip monoespaciado con el path del archivo de video. */\n sxPathChip: {\n display: 'inline-block',\n fontFamily: fontFamilies.mono,\n fontSize: 12,\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.06),\n color: 'm3.onSurface',\n px: 0.75,\n py: '1px',\n borderRadius: 1.5,\n wordBreak: 'break-all',\n my: 0.25,\n lineHeight: 1.5,\n } as SxProps<Theme>,\n\n /** Chevron de acordeón (rota al abrir). */\n sxChevron: (open: boolean): SxProps<Theme> => ({\n alignSelf: 'center',\n color: 'm3.onSurfaceVariant',\n fontSize: 20,\n transition: 'transform .2s',\n transform: open ? 'rotate(180deg)' : 'none',\n }),\n\n /** Lista de temas desplegada bajo una card agrupada. */\n sxTopics: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n pt: 0.75,\n pb: 0.25,\n pl: '38px',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: '17px',\n top: 8,\n bottom: 8,\n width: '2px',\n borderRadius: radii.pill,\n bgcolor: 'm3.outlineVariant',\n },\n } as SxProps<Theme>,\n\n /** Fila de un tema individual (navegable). */\n sxTopicRow: {\n display: 'grid',\n gridTemplateColumns: '1fr 20px',\n columnGap: 1.25,\n alignItems: 'center',\n p: 1,\n borderRadius: 2.5,\n textAlign: 'left',\n width: '100%',\n border: 0,\n bgcolor: 'transparent',\n cursor: 'pointer',\n color: 'inherit',\n textDecoration: 'none',\n transition: 'background-color .12s',\n '&:hover': {\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.08),\n },\n } as SxProps<Theme>,\n\n sxTopicTitle: {\n display: 'block',\n color: 'm3.onSurface',\n fontWeight: 500,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n sxTopicMeta: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.75,\n mt: 0.25,\n color: 'm3.onSurfaceVariant',\n letterSpacing: '0.02em',\n } as SxProps<Theme>,\n\n /** Punto separador entre el código y la fecha del tema. */\n sxMetaDot: {\n width: 3,\n height: 3,\n borderRadius: '50%',\n bgcolor: 'm3.outlineVariant',\n flexShrink: 0,\n } as SxProps<Theme>,\n\n /** Fecha de vencimiento resaltada (naranja). */\n sxDue: {\n color: notificationColors.pending.on,\n fontWeight: 600,\n } as SxProps<Theme>,\n\n sxTopicChevron: {\n color: 'm3.onSurfaceVariant',\n fontSize: 20,\n justifySelf: 'end',\n } as SxProps<Theme>,\n\n // ── Card de oportunidades editoriales copilot (NAA-4837) ─────────────────\n\n /** Contenedor de la card: apila encabezado, oportunidades, toggle y acciones. */\n sxOpportunityCard: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1.25,\n p: 1.25,\n borderRadius: 3,\n bgcolor: 'm3.surface',\n width: '100%',\n } as SxProps<Theme>,\n\n /** Encabezado clickeable (icono + label + título + chevron). */\n sxOpportunityHeader: {\n display: 'grid',\n gridTemplateColumns: '36px 1fr 20px',\n columnGap: 1.5,\n alignItems: 'center',\n width: '100%',\n p: 0,\n border: 0,\n bgcolor: 'transparent',\n textAlign: 'left',\n cursor: 'pointer',\n color: 'inherit',\n font: 'inherit',\n } as SxProps<Theme>,\n\n /** Fila del label (\"OPORTUNIDAD EDITORIAL\" + contador). */\n sxOpportunityLabel: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n } as SxProps<Theme>,\n\n sxOpportunityLabelText: {\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: editorialOpportunityColors.text,\n } as SxProps<Theme>,\n\n /** Contador circular con la cantidad de oportunidades del grupo. */\n sxOpportunityCount: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 18,\n height: 18,\n px: 0.5,\n borderRadius: radii.pill,\n bgcolor: cmsColors.secondary,\n color: editorialOpportunityColors.text,\n fontSize: 11,\n fontWeight: 600,\n lineHeight: 1,\n } as SxProps<Theme>,\n\n sxOpportunityHeaderTitle: {\n display: 'block',\n mt: 0.25,\n color: 'm3.onSurface',\n fontWeight: 600,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n /**\n * Caja de una oportunidad, con barra de acento a la izquierda. `clickable`\n * la vuelve enlace al gestor de sugerencias (cursor + hover + reset de link).\n */\n sxOpportunityTopic: (top: boolean, clickable = false): SxProps<Theme> => ({\n display: 'block',\n bgcolor: editorialOpportunityColors.topicBg,\n borderLeft: '4px solid',\n borderLeftColor: top\n ? editorialOpportunityColors.accent\n : editorialOpportunityColors.topicBorder,\n borderRadius: 2.5,\n p: 1,\n color: 'inherit',\n textDecoration: 'none',\n ...(clickable\n ? {\n cursor: 'pointer',\n transition: 'filter .12s',\n '&:hover': { filter: 'brightness(0.96)' },\n }\n : {}),\n }),\n\n /** Meta de la oportunidad (\"Top · 94% Coincidencia\" / \"82% Coincidencia\"). */\n sxOpportunityMeta: (top: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: '0.04em',\n textTransform: 'uppercase',\n color: top ? editorialOpportunityColors.text : 'm3.onSurfaceVariant',\n }),\n\n sxOpportunityMetaDot: {\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Etiqueta \"Trending\" (dorado) de las oportunidades secundarias en tendencia. */\n sxOpportunityTrending: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.25,\n color: editorialOpportunityColors.trending,\n } as SxProps<Theme>,\n\n sxOpportunityTrendingIcon: {\n fontSize: 16,\n } as SxProps<Theme>,\n\n sxOpportunityTopicTitle: {\n mt: 0.5,\n color: 'm3.onSurface',\n fontWeight: 600,\n fontSize: 14,\n lineHeight: 1.35,\n overflowWrap: 'break-word',\n wordBreak: 'break-word',\n } as SxProps<Theme>,\n\n sxOpportunityCode: {\n mt: 0.5,\n fontSize: 12,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Botón punteado \"Ver N oportunidades más / Ocultar\". */\n sxOpportunityToggle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 0.5,\n width: '100%',\n p: 1,\n bgcolor: 'transparent',\n border: '1px dashed',\n borderColor: 'm3.outlineVariant',\n borderRadius: 2.5,\n cursor: 'pointer',\n color: 'm3.onSurfaceVariant',\n fontSize: 14,\n fontFamily: fontFamilies.roboto,\n transition: 'background-color .12s',\n '&:hover': {\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.06),\n },\n } as SxProps<Theme>,\n\n /** Pie: \"Recordar luego\" a la izquierda, \"Ver más\" a la derecha. */\n sxOpportunityFooter: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 0.25,\n } as SxProps<Theme>,\n\n sxOpportunityRemind: {\n bgcolor: 'transparent',\n border: 0,\n p: '4px 0',\n cursor: 'pointer',\n color: 'm3.onSurfaceVariant',\n fontSize: 14,\n fontFamily: fontFamilies.roboto,\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n\n sxOpportunitySeeMore: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n bgcolor: 'transparent',\n border: 0,\n p: '4px 0',\n cursor: 'pointer',\n color: editorialOpportunityColors.text,\n fontSize: 14,\n fontWeight: 700,\n fontFamily: fontFamilies.roboto,\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n\n sxOpportunitySeeMoreIcon: {\n fontSize: 18,\n } as SxProps<Theme>,\n} as const;\n","'use client';\n\nimport type { SvgIconComponent } from '@mui/icons-material';\nimport ArrowForwardOutlinedIcon from '@mui/icons-material/ArrowForwardOutlined';\nimport AssignmentIndOutlinedIcon from '@mui/icons-material/AssignmentIndOutlined';\nimport AutoAwesomeOutlinedIcon from '@mui/icons-material/AutoAwesomeOutlined';\nimport ChevronRightOutlinedIcon from '@mui/icons-material/ChevronRightOutlined';\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport ExpandMoreOutlinedIcon from '@mui/icons-material/ExpandMoreOutlined';\nimport MovieOutlinedIcon from '@mui/icons-material/MovieOutlined';\nimport NotificationsNoneOutlinedIcon from '@mui/icons-material/NotificationsNoneOutlined';\nimport ScheduleOutlinedIcon from '@mui/icons-material/ScheduleOutlined';\nimport TrendingUpOutlinedIcon from '@mui/icons-material/TrendingUpOutlined';\nimport Badge from '@mui/material/Badge';\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport Fade from '@mui/material/Fade';\nimport IconButton from '@mui/material/IconButton';\nimport Modal from '@mui/material/Modal';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { type MouseEvent, useMemo, useState } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { toTestId } from '../../utils/toTestId';\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport {\n buildNotificationsFeed,\n buildPlanningHref,\n type NotificationFeedItem,\n type NotificationFeedType,\n type NotificationTopic,\n} from './notificationsFeed';\nimport { NotificationsMenuStyles as S } from './NotificationsMenu.styles';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type NotificationsMenuProps = {\n /** Total de no leídas (badge de la campanita). */\n unreadCount: number;\n /** Respuesta cruda de `POST /dashboard/notification` (newsTask/expireTask/videos). */\n notificationsData?: DashboardNotificationsResponse | null;\n /** Dominio de `master` (Angular) para la redirección de los temas. */\n masterBaseUrl?: string;\n /** Id de la publicación activa (fallback de la redirección). */\n currentPublicationId?: number | string;\n /** Offset GMT de la publicación (para mostrar las fechas en zona de redacción). */\n gmtRedaction?: string | null;\n /**\n * Destino del \"Ver más\" / clic en una oportunidad copilot (página de\n * sugerencias). Lo arma el gestor: URL absoluta al deploy de sugerencias\n * (env) si estás en otro gestor → abre en pestaña nueva; ruta relativa si ya\n * estás en el gestor de sugerencias → navega en la misma. Sin valor, cae al callback.\n */\n copilotSuggestionsHref?: string;\n /** Clic en \"Ver más\" cuando no hay `copilotSuggestionsHref` (fallback). */\n onEditorialSeeMore?: () => void;\n /**\n * \"Recordar luego\" de la card de oportunidades: recibe los `opportunity_id` de\n * las oportunidades mostradas para que el gestor dispare `copilot/snooze` por\n * cada una. La card se oculta de inmediato (optimista).\n */\n onEditorialRemindLater?: (opportunityIds: string[]) => void;\n};\n\n/** Ícono de cada tipo de tarjeta. */\nconst TYPE_ICON: Record<NotificationFeedType, SvgIconComponent> = {\n assigned: AssignmentIndOutlinedIcon,\n pending: ScheduleOutlinedIcon,\n system: MovieOutlinedIcon,\n editorialOpportunity: AutoAwesomeOutlinedIcon,\n};\n\nexport function NotificationsMenu({\n unreadCount,\n notificationsData,\n masterBaseUrl,\n currentPublicationId,\n gmtRedaction,\n copilotSuggestionsHref,\n onEditorialSeeMore,\n onEditorialRemindLater,\n}: NotificationsMenuProps) {\n const { t } = useCmsTranslation();\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [expanded, setExpanded] = useState<Record<string, boolean>>({});\n // Hora de apertura del menú: se captura en el handler (no en render) para las\n // etiquetas relativas hoy/ayer, y se recalcula el feed cuando cambia.\n const [openedAt, setOpenedAt] = useState<number | null>(null);\n // Oportunidades copilot pospuestas en esta sesión (update optimista del snooze):\n // se ocultan del feed hasta que el back deje de mandarlas en el próximo fetch.\n const [snoozedIds, setSnoozedIds] = useState<ReadonlySet<string>>(new Set());\n const open = Boolean(anchorEl);\n\n const badgeContent = unreadCount > 0 ? unreadCount : undefined;\n\n const feed = useMemo(\n () =>\n buildNotificationsFeed(notificationsData, {\n now: openedAt ?? undefined,\n gmtRedaction,\n snoozedCopilotIds: snoozedIds,\n }),\n [notificationsData, gmtRedaction, openedAt, snoozedIds],\n );\n\n const openMenu = (event: MouseEvent<HTMLElement>) => {\n setOpenedAt(Date.now());\n setAnchorEl(event.currentTarget);\n };\n const close = () => setAnchorEl(null);\n const toggle = (id: string) =>\n setExpanded((prev) => ({ ...prev, [id]: !prev[id] }));\n\n /**\n * \"Recordar luego\": oculta la card al instante (optimista) y delega en el\n * gestor el snooze real (una llamada `copilot/snooze` por `opportunity_id`).\n */\n const remindOpportunitiesLater = (opportunityIds: string[]) => {\n if (opportunityIds.length) {\n setSnoozedIds((prev) => new Set([...prev, ...opportunityIds]));\n onEditorialRemindLater?.(opportunityIds);\n }\n };\n\n /**\n * \"Ver más\": si hay `copilotSuggestionsHref`, el enlace ya navega; si no,\n * dispara el callback del gestor. En ambos casos cierra el menú.\n */\n const seeMoreOpportunities = () => {\n if (!copilotSuggestionsHref) onEditorialSeeMore?.();\n close();\n };\n\n /** Etiqueta de fecha/hora de cabecera de una notificación (\"Hoy, 14:32\"). */\n const timestampLabel = (item: NotificationFeedItem): string => {\n const label = item.isToday\n ? t.notificationsMenu('today')\n : item.isYesterday\n ? t.notificationsMenu('yesterday')\n : item.date;\n if (!label) return item.time;\n return item.time ? `${label}, ${item.time}` : label;\n };\n\n return (\n <>\n <Tooltip title={t.notificationsMenu('title')}>\n <IconButton\n aria-label={t.notificationsMenu('ariaLabel')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={openMenu}\n data-testid=\"dropdown-toggle-notifications\"\n sx={TopBarStyles.sxActionIcon}>\n <Badge\n badgeContent={badgeContent}\n color=\"error\"\n data-testid=\"badge-notifications-count\"\n sx={\n [\n TopBarStyles.sxBadge,\n ...(badgeContent ? [S.sxBadgePulse] : []),\n ] as SxProps<Theme>\n }>\n <NotificationsNoneOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </Badge>\n </IconButton>\n </Tooltip>\n\n <Modal\n open={open}\n onClose={close}\n closeAfterTransition\n aria-label={t.notificationsMenu('title')}\n slotProps={{ backdrop: { sx: S.sxBackdrop } }}>\n <Fade in={open}>\n <Box data-testid=\"modal-notifications\" sx={S.sxPanel}>\n <Box sx={S.sxHeader}>\n <Typography variant=\"subtitle2\" sx={S.sxHeaderTitle}>\n {t.notificationsMenu('title')}\n </Typography>\n <IconButton\n size=\"small\"\n aria-label={t.notificationsMenu('close')}\n onClick={close}\n data-testid=\"icon-btn-notifications-close\"\n sx={S.sxCloseButton}>\n <CloseOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {feed.length === 0 ? (\n <Box sx={S.sxEmpty}>\n <Typography variant=\"body2\">\n {t.notificationsMenu('empty')}\n </Typography>\n </Box>\n ) : (\n <Box sx={S.sxScroll}>\n {feed.map((item) => (\n <Box\n key={item.id}\n data-testid={`dropdown-item-${toTestId(item.id)}`}>\n {timestampLabel(item) ? (\n <Typography component=\"div\" variant=\"caption\" sx={S.sxTimestamp}>\n {timestampLabel(item)}\n </Typography>\n ) : null}\n\n {item.type === 'editorialOpportunity' ? (\n <EditorialOpportunityCard\n item={item}\n open={!!expanded[item.id]}\n onToggle={() => toggle(item.id)}\n onRemindLater={remindOpportunitiesLater}\n onSeeMore={seeMoreOpportunities}\n seeMoreHref={copilotSuggestionsHref}\n t={t}\n />\n ) : item.type === 'system' ? (\n <SystemRow item={item} />\n ) : (\n <GroupRow\n item={item}\n open={!!expanded[item.id]}\n onToggle={() => toggle(item.id)}\n masterBaseUrl={masterBaseUrl}\n currentPublicationId={currentPublicationId}\n onNavigate={close}\n t={t}\n />\n )}\n </Box>\n ))}\n </Box>\n )}\n </Box>\n </Fade>\n </Modal>\n </>\n );\n}\n\n/**\n * Card de oportunidades editoriales copilot (NAA-4837): encabezado con contador,\n * oportunidad destacada siempre visible, secundarias desplegables, botón de\n * despliegue y acciones \"Recordar luego\" / \"Ver más\".\n */\nfunction EditorialOpportunityCard({\n item,\n open,\n onToggle,\n onRemindLater,\n onSeeMore,\n seeMoreHref,\n t,\n}: {\n item: NotificationFeedItem;\n open: boolean;\n onToggle: () => void;\n onRemindLater: (opportunityIds: string[]) => void;\n onSeeMore: () => void;\n seeMoreHref?: string;\n t: ReturnType<typeof useCmsTranslation>['t'];\n}) {\n const topics = item.children ?? [];\n const [top, ...rest] = topics;\n const count = item.count ?? topics.length;\n // Absoluta (otro gestor) → pestaña nueva; relativa (mismo gestor) → misma pestaña.\n const seeMoreExternal = !!seeMoreHref && /^https?:\\/\\//i.test(seeMoreHref);\n // Props del enlace a sugerencias (oportunidad clickeable y \"Ver más\").\n const seeMoreLinkProps = seeMoreHref\n ? {\n href: seeMoreHref,\n onClick: onSeeMore,\n ...(seeMoreExternal ? { target: '_blank', rel: 'noopener noreferrer' } : {}),\n }\n : {};\n // \"Recordar luego\" pospone TODAS las oportunidades mostradas (una llamada al\n // snooze por cada opportunity_id) y oculta la card.\n const remindLater = () =>\n onRemindLater(\n topics.map((topic) => topic.id).filter((id): id is string => !!id),\n );\n\n return (\n <Box sx={S.sxOpportunityCard}>\n {/* Encabezado clickeable: icono + label con contador + título + chevron */}\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onToggle}\n data-testid=\"toggle-opportunity-card\"\n sx={S.sxOpportunityHeader}>\n <Box sx={S.sxAvatar('editorialOpportunity')}>\n <AutoAwesomeOutlinedIcon />\n {item.unread ? <Box component=\"span\" sx={S.sxUnreadDot} /> : null}\n </Box>\n <Box sx={{ minWidth: 0 }}>\n <Box sx={S.sxOpportunityLabel}>\n <Typography component=\"span\" variant=\"caption\" sx={S.sxOpportunityLabelText}>\n {t.notificationsMenu('editorialOpportunityLabel')}\n </Typography>\n <Box component=\"span\" sx={S.sxOpportunityCount}>\n {count}\n </Box>\n </Box>\n <Typography component=\"span\" variant=\"body2\" sx={S.sxOpportunityHeaderTitle}>\n {t.notificationsMenu('editorialOpportunityText', { count })}\n </Typography>\n </Box>\n <ExpandMoreOutlinedIcon sx={S.sxChevron(open)} />\n </Box>\n\n {/* Oportunidad destacada: siempre visible (clickeable → gestor de sugerencias) */}\n {top ? (\n <Box\n component={seeMoreHref ? 'a' : 'div'}\n {...seeMoreLinkProps}\n data-testid={`link-opportunity-${toTestId(top.id || top.code || 'top')}`}\n sx={S.sxOpportunityTopic(true, !!seeMoreHref)}>\n <Typography component=\"div\" variant=\"caption\" sx={S.sxOpportunityMeta(true)}>\n <TrendingUpOutlinedIcon sx={S.sxOpportunityTrendingIcon} />\n <span>\n {t.notificationsMenu('editorialOpportunityTop')} · {top.matchPercent}%{' '}\n {t.notificationsMenu('editorialOpportunityMatch')}\n </span>\n </Typography>\n <Box sx={S.sxOpportunityTopicTitle}>{top.title}</Box>\n {top.topic ? <Box sx={S.sxOpportunityCode}>{top.topic}</Box> : null}\n </Box>\n ) : null}\n\n {/* Oportunidades secundarias: visibles al desplegar */}\n <Collapse in={open} unmountOnExit>\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n {rest.map((topic, i) => (\n <Box\n key={`${item.id}-${i + 1}`}\n component={seeMoreHref ? 'a' : 'div'}\n {...seeMoreLinkProps}\n data-testid={`link-opportunity-${toTestId(topic.id || topic.code || String(i + 1))}`}\n sx={S.sxOpportunityTopic(false, !!seeMoreHref)}>\n <Typography component=\"div\" variant=\"caption\" sx={S.sxOpportunityMeta(false)}>\n <span>\n {topic.matchPercent}% {t.notificationsMenu('editorialOpportunityMatch')}\n </span>\n </Typography>\n <Box sx={S.sxOpportunityTopicTitle}>{topic.title}</Box>\n {topic.topic ? <Box sx={S.sxOpportunityCode}>{topic.topic}</Box> : null}\n </Box>\n ))}\n </Box>\n </Collapse>\n\n {/* Botón punteado: ver N oportunidades más / ocultar */}\n {topics.length > 1 ? (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onToggle}\n data-testid=\"toggle-opportunity-topics\"\n sx={S.sxOpportunityToggle}>\n {open\n ? t.notificationsMenu('editorialOpportunityHide')\n : t.notificationsMenu('editorialOpportunitySeeMoreOpportunities', {\n count: topics.length - 1,\n })}\n <ExpandMoreOutlinedIcon sx={S.sxChevron(open)} />\n </Box>\n ) : null}\n\n {/* Acciones: recordar luego (snooze) y ver más (sugerencias copilot) */}\n <Box sx={S.sxOpportunityFooter}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={remindLater}\n data-testid=\"btn-opportunity-remind-later\"\n sx={S.sxOpportunityRemind}>\n {t.notificationsMenu('editorialOpportunityRemindLater')}\n </Box>\n <Box\n component={seeMoreHref ? 'a' : 'button'}\n {...(seeMoreHref\n ? {\n href: seeMoreHref,\n onClick: onSeeMore,\n ...(seeMoreExternal\n ? { target: '_blank', rel: 'noopener noreferrer' }\n : {}),\n }\n : { type: 'button', onClick: onSeeMore })}\n data-testid=\"btn-opportunity-see-more\"\n sx={S.sxOpportunitySeeMore}>\n {t.notificationsMenu('editorialOpportunitySeeMore')}\n <ArrowForwardOutlinedIcon sx={S.sxOpportunitySeeMoreIcon} />\n </Box>\n </Box>\n </Box>\n );\n}\n\n/** Notificación del sistema (video): icono verde + texto con formatos resaltados. */\nfunction SystemRow({ item }: { item: NotificationFeedItem }) {\n const hasStructured =\n item.userFullName || item.userLogin || item.preTextHtml || item.pathPart || item.postTextHtml;\n return (\n <Box sx={S.sxRow(false)}>\n <Box sx={S.sxAvatar('system')}>\n <MovieOutlinedIcon />\n {item.unread ? <Box component=\"span\" sx={S.sxUnreadDot} /> : null}\n </Box>\n <Typography component=\"div\" variant=\"body2\" sx={S.sxBody}>\n {hasStructured ? (\n <>\n {item.userFullName ? <b>{item.userFullName}</b> : null}\n {item.userLogin ? (\n <Box component=\"span\" sx={S.sxUserLogin}>\n {' '}\n {item.userLogin}\n </Box>\n ) : null}\n {(item.userFullName || item.userLogin) &&\n (item.preTextHtml || item.pathPart || item.postTextHtml) ? (\n <span> — </span>\n ) : null}\n {item.preTextHtml ? (\n <Box component=\"span\" dangerouslySetInnerHTML={{ __html: item.preTextHtml }} />\n ) : null}\n {item.pathPart ? (\n <Box component=\"span\" sx={S.sxPathChip}>\n {item.pathPart}\n </Box>\n ) : null}\n {item.postTextHtml ? (\n <Box component=\"span\" dangerouslySetInnerHTML={{ __html: item.postTextHtml }} />\n ) : null}\n </>\n ) : (\n <Box component=\"span\" dangerouslySetInnerHTML={{ __html: item.detailHtml ?? '' }} />\n )}\n </Typography>\n </Box>\n );\n}\n\n/** Tarjeta agrupada (temas asignados / por vencer) con acordeón de temas. */\nfunction GroupRow({\n item,\n open,\n onToggle,\n masterBaseUrl,\n currentPublicationId,\n onNavigate,\n t,\n}: {\n item: NotificationFeedItem;\n open: boolean;\n onToggle: () => void;\n masterBaseUrl?: string;\n currentPublicationId?: number | string;\n onNavigate: () => void;\n t: ReturnType<typeof useCmsTranslation>['t'];\n}) {\n const Icon = TYPE_ICON[item.type];\n const before =\n item.type === 'assigned'\n ? t.notificationsMenu('assignedBefore')\n : t.notificationsMenu('pendingBefore');\n const after =\n item.type === 'assigned'\n ? t.notificationsMenu('assignedAfter')\n : t.notificationsMenu('pendingAfter');\n\n return (\n <>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onToggle}\n data-testid={`toggle-notification-group-${toTestId(item.type)}`}\n data-action={item.type}\n sx={S.sxRow(true)}>\n <Box sx={S.sxAvatar(item.type)}>\n <Icon />\n {item.unread ? <Box component=\"span\" sx={S.sxUnreadDot} /> : null}\n </Box>\n <Typography component=\"div\" variant=\"body2\" sx={S.sxBody}>\n {before} <b>{item.count}</b> {after}\n {item.expirationDatetime ? (\n <Typography component=\"span\" variant=\"caption\" sx={S.sxSubtitle}>\n {item.expirationDatetime}\n </Typography>\n ) : null}\n </Typography>\n <ExpandMoreOutlinedIcon sx={S.sxChevron(open)} />\n </Box>\n\n <Collapse in={open} unmountOnExit>\n <Box sx={S.sxTopics}>\n {(item.children ?? []).map((topic, i) => (\n <TopicRow\n key={`${item.id}-${i}`}\n topic={topic}\n type={item.type}\n masterBaseUrl={masterBaseUrl}\n currentPublicationId={currentPublicationId}\n onNavigate={onNavigate}\n t={t}\n />\n ))}\n </Box>\n </Collapse>\n </>\n );\n}\n\n/** Tema individual navegable: redirige al planning en `master`. */\nfunction TopicRow({\n topic,\n type,\n masterBaseUrl,\n currentPublicationId,\n onNavigate,\n t,\n}: {\n topic: NotificationTopic;\n type: NotificationFeedType;\n masterBaseUrl?: string;\n currentPublicationId?: number | string;\n onNavigate: () => void;\n t: ReturnType<typeof useCmsTranslation>['t'];\n}) {\n const href = buildPlanningHref(topic, masterBaseUrl, currentPublicationId);\n\n const assignedLabel = topic.assignedToday\n ? t.notificationsMenu('assignedToday')\n : topic.assignedYesterday\n ? t.notificationsMenu('assignedYesterday')\n : `${t.notificationsMenu('assignedOn')} ${topic.assignedDate ?? ''}`;\n\n return (\n <Box\n component={href ? 'a' : 'div'}\n href={href}\n target={href ? '_blank' : undefined}\n rel={href ? 'noopener noreferrer' : undefined}\n onClick={href ? onNavigate : undefined}\n data-testid={`link-topic-${toTestId(topic.code)}`}\n sx={S.sxTopicRow}>\n <Box sx={{ minWidth: 0 }}>\n <Typography component=\"span\" variant=\"body2\" sx={S.sxTopicTitle}>\n {topic.title}\n </Typography>\n <Typography component=\"span\" variant=\"caption\" sx={S.sxTopicMeta}>\n <span>{topic.code}</span>\n <Box component=\"span\" sx={S.sxMetaDot} />\n {type === 'pending' ? (\n <Box component=\"span\" sx={S.sxDue}>\n {t.notificationsMenu('expires')} {topic.dueDate} · {topic.dueTime}\n </Box>\n ) : (\n <span>{assignedLabel}</span>\n )}\n </Typography>\n </Box>\n <ChevronRightOutlinedIcon sx={S.sxTopicChevron} />\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows } from '../../theme/variables';\n\nexport const SimpleDropdownStyles = {\n sxTriggerWrap: {\n display: 'inline-flex',\n } as SxProps<Theme>,\n\n /**\n * Disparador por defecto (botón de ícono, p. ej. `more_vert`).\n * En reposo el ícono es gris; en hover/activo el fondo es `iconButtonHoverBg`\n * y el ícono pasa a `controlText` (#000).\n */\n sxIconTrigger: (open: boolean): SxProps<Theme> => ({\n borderRadius: '30px',\n color: open ? cmsColors.controlText : cmsColors.iconButtonIcon,\n bgcolor: open ? cmsColors.iconButtonHoverBg : 'transparent',\n '& .MuiSvgIcon-root': { fontSize: 22 },\n '&:hover': {\n bgcolor: cmsColors.iconButtonHoverBg,\n color: cmsColors.controlText,\n },\n }),\n\n sxMenuPaper: (minWidth: number | string): SxProps<Theme> => ({\n mt: 1,\n p: 1,\n minWidth,\n borderRadius: radii.lg,\n bgcolor: cmsColors.menuSurface,\n border: 'none',\n boxShadow: shadows.menuDropdown,\n }),\n\n sxList: {\n p: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n } as SxProps<Theme>,\n\n sxGrid: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '2px',\n } as SxProps<Theme>,\n\n sxItem: (selected: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n px: '12px',\n py: '10px',\n borderRadius: radii.md,\n color: cmsColors.textStrong,\n whiteSpace: 'normal',\n bgcolor: selected ? cmsColors.menuItemActive : 'transparent',\n '&:hover': {\n bgcolor: cmsColors.menuItemActive,\n },\n // Opción activa/hover: fondo `menuItemActive` (#E1E2EB).\n '&.Mui-selected': {\n bgcolor: cmsColors.menuItemActive,\n '&:hover': { bgcolor: cmsColors.menuItemActive },\n },\n }),\n\n sxIcon: {\n minWidth: 0,\n mt: '2px',\n color: 'm3.onSurfaceVariant',\n display: 'inline-flex',\n '& .MuiSvgIcon-root': { fontSize: 20 },\n } as SxProps<Theme>,\n\n sxItemText: {\n display: 'flex',\n flexDirection: 'column',\n minWidth: 0,\n } as SxProps<Theme>,\n\n sxLabel: (hasDescription: boolean): SxProps<Theme> => ({\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: hasDescription ? 600 : 500,\n lineHeight: '20px',\n color: cmsColors.textStrong,\n }),\n\n sxDescription: {\n fontSize: 12,\n fontWeight: 400,\n lineHeight: '16px',\n color: 'm3.onSurfaceVariant',\n mt: '2px',\n } as SxProps<Theme>,\n\n sxSubItem: {\n pl: '44px',\n py: '8px',\n fontSize: 13,\n color: 'm3.onSurface',\n borderRadius: radii.md,\n } as SxProps<Theme>,\n\n sxFooter: {\n px: '12px',\n py: 1,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { Fragment, useMemo, useState } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\nimport { SimpleDropdownStyles } from './SimpleDropdown.styles';\nimport type { DropdownOption } from './types';\n\ntype MenuOrigin = {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n};\n\nexport type SimpleDropdownProps = {\n /** Ítems del menú. */\n options: DropdownOption[];\n /**\n * Disparador del menú. Puede ser un nodo o una función que recibe el estado\n * de apertura (útil para cambiar el ícono). Solo se usa en modo no controlado.\n * Si no se pasa, se usa un botón de ícono por defecto (`triggerIcon`).\n */\n trigger?: ReactNode | ((state: { open: boolean }) => ReactNode);\n /**\n * Ícono del disparador por defecto (cuando no se pasa `trigger`).\n * Por defecto `more_vert`. El disparador del SimpleDropdown es siempre un ícono.\n */\n triggerIcon?: ReactNode;\n /** Número de columnas del menú. Por defecto `1`. */\n columns?: 1 | 2;\n /** Contenido extra al pie del menú (p. ej. un toggle). */\n footer?: ReactNode;\n /** Ancho mínimo del panel. Por defecto `220`. */\n minWidth?: number | string;\n anchorOrigin?: MenuOrigin;\n transformOrigin?: MenuOrigin;\n /** Cierra el menú al hacer clic en un ítem. Por defecto `true`. */\n closeOnSelect?: boolean;\n /** Modo controlado: elemento ancla del menú. */\n anchorEl?: HTMLElement | null;\n /** Modo controlado: si el menú está abierto. */\n open?: boolean;\n /** Modo controlado: callback de cierre. */\n onClose?: () => void;\n /** Valor para `data-testid` del panel. */\n testId?: string;\n};\n\n/**\n * Menú desplegable genérico y presentacional. Renderiza una lista de opciones\n * recibidas por props y ejecuta el `onClick` de cada una. Soporta una o dos\n * columnas, sub-ítems expandibles, separadores y un pie de menú opcional.\n *\n * Funciona en dos modos:\n * - No controlado: se le pasa `trigger` y gestiona su propio estado de apertura.\n * - Controlado: se le pasan `open`, `anchorEl` y `onClose` (p. ej. desde\n * `BtnDropdown`).\n */\nexport function SimpleDropdown({\n options,\n trigger,\n triggerIcon,\n columns = 1,\n footer,\n minWidth = 220,\n anchorOrigin = { vertical: 'bottom', horizontal: 'right' },\n transformOrigin = { vertical: 'top', horizontal: 'right' },\n closeOnSelect = true,\n anchorEl: controlledAnchorEl,\n open: controlledOpen,\n onClose,\n testId,\n}: SimpleDropdownProps) {\n const isControlled = controlledOpen !== undefined;\n const [internalAnchor, setInternalAnchor] = useState<HTMLElement | null>(\n null,\n );\n const [expandedKey, setExpandedKey] = useState<string | null>(null);\n\n const anchorEl = isControlled ? controlledAnchorEl ?? null : internalAnchor;\n const open = isControlled ? Boolean(controlledOpen) : Boolean(internalAnchor);\n\n /**\n * Cierra el menú según el modo (controlado o no) y limpia la expansión.\n * @returns void\n */\n const handleClose = () => {\n if (isControlled) onClose?.();\n else setInternalAnchor(null);\n setExpandedKey(null);\n };\n\n /**\n * Abre el menú anclándolo al disparador (solo en modo no controlado).\n * @param event - Evento de clic sobre el disparador.\n * @returns void\n */\n const handleTriggerClick = (event: MouseEvent<HTMLElement>) => {\n setInternalAnchor(event.currentTarget);\n };\n\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n\n /**\n * Maneja el clic sobre un ítem: expande sub-ítems o ejecuta su acción.\n * @param option - Ítem clickeado.\n * @param key - Clave única del ítem.\n * @returns void\n */\n const handleItemClick = (option: DropdownOption, key: string) => {\n if (option.disabled) return;\n if (option.subItems?.length) {\n setExpandedKey((current) => (current === key ? null : key));\n return;\n }\n option.onClick?.(option);\n if (closeOnSelect) handleClose();\n };\n\n /**\n * Renderiza un ítem del menú (con su ícono, sub-ítems y separador superior).\n * @param option - Ítem a renderizar.\n * @param index - Posición del ítem en la lista visible.\n * @returns Nodo del ítem.\n */\n const renderOption = (option: DropdownOption, index: number) => {\n const key = option.id ?? String(index);\n const isExpanded = expandedKey === key;\n\n return (\n <Fragment key={key}>\n {option.hasTopLine ? <Divider sx={{ my: 0.5 }} /> : null}\n <MenuItem\n disabled={option.disabled}\n selected={option.selected}\n onClick={() => handleItemClick(option, key)}\n data-testid={option.testId}\n sx={SimpleDropdownStyles.sxItem(Boolean(option.selected))}>\n {option.icon ? (\n <ListItemIcon sx={SimpleDropdownStyles.sxIcon}>\n {option.icon}\n </ListItemIcon>\n ) : null}\n <Box sx={SimpleDropdownStyles.sxItemText}>\n <Typography\n component=\"span\"\n sx={SimpleDropdownStyles.sxLabel(Boolean(option.description))}>\n {option.label}\n </Typography>\n {option.description ? (\n <Typography\n component=\"span\"\n sx={SimpleDropdownStyles.sxDescription}>\n {option.description}\n </Typography>\n ) : null}\n </Box>\n </MenuItem>\n {isExpanded\n ? option.subItems\n ?.filter((subItem) => subItem.show !== false)\n .map((subItem, subIndex) => (\n <MenuItem\n key={`${key}-${subItem.id ?? subIndex}`}\n disabled={subItem.disabled}\n data-testid={subItem.testId}\n onClick={() => {\n if (subItem.disabled) return;\n subItem.onClick?.(subItem);\n if (closeOnSelect) handleClose();\n }}\n sx={SimpleDropdownStyles.sxSubItem}>\n {subItem.label}\n </MenuItem>\n ))\n : null}\n </Fragment>\n );\n };\n\n const defaultTrigger = (\n <IconButton\n aria-haspopup=\"true\"\n sx={SimpleDropdownStyles.sxIconTrigger(open)}>\n {triggerIcon ?? <MoreVertIcon />}\n </IconButton>\n );\n const renderedTrigger =\n typeof trigger === 'function'\n ? trigger({ open })\n : (trigger ?? defaultTrigger);\n\n return (\n <>\n {!isControlled && renderedTrigger ? (\n <Box\n component=\"span\"\n onClick={handleTriggerClick}\n sx={SimpleDropdownStyles.sxTriggerWrap}>\n {renderedTrigger}\n </Box>\n ) : null}\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{\n paper: { sx: SimpleDropdownStyles.sxMenuPaper(minWidth) },\n list: {\n sx: SimpleDropdownStyles.sxList,\n // MUI no tipa atributos data-* en el slot list; cast puntual.\n ...(testId ? ({ 'data-testid': testId } as object) : {}),\n },\n }}>\n {columns === 2 ? (\n <Box sx={SimpleDropdownStyles.sxGrid}>\n {visibleOptions.map((option, index) => renderOption(option, index))}\n </Box>\n ) : (\n visibleOptions.map((option, index) => renderOption(option, index))\n )}\n {footer ? <Divider sx={{ my: 0.5 }} /> : null}\n {footer ? <Box sx={SimpleDropdownStyles.sxFooter}>{footer}</Box> : null}\n </Menu>\n </>\n );\n}\n","import type { PreviewMenuMessageKey } from '../../i18n';\n\n/**\n * Formato de previsualización (Desktop / Mobile / Tablet…). En el CMS legacy la\n * lista es dinámica (`POST /news/previewFormats`); acá se reciben por props.\n */\nexport type PreviewFormat = {\n /** Identificador estable; lo recibe `onSelect` al hacer clic. */\n id: string;\n /** Clave i18n del namespace `previewMenu` (cuando el texto es conocido). */\n labelKey?: PreviewMenuMessageKey;\n /** Texto ya resuelto (cuando el nombre viene dinámico del backend). */\n label?: string;\n /**\n * Ruta de preview de la publicación (campo `r` del form), p. ej.\n * `/sites/<sitio>/index.html`. Viene de `POST /news/previewFormats`. Si está\n * presente (con sesión), el clic redirige al admin viejo; si no, usa `onSelect`.\n */\n path?: string;\n /** QueryString del dispositivo (de `POST /news/previewFormats`). */\n queryString?: string;\n /** Protocolo del preview (`'https'` por defecto). */\n protocol?: string;\n};\n\n/**\n * Formatos por defecto con la ruta EXACTA de cmsmedios. El redirect (form POST\n * al CMS, como Ayuda) arma el campo `r` con `submitLegacyAdminPage`:\n * - Desktop → `r = /index.html`\n * - Mobile → `r = /preview/mobile.html?path=/index.html`\n * - Tablet → `r = /preview/tablet.html?path=/index.html`\n *\n * `path` es la ruta de la publicación (`/index.html` para la principal). El\n * `queryString` del device, al contener `/`, dispara la rama \"redirect\" de\n * cmsmedios (`<queryString>?path=<path>`). El gestor puede sobrescribir estos\n * formatos con los de `POST /news/previewFormats` por publicación.\n */\nexport const DEFAULT_PREVIEW_FORMATS: PreviewFormat[] = [\n { id: 'desktop', labelKey: 'desktop', path: '/index.html' },\n {\n id: 'mobile',\n labelKey: 'mobile',\n path: '/index.html',\n queryString: '/preview/mobile.html',\n },\n {\n id: 'tablet',\n labelKey: 'tablet',\n path: '/index.html',\n queryString: '/preview/tablet.html',\n },\n];\n","'use client';\n\nimport DevicesOtherOutlinedIcon from '@mui/icons-material/DevicesOtherOutlined';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport { useMemo } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport {\n submitLegacyAdminPage,\n type LegacyAdminSession,\n} from '../../utils/legacy-admin';\nimport { SimpleDropdown } from '../dropdowns/SimpleDropdown';\nimport type { DropdownOption } from '../dropdowns/types';\nimport {\n DEFAULT_PREVIEW_FORMATS,\n type PreviewFormat,\n} from './previewMenu.config';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type PreviewMenuProps = {\n /** Formatos de preview. Por defecto, Desktop / Mobile / Tablet. */\n formats?: PreviewFormat[];\n /** Origen del CMS (JSP) para el redirect al admin viejo. */\n cmsBaseUrl?: string;\n /** Sesión para el form POST del redirect (token, sitio, etc.). */\n legacySession?: LegacyAdminSession;\n /**\n * Punto de integración: se invoca con el `id` del formato cuando no se puede\n * redirigir directo (falta `path`/sesión). El gestor arma la URL y redirige.\n */\n onSelect?: (formatId: string) => void;\n};\n\n/**\n * Menú desplegable del botón de previsualización (icono de dispositivos) del\n * header. Usa el `SimpleDropdown` de la lib. Igual que en cmsmedios, solo se\n * renderiza si hay al menos un formato disponible.\n */\nexport function PreviewMenu({\n formats = DEFAULT_PREVIEW_FORMATS,\n cmsBaseUrl,\n legacySession,\n onSelect,\n}: PreviewMenuProps) {\n const { t } = useCmsTranslation();\n const title = t.topBar('preview');\n\n const options = useMemo<DropdownOption[]>(\n () =>\n formats.map((format) => ({\n id: format.id,\n label: format.labelKey ? t.previewMenu(format.labelKey) : format.label,\n testId: `dropdown-item-preview-${format.id}`,\n onClick: () => {\n // Con sesión y la ruta del formato, redirige al CMS con el form POST\n // (igual que Ayuda). `submitLegacyAdminPage` arma el `r` exacto de\n // cmsmedios: con queryString que contiene `/` → `<qs>?path=<path>`.\n if (cmsBaseUrl && legacySession && format.path) {\n submitLegacyAdminPage({\n cmsBaseUrl,\n path: format.path,\n session: legacySession,\n device: {\n protocol: format.protocol,\n queryString: format.queryString,\n },\n });\n return;\n }\n onSelect?.(format.id);\n },\n })),\n [formats, cmsBaseUrl, legacySession, onSelect, t],\n );\n\n if (formats.length === 0) return null;\n\n return (\n <SimpleDropdown\n options={options}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n testId=\"dropdown-menu-preview\"\n trigger={({ open }) => (\n <Tooltip title={title}>\n <IconButton\n aria-label={title}\n aria-haspopup=\"true\"\n aria-expanded={open}\n data-testid=\"dropdown-toggle-preview\"\n sx={TopBarStyles.sxActionIcon}>\n <DevicesOtherOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n )}\n />\n );\n}\n","const DEFAULT_CMS_ORIGIN = 'https://dev.cms-medios.com';\n\nexport function resolveCmsOrigin(cmsOrigin?: string): string {\n const base = cmsOrigin?.trim();\n if (!base) return DEFAULT_CMS_ORIGIN;\n return base.replace(/\\/$/, '');\n}\n\nexport function resolveCmsAssetUrl(path: string, cmsOrigin?: string): string {\n if (!path) return '';\n if (path.startsWith('http://') || path.startsWith('https://')) return path;\n const normalized = path.startsWith('/') ? path : `/${path}`;\n return `${resolveCmsOrigin(cmsOrigin)}${normalized}`;\n}\n","import { resolveCmsAssetUrl } from './cms-asset';\nimport type { ProfileGetResponse } from '../types/profile';\n\nconst NO_PICTURE = 'noPicture';\nconst DEFAULT_FALLBACK_AVATAR = '/topbar_profile.png';\n\nexport type ProfileAvatarOptions = {\n cmsOrigin?: string;\n fallbackAvatar?: string;\n};\n\nexport function getProfileAvatarSrc(\n profile: ProfileGetResponse,\n options?: ProfileAvatarOptions,\n): string {\n const { image } = profile;\n const fallback = options?.fallbackAvatar ?? DEFAULT_FALLBACK_AVATAR;\n if (!image || image === NO_PICTURE) return fallback;\n return resolveCmsAssetUrl(image, options?.cmsOrigin);\n}\n\nexport function getProfileDisplayName(profile: ProfileGetResponse): string {\n if (profile.fullName?.trim()) return profile.fullName.trim();\n const parts = [profile.firstName, profile.lastName].filter(Boolean);\n if (parts.length > 0) return parts.join(' ');\n return profile.userName;\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors } from '../../theme/variables';\n\n/** Proporción del ícono fallback respecto al diámetro del avatar (≈ 16/27). */\nconst ICON_RATIO = 0.58;\n\nexport const UserAvatarStyles = {\n /**\n * Avatar circular. Cuando no hay foto, el fondo secundario y el ícono\n * `PersonOutlined` quedan visibles (mismo look que la tabla del gestor).\n */\n sxAvatar: (size: number, clickable: boolean): SxProps<Theme> => ({\n width: size,\n height: size,\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n border: '1px solid',\n borderColor: cmsColors.border,\n cursor: clickable ? 'pointer' : 'default',\n }),\n\n /** Ícono fallback (persona) escalado al tamaño del avatar. */\n sxIcon: (size: number): SxProps<Theme> => ({\n fontSize: Math.round(size * ICON_RATIO),\n color: cmsColors.onSecondaryContainer,\n }),\n};\n","'use client';\n\nimport { createContext, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\n/**\n * Estado compartido de la foto del usuario logueado.\n *\n * Es el equivalente React del `updateImageProfile` (BehaviorSubject) del CMS\n * Angular legacy: cuando el usuario cambia su foto de perfil, la pantalla de\n * edición llama a `setPhoto(...)` y todos los avatares marcados como\n * `isCurrentUser` se actualizan al instante, sin recargar ni hacer\n * prop-drilling.\n */\nexport interface CurrentUserPhotoContextValue {\n /** Foto actual del usuario logueado: ruta/URL, '' o 'noPicture'. `null` = sin valor todavía. */\n photo: string | null;\n /** Notifica una foto nueva (o '' / 'noPicture' al borrarla). */\n setPhoto: (photo: string | null) => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CurrentUserPhotoContext =\n createContext<CurrentUserPhotoContextValue | null>(null);\n\nexport interface CurrentUserPhotoProviderProps {\n /** Foto inicial del usuario logueado (p. ej. `profile.image`). */\n initialPhoto?: string | null;\n children: ReactNode;\n}\n\n/**\n * Provider de la foto del usuario logueado. Montarlo por encima de los avatares\n * que representan al usuario actual (típicamente en el `AppShell` o el layout de\n * la cuenta), sembrado con `profile.image`.\n */\nexport function CurrentUserPhotoProvider({\n initialPhoto = null,\n children,\n}: CurrentUserPhotoProviderProps) {\n const [photo, setPhoto] = useState<string | null>(initialPhoto);\n // Si el perfil se recarga del servidor con otra foto, resincronizamos el\n // estado ajustándolo en render (patrón recomendado por React, sin useEffect).\n const [seed, setSeed] = useState<string | null>(initialPhoto);\n if (seed !== initialPhoto) {\n setSeed(initialPhoto);\n setPhoto(initialPhoto);\n }\n\n const value = useMemo<CurrentUserPhotoContextValue>(\n () => ({ photo, setPhoto }),\n [photo],\n );\n\n return (\n <CurrentUserPhotoContext.Provider value={value}>\n {children}\n </CurrentUserPhotoContext.Provider>\n );\n}\n","'use client';\n\nimport { useContext } from 'react';\n\nimport {\n CurrentUserPhotoContext,\n type CurrentUserPhotoContextValue,\n} from './CurrentUserPhotoProvider';\n\n/**\n * Acceso al estado compartido de la foto del usuario logueado.\n *\n * Devuelve `null` si no hay provider montado: así `UserAvatar` y la pantalla de\n * perfil funcionan también sin el provider (caso tabla de usuarios, donde cada\n * avatar es otro usuario y no necesita actualización en vivo).\n */\nexport function useCurrentUserPhoto(): CurrentUserPhotoContextValue | null {\n return useContext(CurrentUserPhotoContext);\n}\n","'use client';\n\nimport PersonOutlinedIcon from '@mui/icons-material/PersonOutlined';\nimport Avatar from '@mui/material/Avatar';\nimport Tooltip from '@mui/material/Tooltip';\nimport { useMemo } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { resolveCmsAssetUrl } from '../../utils/cms-asset';\nimport { UserAvatarStyles } from './UserAvatar.styles';\nimport { useCurrentUserPhoto } from './useCurrentUserPhoto';\n\n/** Valor que el backend usa para \"sin foto\" (igual que en cmsmedios). */\nconst NO_PICTURE = 'noPicture';\n\nexport type UserAvatarProps = {\n /**\n * Foto del usuario: ruta relativa, URL absoluta, `''` o `'noPicture'`\n * (misma forma que el campo `photo` en cmsmedios). Si falta o es `'noPicture'`,\n * se muestra el ícono de persona sobre fondo secundario.\n */\n photo?: string | null;\n /** Nombre legible del usuario (campo `description` en cmsmedios). Tooltip + alt. */\n description?: string;\n /** Login del usuario (campo `username`). Fallback del nombre. */\n username?: string;\n /** Diámetro del avatar en px. Por defecto 32. */\n size?: number;\n /** Muestra el tooltip con el nombre al pasar el mouse. Por defecto `true`. */\n showTooltip?: boolean;\n /** Origen del CMS para resolver rutas relativas de la foto. */\n cmsOrigin?: string;\n /**\n * `crossOrigin` del `<img>`. Sin valor por defecto (lo más seguro para mostrar).\n * El `TopBar` de la lib usa `'anonymous'`; pasarlo si el CMS lo requiere.\n */\n crossOrigin?: 'anonymous' | 'use-credentials';\n /**\n * Marca este avatar como el del usuario logueado: así reacciona al cambio de\n * foto de perfil emitido por `CurrentUserPhotoProvider` (equivalente al\n * `updateImageProfile` del Angular legacy). Sin provider, usa la prop `photo`.\n */\n isCurrentUser?: boolean;\n /** Acción al hacer clic. Si se define, el avatar muestra cursor de puntero. */\n onClick?: () => void;\n /** Base para el `data-testid` (`avatar-<testId>`). */\n testId?: string;\n};\n\n/**\n * Avatar de usuario compartible: muestra la foto del usuario y, si no tiene,\n * el ícono `PersonOutlined` sobre fondo secundario. Incluye tooltip con el\n * nombre y textos traducidos (es/en/pt). Reacciona al cambio de la prop `photo`;\n * para el usuario logueado, reacciona además al `CurrentUserPhotoProvider`.\n */\nexport function UserAvatar({\n photo,\n description,\n username,\n size = 32,\n showTooltip = true,\n cmsOrigin,\n crossOrigin,\n isCurrentUser = false,\n onClick,\n testId,\n}: UserAvatarProps) {\n const { t } = useCmsTranslation();\n const currentUserPhoto = useCurrentUserPhoto();\n\n // Para el usuario logueado, si hay provider la foto la manda el provider\n // (se actualiza al cambiarla en el perfil); si no, usamos la prop.\n const effectivePhoto =\n isCurrentUser && currentUserPhoto ? currentUserPhoto.photo : photo;\n\n const src = useMemo(() => {\n if (!effectivePhoto || effectivePhoto === NO_PICTURE) return '';\n return resolveCmsAssetUrl(effectivePhoto, cmsOrigin);\n }, [effectivePhoto, cmsOrigin]);\n\n const name = description?.trim() || username?.trim() || '';\n const tooltipText = name || t.userAvatar('unknownUser');\n const altText = name || t.userAvatar('alt');\n\n const avatar = (\n <Avatar\n src={src || undefined}\n alt={altText}\n onClick={onClick}\n data-testid={testId ? `avatar-${testId}` : undefined}\n slotProps={crossOrigin ? { img: { crossOrigin } } : undefined}\n sx={UserAvatarStyles.sxAvatar(size, Boolean(onClick))}>\n <PersonOutlinedIcon sx={UserAvatarStyles.sxIcon(size)} />\n </Avatar>\n );\n\n if (!showTooltip) return avatar;\n\n return (\n <Tooltip title={tooltipText} arrow>\n {avatar}\n </Tooltip>\n );\n}\n","'use client';\n\nimport EditOutlinedIcon from '@mui/icons-material/EditOutlined';\nimport LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';\nimport PersonOutlinedIcon from '@mui/icons-material/PersonOutlined';\nimport type { SvgIconComponent } from '@mui/icons-material';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { useMemo, useState } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport type { ProfileMenuMessageKey } from '../../i18n';\nimport { cmsColors } from '../../theme/variables';\nimport type { ProfileGetResponse } from '../../types/profile';\nimport {\n getProfileDisplayName,\n type ProfileAvatarOptions,\n} from '../../utils/profile-avatar';\nimport { toTestId } from '../../utils/toTestId';\nimport { UserAvatar } from '../user-avatar/UserAvatar';\nimport { TopBarStyles } from './TopBar.styles';\n\n/**\n * Rutas del CMS Angular legacy (las mismas para todos los gestores). El dominio\n * base lo inyecta el gestor con la prop `legacyBaseUrl` (dato de entorno).\n */\nconst LEGACY_PROFILE_PATH = '/admin/user_profile/user-settings';\nconst LEGACY_WEBMASTER_PATH = '/system/login';\n\n/** Une el dominio base del Angular con una ruta, sin doble barra. */\nfunction joinLegacyUrl(baseUrl: string | undefined, path: string): string {\n if (!baseUrl) return path;\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\ntype ProfileMenuItem = {\n id: string;\n labelKey: ProfileMenuMessageKey;\n icon: SvgIconComponent;\n /** Si está, el ítem es un enlace al Angular legacy. */\n href?: string;\n /** Abre el enlace en una pestaña nueva. */\n external?: boolean;\n};\n\nfunction ProfileMenuOption({\n label,\n icon: Icon,\n onSelect,\n href,\n external,\n danger,\n testId,\n}: {\n label: string;\n icon: SvgIconComponent;\n onSelect: () => void;\n href?: string;\n external?: boolean;\n /** Variante destructiva: texto e icono en rojo (p. ej. \"Cerrar sesión\"). */\n danger?: boolean;\n /** `data-testid` del ítem del menú. */\n testId?: string;\n}) {\n const color = danger ? cmsColors.danger : cmsColors.textStrong;\n return (\n <MenuItem\n onClick={onSelect}\n data-testid={testId}\n sx={TopBarStyles.sxProfileMenuItem}\n {...(href\n ? {\n component: 'a',\n href,\n ...(external\n ? { target: '_blank', rel: 'noopener noreferrer' }\n : {}),\n }\n : {})}>\n <ListItemIcon sx={TopBarStyles.sxProfileMenuListItemIcon}>\n <Icon sx={danger ? { color: cmsColors.danger } : undefined} />\n </ListItemIcon>\n <ListItemText\n primary={label}\n slotProps={{\n primary: {\n sx: { fontSize: 14, fontWeight: 400, color },\n },\n }}\n />\n </MenuItem>\n );\n}\n\nexport type ProfileMenuProps = {\n profile: ProfileGetResponse;\n avatarOptions?: ProfileAvatarOptions;\n /** Dominio del CMS Angular legacy para \"Mi Perfil\" / \"Vista Webmaster\". */\n legacyBaseUrl?: string;\n};\n\nexport function ProfileMenu({\n profile,\n avatarOptions,\n legacyBaseUrl,\n}: ProfileMenuProps) {\n const { t } = useCmsTranslation();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const displayName = getProfileDisplayName(profile);\n\n const menuItems = useMemo<ProfileMenuItem[]>(\n () => [\n {\n id: 'profile',\n labelKey: 'myProfile',\n icon: PersonOutlinedIcon,\n href: joinLegacyUrl(legacyBaseUrl, LEGACY_PROFILE_PATH),\n },\n {\n id: 'webmaster',\n labelKey: 'webmasterView',\n icon: EditOutlinedIcon,\n href: joinLegacyUrl(legacyBaseUrl, LEGACY_WEBMASTER_PATH),\n external: true,\n },\n ],\n [legacyBaseUrl],\n );\n\n const signOffItem = useMemo<ProfileMenuItem>(\n () => ({ id: 'sign-off', labelKey: 'signOff', icon: LogoutOutlinedIcon }),\n [],\n );\n\n const handleClose = () => setAnchorEl(null);\n\n const handleSelect = (_id: string) => {\n handleClose();\n };\n\n return (\n <>\n <IconButton\n id=\"profile-menu-button\"\n aria-label={t.profileMenu('ariaLabel')}\n aria-controls={open ? 'profile-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={(e) => setAnchorEl(e.currentTarget)}\n data-testid=\"dropdown-toggle-profile\"\n sx={TopBarStyles.sxProfileButton}>\n <UserAvatar\n photo={profile.image}\n description={displayName}\n username={profile.userName}\n size={34}\n showTooltip={false}\n isCurrentUser\n cmsOrigin={avatarOptions?.cmsOrigin}\n crossOrigin=\"anonymous\"\n />\n </IconButton>\n\n <Menu\n id=\"profile-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: TopBarStyles.sxProfileMenuPaper,\n ...({ 'data-testid': 'dropdown-menu-profile' } as object),\n },\n list: { disablePadding: true },\n }}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 2,\n py: 1.5,\n borderBottom: 1,\n borderColor: 'divider',\n }}>\n <UserAvatar\n photo={profile.image}\n description={displayName}\n username={profile.userName}\n size={40}\n showTooltip={false}\n isCurrentUser\n cmsOrigin={avatarOptions?.cmsOrigin}\n crossOrigin=\"anonymous\"\n />\n <Box sx={{ minWidth: 0 }}>\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 600, color: cmsColors.textStrong }}>\n {displayName}\n </Typography>\n <Typography variant=\"caption\" sx={{ color: cmsColors.textNav }}>\n {profile.email}\n </Typography>\n </Box>\n </Box>\n {menuItems.map((item) => (\n <ProfileMenuOption\n key={item.id}\n label={t.profileMenu(item.labelKey)}\n icon={item.icon}\n href={item.href}\n external={item.external}\n testId={`dropdown-item-${toTestId(item.id)}`}\n onSelect={() => handleSelect(item.id)}\n />\n ))}\n <Divider sx={TopBarStyles.sxProfileMenuDivider} />\n <ProfileMenuOption\n label={t.profileMenu(signOffItem.labelKey)}\n icon={signOffItem.icon}\n testId=\"dropdown-item-sign-off\"\n onSelect={() => handleSelect(signOffItem.id)}\n danger\n />\n </Menu>\n </>\n );\n}\n","'use client';\n\nimport ScheduleOutlinedIcon from '@mui/icons-material/ScheduleOutlined';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport { useEffect, useState } from 'react';\n\nimport { getIntlLocaleTag, useCmsTranslation } from '../../i18n';\nimport { formatSiteDateTime } from '../../utils/site-time';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type TopBarClockProps = {\n /** Offset GMT de la publicación, tal como llega del CMS (p. ej. `\"-4\"`). */\n gmtRedaction?: string;\n /** Formato horario del CMS: `\"12h\"` (AM/PM) o `\"24h\"`. */\n timeFormat?: string;\n};\n\n/**\n * Etiqueta GMT a partir del offset de la publicación:\n * `\"-4\"` → `\"GMT-4\"`, `\"5\"` → `\"GMT+5\"`, vacío → `\"GMT\"`.\n */\nfunction formatGmtLabel(gmtRedaction?: string): string {\n const raw = (gmtRedaction ?? '').trim();\n if (!raw) return 'GMT';\n return `GMT${/^[+-]/.test(raw) ? raw : `+${raw}`}`;\n}\n\n/**\n * Reloj del header: hora actual en la zona de redacción de la publicación\n * seleccionada. Equivale al `.time` del modal de calendario del CMS Angular\n * (`cmsmedios`): toma la hora del navegador y la desplaza por el offset GMT de\n * la publicación; el formato 12h/24h sale del `timeFormat` del CMS.\n */\nexport function TopBarClock({ gmtRedaction, timeFormat }: TopBarClockProps) {\n const { locale, t } = useCmsTranslation();\n const [now, setNow] = useState<number | null>(null);\n\n // La hora real se fija solo en cliente para evitar desajustes de hidratación\n // (el `Date.now()` del servidor no coincide con el del navegador).\n useEffect(() => {\n setNow(Date.now());\n const id = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(id);\n }, []);\n\n if (now === null) return null;\n\n const time = formatSiteDateTime(now, gmtRedaction, getIntlLocaleTag(locale), {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat !== '24h',\n });\n\n return (\n <Box sx={TopBarStyles.sxClock}>\n <ScheduleOutlinedIcon sx={TopBarStyles.sxClockIcon} />\n <Box sx={TopBarStyles.sxClockText}>\n <Typography component=\"span\" sx={TopBarStyles.sxClockTime}>\n {time}\n </Typography>\n <Typography component=\"span\" sx={TopBarStyles.sxClockMeta}>\n {`${t.topBar('publication')} · ${formatGmtLabel(gmtRedaction)}`}\n </Typography>\n </Box>\n </Box>\n );\n}\n","'use client';\n\nimport HelpOutlineOutlinedIcon from '@mui/icons-material/HelpOutlineOutlined';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport AppBar from '@mui/material/AppBar';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Toolbar from '@mui/material/Toolbar';\nimport Tooltip from '@mui/material/Tooltip';\nimport type { ReactNode } from 'react';\n\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport type { ProfileGetResponse } from '../../types/profile';\nimport type { Publication } from '../../types/publication';\nimport type { SiteSection } from '../../types/site';\nimport { useCmsTranslation } from '../../i18n';\nimport type { ProfileAvatarOptions } from '../../utils/profile-avatar';\nimport {\n submitLegacyAdminPage,\n type LegacyAdminSession,\n} from '../../utils/legacy-admin';\nimport { findPublicationBySlug } from '../../utils/site-selector';\nimport { SiteSelectorMenu } from '../site-selector-menu/SiteSelectorMenu';\nimport { AppearanceMenu } from './AppearanceMenu';\nimport { NewContentMenu } from './NewContentMenu';\nimport type { NewContentGroup } from './newContentMenu.config';\nimport { NotificationsMenu } from './NotificationsMenu';\nimport { PreviewMenu } from './PreviewMenu';\nimport type { PreviewFormat } from './previewMenu.config';\nimport { ProfileMenu } from './ProfileMenu';\nimport { TopBarClock } from './TopBarClock';\nimport { TopBarStyles } from './TopBar.styles';\n\n/** Une el dominio del Angular legacy con una ruta, sin barra doble. */\nfunction joinLegacyUrl(baseUrl: string | undefined, path: string): string {\n if (!baseUrl) return path;\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\nfunction TopBarDivider() {\n return (\n <Box\n component=\"span\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n sx={TopBarStyles.sxDivider}\n />\n );\n}\n\nexport type TopBarProps = {\n sites: SiteSection[];\n /** Solo aplica con un sidebar colapsable (p. ej. `Sidebar`). Omitir oculta el botón. */\n sidebarOpen?: boolean;\n onToggleSidebar?: () => void;\n notificationUnreadCount: number;\n /** Respuesta cruda de `POST /dashboard/notification` (newsTask/expireTask/videos). */\n notificationsData?: DashboardNotificationsResponse | null;\n /** Destino del \"Ver más\" / clic en una oportunidad copilot (página de sugerencias). */\n copilotSuggestionsHref?: string;\n /** Clic en \"Ver más\" cuando no hay `copilotSuggestionsHref` (fallback). */\n onEditorialSeeMore?: () => void;\n /** \"Recordar luego\": recibe los `opportunity_id` mostrados para el snooze. */\n onEditorialRemindLater?: (opportunityIds: string[]) => void;\n profile: ProfileGetResponse;\n primaryLogo: ReactNode;\n brandLogo?: ReactNode;\n selectedPublicationId?: string;\n getPublicationHref: (publication: Publication) => string;\n resolvePublicationImageUrl?: (imagePath: string) => string;\n profileAvatarOptions?: ProfileAvatarOptions;\n /** Dominio del CMS Angular legacy (deploy nuevo) para enlaces de perfil. */\n legacyBaseUrl?: string;\n /**\n * Origen del CMS (JSP), p. ej. `https://dev.cms-medios.com`. Se usa para Ayuda\n * y Preview, que redirigen al admin viejo (NO al deploy de `legacyBaseUrl`).\n */\n cmsBaseUrl?: string;\n /**\n * Sesión para el redirect al admin viejo (token, sitio, publicación, usuario).\n * Si se pasa, Ayuda/Preview usan el form POST de cmsmedios; si no, Ayuda cae a\n * un enlace simple al CMS.\n */\n legacySession?: LegacyAdminSession;\n /** Columnas/ítems del menú \"Nuevo\". Por defecto, la estructura del CMS legacy. */\n newContentGroups?: NewContentGroup[];\n /** Formatos del menú de previsualización. Por defecto, Desktop/Mobile/Tablet. */\n previewFormats?: PreviewFormat[];\n /**\n * Operaciones concedidas al usuario (`POST /auth/permissions`). Si se omite,\n * no se filtra el menú \"Nuevo\" por permisos.\n */\n operationPermissions?: string[];\n /** Si el usuario es administrador (ve todos los ítems del menú \"Nuevo\"). */\n isAdmin?: boolean;\n /** Fallback (sin sesión) del clic en un ítem del menú \"Nuevo\" (recibe su `id`). */\n onNewContentSelect?: (itemId: string) => void;\n /** Integración: clic en un formato de previsualización (recibe su `id`). */\n onPreviewSelect?: (formatId: string) => void;\n};\n\nexport function TopBar({\n sites,\n sidebarOpen,\n onToggleSidebar,\n notificationUnreadCount,\n notificationsData,\n copilotSuggestionsHref,\n onEditorialSeeMore,\n onEditorialRemindLater,\n profile,\n primaryLogo,\n brandLogo,\n selectedPublicationId,\n getPublicationHref,\n resolvePublicationImageUrl,\n profileAvatarOptions,\n legacyBaseUrl,\n cmsBaseUrl,\n legacySession,\n newContentGroups,\n previewFormats,\n operationPermissions,\n isAdmin,\n onNewContentSelect,\n onPreviewSelect,\n}: TopBarProps) {\n const { t, locale } = useCmsTranslation();\n\n const selectedPublication = selectedPublicationId\n ? findPublicationBySlug(sites, selectedPublicationId)\n : undefined;\n\n // Mismo armado de URL que el `openManual()` del Angular legacy: ruta del\n // manual de ayuda por idioma sobre el ORIGEN DEL CMS (no el deploy nuevo).\n const helpTitle = t.topBar('help');\n const helpBase = cmsBaseUrl ?? legacyBaseUrl;\n const helpPath = `/system/modules/com.tfsla.diario.help/${locale}/index.html`;\n\n /**\n * Abre el manual de ayuda. Con sesión, usa el form POST de cmsmedios (pasa el\n * token al admin viejo); sin sesión, cae a un enlace simple al CMS.\n * @returns void\n */\n const handleHelpClick = () => {\n if (cmsBaseUrl && legacySession) {\n submitLegacyAdminPage({\n cmsBaseUrl,\n path: helpPath,\n session: legacySession,\n });\n return;\n }\n if (typeof window !== 'undefined') {\n window.open(joinLegacyUrl(helpBase, helpPath), '_blank', 'noopener');\n }\n };\n\n return (\n <AppBar position=\"static\" elevation={0} sx={TopBarStyles.sxAppBar}>\n <Toolbar disableGutters variant=\"dense\" sx={TopBarStyles.sxToolbar}>\n {onToggleSidebar && (\n <IconButton\n aria-label={\n sidebarOpen ? t.topBar('closeSidebar') : t.topBar('openSidebar')\n }\n aria-expanded={sidebarOpen}\n onClick={onToggleSidebar}\n sx={TopBarStyles.sxMenuButton}\n data-testid=\"icon-btn-sidebar-toggle\">\n <MenuIcon sx={TopBarStyles.sxMenuButtonIcon} />\n </IconButton>\n )}\n\n <Box sx={TopBarStyles.sxLogoBox}>{primaryLogo}</Box>\n\n <Box sx={{ flex: 1 }} />\n\n <Box sx={TopBarStyles.sxActionsFrame}>\n <Box sx={TopBarStyles.sxIconActionsRow}>\n <NewContentMenu\n groups={newContentGroups}\n operationPermissions={operationPermissions}\n isAdmin={isAdmin}\n legacyBaseUrl={legacyBaseUrl}\n onSelect={onNewContentSelect}\n />\n\n <AppearanceMenu />\n\n <NotificationsMenu\n unreadCount={notificationUnreadCount}\n notificationsData={notificationsData}\n masterBaseUrl={legacyBaseUrl}\n currentPublicationId={selectedPublication?.id}\n gmtRedaction={selectedPublication?.gmtRedaction}\n copilotSuggestionsHref={copilotSuggestionsHref}\n onEditorialSeeMore={onEditorialSeeMore}\n onEditorialRemindLater={onEditorialRemindLater}\n />\n\n <PreviewMenu\n formats={previewFormats}\n cmsBaseUrl={cmsBaseUrl}\n legacySession={legacySession}\n onSelect={onPreviewSelect}\n />\n\n <Tooltip title={helpTitle}>\n <IconButton\n onClick={handleHelpClick}\n aria-label={helpTitle}\n sx={TopBarStyles.sxActionIcon}\n data-testid=\"icon-btn-help\">\n <HelpOutlineOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n </Box>\n\n <TopBarDivider />\n\n {brandLogo}\n\n <SiteSelectorMenu\n sites={sites}\n selectedPublicationId={selectedPublicationId}\n getPublicationHref={getPublicationHref}\n resolvePublicationImageUrl={resolvePublicationImageUrl}\n />\n\n <TopBarDivider />\n\n <TopBarClock\n gmtRedaction={selectedPublication?.gmtRedaction}\n timeFormat={selectedPublication?.timeFormat}\n />\n\n <TopBarDivider />\n\n <ProfileMenu\n profile={profile}\n avatarOptions={profileAvatarOptions}\n legacyBaseUrl={legacyBaseUrl}\n />\n </Box>\n </Toolbar>\n </AppBar>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport const AppShellStyles = {\n sxRoot: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n height: '100%',\n minHeight: 0,\n overflow: 'hidden',\n bgcolor: 'm3.surfaceContainer',\n } as SxProps<Theme>,\n\n sxHeader: {\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxBody: {\n display: 'flex',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n } as SxProps<Theme>,\n\n sxMain: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n mt: '10px',\n pt: 1,\n pb: 3,\n pr: 3,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport type { ReactNode } from 'react';\nimport { CmsI18nProvider } from '../../i18n';\nimport type { AppLocaleCatalog, CmsMessagesOverride, Locale } from '../../i18n';\nimport type { NavItemPermissions } from '../../types/navigation';\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport type { ProfileGetResponse } from '../../types/profile';\nimport type { Publication } from '../../types/publication';\nimport type { SiteSection } from '../../types/site';\nimport type { ProfileAvatarOptions } from '../../utils/profile-avatar';\nimport type { LegacyAdminSession } from '../../utils/legacy-admin';\nimport type { CmsLinkComponent } from '../link';\nimport { DefaultCmsLink } from '../link';\nimport { SidebarRail, type SidebarRailPinService } from '../sidebar/SidebarRail';\nimport { TopBar } from '../top-bar/TopBar';\nimport type { NewContentGroup } from '../top-bar/newContentMenu.config';\nimport type { PreviewFormat } from '../top-bar/previewMenu.config';\nimport { AppShellStyles } from './AppShell.styles';\n\nexport type AppShellProps = {\n pathname: string;\n sites: SiteSection[];\n children: ReactNode;\n notificationUnreadCount: number;\n /** Respuesta cruda de `POST /dashboard/notification` (newsTask/expireTask/videos). */\n notificationsData?: DashboardNotificationsResponse | null;\n /** Destino del \"Ver más\" / clic en una oportunidad copilot (página de sugerencias). */\n copilotSuggestionsHref?: string;\n /** Clic en \"Ver más\" cuando no hay `copilotSuggestionsHref` (fallback). */\n onEditorialSeeMore?: () => void;\n /** \"Recordar luego\": recibe los `opportunity_id` mostrados para el snooze. */\n onEditorialRemindLater?: (opportunityIds: string[]) => void;\n profile: ProfileGetResponse;\n primaryLogo: ReactNode;\n brandLogo?: ReactNode;\n selectedPublicationId: string;\n getPublicationHref: (publication: Publication) => string;\n resolvePublicationImageUrl?: (imagePath: string) => string;\n profileAvatarOptions?: ProfileAvatarOptions;\n /** Dominio del CMS Angular legacy (deploy nuevo) para enlaces de perfil. */\n legacyBaseUrl?: string;\n /**\n * Origen del CMS (JSP) para Ayuda/Preview. Si se omite, se usa `baseUrl`.\n */\n cmsBaseUrl?: string;\n /** Sesión para el redirect al admin viejo (token, sitio, publicación, usuario). */\n legacySession?: LegacyAdminSession;\n /** Columnas/ítems del menú \"Nuevo\". Por defecto, la estructura del CMS legacy. */\n newContentGroups?: NewContentGroup[];\n /** Formatos del menú de previsualización. Por defecto, Desktop/Mobile/Tablet. */\n previewFormats?: PreviewFormat[];\n /** Operaciones concedidas al usuario (`POST /auth/permissions`). */\n operationPermissions?: string[];\n /** Si el usuario es administrador (ve todos los ítems del menú \"Nuevo\"). */\n isAdmin?: boolean;\n /** Fallback (sin sesión) del clic en un ítem del menú \"Nuevo\" (recibe su `id`). */\n onNewContentSelect?: (itemId: string) => void;\n /** Integración: clic en un formato de previsualización (recibe su `id`). */\n onPreviewSelect?: (formatId: string) => void;\n LinkComponent?: CmsLinkComponent;\n permissions: Array<NavItemPermissions>;\n locale?: Locale | string;\n /** Alias de `locale`. */\n language?: Locale | string;\n messages?: CmsMessagesOverride;\n /** Catálogo de mensajes propio del gestor (namespaces libres, es/en/pt). */\n appMessages?: AppLocaleCatalog;\n\n baseUrl: string;\n /**\n * Servicio de pines del sidebar (`CmsProfileServices`, construido por el\n * host con su `axiosApi`/`authentication`). Si se omite, el anclado de\n * accesos es solo visual y no persiste entre sesiones.\n */\n profileServices?: SidebarRailPinService;\n};\n\nexport function AppShell({\n pathname,\n sites,\n children,\n notificationUnreadCount,\n notificationsData,\n copilotSuggestionsHref,\n onEditorialSeeMore,\n onEditorialRemindLater,\n profile,\n primaryLogo,\n brandLogo,\n selectedPublicationId,\n getPublicationHref,\n resolvePublicationImageUrl,\n profileAvatarOptions,\n legacyBaseUrl,\n cmsBaseUrl,\n legacySession,\n newContentGroups,\n previewFormats,\n operationPermissions,\n isAdmin,\n onNewContentSelect,\n onPreviewSelect,\n LinkComponent = DefaultCmsLink,\n permissions,\n locale,\n language,\n messages,\n appMessages,\n baseUrl,\n profileServices,\n}: AppShellProps) {\n return (\n <CmsI18nProvider\n locale={locale}\n language={language}\n messages={messages}\n appMessages={appMessages}>\n <Box sx={AppShellStyles.sxRoot}>\n <Box component=\"header\" sx={AppShellStyles.sxHeader}>\n <TopBar\n sites={sites}\n notificationUnreadCount={notificationUnreadCount}\n notificationsData={notificationsData}\n copilotSuggestionsHref={copilotSuggestionsHref}\n onEditorialSeeMore={onEditorialSeeMore}\n onEditorialRemindLater={onEditorialRemindLater}\n profile={profile}\n primaryLogo={primaryLogo}\n brandLogo={brandLogo}\n selectedPublicationId={selectedPublicationId}\n getPublicationHref={getPublicationHref}\n resolvePublicationImageUrl={resolvePublicationImageUrl}\n profileAvatarOptions={profileAvatarOptions}\n legacyBaseUrl={legacyBaseUrl}\n cmsBaseUrl={cmsBaseUrl ?? baseUrl}\n legacySession={legacySession}\n newContentGroups={newContentGroups}\n previewFormats={previewFormats}\n operationPermissions={operationPermissions}\n isAdmin={isAdmin}\n onNewContentSelect={onNewContentSelect}\n onPreviewSelect={onPreviewSelect}\n />\n </Box>\n <Box sx={AppShellStyles.sxBody}>\n <SidebarRail\n pathname={pathname}\n LinkComponent={LinkComponent}\n permissions={permissions}\n legacyBaseUrl={legacyBaseUrl}\n profileServices={profileServices}\n />\n <Box component=\"main\" sx={AppShellStyles.sxMain}>\n {children}\n </Box>\n </Box>\n </Box>\n </CmsI18nProvider>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows } from '../../theme/variables';\n\nconst ACTIVE_BG = cmsColors.secondary;\nconst HOVER_BG = cmsColors.surfaceHover;\nconst NAV_TEXT = cmsColors.textNav;\n\nexport const SIDEBAR_WIDTH_EXPANDED = 195;\nexport const SIDEBAR_WIDTH_COLLAPSED = 96;\n\nconst ICON_SIZE_EXPANDED = 24;\nconst ICON_SIZE_COLLAPSED = 24;\n\nconst scrollbarHidden = {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n} as const;\n\nexport const SidebarStyles = {\n sxRoot: (open: boolean): SxProps<Theme> => {\n const width = open ? SIDEBAR_WIDTH_EXPANDED : SIDEBAR_WIDTH_COLLAPSED;\n return {\n width,\n maxWidth: width,\n minWidth: width,\n flexShrink: 0,\n alignSelf: 'stretch',\n minHeight: 0,\n maxHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n bgcolor: 'm3.surfaceContainer',\n paddingTop: open ? '1rem' : '1.5rem',\n boxSizing: 'border-box',\n transition: 'width 0.2s ease, min-width 0.2s ease, max-width 0.2s ease',\n };\n },\n\n sxNavScroll: {\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n width: '100%',\n boxSizing: 'border-box',\n ...scrollbarHidden,\n } as SxProps<Theme>,\n\n sxNav: (open: boolean): SxProps<Theme> => ({\n display: 'flex',\n flexDirection: 'column',\n py: 1.5,\n gap: open ? 0.25 : 0.5,\n width: '100%',\n maxWidth: '100%',\n minWidth: 0,\n boxSizing: 'border-box',\n position: 'relative',\n px: open ? '1rem' : 0.75,\n alignItems: open ? 'stretch' : 'start',\n }),\n\n sxNavGroup: (open: boolean): SxProps<Theme> => ({\n position: 'relative',\n minWidth: 0,\n maxWidth: open ? '100%' : 'none',\n overflow: 'visible',\n width: open ? '100%' : 'auto',\n gap: 0,\n }),\n\n /** Wrapper del Tooltip: ancho completo expandido, auto en rail colapsado */\n sxTooltipWrap: (open: boolean): SxProps<Theme> => ({\n display: 'flex',\n width: open ? '100%' : 'auto',\n alignItems: 'flex-start',\n }),\n\n sxDivider: {\n my: 1,\n borderColor: cmsColors.border,\n } as SxProps<Theme>,\n\n sxItem: (\n selected: boolean,\n nested = false,\n hasChildren = false,\n collapsed = false,\n ): SxProps<Theme> => {\n if (collapsed) {\n return {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 48,\n minWidth: 0,\n width: 'auto',\n maxWidth: 'none',\n boxSizing: 'border-box',\n overflow: 'hidden',\n px: 0,\n py: 0,\n borderRadius: '100px',\n color: NAV_TEXT,\n textDecoration: 'none',\n bgcolor: selected ? ACTIVE_BG : 'transparent',\n '&:hover': {\n bgcolor: selected ? ACTIVE_BG : 'action.hover',\n },\n };\n }\n\n return {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: '15px', // separación ícono → texto\n minHeight: 40,\n minWidth: 0,\n maxWidth: 'none',\n // Para que el hover/active se vea igual al diseño: el fondo llega al borde izquierdo\n width: 'calc(100% + 1rem)',\n boxSizing: 'border-box',\n overflow: hasChildren ? 'visible' : 'hidden',\n px: nested ? 1.5 : 0,\n pl: nested ? 4.5 : 3,\n py: 0.75,\n ml: '-1rem',\n mr: 0,\n // Sub-items: píldora completa; top-level: píldora pegada a la izquierda\n borderRadius: nested ? '100px' : '0 100px 100px 0',\n color: NAV_TEXT,\n textDecoration: 'none',\n bgcolor: selected ? ACTIVE_BG : 'transparent',\n '&:hover': {\n bgcolor: selected ? ACTIVE_BG : HOVER_BG,\n },\n };\n },\n\n sxItemIcon: (selected: boolean, collapsed = false): SxProps<Theme> => ({\n fontSize: collapsed ? ICON_SIZE_COLLAPSED : ICON_SIZE_EXPANDED,\n color: selected ? 'secondary.dark' : 'm3.onSurfaceVariant',\n width: collapsed ? 48 : 'auto',\n flexShrink: 0,\n }),\n\n sxItemLabel: (selected: boolean): SxProps<Theme> => ({\n flex: 1,\n minWidth: 0,\n fontSize: 14,\n fontWeight: selected ? 600 : 400,\n lineHeight: 1.43,\n color: NAV_TEXT,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n\n sxExpandButton: {\n pl: '1.5rem',\n position: 'absolute',\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n p: 0.25,\n color: 'm3.onSurfaceVariant',\n zIndex: 1,\n } as SxProps<Theme>,\n\n sxChildrenMenuPaper: {\n mt: 0.5,\n borderRadius: radii.xl,\n bgcolor: cmsColors.surface,\n boxShadow: shadows.flyout,\n px: 1,\n } as SxProps<Theme>,\n\n sxChildrenMenuItem: (selected: boolean): SxProps<Theme> => ({\n minHeight: 44,\n borderRadius: '100px',\n px: 2,\n py: 1,\n gap: 1.25,\n color: NAV_TEXT,\n bgcolor: selected ? ACTIVE_BG : 'transparent',\n '&:hover': {\n bgcolor: selected ? ACTIVE_BG : HOVER_BG,\n },\n '&.Mui-selected': {\n bgcolor: ACTIVE_BG,\n '&:hover': { bgcolor: ACTIVE_BG },\n },\n }),\n\n sxChildrenMenuListItemIcon: {\n minWidth: 34,\n color: 'm3.onSurfaceVariant',\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n },\n } as SxProps<Theme>,\n\n sxBetaChip: (open = false): SxProps<Theme> => ({\n height: 15,\n fontSize: 11,\n fontWeight: 600,\n letterSpacing: '0.04em',\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n borderRadius: '.625rem',\n px: 0.75,\n mr: open ? 1 : 0,\n lineHeight: 1,\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n};\n","'use client';\n\nimport { useMemo, useState, type ReactElement } from 'react';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { useCmsTranslation } from '../../i18n';\nimport type { CmsTranslator } from '../../i18n';\nimport { cmsColors } from '../../theme/variables';\nimport type { NavItemPermissions, NavLinkItem } from '../../types/navigation';\nimport { toTestId } from '../../utils/toTestId';\nimport { DefaultCmsLink, type CmsLinkComponent } from '../link';\nimport { SidebarStyles } from './Sidebar.styles';\nimport { ACCOUNT_NAV_BLOCKS } from './nav-blocks';\nimport {\n findModulePermission,\n getVisibleChildren,\n isItemActive,\n isPathActive,\n resolveNavHref,\n resolveNavLabel,\n} from './nav-helpers';\n\nfunction wrapWithTooltip(open: boolean, label: string, node: ReactElement) {\n if (open) return node;\n return (\n <Tooltip title={label} placement=\"right\" arrow>\n <Box component=\"span\" sx={SidebarStyles.sxTooltipWrap(open)}>\n {node}\n </Box>\n </Tooltip>\n );\n}\n\nfunction NavRow({\n item,\n blockIndex,\n nested = false,\n open = true,\n expanded,\n onToggleExpand,\n LinkComponent,\n pathname,\n permissions,\n t,\n legacyBaseUrl,\n selectedPublicationId,\n}: {\n item: NavLinkItem;\n blockIndex: number;\n nested?: boolean;\n open?: boolean;\n expanded?: boolean;\n onToggleExpand?: () => void;\n LinkComponent: CmsLinkComponent;\n pathname: string;\n permissions: Array<NavItemPermissions>;\n t: CmsTranslator;\n legacyBaseUrl?: string;\n selectedPublicationId: string;\n}) {\n // Los testids de navegación se escopan por el índice del bloque padre: `module`\n // no es único (POSTS y PAYMENTS se repiten en nav-blocks.ts) y no hay id de\n // bloque estable, así que sin el escopo habría testids duplicados en pantalla.\n const blockScope = `block-${blockIndex}`;\n const label = resolveNavLabel(item, t);\n const permission = findModulePermission(permissions, item.module);\n const visibleChildren = getVisibleChildren(item, permissions);\n const collapsed = !open;\n const selected = isPathActive(pathname, item.href);\n const parentSelected = isItemActive(pathname, item);\n const hasChildren = visibleChildren.length > 0;\n const Icon = item.icon;\n const iconSelected = nested ? selected : selected || parentSelected;\n const [childMenuAnchor, setChildMenuAnchor] = useState<HTMLElement | null>(null);\n const childMenuOpen = Boolean(childMenuAnchor);\n if (!permission && !hasChildren) return null;\n const content = (\n <>\n {hasChildren && !collapsed ? (\n <IconButton\n size=\"small\"\n data-testid={`toggle-nav-${blockScope}-${toTestId(item.module)}`}\n data-action={expanded ? 'collapse' : 'expand'}\n aria-label={expanded ? t.sidebar('collapse') : t.sidebar('expand')}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onToggleExpand?.();\n }}\n sx={SidebarStyles.sxExpandButton}>\n {expanded ? (\n <ExpandMoreIcon sx={{ fontSize: 20 }} />\n ) : (\n <ChevronRightIcon sx={{ fontSize: 20 }} />\n )}\n </IconButton>\n ) : null}\n <Icon sx={SidebarStyles.sxItemIcon(iconSelected, collapsed)} />\n {!collapsed ? (\n <Typography component=\"span\" sx={SidebarStyles.sxItemLabel(selected)}>\n {label}\n </Typography>\n ) : null}\n {permission?.isnew && (\n <Box component=\"span\" sx={SidebarStyles.sxBetaChip(open)}>\n {t.sidebar('newBadge')}\n </Box>\n )}\n </>\n );\n\n if (hasChildren && !collapsed) {\n return (\n <Box sx={SidebarStyles.sxNavGroup(open)}>\n <Box\n component=\"div\"\n data-testid={`nav-${blockScope}-${toTestId(item.module)}`}\n onClick={onToggleExpand}\n sx={{\n ...SidebarStyles.sxItem(parentSelected, nested, true, false),\n cursor: 'pointer',\n }}>\n {content}\n </Box>\n <Collapse in={expanded} timeout=\"auto\" unmountOnExit>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n mt: 0.25,\n minWidth: 0,\n maxWidth: '100%',\n overflow: 'hidden',\n }}>\n {visibleChildren.map((child) => (\n <NavRow\n key={child.href}\n item={child}\n blockIndex={blockIndex}\n nested\n open={open}\n LinkComponent={LinkComponent}\n pathname={pathname}\n permissions={permissions}\n t={t}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n />\n ))}\n </Box>\n </Collapse>\n </Box>\n );\n }\n\n // Sidebar colapsado + item con hijos: mostrar menú flotante (como en la imagen)\n if (hasChildren && collapsed) {\n const row = (\n <Box\n component=\"button\"\n type=\"button\"\n data-testid={`dropdown-toggle-nav-${blockScope}-${toTestId(item.module)}`}\n aria-label={label}\n aria-controls={childMenuOpen ? `sidebar-children-${item.href}` : undefined}\n aria-haspopup=\"true\"\n aria-expanded={childMenuOpen ? 'true' : undefined}\n onClick={(e) => setChildMenuAnchor(e.currentTarget)}\n onMouseEnter={(e) => setChildMenuAnchor(e.currentTarget)}\n sx={{\n ...SidebarStyles.sxItem(parentSelected, nested, hasChildren, true),\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n }}>\n {content}\n </Box>\n );\n\n // En colapsado + hijos: solo menú flotante (sin tooltip)\n return (\n <>\n {row}\n <Menu\n id={`sidebar-children-${item.href}`}\n anchorEl={childMenuAnchor}\n open={childMenuOpen}\n onClose={() => setChildMenuAnchor(null)}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n transformOrigin={{ vertical: 'center', horizontal: 'left' }}\n slotProps={{\n paper: { sx: SidebarStyles.sxChildrenMenuPaper },\n list: {\n onMouseLeave: () => setChildMenuAnchor(null),\n sx: { py: 1 },\n },\n }}>\n {visibleChildren.map((child) => {\n const ChildIcon = child.icon;\n return (\n <MenuItem\n key={child.href}\n data-testid={`dropdown-item-nav-${toTestId(child.module)}`}\n component={LinkComponent}\n href={resolveNavHref(child, legacyBaseUrl)}\n onClick={() => setChildMenuAnchor(null)}\n sx={SidebarStyles.sxChildrenMenuItem(isPathActive(pathname, child.href))}>\n <ListItemIcon sx={SidebarStyles.sxChildrenMenuListItemIcon}>\n <ChildIcon />\n </ListItemIcon>\n <ListItemText\n primary={resolveNavLabel(child, t)}\n slotProps={{\n primary: {\n sx: {\n fontSize: 14,\n fontWeight: 400,\n color: cmsColors.textStrong,\n },\n },\n }}\n />\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n }\n\n const row = (\n <Box\n component={LinkComponent}\n href={resolveNavHref(item, legacyBaseUrl)}\n data-testid={`nav-${blockScope}-${toTestId(item.module)}`}\n sx={SidebarStyles.sxItem(\n collapsed ? parentSelected : selected,\n nested,\n hasChildren,\n collapsed,\n )}>\n {content}\n </Box>\n );\n\n return wrapWithTooltip(open, label, row);\n}\n\nfunction NavSection({\n items,\n open = true,\n LinkComponent,\n pathname,\n permissions,\n t,\n legacyBaseUrl,\n selectedPublicationId,\n}: {\n items: NavLinkItem[];\n open: boolean;\n LinkComponent: CmsLinkComponent;\n pathname: string;\n permissions: Array<NavItemPermissions>;\n t: CmsTranslator;\n legacyBaseUrl?: string;\n selectedPublicationId: string;\n}) {\n\n const initialOpen = useMemo(() => {\n const state: Record<string, boolean> = {};\n for (const item of items) {\n if (item.children) {\n state[item.href] =\n item.defaultOpen ?? item.children.some((c) => isPathActive(pathname, c.href));\n }\n }\n return state;\n }, [items, pathname]);\n\n const [openGroups, setOpenGroups] = useState(initialOpen);\n\n const toggleGroup = (href: string) => {\n setOpenGroups((prev) => ({ ...prev, [href]: !prev[href] }));\n };\n\n return (\n <>\n {items.map((item, blockIndex) => (\n <NavRow\n key={item.href}\n item={item}\n blockIndex={blockIndex}\n open={open}\n permissions={permissions}\n expanded={openGroups[item.href]}\n onToggleExpand={\n getVisibleChildren(item, permissions).length > 0\n ? () => toggleGroup(item.href)\n : undefined\n }\n LinkComponent={LinkComponent}\n pathname={pathname}\n t={t}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n />\n ))}\n </>\n );\n}\n\nexport type SidebarProps = {\n open?: boolean;\n pathname: string;\n LinkComponent?: CmsLinkComponent;\n permissions: Array<NavItemPermissions>;\n /** Dominio del admin legacy (JSP/Angular) para prefijar hrefs con `item.legacy`. */\n legacyBaseUrl?: string;\n selectedPublicationId: string;\n};\n\nexport function Sidebar({\n open = true,\n pathname,\n permissions,\n LinkComponent = DefaultCmsLink,\n legacyBaseUrl,\n selectedPublicationId,\n}: SidebarProps) {\n const { t } = useCmsTranslation();\n\n return (\n <Box component=\"aside\" sx={SidebarStyles.sxRoot(open)}>\n <Box sx={SidebarStyles.sxNavScroll}>\n <Box\n component=\"nav\"\n aria-label={t.sidebar('navAriaLabel')}\n sx={SidebarStyles.sxNav(open)}>\n <NavSection\n permissions={permissions}\n items={ACCOUNT_NAV_BLOCKS}\n open={open}\n LinkComponent={LinkComponent}\n pathname={pathname}\n t={t}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors } from '../../theme/variables';\n\n/**\n * Estilos de la página de error compartida (404 / sin permisos).\n * Replica el layout de cmsmedios: ilustración + bloque de texto.\n * Solo variables del theme: nada de colores quemados.\n */\nexport const CmsErrorPageStyles = {\n // Cubre toda la ventana (por encima del shell), como en cmsmedios.\n // Ilustración e info en fila (columna en móvil).\n sxRoot: {\n position: 'fixed',\n inset: 0,\n zIndex: 1300,\n overflow: 'auto',\n display: 'flex',\n flexDirection: { xs: 'column', md: 'row' },\n alignItems: 'center',\n justifyContent: 'center',\n gap: { xs: 4, md: 8 },\n px: { xs: 3, md: 6 },\n py: { xs: 6, md: 8 },\n bgcolor: cmsColors.avatarBg,\n } as SxProps<Theme>,\n\n // Ilustración de marca (PNG servido desde el `public/` del gestor).\n sxIllustration: {\n width: { xs: 220, sm: 300, md: 420 },\n maxWidth: '100%',\n height: 'auto',\n flexShrink: 0,\n } as SxProps<Theme>,\n\n // Bloque de texto: alineado a la izquierda en desktop, centrado en móvil.\n sxContent: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: { xs: 'center', md: 'flex-start' },\n textAlign: { xs: 'center', md: 'left' },\n maxWidth: 520,\n } as SxProps<Theme>,\n\n // Título grande (respeta saltos de línea `\\n` de la traducción).\n sxTitle: {\n fontSize: { xs: 32, md: 46 },\n fontWeight: 700,\n lineHeight: 1.1,\n color: cmsColors.textStrong,\n whiteSpace: 'pre-line',\n } as SxProps<Theme>,\n\n // Subtítulo.\n sxSubtitle: {\n mt: 2,\n fontSize: { xs: 16, md: 18 },\n color: cmsColors.textNav,\n } as SxProps<Theme>,\n\n // Botón HOME (sobre el pill de la lib: separación y mayúsculas).\n sxButton: {\n mt: 3,\n textTransform: 'uppercase',\n px: 4,\n } as SxProps<Theme>,\n\n // Línea \"Error 404. Copiar detalle.\" (solo en 404).\n sxErrorLine: {\n mt: 3,\n fontSize: 14,\n color: cmsColors.textMuted,\n } as SxProps<Theme>,\n\n // Enlace \"Copiar detalle.\" clicable.\n sxCopyLink: {\n ml: 0.5,\n color: cmsColors.link,\n fontWeight: 500,\n cursor: 'pointer',\n userSelect: 'none',\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport type { ElementType } from 'react';\nimport { useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { sxPillButton } from '../../theme/buttonStyles';\nimport { DefaultCmsLink, type CmsLinkComponent } from '../link';\nimport { CmsErrorPageStyles } from './CmsErrorPage.styles';\n\n/** Variante de error a mostrar: 404 (no encontrado) o sin permisos. */\nexport type CmsErrorPageVariant = 'not-found' | 'not-allowed';\n\nexport type CmsErrorPageProps = {\n /** Tipo de error a mostrar. */\n variant: CmsErrorPageVariant;\n /** Destino del botón HOME. Por defecto la raíz del gestor (`/`). */\n homeHref?: string;\n /** Componente de enlace del host (p. ej. `next/link`). Por defecto un `<a>`. */\n LinkComponent?: CmsLinkComponent;\n /**\n * Ruta de la ilustración (servida desde el `public/` del gestor). Por defecto\n * `/errors/notfound.png` o `/errors/not-allowed.png` según la variante.\n */\n illustrationSrc?: string;\n};\n\n/**\n * Página de error compartida por todos los gestores (mecanismo en la lib).\n * Replica la de cmsmedios: ilustración + título + subtítulo + botón HOME, y en\n * el 404 la línea \"Error 404. Copiar detalle.\" que copia la URL al portapapeles.\n * Los textos salen del i18n de la lib (namespace `errorPage`, es/en/pt), así que\n * ningún gestor los duplica.\n */\nexport function CmsErrorPage({\n variant,\n homeHref = '/',\n LinkComponent = DefaultCmsLink,\n illustrationSrc,\n}: CmsErrorPageProps) {\n const { t } = useCmsTranslation();\n const [copied, setCopied] = useState(false);\n const isNotAllowed = variant === 'not-allowed';\n\n const title = t.errorPage(isNotAllowed ? 'notAllowedTitle' : 'notFoundTitle');\n const subtitle = t.errorPage(\n isNotAllowed ? 'notAllowedSubtitle' : 'notFoundSubtitle',\n );\n const imageSrc =\n illustrationSrc ??\n (isNotAllowed ? '/errors/not-allowed.png' : '/errors/notfound.png');\n\n // Copia al portapapeles el detalle del error (la ruta a la que se intentó\n // acceder), replicando el \"Copiar detalle\" de cmsmedios.\n const handleCopy = async () => {\n const url = typeof window !== 'undefined' ? window.location.href : '';\n const detail = t.errorPage('copyDetailText').replace('{url}', url);\n try {\n await navigator.clipboard.writeText(detail);\n setCopied(true);\n window.setTimeout(() => setCopied(false), 2500);\n } catch {\n // Si el navegador bloquea el portapapeles, no hacemos nada.\n }\n };\n\n return (\n <Box\n data-testid=\"panel-error\"\n data-variant={variant}\n sx={CmsErrorPageStyles.sxRoot}>\n <Box\n component=\"img\"\n src={imageSrc}\n alt=\"\"\n aria-hidden\n sx={CmsErrorPageStyles.sxIllustration}\n />\n <Box sx={CmsErrorPageStyles.sxContent}>\n <Typography component=\"h1\" sx={CmsErrorPageStyles.sxTitle}>\n {title}\n </Typography>\n <Typography component=\"p\" sx={CmsErrorPageStyles.sxSubtitle}>\n {subtitle}\n </Typography>\n <Button\n data-testid=\"btn-error-home\"\n component={LinkComponent as ElementType}\n href={homeHref}\n sx={{\n ...(sxPillButton('cta') as object),\n ...(CmsErrorPageStyles.sxButton as object),\n }}>\n {t.errorPage('homeButton')}\n </Button>\n {!isNotAllowed && (\n <Typography component=\"p\" sx={CmsErrorPageStyles.sxErrorLine}>\n {t.errorPage('errorLabel')} {t.errorPage('notFoundCode')}.\n <Box\n data-testid=\"btn-error-copy\"\n component=\"span\"\n role=\"button\"\n tabIndex={0}\n onClick={handleCopy}\n sx={CmsErrorPageStyles.sxCopyLink}>\n {copied ? t.errorPage('copied') : t.errorPage('copyDetail')}\n </Box>\n </Typography>\n )}\n </Box>\n </Box>\n );\n}\n","'use client';\n\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\nimport { buildCmsColorSchemeVars } from '../../theme/variables';\n\nconst { light, dark } = buildCmsColorSchemeVars();\n\n/**\n * Inyecta las CSS variables `--cms-*` de la paleta mode-aware.\n *\n * - `:root` → valores claros (base; aplican siempre).\n * - `:root[data-mui-color-scheme=\"dark\"]` → valores oscuros (mayor\n * especificidad; ganan cuando MUI pone el atributo en <html>).\n *\n * Va montado dentro de los providers MUI, así todos los gestores y el showroom\n * obtienen el modo oscuro sin cambios adicionales.\n */\nexport function CmsColorSchemeVars() {\n return (\n <GlobalStyles\n styles={{\n ':root': light,\n ':root[data-mui-color-scheme=\"dark\"]': dark,\n }}\n />\n );\n}\n","'use client';\n\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\nimport { cmsFontFaces } from '../../theme/fonts';\n\n/**\n * Inyecta los `@font-face` de Roboto y Product Sans como estilos globales.\n * Va montado dentro de los providers MUI de la lib, así cada gestor que los use\n * tiene las fuentes disponibles sin configurar nada.\n */\nexport function CmsFontFaces() {\n return <GlobalStyles styles={cmsFontFaces} />;\n}\n","'use client';\n\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { ThemeProvider } from '@mui/material/styles';\nimport type { ReactNode } from 'react';\n\nimport { createAppTheme } from '../../theme/createAppTheme';\nimport { CmsColorSchemeVars } from './CmsColorSchemeVars';\nimport { CmsFontFaces } from './CmsFontFaces';\n\nconst theme = createAppTheme();\n\nexport type CmsMuiProviderProps = {\n children: ReactNode;\n};\n\n/** Provider MUI sin integración Next.js (playground Vite u otros frameworks). */\nexport function CmsMuiProvider({ children }: CmsMuiProviderProps) {\n return (\n <ThemeProvider theme={theme} defaultMode=\"light\" storageManager={null}>\n <CssBaseline enableColorScheme />\n <CmsColorSchemeVars />\n <CmsFontFaces />\n {children}\n </ThemeProvider>\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { ThemeProvider } from '@mui/material/styles';\nimport { AppRouterCacheProvider } from '@mui/material-nextjs/v16-appRouter';\nimport type { ReactNode } from 'react';\n\nimport { createAppTheme } from '../../theme/createAppTheme';\nimport { CmsColorSchemeVars } from './CmsColorSchemeVars';\nimport { CmsFontFaces } from './CmsFontFaces';\n\nconst theme = createAppTheme();\n\nexport type NextCmsMuiProviderProps = {\n children: ReactNode;\n};\n\nexport function NextCmsMuiProvider({ children }: NextCmsMuiProviderProps) {\n return (\n <AppRouterCacheProvider options={{ enableCssLayer: true }}>\n <ThemeProvider theme={theme} defaultMode=\"light\" storageManager={null}>\n <CssBaseline enableColorScheme />\n <CmsColorSchemeVars />\n <CmsFontFaces />\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '100dvh',\n }}>\n {children}\n </Box>\n </ThemeProvider>\n </AppRouterCacheProvider>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport {\n cmsButtonHoverBg,\n cmsButtonSurface,\n type CmsButtonVariant,\n} from '../../theme/buttonStyles';\nimport { cmsColors, fontFamilies, shadows, sizes } from '../../theme/variables';\n\nconst variantOf = (whiteBtn: boolean): CmsButtonVariant =>\n whiteBtn ? 'white' : 'cta';\n\nexport const BtnDropdownStyles = {\n sxGroup: {\n display: 'inline-flex',\n alignItems: 'stretch',\n // Espacio entre el botón principal y el desplegable\n gap: '2px',\n } as SxProps<Theme>,\n\n sxMainButton: (whiteBtn: boolean, fullPill: boolean): SxProps<Theme> => {\n const variant = variantOf(whiteBtn);\n return {\n height: sizes.buttonHeight,\n px: '20px',\n pr: fullPill ? '20px' : '14px',\n // Esquinas externas redondas; las internas (junto a la flecha) a 4px.\n borderRadius: fullPill ? '999px' : '999px 4px 4px 999px',\n textTransform: 'none',\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 500,\n minWidth: 0,\n gap: 1,\n boxShadow: shadows.button,\n ...(cmsButtonSurface(variant) as object),\n '& .MuiSvgIcon-root': { fontSize: 18 },\n '&:hover': {\n boxShadow: shadows.button,\n bgcolor: cmsButtonHoverBg(variant),\n },\n '&.Mui-disabled': {\n bgcolor: whiteBtn\n ? 'm3.surfaceContainerLowest'\n : cmsColors.primaryDisabled,\n color: 'action.disabled',\n },\n };\n },\n\n sxArrowButton: (whiteBtn: boolean, open: boolean): SxProps<Theme> => {\n const variant = variantOf(whiteBtn);\n return {\n height: sizes.buttonHeight,\n minWidth: 38,\n width: 38,\n px: 0,\n // Esquina interna (junto al botón principal) a 4px; externa redonda.\n borderRadius: '4px 999px 999px 4px',\n boxShadow: shadows.button,\n ...(cmsButtonSurface(variant) as object),\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n transition: 'transform 0.15s',\n transform: open ? 'rotate(180deg)' : 'none',\n },\n '&:hover': {\n boxShadow: shadows.button,\n bgcolor: cmsButtonHoverBg(variant),\n },\n '&.Mui-disabled': {\n bgcolor: whiteBtn\n ? 'm3.surfaceContainerLowest'\n : cmsColors.primaryDisabled,\n color: 'action.disabled',\n },\n };\n },\n};\n","'use client';\n\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport { useMemo, useState } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\nimport { BtnDropdownStyles } from './BtnDropdown.styles';\nimport { SimpleDropdown } from './SimpleDropdown';\nimport type { DropdownOption } from './types';\n\nexport type BtnDropdownProps = {\n /** Texto o nodo (ya traducido) del botón principal. */\n titleButton: ReactNode;\n /** Opciones del menú desplegable. */\n options: DropdownOption[];\n /** Ícono opcional a la izquierda del texto del botón principal. */\n icon?: ReactNode;\n /** Acción del botón principal. */\n onAction?: () => void;\n /** Deshabilita el botón y el menú completo. */\n disabled?: boolean;\n /** Habilita o deshabilita solo el botón principal. Por defecto `true`. */\n enableButton?: boolean;\n /** Variante visual de botón blanco. */\n whiteBtn?: boolean;\n /** Muestra u oculta la flecha del desplegable. Por defecto `true`. */\n showDropdownOptions?: boolean;\n /** Valor base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Botón primario con menú desplegable integrado, en forma de píldora dividida.\n * Combina un botón principal de acción (emite `onAction`) con una flecha que\n * despliega opciones adicionales. Si no hay opciones visibles, la flecha se\n * oculta automáticamente.\n */\nexport function BtnDropdown({\n titleButton,\n options,\n icon,\n onAction,\n disabled = false,\n enableButton = true,\n whiteBtn = false,\n showDropdownOptions = true,\n testId,\n}: BtnDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n /**\n * Alterna la apertura del menú anclándolo al botón de la flecha.\n * @param event - Evento de clic sobre la flecha.\n * @returns void\n */\n const handleToggle = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl((current) => (current ? null : event.currentTarget));\n };\n\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const hasOptions = visibleOptions.length > 0;\n const showArrow = showDropdownOptions && hasOptions;\n\n return (\n <>\n <Box sx={BtnDropdownStyles.sxGroup}>\n <Button\n disableElevation\n startIcon={icon}\n onClick={onAction}\n disabled={disabled || !enableButton}\n data-testid={testId ? `btn-${testId}` : undefined}\n sx={BtnDropdownStyles.sxMainButton(whiteBtn, !showArrow)}>\n {titleButton}\n </Button>\n {showArrow ? (\n <Button\n disableElevation\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={handleToggle}\n disabled={disabled}\n data-testid={testId ? `dropdown-toggle-${testId}` : undefined}\n sx={BtnDropdownStyles.sxArrowButton(whiteBtn, open)}>\n <ArrowDropDownIcon />\n </Button>\n ) : null}\n </Box>\n\n <SimpleDropdown\n options={options}\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n testId={testId ? `dropdown-menu-${testId}` : undefined}\n />\n </>\n );\n}\n","'use client';\n\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { cloneElement, isValidElement, useMemo, useState } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { SelectStyles } from '../../theme/selectStyles';\n\n/** Tamaño fijo (px) de los íconos de las opciones, en trigger y menú. */\nconst ICON_SIZE = 18;\n\n/**\n * Fuerza el ícono de una opción a {@link ICON_SIZE}×{@link ICON_SIZE}px. El\n * tamaño se aplica con `sx` sobre el **propio** ícono (no con un selector del\n * contenedor): así gana al tamaño por defecto de MUI (24px) sin depender de la\n * especificidad CSS. El `sx` del consumidor se respeta salvo el tamaño.\n */\nfunction withIconSize(icon: ReactNode): ReactNode {\n if (!isValidElement(icon)) return icon;\n const el = icon as ReactElement<{ sx?: SxProps<Theme> }>;\n return cloneElement(el, {\n sx: [\n el.props.sx,\n { fontSize: ICON_SIZE, width: ICON_SIZE, height: ICON_SIZE },\n ] as SxProps<Theme>,\n });\n}\n\n/** Opción de un `SelectDropdown`. */\nexport type SelectOption = {\n /** Valor que se emite en `onChange` y se compara con `value`. */\n value: string;\n /** Texto o nodo (ya traducido) a mostrar. */\n label: ReactNode;\n /** Ícono opcional a la izquierda del label. */\n icon?: ReactNode;\n /**\n * Color del ícono de esta opción (en el disparador y en el menú). Acepta un\n * valor de variable del theme (`cmsColors.*`, `feedbackColors.*`) o un path\n * del tema MUI (p. ej. `'m3.onSurfaceVariant'`). Si se omite, el ícono usa el\n * gris por defecto (`m3.onSurfaceVariant`).\n */\n iconColor?: string;\n /** Si es `false` la opción no se renderiza. Por defecto `true`. */\n show?: boolean;\n};\n\nexport type SelectDropdownProps = {\n /** Valor seleccionado actualmente. */\n value: string;\n /** Opciones disponibles. */\n options: SelectOption[];\n /** Callback al elegir una opción. */\n onChange: (value: string) => void;\n /**\n * Resalta el disparador con el color de acento (`secondary`).\n * Útil para señalar que hay un filtro activo distinto del valor por defecto.\n */\n highlighted?: boolean;\n /**\n * Muestra los íconos de las opciones (en el disparador y en el menú).\n * `true` → variante con ícono; `false` → variante solo texto. Por defecto `true`.\n */\n showIcons?: boolean;\n /** Ancho mínimo del menú. Por defecto `200`. */\n minWidth?: number | string;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Texto a mostrar cuando ningún valor coincide. */\n placeholder?: ReactNode;\n /**\n * Prefijo fijo antes del valor seleccionado en el disparador (p. ej.\n * \"Estado:\"). Solo aparece en el trigger, no en el menú. El prefijo va en peso\n * normal y el valor seleccionado en negrita.\n */\n prefix?: ReactNode;\n /** `aria-label` del disparador (accesibilidad). */\n ariaLabel?: string;\n /** Valor base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Selector de una sola opción con la estética \"vista/filtro\" del CMS: un\n * disparador outlined con label + chevron y un menú cuyo ítem activo se resalta\n * en `secondaryContainer`. Es presentacional y controlado: el consumidor pasa\n * `value` y `onChange`.\n *\n * Pensado para filtros de listado (p. ej. \"Últimas Noticias\" o\n * \"Todos / Activos / Inactivos\"), reutilizable desde cualquier app que consuma\n * la librería.\n */\nexport function SelectDropdown({\n value,\n options,\n onChange,\n highlighted = false,\n showIcons = true,\n minWidth = 200,\n disabled = false,\n placeholder,\n prefix,\n ariaLabel,\n testId,\n}: SelectDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const active = useMemo(\n () => visibleOptions.find((option) => option.value === value),\n [visibleOptions, value],\n );\n\n /**\n * Aplica la selección y cierra el menú.\n * @param next - Valor de la opción elegida.\n * @returns void\n */\n const handleSelect = (next: string) => {\n onChange(next);\n setAnchorEl(null);\n };\n\n /** Renderiza una opción del menú. */\n const renderOption = (option: SelectOption) => {\n const selected = option.value === value;\n return (\n <MenuItem\n key={option.value}\n selected={selected}\n onClick={() => handleSelect(option.value)}\n data-testid={testId ? `${testId}-option-${option.value}` : undefined}\n sx={SelectStyles.sxItem(selected)}>\n {showIcons && option.icon ? (\n <ListItemIcon\n sx={{ color: option.iconColor ?? 'm3.onSurfaceVariant' }}>\n {withIconSize(option.icon)}\n </ListItemIcon>\n ) : null}\n {option.label}\n </MenuItem>\n );\n };\n\n return (\n <>\n <Button\n type=\"button\"\n disableElevation\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open ? 'true' : undefined}\n aria-label={ariaLabel}\n onClick={(event) => setAnchorEl(event.currentTarget)}\n data-testid={testId}\n sx={SelectStyles.sxTrigger(highlighted, open)}>\n {showIcons && active?.icon ? (\n <Box\n component=\"span\"\n className=\"sel-lead\"\n sx={{ color: active.iconColor ?? 'inherit' }}>\n {withIconSize(active.icon)}\n </Box>\n ) : null}\n <Box\n component=\"span\"\n sx={{ flex: 1, textAlign: 'left', whiteSpace: 'nowrap' }}>\n {prefix != null ? (\n <>\n <Box component=\"span\" sx={{ fontWeight: 400, mr: 0.5 }}>\n {prefix}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 600 }}>\n {active?.label ?? placeholder}\n </Box>\n </>\n ) : (\n (active?.label ?? placeholder)\n )}\n </Box>\n <Box component=\"span\" className=\"sel-chevron\">\n <ExpandMoreIcon />\n </Box>\n </Button>\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{\n paper: { sx: SelectStyles.sxMenuPaper(minWidth) },\n list: {\n sx: SelectStyles.sxList,\n role: 'listbox',\n ...(testId ? ({ 'data-testid': `${testId}-menu` } as object) : {}),\n },\n }}>\n {visibleOptions.map(renderOption)}\n </Menu>\n </>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows, sizes } from '../../theme/variables';\n\n/**\n * Estilos del `CmsSearchField` — el buscador del CMS (equivale al `app-search`\n * del Angular legacy). Caja redondeada sobre `surfaceContainerHigh`, con lupa\n * opcional a la izquierda, input que puede crecer/colapsar y un botón de\n * \"opciones avanzadas\" (tres puntos) opcional a la derecha.\n */\nexport const CmsSearchFieldStyles = {\n /** Caja contenedora del buscador (con hover y estado de foco). */\n sxRoot: (opts: { collapsed: boolean; focused: boolean }): SxProps<Theme> => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n height: sizes.searchHeight,\n pl: '16px',\n pr: '6px',\n borderRadius: radii.md,\n bgcolor: 'm3.surfaceContainerHigh',\n color: 'm3.onSurfaceVariant',\n transition:\n 'width 0.2s ease, flex-basis 0.2s ease, background-color 0.12s, box-shadow 0.18s',\n overflow: 'hidden',\n cursor: opts.collapsed ? 'pointer' : 'text',\n // Hover y foco (mientras se escribe): superficie elevada + sombra; reposo gris.\n '&:hover': { bgcolor: cmsColors.surface, boxShadow: shadows.button },\n ...(opts.collapsed ? { width: sizes.buttonHeight } : {}),\n ...(opts.focused && !opts.collapsed\n ? { bgcolor: cmsColors.surface, boxShadow: shadows.button }\n : {}),\n }),\n\n /** Lupa principal. */\n sxLeadIcon: {\n color: 'm3.onSurfaceVariant',\n fontSize: 20,\n flex: 'none',\n } as SxProps<Theme>,\n\n /** Input de texto. */\n sxInput: {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 0,\n background: 'transparent',\n fontFamily: fontFamilies.roboto,\n fontSize: 16,\n fontWeight: 400,\n color: cmsColors.textNav,\n '&::placeholder': {\n color: cmsColors.textNav,\n opacity: 1,\n },\n } as SxProps<Theme>,\n\n /** Botón redondo (limpiar / opciones avanzadas). */\n sxIconBtn: {\n width: 28,\n height: 28,\n p: 0,\n flex: 'none',\n color: 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: 'action.hover',\n color: 'm3.onSurface',\n },\n '& .MuiSvgIcon-root': { fontSize: 20 },\n } as SxProps<Theme>,\n\n /** Botón de opciones avanzadas cuando hay filtros activos. */\n sxAdvancedActive: {\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n '&:hover': {\n bgcolor: cmsColors.secondaryHover,\n color: cmsColors.onSecondaryContainer,\n },\n } as SxProps<Theme>,\n\n /** Punto indicador de filtros activos sobre el botón de avanzadas. */\n sxDot: {\n position: 'absolute',\n top: 2,\n right: 2,\n width: 8,\n height: 8,\n borderRadius: radii.pill,\n bgcolor: cmsColors.primary,\n border: '1.5px solid',\n borderColor: 'm3.surfaceContainerHigh',\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport MoreVertOutlinedIcon from '@mui/icons-material/MoreVertOutlined';\nimport SearchOutlinedIcon from '@mui/icons-material/SearchOutlined';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport { useRef, useState } from 'react';\nimport type { CSSProperties, KeyboardEvent } from 'react';\n\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { CmsSearchFieldStyles } from './CmsSearchField.styles';\n\nexport type CmsSearchFieldProps = {\n /** Valor del texto de búsqueda (controlado). */\n value: string;\n /** Callback en cada cambio del texto. */\n onChange: (value: string) => void;\n /** Callback al presionar Enter (búsqueda). */\n onSearch?: (value: string) => void;\n /** Callback al limpiar el campo. Si no se pasa, igual limpia `value`. */\n onClear?: () => void;\n /** Placeholder del input (ya traducido y modificable por el consumidor). */\n placeholder?: string;\n /** Muestra la lupa a la izquierda. Por defecto `true`. */\n showIcon?: boolean;\n /** Muestra el botón de opciones avanzadas (tres puntos). Por defecto `false`. */\n showAdvanced?: boolean;\n /** Marca el botón de avanzadas como activo (hay filtros aplicados). */\n advancedActive?: boolean;\n /** Callback al hacer clic en opciones avanzadas (abre modal o panel). */\n onAdvancedClick?: () => void;\n /**\n * Modo \"crece/colapsa\" como el `app-search` del Angular: arranca como un botón\n * con lupa y se expande al hacer foco; colapsa al perder foco si está vacío.\n * Por defecto `false` (input siempre expandido).\n */\n collapsible?: boolean;\n /** Ancho del input cuando está expandido. */\n width?: number | string;\n /**\n * Crece al enfocar hasta llenar el espacio disponible del contenedor (como el\n * buscador clásico del CMS), dejando `endGap` px antes del borde. En reposo\n * queda alineado a la derecha con ancho `width`. Por defecto `false`.\n */\n grow?: boolean;\n /** Ancho máximo opcional cuando `grow` está activo (por defecto sin tope). */\n maxWidth?: number | string;\n /** Espacio mínimo a la derecha cuando `grow` está activo. Por defecto `40`. */\n endGap?: number;\n /** `aria-label` del botón de avanzadas. */\n advancedAriaLabel?: string;\n /** `aria-label` del botón de limpiar. */\n clearAriaLabel?: string;\n /** `aria-label` del input. */\n ariaLabel?: string;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Buscador del CMS: input con lupa opcional, botón de limpiar y botón opcional\n * de \"opciones avanzadas\" (tres puntos) que el consumidor cablea a un modal o\n * panel lateral. Replica el comportamiento del `app-search` del Angular legacy\n * (incluido el modo `collapsible` que crece al enfocar y colapsa al vaciarse).\n *\n * Es presentacional y controlado: el texto y los textos visibles vienen por\n * props; la decisión de qué abrir en \"avanzadas\" vive en el gestor.\n */\nexport function CmsSearchField({\n value,\n onChange,\n onSearch,\n onClear,\n placeholder,\n showIcon = true,\n showAdvanced = false,\n advancedActive = false,\n onAdvancedClick,\n collapsible = false,\n width = 320,\n grow = false,\n maxWidth,\n endGap = 40,\n advancedAriaLabel,\n clearAriaLabel,\n ariaLabel,\n testId,\n}: CmsSearchFieldProps) {\n // Textos por defecto desde la lib (resueltos al idioma del provider). Si el\n // consumidor pasa el prop, manda el suyo.\n const { t } = useCmsTranslation();\n const s = t.messages.search;\n const resolvedPlaceholder = placeholder ?? s.placeholder;\n const resolvedAriaLabel = ariaLabel ?? s.inputAriaLabel;\n const resolvedClearAria = clearAriaLabel ?? s.clearAriaLabel;\n const resolvedAdvancedAria = advancedAriaLabel ?? s.advancedAriaLabel;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [focused, setFocused] = useState(false);\n\n // En modo collapsible la caja colapsa solo si no hay foco ni texto.\n const collapsed = collapsible && !focused && value.trim() === '';\n\n /** Maneja Enter para disparar la búsqueda. */\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') onSearch?.(value);\n };\n\n /** Limpia el texto y devuelve el foco al input. */\n const handleClear = () => {\n if (onClear) onClear();\n else onChange('');\n inputRef.current?.focus();\n };\n\n /** Expande el buscador colapsado al hacer clic en la caja. */\n const handleRootClick = () => {\n if (collapsed) inputRef.current?.focus();\n };\n\n let rootStyle: CSSProperties | undefined;\n if (collapsed) {\n rootStyle = undefined;\n } else if (grow) {\n // En reposo: alineado a la derecha con ancho `width`. Al enfocar: llena el\n // espacio disponible (flex-grow) dejando `endGap` px antes del borde.\n rootStyle = focused\n ? {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 0,\n maxWidth: maxWidth ?? 'none',\n marginLeft: 'auto',\n marginRight: endGap,\n transition: 'flex-basis 0.2s ease',\n }\n : {\n flexGrow: 0,\n flexShrink: 0,\n width,\n marginLeft: 'auto',\n marginRight: endGap,\n transition: 'flex-basis 0.2s ease',\n };\n } else {\n rootStyle = { flexBasis: width, maxWidth: '100%' };\n }\n\n return (\n <Box\n sx={CmsSearchFieldStyles.sxRoot({ collapsed, focused })}\n style={rootStyle}\n onClick={handleRootClick}\n data-testid={testId}>\n {showIcon && (\n <SearchOutlinedIcon sx={CmsSearchFieldStyles.sxLeadIcon} />\n )}\n\n {!collapsed && (\n <Box\n component=\"input\"\n ref={inputRef}\n type=\"text\"\n autoComplete=\"off\"\n aria-label={resolvedAriaLabel}\n placeholder={resolvedPlaceholder}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n sx={CmsSearchFieldStyles.sxInput}\n data-testid={testId ? `${testId}-input` : undefined}\n />\n )}\n\n {!collapsed && value.length > 0 && (\n <IconButton\n size=\"small\"\n aria-label={resolvedClearAria}\n onClick={handleClear}\n sx={CmsSearchFieldStyles.sxIconBtn}\n data-testid={testId ? `${testId}-icon-btn-clear` : undefined}>\n <CloseOutlinedIcon />\n </IconButton>\n )}\n\n {!collapsed && showAdvanced && (\n <IconButton\n size=\"small\"\n aria-label={resolvedAdvancedAria}\n aria-haspopup=\"dialog\"\n onClick={(event) => {\n event.stopPropagation();\n onAdvancedClick?.();\n }}\n sx={{\n ...(CmsSearchFieldStyles.sxIconBtn as object),\n position: 'relative',\n ...(advancedActive\n ? (CmsSearchFieldStyles.sxAdvancedActive as object)\n : {}),\n }}\n data-testid={testId ? `${testId}-icon-btn-advanced` : undefined}>\n <MoreVertOutlinedIcon />\n {advancedActive && <Box component=\"span\" sx={CmsSearchFieldStyles.sxDot} />}\n </IconButton>\n )}\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows } from '../../theme/variables';\n\n/**\n * Estilos compartidos de los campos de formulario del CMS.\n *\n * Replican la estética \"Material 3 standard\" del diseño de referencia\n * (etiqueta arriba en gris, control con subrayado inferior; el subrayado pasa a\n * `primary` al enfocar). Viven juntos para que todos los campos\n * (`CmsTextField`, `CmsSelectField`, etc.) compartan exactamente el mismo look y\n * puedan reutilizarse en cualquier formulario de cualquier gestor.\n */\nexport const fieldStyles = {\n /** Contenedor vertical: etiqueta + control + ayuda. */\n sxField: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n minWidth: 0,\n } as SxProps<Theme>,\n\n /** Etiqueta superior (gris, label-medium). */\n sxLabel: {\n font: 'inherit',\n fontSize: 12,\n fontWeight: 500,\n lineHeight: '16px',\n letterSpacing: '0.02em',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Texto de ayuda bajo el control. */\n sxHint: {\n fontSize: 11,\n lineHeight: '16px',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /**\n * `sx` para los controles basados en `TextField variant=\"standard\"`\n * (texto, número, fecha, select) y para el `renderInput` de los\n * `Autocomplete` (combobox, tags, multiselect). Unifica subrayado,\n * tipografía y color del placeholder.\n */\n sxStandard: {\n '& .MuiInputBase-root': {\n fontSize: 14,\n color: 'm3.onSurface',\n },\n '& .MuiInputBase-input': {\n paddingTop: '6px',\n paddingBottom: '6px',\n },\n // Subrayado en reposo / hover / foco.\n '& .MuiInputBase-root::before': {\n borderBottom: `1px solid ${cmsColors.border}`,\n },\n '& .MuiInputBase-root:hover:not(.Mui-disabled, .Mui-error)::before': {\n borderBottom: `1px solid ${cmsColors.controlBorder}`,\n },\n '& .MuiInputBase-root::after': {\n borderBottomColor: cmsColors.primary,\n },\n // Placeholder atenuado.\n '& input::placeholder, & textarea::placeholder': {\n color: 'm3.onSurfaceVariant',\n opacity: 0.6,\n },\n } as SxProps<Theme>,\n\n /**\n * Chips de los campos multiselección / etiquetas: fondo secundario, texto\n * sobre contenedor secundario y radio \"redondo cuadrado\".\n */\n sxChip: {\n height: 26,\n borderRadius: radii.sm,\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n fontWeight: 500,\n '& .MuiChip-deleteIcon': {\n color: cmsColors.onSecondaryContainer,\n opacity: 0.7,\n '&:hover': { opacity: 1, color: cmsColors.onSecondaryContainer },\n },\n } as SxProps<Theme>,\n\n /** Paper del desplegable de los `Autocomplete` (con aire vertical). */\n sxAutocompletePaper: {\n borderRadius: radii.lg,\n border: '1px solid',\n borderColor: 'm3.outlineVariant',\n py: '6px',\n } as SxProps<Theme>,\n\n /**\n * Listbox de los `Autocomplete`: opciones \"embutidas\" (con aire lateral y\n * radio), hover en `secondaryHover` y opción activa en `secondary`.\n */\n sxAutocompleteListbox: {\n '& .MuiAutocomplete-option': {\n borderRadius: radii.sm,\n mx: '6px',\n my: '2px',\n minHeight: 40,\n },\n '& .MuiAutocomplete-option.Mui-focused': {\n bgcolor: cmsColors.secondaryHover,\n },\n '& .MuiAutocomplete-option[aria-selected=\"true\"]': {\n bgcolor: cmsColors.secondary,\n },\n '& .MuiAutocomplete-option[aria-selected=\"true\"].Mui-focused': {\n bgcolor: cmsColors.secondaryHover,\n },\n } as SxProps<Theme>,\n\n /**\n * Paper del menú de `CmsSelectField`. Con padding propio para que las opciones\n * queden \"embutidas\" (hay aire entre el borde del contenedor y el resaltado de\n * cada opción), igual que el diseño de referencia.\n */\n sxSelectMenuPaper: {\n mt: '4px',\n p: '6px',\n borderRadius: radii.lg,\n bgcolor: 'm3.surfaceContainerLowest',\n border: '1px solid',\n borderColor: 'm3.outlineVariant',\n boxShadow: shadows.menuSoft,\n } as SxProps<Theme>,\n\n /** Lista del menú del select (sin padding; el aire lo pone el paper). */\n sxSelectList: {\n p: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '2px',\n } as SxProps<Theme>,\n\n /**\n * Opción del menú del select: redondeada, hover en `secondaryHover`, activa en\n * `secondary` (y su hover también `secondaryHover`). El check va a la derecha.\n */\n sxSelectItem: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n borderRadius: radii.sm,\n px: '12px',\n py: '8px',\n fontSize: 14,\n color: cmsColors.controlText,\n '&:hover': { bgcolor: cmsColors.secondaryHover },\n '&.Mui-selected': {\n bgcolor: cmsColors.secondary,\n '&:hover': { bgcolor: cmsColors.secondaryHover },\n },\n '&.Mui-focusVisible': { bgcolor: cmsColors.secondaryHover },\n } as SxProps<Theme>,\n\n /** Check de la opción activa del select. */\n sxSelectCheck: {\n fontSize: 18,\n color: cmsColors.primary,\n flex: 'none',\n } as SxProps<Theme>,\n\n /** Etiqueta del checkbox (alineada al control). */\n sxCheckboxLabel: {\n m: 0,\n gap: '4px',\n '& .MuiFormControlLabel-label': {\n fontSize: 14,\n color: 'm3.onSurface',\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cmsColors } from '../../theme/variables';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsCheckboxFieldProps = {\n /** Estado actual (controlado). */\n value: boolean;\n /** Callback con el nuevo estado. */\n onChange: (value: boolean) => void;\n /** Etiqueta a la derecha del checkbox (ya traducida). */\n label?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Checkbox con etiqueta. Activo = cuadro relleno con el color primario y check\n * blanco (íconos por defecto de MUI, sin override). Controlado y reutilizable.\n */\nexport function CmsCheckboxField({\n value,\n onChange,\n label,\n disabled = false,\n testId,\n}: CmsCheckboxFieldProps) {\n const id = useId();\n return (\n <FormControlLabel\n sx={fieldStyles.sxCheckboxLabel}\n disabled={disabled}\n control={\n <Checkbox\n id={id}\n checked={value}\n onChange={(event) => onChange(event.target.checked)}\n data-testid={testId}\n sx={{\n color: cmsColors.controlBorder,\n '&.Mui-checked': { color: cmsColors.primary },\n }}\n />\n }\n label={label}\n />\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport type { ReactNode } from 'react';\n\nimport { fieldStyles } from './fieldStyles';\n\nexport type FieldShellProps = {\n /** Etiqueta superior (ya traducida). Si se omite no se renderiza. */\n label?: ReactNode;\n /** `htmlFor` para asociar la etiqueta al control. */\n htmlFor?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** El control del campo. */\n children: ReactNode;\n};\n\n/**\n * Envoltorio común de un campo: etiqueta arriba + control + ayuda abajo.\n *\n * Centraliza la disposición vertical y la tipografía de la etiqueta para que\n * todos los campos del CMS se vean idénticos. Se exporta para poder construir\n * campos a medida que respeten el mismo layout.\n */\nexport function FieldShell({ label, htmlFor, hint, children }: FieldShellProps) {\n return (\n <Box sx={fieldStyles.sxField}>\n {label != null && (\n <Box component=\"label\" htmlFor={htmlFor} sx={fieldStyles.sxLabel}>\n {label}\n </Box>\n )}\n {children}\n {hint != null && <Box sx={fieldStyles.sxHint}>{hint}</Box>}\n </Box>\n );\n}\n","'use client';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\nimport type { FieldOption } from './types';\n\nexport type CmsComboboxFieldProps = {\n /** Valor seleccionado (value de la opción; vacío = ninguno). */\n value: string;\n /** Callback con el nuevo value (o '' al limpiar). */\n onChange: (value: string) => void;\n /** Opciones disponibles. */\n options: FieldOption[];\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Texto cuando no hay coincidencias (ya traducido). */\n noOptionsText?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Combobox de una sola opción con búsqueda escribiendo (equivale al campo\n * \"Creador\" / \"Autor\" del diseño). Internamente usa `Autocomplete` de MUI pero\n * expone una API por `value: string`. Controlado y reutilizable.\n */\nexport function CmsComboboxField({\n value,\n onChange,\n options,\n label,\n placeholder,\n hint,\n noOptionsText,\n disabled = false,\n testId,\n}: CmsComboboxFieldProps) {\n const id = useId();\n const { t } = useCmsTranslation();\n const resolvedNoOptions = noOptionsText ?? t.messages.search.noOptions;\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const selected = useMemo(\n () => visibleOptions.find((option) => option.value === value) ?? null,\n [visibleOptions, value],\n );\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Autocomplete\n id={id}\n data-testid={testId}\n options={visibleOptions}\n value={selected}\n disabled={disabled}\n noOptionsText={resolvedNoOptions}\n getOptionLabel={(option) =>\n typeof option.label === 'string' ? option.label : option.value\n }\n getOptionDisabled={(option) => Boolean(option.disabled)}\n isOptionEqualToValue={(option, current) =>\n option.value === current.value\n }\n onChange={(_event, next) => onChange(next ? next.value : '')}\n slotProps={{\n paper: { sx: fieldStyles.sxAutocompletePaper },\n listbox: { sx: fieldStyles.sxAutocompleteListbox },\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"standard\"\n placeholder={placeholder}\n sx={fieldStyles.sxStandard}\n />\n )}\n />\n </FieldShell>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, shadows } from '../../theme/variables';\n\n/**\n * Estilos del calendario M3 propio de `CmsDateField` (reemplaza al selector\n * nativo del navegador). Superficie gris, día seleccionado y botones en color\n * primario, ancho cómodo y sombra suave, igual que el diseño de referencia.\n */\nexport const datePickerStyles = {\n /** Paper del popover del calendario. */\n sxPaper: {\n width: 312,\n p: '12px 12px 8px',\n borderRadius: '16px',\n bgcolor: 'm3.surfaceContainer',\n backgroundImage: 'none',\n boxShadow: shadows.menu,\n } as SxProps<Theme>,\n\n /** Cabecera: mes/año + navegación. */\n sxHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: '6px',\n pb: '8px',\n } as SxProps<Theme>,\n\n sxMonthLabel: {\n fontSize: 14,\n fontWeight: 600,\n color: 'm3.onSurface',\n textTransform: 'capitalize',\n } as SxProps<Theme>,\n\n sxNav: { display: 'inline-flex', gap: '2px' } as SxProps<Theme>,\n\n sxNavBtn: {\n width: 36,\n height: 36,\n color: 'm3.onSurfaceVariant',\n '&:hover': { bgcolor: cmsColors.surfaceHover, color: 'm3.onSurface' },\n } as SxProps<Theme>,\n\n sxGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n gap: '2px',\n } as SxProps<Theme>,\n\n sxDow: {\n height: 32,\n display: 'grid',\n placeItems: 'center',\n fontSize: 11,\n fontWeight: 500,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Celda de día, con sus variantes (otro mes / hoy / seleccionado). */\n sxDay: (opts: {\n other: boolean;\n today: boolean;\n selected: boolean;\n }): SxProps<Theme> => ({\n height: 40,\n border: 0,\n p: 0,\n borderRadius: '999px',\n display: 'grid',\n placeItems: 'center',\n fontSize: 14,\n cursor: 'pointer',\n bgcolor: 'transparent',\n color: 'm3.onSurface',\n transition: 'background-color 0.12s, color 0.12s',\n '&:hover': { bgcolor: cmsColors.surfaceHover },\n ...(opts.other ? { color: 'm3.onSurfaceVariant', opacity: 0.55 } : {}),\n ...(opts.today\n ? { boxShadow: `inset 0 0 0 1px ${cmsColors.primary}`, color: cmsColors.primary }\n : {}),\n ...(opts.selected\n ? {\n bgcolor: cmsColors.primary,\n color: cmsColors.white,\n fontWeight: 600,\n '&:hover': { bgcolor: cmsColors.primaryHover },\n }\n : {}),\n }),\n\n sxFooter: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '4px',\n pt: '6px',\n } as SxProps<Theme>,\n\n sxFooterBtn: {\n height: 36,\n px: '14px',\n borderRadius: '999px',\n textTransform: 'none',\n fontWeight: 500,\n color: cmsColors.primary,\n '&:hover': {\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 10%, transparent)`,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CalendarTodayOutlinedIcon from '@mui/icons-material/CalendarTodayOutlined';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Popover from '@mui/material/Popover';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport {\n getIntlLocaleTag,\n useCmsTranslation,\n} from '../../i18n/useCmsTranslation';\nimport { datePickerStyles } from './CmsDateField.styles';\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsDateFieldProps = {\n /** Valor en formato ISO `AAAA-MM-DD` (controlado; vacío = sin fecha). */\n value: string;\n /** Callback con la nueva fecha ISO (o '' al limpiar). */\n onChange: (value: string) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\nfunction pad(n: number): string {\n return n < 10 ? `0${n}` : `${n}`;\n}\n\n/** Parsea un ISO `AAAA-MM-DD` a sus partes; `null` si no es válido. */\nfunction parseISO(value: string): { y: number; m: number; d: number } | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value);\n if (!match) return null;\n return { y: +match[1], m: +match[2] - 1, d: +match[3] };\n}\n\nfunction toISO(y: number, m: number, d: number): string {\n return `${y}-${pad(m + 1)}-${pad(d)}`;\n}\n\n/**\n * Campo de fecha con calendario Material 3 propio (no el selector nativo del\n * navegador, que no se puede estilar). El valor se maneja en ISO `AAAA-MM-DD` y\n * se muestra como `dd/mm/aaaa`. Los meses y días se rotulan según el idioma del\n * provider. Controlado y reutilizable.\n */\nexport function CmsDateField({\n value,\n onChange,\n label,\n hint,\n disabled = false,\n testId,\n}: CmsDateFieldProps) {\n const id = useId();\n const { t, locale } = useCmsTranslation();\n const s = t.messages.search;\n const localeTag = getIntlLocaleTag(locale);\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [open, setOpen] = useState(false);\n\n const selected = parseISO(value);\n const today = new Date();\n\n // Mes en vista: arranca en la fecha seleccionada o en el mes actual.\n const [view, setView] = useState(() =>\n selected\n ? { y: selected.y, m: selected.m }\n : { y: today.getFullYear(), m: today.getMonth() },\n );\n\n const display = selected\n ? `${pad(selected.d)}/${pad(selected.m + 1)}/${selected.y}`\n : '';\n\n // Nombres de los días (orden lunes→domingo) según el idioma.\n const weekdays = useMemo(() => {\n const fmt = new Intl.DateTimeFormat(localeTag, { weekday: 'short' });\n const monday = new Date(2023, 0, 2); // lunes de referencia\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(monday.getFullYear(), monday.getMonth(), monday.getDate() + i);\n return fmt.format(d).replace('.', '').slice(0, 2);\n });\n }, [localeTag]);\n\n const monthLabel = useMemo(\n () =>\n new Intl.DateTimeFormat(localeTag, {\n month: 'long',\n year: 'numeric',\n }).format(new Date(view.y, view.m, 1)),\n [localeTag, view],\n );\n\n // 42 celdas (6 semanas) empezando en lunes.\n const cells = useMemo(() => {\n const first = new Date(view.y, view.m, 1);\n const startDow = (first.getDay() + 6) % 7;\n return Array.from({ length: 42 }, (_, i) => {\n const date = new Date(view.y, view.m, 1 + (i - startDow));\n return { y: date.getFullYear(), m: date.getMonth(), d: date.getDate() };\n });\n }, [view]);\n\n const openPicker = (event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n const host = (event.currentTarget as HTMLElement).closest(\n '[data-cms-datefield]',\n ) as HTMLElement | null;\n setAnchorEl(host);\n setView(\n selected\n ? { y: selected.y, m: selected.m }\n : { y: today.getFullYear(), m: today.getMonth() },\n );\n setOpen(true);\n };\n\n const prevMonth = () =>\n setView((v) => (v.m === 0 ? { y: v.y - 1, m: 11 } : { y: v.y, m: v.m - 1 }));\n const nextMonth = () =>\n setView((v) => (v.m === 11 ? { y: v.y + 1, m: 0 } : { y: v.y, m: v.m + 1 }));\n\n const pickDay = (cell: { y: number; m: number; d: number }) => {\n onChange(toISO(cell.y, cell.m, cell.d));\n setOpen(false);\n };\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Box data-cms-datefield>\n <TextField\n id={id}\n variant=\"standard\"\n value={display}\n placeholder=\"dd/mm/aaaa\"\n disabled={disabled}\n fullWidth\n onClick={openPicker}\n sx={fieldStyles.sxStandard}\n slotProps={{\n input: {\n readOnly: true,\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n edge=\"end\"\n disabled={disabled}\n aria-label={s.dateOpenAriaLabel}\n onClick={openPicker}>\n <CalendarTodayOutlinedIcon sx={{ fontSize: 18 }} />\n </IconButton>\n </InputAdornment>\n ),\n },\n htmlInput: { 'data-testid': testId, style: { cursor: 'pointer' } },\n }}\n />\n </Box>\n\n <Popover\n open={open && Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={() => setOpen(false)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{ paper: { sx: datePickerStyles.sxPaper } }}>\n <Box sx={datePickerStyles.sxHeader}>\n <Box sx={datePickerStyles.sxMonthLabel}>{monthLabel}</Box>\n <Box sx={datePickerStyles.sxNav}>\n <IconButton\n size=\"small\"\n aria-label={s.prevMonthAriaLabel}\n onClick={prevMonth}\n sx={datePickerStyles.sxNavBtn}>\n <ChevronLeftIcon />\n </IconButton>\n <IconButton\n size=\"small\"\n aria-label={s.nextMonthAriaLabel}\n onClick={nextMonth}\n sx={datePickerStyles.sxNavBtn}>\n <ChevronRightIcon />\n </IconButton>\n </Box>\n </Box>\n\n <Box sx={datePickerStyles.sxGrid}>\n {weekdays.map((day, i) => (\n <Box key={`dow-${i}`} sx={datePickerStyles.sxDow}>\n {day}\n </Box>\n ))}\n {cells.map((cell, i) => {\n const other = cell.m !== view.m;\n const isToday =\n cell.y === today.getFullYear() &&\n cell.m === today.getMonth() &&\n cell.d === today.getDate();\n const isSelected =\n !!selected &&\n cell.y === selected.y &&\n cell.m === selected.m &&\n cell.d === selected.d;\n return (\n <Box\n key={`day-${i}`}\n component=\"button\"\n type=\"button\"\n onClick={() => pickDay(cell)}\n sx={datePickerStyles.sxDay({\n other,\n today: isToday,\n selected: isSelected,\n })}>\n {cell.d}\n </Box>\n );\n })}\n </Box>\n\n <Box sx={datePickerStyles.sxFooter}>\n <Button\n sx={datePickerStyles.sxFooterBtn}\n onClick={() => {\n onChange('');\n setOpen(false);\n }}>\n {s.dateClear}\n </Button>\n <Button\n sx={datePickerStyles.sxFooterBtn}\n onClick={() => {\n onChange(toISO(today.getFullYear(), today.getMonth(), today.getDate()));\n setOpen(false);\n }}>\n {s.dateToday}\n </Button>\n </Box>\n </Popover>\n </FieldShell>\n );\n}\n","'use client';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport Chip from '@mui/material/Chip';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cmsColors } from '../../theme/variables';\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\nimport type { FieldOption } from './types';\n\nexport type CmsMultiSelectFieldProps = {\n /** Valores seleccionados (controlado). */\n value: string[];\n /** Callback con los nuevos valores. */\n onChange: (value: string[]) => void;\n /** Opciones disponibles. */\n options: FieldOption[];\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder cuando no hay selección (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Texto cuando no hay coincidencias (ya traducido). */\n noOptionsText?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo de selección múltiple con chips y checkboxes en el desplegable\n * (equivale al campo \"Estados\" del diseño). Internamente usa `Autocomplete`\n * múltiple de MUI pero expone una API por `value: string[]`. Reutilizable.\n */\nexport function CmsMultiSelectField({\n value,\n onChange,\n options,\n label,\n placeholder,\n hint,\n noOptionsText,\n disabled = false,\n testId,\n}: CmsMultiSelectFieldProps) {\n const id = useId();\n const { t } = useCmsTranslation();\n const resolvedNoOptions = noOptionsText ?? t.messages.search.noOptions;\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const selected = useMemo(\n () => visibleOptions.filter((option) => value.includes(option.value)),\n [visibleOptions, value],\n );\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Autocomplete\n id={id}\n data-testid={testId}\n multiple\n disableCloseOnSelect\n options={visibleOptions}\n value={selected}\n disabled={disabled}\n noOptionsText={resolvedNoOptions}\n getOptionLabel={(option) =>\n typeof option.label === 'string' ? option.label : option.value\n }\n getOptionDisabled={(option) => Boolean(option.disabled)}\n isOptionEqualToValue={(option, current) =>\n option.value === current.value\n }\n onChange={(_event, next) => onChange(next.map((option) => option.value))}\n slotProps={{\n paper: { sx: fieldStyles.sxAutocompletePaper },\n listbox: { sx: fieldStyles.sxAutocompleteListbox },\n }}\n renderValue={(items, getItemProps) =>\n items.map((option, index) => {\n const { key, ...chipProps } = getItemProps({ index });\n return (\n <Chip\n key={key}\n label={option.label}\n size=\"small\"\n sx={fieldStyles.sxChip}\n icon={\n option.color ? (\n <Box\n component=\"span\"\n sx={{\n width: 9,\n height: 9,\n borderRadius: '999px',\n bgcolor: option.color,\n ml: '6px',\n flex: 'none',\n }}\n />\n ) : undefined\n }\n {...chipProps}\n />\n );\n })\n }\n renderOption={(props, option, { selected: isSelected }) => {\n const { key, ...liProps } = props;\n return (\n <li key={key} {...liProps}>\n <Checkbox\n checked={isSelected}\n sx={{\n mr: 1,\n p: 0.5,\n color: cmsColors.controlBorder,\n '&.Mui-checked': { color: cmsColors.primary },\n }}\n />\n {option.color && (\n <Box\n component=\"span\"\n sx={{\n width: 9,\n height: 9,\n borderRadius: '999px',\n bgcolor: option.color,\n mr: '8px',\n flex: 'none',\n }}\n />\n )}\n {option.label}\n </li>\n );\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"standard\"\n placeholder={selected.length === 0 ? placeholder : undefined}\n sx={fieldStyles.sxStandard}\n />\n )}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport TextField from '@mui/material/TextField';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsNumberFieldProps = {\n /** Valor actual como string (controlado; vacío = sin valor). */\n value: string;\n /** Callback con el nuevo valor (string para permitir el campo vacío). */\n onChange: (value: string) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Valor mínimo permitido. */\n min?: number;\n /** Valor máximo permitido. */\n max?: number;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo numérico con la estética estándar del CMS. Mantiene el valor como string\n * para permitir el estado vacío. Controlado y reutilizable.\n */\nexport function CmsNumberField({\n value,\n onChange,\n label,\n placeholder,\n hint,\n min,\n max,\n disabled = false,\n testId,\n}: CmsNumberFieldProps) {\n const id = useId();\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <TextField\n id={id}\n variant=\"standard\"\n type=\"number\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n fullWidth\n onChange={(event) => onChange(event.target.value)}\n sx={fieldStyles.sxStandard}\n slotProps={{\n htmlInput: { min, max, inputMode: 'numeric', 'data-testid': testId },\n }}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport CheckIcon from '@mui/icons-material/Check';\nimport Box from '@mui/material/Box';\nimport MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\nimport type { FieldOption } from './types';\n\nexport type CmsSelectFieldProps = {\n /** Valor seleccionado (controlado; vacío = ninguno). */\n value: string;\n /** Callback con el nuevo valor. */\n onChange: (value: string) => void;\n /** Opciones disponibles. */\n options: FieldOption[];\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder mostrado cuando no hay valor (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Muestra el check en la opción activa. Por defecto `true`. */\n showCheck?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Selector de una sola opción tipo formulario (subrayado M3). A diferencia de\n * `SelectDropdown` (píldora para filtros de listado), este es un campo de\n * formulario con etiqueta arriba. El menú resalta la opción activa en\n * `secondary`, hace hover en `secondaryHover`, deja aire entre el borde del\n * contenedor y el resaltado, y marca la activa con un check. Controlado y\n * reutilizable.\n */\nexport function CmsSelectField({\n value,\n onChange,\n options,\n label,\n placeholder,\n hint,\n disabled = false,\n showCheck = true,\n testId,\n}: CmsSelectFieldProps) {\n const id = useId();\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <TextField\n id={id}\n select\n variant=\"standard\"\n value={value}\n disabled={disabled}\n fullWidth\n onChange={(event) => onChange(event.target.value)}\n sx={fieldStyles.sxStandard}\n slotProps={{\n select: {\n displayEmpty: true,\n renderValue: (selected) => {\n const current = visibleOptions.find(\n (option) => option.value === (selected as string),\n );\n if (current) return current.label;\n return <span style={{ opacity: 0.6 }}>{placeholder ?? ''}</span>;\n },\n MenuProps: {\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' },\n transformOrigin: { vertical: 'top', horizontal: 'left' },\n slotProps: {\n paper: { sx: fieldStyles.sxSelectMenuPaper },\n list: { sx: fieldStyles.sxSelectList },\n },\n },\n },\n htmlInput: { 'data-testid': testId },\n }}>\n {placeholder != null && (\n <MenuItem value=\"\" sx={fieldStyles.sxSelectItem}>\n <Box component=\"span\" sx={{ flex: 1, opacity: 0.6 }}>\n {placeholder}\n </Box>\n </MenuItem>\n )}\n {visibleOptions.map((option) => (\n <MenuItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n sx={fieldStyles.sxSelectItem}>\n <Box component=\"span\" sx={{ flex: 1 }}>\n {option.label}\n </Box>\n {showCheck && value === option.value && (\n <CheckIcon sx={fieldStyles.sxSelectCheck} />\n )}\n </MenuItem>\n ))}\n </TextField>\n </FieldShell>\n );\n}\n","'use client';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport TextField from '@mui/material/TextField';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsTagsFieldProps = {\n /** Etiquetas actuales (controlado). */\n value: string[];\n /** Callback con las nuevas etiquetas. */\n onChange: (value: string[]) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder cuando no hay etiquetas (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Sugerencias opcionales para el autocompletado. */\n suggestions?: string[];\n /** Ícono opcional a la izquierda del control (p. ej. una etiqueta/lupa). */\n startIcon?: ReactNode;\n /**\n * `sx` de los chips de etiqueta. Si se pasa, **reemplaza** el estilo por\n * defecto (`fieldStyles.sxChip`, primario tenue), permitiendo p. ej. usar el\n * color secundario.\n */\n chipSx?: SxProps<Theme>;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo de etiquetas libres: se escribe y se presiona Enter para agregar chips\n * (equivale al campo \"Etiquetas\" del diseño). Internamente usa `Autocomplete`\n * `freeSolo` múltiple. Controlado y reutilizable.\n */\nexport function CmsTagsField({\n value,\n onChange,\n label,\n placeholder,\n hint,\n suggestions = [],\n startIcon,\n chipSx,\n disabled = false,\n testId,\n}: CmsTagsFieldProps) {\n const id = useId();\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Autocomplete\n id={id}\n data-testid={testId}\n multiple\n freeSolo\n options={suggestions}\n value={value}\n disabled={disabled}\n onChange={(_event, next) =>\n onChange(\n next\n .map((item) => (typeof item === 'string' ? item.trim() : ''))\n .filter((item, index, all) => item && all.indexOf(item) === index),\n )\n }\n slotProps={{ paper: { sx: fieldStyles.sxAutocompletePaper } }}\n renderValue={(items, getItemProps) =>\n items.map((item, index) => {\n const { key, ...chipProps } = getItemProps({ index });\n return (\n <Chip\n key={key}\n label={item}\n size=\"small\"\n sx={chipSx ?? fieldStyles.sxChip}\n {...chipProps}\n />\n );\n })\n }\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"standard\"\n placeholder={value.length === 0 ? placeholder : undefined}\n sx={fieldStyles.sxStandard}\n slotProps={\n startIcon\n ? {\n ...params.slotProps,\n input: {\n ...params.slotProps.input,\n startAdornment: (\n <>\n <Box\n component=\"span\"\n sx={{\n display: 'inline-flex',\n color: 'm3.onSurfaceVariant',\n mr: 0.5,\n }}>\n {startIcon}\n </Box>\n {params.slotProps.input.startAdornment}\n </>\n ),\n },\n }\n : params.slotProps\n }\n />\n )}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport TextField from '@mui/material/TextField';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsTextFieldProps = {\n /** Valor actual (controlado). */\n value: string;\n /** Callback con el nuevo texto. */\n onChange: (value: string) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Tipo HTML del input. Por defecto `text`. */\n type?: 'text' | 'email' | 'url';\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo de texto de una línea con la estética estándar del CMS (etiqueta arriba,\n * subrayado inferior). Controlado: el consumidor pasa `value` y `onChange`.\n * Reutilizable en cualquier formulario.\n */\nexport function CmsTextField({\n value,\n onChange,\n label,\n placeholder,\n hint,\n type = 'text',\n disabled = false,\n testId,\n}: CmsTextFieldProps) {\n const id = useId();\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <TextField\n id={id}\n variant=\"standard\"\n type={type}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n fullWidth\n onChange={(event) => onChange(event.target.value)}\n sx={fieldStyles.sxStandard}\n slotProps={{ htmlInput: { 'data-testid': testId } }}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport { CmsCheckboxField } from './CmsCheckboxField';\nimport { CmsComboboxField } from './CmsComboboxField';\nimport { CmsDateField } from './CmsDateField';\nimport { CmsMultiSelectField } from './CmsMultiSelectField';\nimport { CmsNumberField } from './CmsNumberField';\nimport { CmsSelectField } from './CmsSelectField';\nimport { CmsTagsField } from './CmsTagsField';\nimport { CmsTextField } from './CmsTextField';\nimport type { FieldConfig, FieldValue } from './types';\n\nexport type FieldRendererProps = {\n /** Configuración del campo a renderizar. */\n field: FieldConfig;\n /** Valor actual del campo. */\n value: FieldValue | undefined;\n /** Callback con el nuevo valor del campo. */\n onChange: (value: FieldValue) => void;\n};\n\n/**\n * Renderiza el componente de campo que corresponde a una `FieldConfig`,\n * resolviendo el tipo de valor por cada `kind`. Es el puente entre la\n * configuración declarativa del modal y los componentes de campo concretos.\n */\nexport function FieldRenderer({ field, value, onChange }: FieldRendererProps) {\n const asString = typeof value === 'string' ? value : '';\n const asArray = Array.isArray(value) ? value : [];\n const asBool = value === true;\n\n switch (field.kind) {\n case 'text':\n return (\n <CmsTextField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n type={field.type}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'number':\n return (\n <CmsNumberField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n min={field.min}\n max={field.max}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'date':\n return (\n <CmsDateField\n label={field.label}\n hint={field.hint}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'select':\n return (\n <CmsSelectField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n options={field.options}\n disabled={field.disabled}\n showCheck={field.showCheck}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'combobox':\n return (\n <CmsComboboxField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n options={field.options}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'multiselect':\n return (\n <CmsMultiSelectField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n options={field.options}\n disabled={field.disabled}\n testId={field.testId}\n value={asArray}\n onChange={onChange}\n />\n );\n case 'tags':\n return (\n <CmsTagsField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n disabled={field.disabled}\n testId={field.testId}\n value={asArray}\n onChange={onChange}\n />\n );\n case 'checkbox':\n return (\n <CmsCheckboxField\n label={field.label}\n disabled={field.disabled}\n testId={field.testId}\n value={asBool}\n onChange={onChange}\n />\n );\n default:\n return null;\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows, sizes } from '../../theme/variables';\n\n/**\n * Estilos del `CmsAdvancedSearch` — el contenedor de \"Búsqueda avanzada\" en sus\n * dos presentaciones: modal centrado (como el gestor de Noticias) y panel\n * lateral derecho (como Imágenes/Videos). Comparten cabecera, cuerpo en grilla y\n * pie con Restablecer + Aplicar.\n */\nexport const CmsAdvancedSearchStyles = {\n /** Paper del modal centrado. */\n sxModalPaper: {\n width: 'min(1080px, calc(100vw - 48px))',\n maxWidth: 'none',\n borderRadius: radii.xl,\n bgcolor: 'm3.surfaceContainerLowest',\n backgroundImage: 'none',\n } as SxProps<Theme>,\n\n /** Paper del panel lateral. */\n sxDrawerPaper: (drawerWidth: number | string): SxProps<Theme> => ({\n width: drawerWidth,\n maxWidth: '100vw',\n bgcolor: 'm3.surfaceContainerLow',\n backgroundImage: 'none',\n display: 'flex',\n flexDirection: 'column',\n }),\n\n /** Layout vertical interno (cabecera / cuerpo / pie). */\n sxContainer: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0,\n maxHeight: '100%',\n } as SxProps<Theme>,\n\n /** Cabecera con ícono + título + cerrar. */\n sxHead: {\n flex: 'none',\n display: 'flex',\n alignItems: 'center',\n gap: '14px',\n px: '24px',\n py: '18px',\n borderBottom: '1px solid',\n borderColor: 'm3.outlineVariant',\n } as SxProps<Theme>,\n\n /** Ícono de la cabecera (cuadro con tinte primario). */\n sxHeadIcon: {\n width: 44,\n height: 44,\n flex: 'none',\n display: 'grid',\n placeItems: 'center',\n borderRadius: radii.lg,\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 14%, transparent)`,\n color: cmsColors.primary,\n '& .MuiSvgIcon-root': { fontSize: 24 },\n } as SxProps<Theme>,\n\n /** Título. */\n sxTitle: {\n flex: 1,\n minWidth: 0,\n fontSize: 22,\n fontWeight: 500,\n lineHeight: '28px',\n color: 'm3.onSurface',\n } as SxProps<Theme>,\n\n /** Botón cerrar. */\n sxClose: {\n flex: 'none',\n color: 'm3.onSurfaceVariant',\n '&:hover': { bgcolor: cmsColors.surfaceHover },\n } as SxProps<Theme>,\n\n /** Cuerpo desplazable. */\n sxBody: {\n flex: '1 1 auto',\n minHeight: 0,\n overflowY: 'auto',\n px: '24px',\n py: '24px',\n } as SxProps<Theme>,\n\n /** Grilla de campos. `columns` controla el modal; el drawer fuerza 1 columna. */\n sxGrid: (columns: number, single: boolean): SxProps<Theme> => ({\n display: 'grid',\n gap: '18px 22px',\n alignItems: 'start',\n gridTemplateColumns: single ? '1fr' : `repeat(${columns}, minmax(0, 1fr))`,\n }),\n\n /** Pie con acciones. */\n sxFoot: {\n flex: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '12px',\n px: '24px',\n py: '16px',\n borderTop: '1px solid',\n borderColor: 'm3.outlineVariant',\n bgcolor: 'm3.surfaceContainer',\n } as SxProps<Theme>,\n\n /** Botón \"Restablecer\" (texto). */\n sxReset: {\n height: sizes.buttonHeight,\n px: '16px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontWeight: 500,\n color: cmsColors.primary,\n '&:hover': {\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 8%, transparent)`,\n },\n '&.Mui-disabled': { color: 'm3.onSurface', opacity: 0.38 },\n } as SxProps<Theme>,\n\n /** Botón \"Aplicar\" (relleno primario). */\n sxApply: {\n height: sizes.buttonHeight,\n px: '24px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontWeight: 600,\n gap: '8px',\n bgcolor: cmsColors.primary,\n color: cmsColors.white,\n boxShadow: shadows.button,\n '&:hover': { bgcolor: cmsColors.primaryHover },\n '& .MuiSvgIcon-root': { fontSize: 18 },\n } as SxProps<Theme>,\n};\n","import type { CmsTranslator } from '../../i18n/createTranslator';\nimport type { FieldConfig } from '../fields/types';\n\n/**\n * Construye el catálogo estándar de campos de \"Búsqueda avanzada\" del CMS con\n * los textos por defecto de la librería (resueltos al idioma activo). Es lo que\n * usa `CmsAdvancedSearch` cuando el consumidor no pasa `fields`.\n *\n * Los campos de datos (sección, categoría, creador, autor, grupos, zona) traen\n * `options: []`: sus etiquetas/placeholder vienen traducidos de la lib, pero las\n * opciones reales las inyecta cada gestor (son datos del backend). Los campos de\n * enum fijo (tipo, estados, orden, prioridad, dirección) sí traen sus opciones\n * por defecto, también traducidas.\n *\n * @param t - Traductor de la lib (`useCmsTranslation().t`).\n * @returns Lista de campos lista para `CmsAdvancedSearch`.\n */\nexport function buildDefaultSearchFields(t: CmsTranslator): FieldConfig[] {\n const f = t.messages.searchFields;\n const o = t.messages.searchOptions;\n\n return [\n { kind: 'text', name: 'text', label: f.text, placeholder: f.textPlaceholder, span: 3 },\n {\n kind: 'select',\n name: 'type',\n label: f.type,\n placeholder: f.typePlaceholder,\n options: [\n { value: 'news', label: o.typeNews },\n { value: 'list', label: o.typeList },\n { value: 'liveblog', label: o.typeLiveblog },\n ],\n },\n {\n kind: 'select',\n name: 'section',\n label: f.section,\n placeholder: f.sectionPlaceholder,\n options: [],\n },\n {\n kind: 'select',\n name: 'category',\n label: f.category,\n placeholder: f.categoryPlaceholder,\n options: [],\n },\n {\n kind: 'multiselect',\n name: 'states',\n label: f.states,\n placeholder: f.statesPlaceholder,\n options: [\n { value: 'published', label: o.statePublished },\n { value: 'draft', label: o.stateDraft },\n { value: 'scheduled', label: o.stateScheduled },\n { value: 'review', label: o.stateReview },\n { value: 'done', label: o.stateDone },\n ],\n },\n {\n kind: 'combobox',\n name: 'creator',\n label: f.creator,\n placeholder: f.creatorPlaceholder,\n options: [],\n },\n {\n kind: 'combobox',\n name: 'author',\n label: f.author,\n placeholder: f.authorPlaceholder,\n options: [],\n },\n { kind: 'tags', name: 'tags', label: f.tags, placeholder: f.tagsPlaceholder },\n {\n kind: 'select',\n name: 'groups',\n label: f.groups,\n placeholder: f.groupsPlaceholder,\n options: [],\n },\n {\n kind: 'number',\n name: 'amount',\n label: f.amount,\n placeholder: f.amountPlaceholder,\n min: 1,\n },\n { kind: 'date', name: 'dateFrom', label: f.dateFrom },\n { kind: 'date', name: 'dateTo', label: f.dateTo },\n {\n kind: 'select',\n name: 'sortBy',\n label: f.sortBy,\n placeholder: f.sortByPlaceholder,\n options: [\n { value: 'relevance', label: o.sortRelevance },\n { value: 'date', label: o.sortDate },\n { value: 'title', label: o.sortTitle },\n ],\n },\n {\n kind: 'select',\n name: 'zone',\n label: f.zone,\n placeholder: f.zonePlaceholder,\n options: [],\n },\n {\n kind: 'select',\n name: 'priority',\n label: f.priority,\n placeholder: f.priorityPlaceholder,\n options: [\n { value: 'high', label: o.priorityHigh },\n { value: 'mid', label: o.priorityMid },\n { value: 'low', label: o.priorityLow },\n ],\n },\n {\n kind: 'select',\n name: 'order',\n label: f.order,\n placeholder: f.orderPlaceholder,\n options: [\n { value: 'desc', label: o.orderDesc },\n { value: 'asc', label: o.orderAsc },\n ],\n },\n { kind: 'checkbox', name: 'includeDrafts', label: f.includeDrafts, span: 1 },\n { kind: 'checkbox', name: 'includeHistory', label: f.includeHistory, span: 2 },\n ];\n}\n","'use client';\n\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport FilterAltOutlinedIcon from '@mui/icons-material/FilterAltOutlined';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport Drawer from '@mui/material/Drawer';\nimport IconButton from '@mui/material/IconButton';\nimport { useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { FieldRenderer } from '../fields/FieldRenderer';\nimport type { FieldConfig, FieldValue, FieldValues } from '../fields/types';\nimport { CmsAdvancedSearchStyles } from './CmsAdvancedSearch.styles';\nimport { buildDefaultSearchFields } from './defaultFields';\n\n/** Presentación del contenedor de búsqueda avanzada. */\nexport type CmsAdvancedSearchVariant = 'modal' | 'drawer';\n\nexport type CmsAdvancedSearchProps = {\n /** Si el contenedor está abierto. */\n open: boolean;\n /** Callback al cerrar (botón X, scrim o Escape). */\n onClose: () => void;\n /** Modal centrado o panel lateral derecho. Por defecto `modal`. */\n variant?: CmsAdvancedSearchVariant;\n /** Título. Por defecto el de la lib (\"Búsqueda avanzada\", según idioma). */\n title?: ReactNode;\n /** Ícono de la cabecera. Por defecto un embudo de filtro. */\n titleIcon?: ReactNode;\n /**\n * Campos a mostrar. Si se omite, usa el catálogo estándar de la lib\n * (`buildDefaultSearchFields`) ya traducido. Cada gestor puede pasar solo los\n * campos que necesita o partir del catálogo por defecto y ajustar opciones.\n */\n fields?: FieldConfig[];\n /** Valores iniciales (al abrir se sincroniza el borrador con estos). */\n initialValues?: FieldValues;\n /** Callback al aplicar, con los valores del formulario. */\n onApply: (values: FieldValues) => void;\n /** Callback al restablecer (luego de limpiar el borrador). */\n onReset?: () => void;\n /** Texto del botón aplicar. Por defecto el de la lib. */\n applyLabel?: ReactNode;\n /** Texto del botón restablecer. Por defecto el de la lib. */\n resetLabel?: ReactNode;\n /** `aria-label` del botón cerrar. Por defecto el de la lib. */\n closeAriaLabel?: string;\n /** Columnas de la grilla en variante modal. Por defecto `3`. */\n columns?: number;\n /** Ancho del panel lateral. Por defecto `360`. */\n drawerWidth?: number | string;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/** Devuelve el valor vacío que corresponde a cada tipo de campo. */\nfunction emptyValueFor(field: FieldConfig): FieldValue {\n switch (field.kind) {\n case 'multiselect':\n case 'tags':\n return [];\n case 'checkbox':\n return false;\n default:\n return '';\n }\n}\n\n/**\n * Contenedor de \"Búsqueda avanzada\" reutilizable y declarativo. Recibe una lista\n * de `fields` y los renderiza en una grilla, manejando el estado del formulario\n * internamente. Se presenta como modal centrado o panel lateral derecho según\n * `variant`. El mismo componente sirve a cualquier gestor: solo cambian los\n * campos que se le pasan.\n */\nexport function CmsAdvancedSearch({\n open,\n onClose,\n variant = 'modal',\n title,\n titleIcon,\n fields,\n initialValues,\n onApply,\n onReset,\n applyLabel,\n resetLabel,\n closeAriaLabel,\n columns = 3,\n drawerWidth = 360,\n testId,\n}: CmsAdvancedSearchProps) {\n // Defaults desde la lib (resueltos al idioma del provider): campos, título y\n // textos de los botones. El consumidor puede sobrescribir cualquiera por prop.\n const { t } = useCmsTranslation();\n const s = t.messages.search;\n const resolvedFields = useMemo(\n () => fields ?? buildDefaultSearchFields(t),\n [fields, t],\n );\n const resolvedTitle = title ?? s.title;\n const resolvedApply = applyLabel ?? s.apply;\n const resolvedReset = resetLabel ?? s.reset;\n const resolvedCloseAria = closeAriaLabel ?? s.close;\n\n /** Borrador con los valores por defecto de cada campo + los iniciales. */\n const defaults = useMemo(() => {\n const base: FieldValues = {};\n for (const field of resolvedFields) base[field.name] = emptyValueFor(field);\n return { ...base, ...initialValues };\n }, [resolvedFields, initialValues]);\n\n const [draft, setDraft] = useState<FieldValues>(defaults);\n\n // Al abrir, reinicia el borrador con los valores iniciales vigentes. Se ajusta\n // el estado durante el render (patrón de React para \"estado derivado de un\n // cambio de prop\"), evitando un efecto con setState.\n const [prevOpen, setPrevOpen] = useState(open);\n if (open !== prevOpen) {\n setPrevOpen(open);\n if (open) setDraft(defaults);\n }\n\n /** Actualiza el valor de un campo del borrador. */\n const handleChange = (name: string, value: FieldValue) => {\n setDraft((prev) => ({ ...prev, [name]: value }));\n };\n\n /** Limpia todos los campos y notifica el restablecimiento. */\n const handleReset = () => {\n const cleared: FieldValues = {};\n for (const field of resolvedFields) cleared[field.name] = emptyValueFor(field);\n setDraft(cleared);\n onReset?.();\n };\n\n /** Aplica el borrador y cierra. */\n const handleApply = () => {\n onApply(draft);\n onClose();\n };\n\n const single = variant === 'drawer';\n\n const content = (\n <Box sx={CmsAdvancedSearchStyles.sxContainer} data-testid={testId}>\n <Box sx={CmsAdvancedSearchStyles.sxHead}>\n <Box sx={CmsAdvancedSearchStyles.sxHeadIcon}>\n {titleIcon ?? <FilterAltOutlinedIcon />}\n </Box>\n <Box component=\"h2\" sx={CmsAdvancedSearchStyles.sxTitle}>\n {resolvedTitle}\n </Box>\n <IconButton\n aria-label={resolvedCloseAria}\n onClick={onClose}\n sx={CmsAdvancedSearchStyles.sxClose}\n data-testid={testId ? `${testId}-icon-btn-close` : undefined}>\n <CloseOutlinedIcon />\n </IconButton>\n </Box>\n\n <Box sx={CmsAdvancedSearchStyles.sxBody}>\n <Box sx={CmsAdvancedSearchStyles.sxGrid(columns, single)}>\n {resolvedFields.map((field) => (\n <Box\n key={field.name}\n sx={{\n gridColumn:\n !single && field.span && field.span > 1\n ? `span ${field.span}`\n : undefined,\n }}>\n <FieldRenderer\n field={field}\n value={draft[field.name]}\n onChange={(value) => handleChange(field.name, value)}\n />\n </Box>\n ))}\n </Box>\n </Box>\n\n <Box sx={CmsAdvancedSearchStyles.sxFoot}>\n <Button\n type=\"button\"\n disableElevation\n onClick={handleReset}\n sx={CmsAdvancedSearchStyles.sxReset}\n data-testid={testId ? `${testId}-btn-reset` : undefined}>\n {resolvedReset}\n </Button>\n <Button\n type=\"button\"\n disableElevation\n onClick={handleApply}\n startIcon={<FilterAltOutlinedIcon />}\n sx={CmsAdvancedSearchStyles.sxApply}\n data-testid={testId ? `${testId}-btn-apply` : undefined}>\n {resolvedApply}\n </Button>\n </Box>\n </Box>\n );\n\n if (variant === 'drawer') {\n return (\n <Drawer\n anchor=\"right\"\n open={open}\n onClose={onClose}\n slotProps={{\n paper: { sx: CmsAdvancedSearchStyles.sxDrawerPaper(drawerWidth) },\n }}>\n {content}\n </Drawer>\n );\n }\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth={false}\n slotProps={{ paper: { sx: CmsAdvancedSearchStyles.sxModalPaper } }}>\n {content}\n </Dialog>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii } from '../../theme/variables';\n\n/**\n * Estilos del `CmsConfirmDialog` — modal de confirmación con ícono, título,\n * descripción y botones, todo opcional. Contenido alineado a la izquierda y\n * acciones a la derecha. Réplica funcional del `confirm-modal` del Angular\n * legacy (`cmsmedios-ux`) construida con MUI + variables del theme.\n */\nexport const CmsConfirmDialogStyles = {\n /**\n * Paper del modal: por defecto crece con el contenido respetando los mínimos\n * (ancho 420, alto 280). Si se pasa `width`, el ancho queda fijo.\n */\n sxPaper: (\n width: number | string | undefined,\n minWidth: number | string,\n minHeight: number | string,\n ): SxProps<Theme> => ({\n position: 'relative',\n width: width ?? 'auto',\n minWidth,\n maxWidth: 'calc(100vw - 32px)',\n minHeight,\n m: 2,\n px: '32px',\n py: '32px',\n borderRadius: radii.dialog,\n bgcolor: cmsColors.menuSurface,\n backgroundImage: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-start',\n gap: '16px',\n }),\n\n /** Botón \"X\" de cerrar (dentro, esquina superior derecha). 14×14. */\n sxClose: {\n position: 'absolute',\n top: 16,\n right: 16,\n p: 0.5,\n color: cmsColors.textNav,\n '& .MuiSvgIcon-root': { width: 14, height: 14, fontSize: 14 },\n } as SxProps<Theme>,\n\n /** Badge circular del ícono opcional, tintado con el color de acento. */\n sxIcon: (accent: string): SxProps<Theme> => ({\n width: 48,\n height: 48,\n flex: 'none',\n display: 'grid',\n placeItems: 'center',\n borderRadius: '50%',\n bgcolor: `color-mix(in oklab, ${accent} 16%, transparent)`,\n color: accent,\n '& .MuiSvgIcon-root': { fontSize: 24 },\n }),\n\n /** Título: Product Sans 32/400, texto fuerte. Respeta saltos de línea. */\n sxTitle: {\n m: 0,\n fontFamily: fontFamilies.productSans,\n fontSize: 32,\n fontWeight: 400,\n lineHeight: '40px',\n color: cmsColors.textStrong,\n whiteSpace: 'pre-line',\n } as SxProps<Theme>,\n\n /** Descripción: Roboto 14/400. Admite negrita (`b`/`strong`) y enlaces (`a`). */\n sxDescription: {\n m: 0,\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.5,\n color: cmsColors.textStrong,\n whiteSpace: 'pre-line',\n '& b, & strong': { fontWeight: 700 },\n '& a': {\n color: cmsColors.link,\n fontWeight: 700,\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n } as SxProps<Theme>,\n\n /** Contenedor de la fila de botones (empuja al fondo del modal). */\n sxActions: {\n width: '100%',\n mt: 'auto',\n pt: '8px',\n } as SxProps<Theme>,\n};\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport type { SystemStyleObject } from '@mui/system';\n\nimport { cmsColors, fontFamilies, radii, sizes } from '../../theme/variables';\n\n/** Alineación horizontal de la fila de botones. */\nexport type CmsDialogActionsAlign = 'start' | 'center' | 'end' | 'between';\n\n/** Color del botón \"Confirmar/Enviar\": CTA primario (azul) o destructivo (rojo). */\nexport type CmsConfirmColor = 'primary' | 'danger';\n\nconst JUSTIFY: Record<CmsDialogActionsAlign, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n};\n\n/**\n * Estilos de `CmsDialogActions` — la fila de botones (cancelar + confirmar) del\n * modal de confirmación. El \"cancelar\" es un botón tipo texto (transparente, con\n * hover secundario) y el \"confirmar\" es un CTA relleno (primario o destructivo).\n * Ambos pueden crecer para repartir el ancho disponible del padre (`sxGrow`).\n */\nexport const CmsDialogActionsStyles = {\n /** Contenedor flex de los botones (10px de separación). */\n sxRoot: (align: CmsDialogActionsAlign): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: JUSTIFY[align],\n gap: '10px',\n width: '100%',\n }),\n\n /** Hace que un botón crezca y reparta el ancho del contenedor. */\n sxGrow: { flex: 1 } as SxProps<Theme>,\n\n /** Botón \"Cancelar\": transparente, label azul, hover secundario. */\n sxCancel: {\n height: sizes.buttonHeight,\n px: '16px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 500,\n color: cmsColors.link,\n bgcolor: 'transparent',\n boxShadow: 'none',\n '&:hover': { bgcolor: cmsColors.secondaryHover, boxShadow: 'none' },\n '&.Mui-disabled': { color: cmsColors.link, opacity: 0.38 },\n } as SxProps<Theme>,\n\n /** Botón \"Cancelar\" con `flex: 1` opcional para repartir ancho. */\n sxCancelButton: (fullWidth: boolean): SystemStyleObject<Theme> => ({\n ...(CmsDialogActionsStyles.sxCancel as SystemStyleObject<Theme>),\n ...(fullWidth ? (CmsDialogActionsStyles.sxGrow as SystemStyleObject<Theme>) : {}),\n }),\n\n /** Botón \"Confirmar/Enviar\" con `flex: 1` opcional para repartir ancho. */\n sxConfirmButton: (\n color: CmsConfirmColor,\n fullWidth: boolean,\n ): SystemStyleObject<Theme> => ({\n ...(CmsDialogActionsStyles.sxConfirm(color) as SystemStyleObject<Theme>),\n ...(fullWidth ? (CmsDialogActionsStyles.sxGrow as SystemStyleObject<Theme>) : {}),\n }),\n\n /** Botón \"Confirmar/Enviar\": relleno, label blanco, con su hover por color. */\n sxConfirm: (color: CmsConfirmColor): SxProps<Theme> => {\n const bg = color === 'danger' ? cmsColors.danger : cmsColors.primary;\n const hover = color === 'danger' ? cmsColors.dangerHover : cmsColors.primaryHover;\n return {\n height: sizes.buttonHeight,\n px: '24px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontFamily: fontFamilies.roboto,\n fontSize: 14,\n fontWeight: 500,\n color: cmsColors.white,\n bgcolor: bg,\n boxShadow: 'none',\n '& .MuiButton-startIcon': { mr: '6px' },\n '& .MuiSvgIcon-root': { fontSize: 18 },\n '&:hover': { bgcolor: hover, boxShadow: 'none' },\n '&.Mui-disabled': { bgcolor: bg, color: cmsColors.white, opacity: 0.5 },\n };\n },\n};\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport type { ReactNode } from 'react';\n\nimport {\n CmsDialogActionsStyles,\n type CmsConfirmColor,\n type CmsDialogActionsAlign,\n} from './CmsDialogActions.styles';\n\nexport type { CmsConfirmColor, CmsDialogActionsAlign };\n\nexport type CmsDialogActionsProps = {\n /** Label del botón \"Cancelar\". Si se omite, ese botón no se muestra. */\n cancelLabel?: ReactNode;\n /** Acción del botón \"Cancelar\". */\n onCancel?: () => void;\n /** Label del botón \"Confirmar/Enviar\". Si se omite, ese botón no se muestra. */\n confirmLabel?: ReactNode;\n /** Acción del botón \"Confirmar/Enviar\". */\n onConfirm?: () => void;\n /** Ícono opcional al inicio del botón \"Confirmar/Enviar\". */\n confirmIcon?: ReactNode;\n /** Color del botón \"Confirmar/Enviar\": `primary` (azul) o `danger` (rojo). */\n confirmColor?: CmsConfirmColor;\n /** Deshabilita el botón \"Cancelar\". */\n cancelDisabled?: boolean;\n /** Deshabilita el botón \"Confirmar/Enviar\". */\n confirmDisabled?: boolean;\n /**\n * Si los botones crecen para repartir el ancho del contenedor padre. Por\n * defecto `true`. Con un solo botón, ocupa todo el ancho disponible.\n */\n fullWidth?: boolean;\n /** Alineación horizontal de los botones. Por defecto `end`. */\n align?: CmsDialogActionsAlign;\n /**\n * Base para los `data-testid`. El contenedor usa `testId`; el botón cancelar\n * emite `${testId}-btn-cancel` y el de confirmar `${testId}-btn-confirm`\n * (cada uno con su `data-action` `cancel` / `confirm` como atributo extra).\n */\n testId?: string;\n};\n\n/**\n * Fila de acciones del modal de confirmación. Muestra 1 o 2 botones según los\n * labels que reciba: el de \"Cancelar\" (tipo texto) y/o el de \"Confirmar/Enviar\"\n * (CTA primario o destructivo, con ícono opcional). Reutilizable de forma\n * independiente del modal.\n */\nexport function CmsDialogActions({\n cancelLabel,\n onCancel,\n confirmLabel,\n onConfirm,\n confirmIcon,\n confirmColor = 'primary',\n cancelDisabled,\n confirmDisabled,\n fullWidth = true,\n align = 'end',\n testId,\n}: CmsDialogActionsProps) {\n const hasCancel = cancelLabel != null;\n const hasConfirm = confirmLabel != null;\n if (!hasCancel && !hasConfirm) return null;\n\n return (\n <Box sx={CmsDialogActionsStyles.sxRoot(align)} data-testid={testId}>\n {hasCancel && (\n <Button\n type=\"button\"\n disableElevation\n onClick={onCancel}\n disabled={cancelDisabled}\n sx={CmsDialogActionsStyles.sxCancelButton(fullWidth)}\n data-testid={testId ? `${testId}-btn-cancel` : undefined}\n data-action=\"cancel\">\n {cancelLabel}\n </Button>\n )}\n {hasConfirm && (\n <Button\n type=\"button\"\n disableElevation\n onClick={onConfirm}\n disabled={confirmDisabled}\n startIcon={confirmIcon ?? undefined}\n sx={CmsDialogActionsStyles.sxConfirmButton(confirmColor, fullWidth)}\n data-testid={testId ? `${testId}-btn-confirm` : undefined}\n data-action=\"confirm\">\n {confirmLabel}\n </Button>\n )}\n </Box>\n );\n}\n","'use client';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport IconButton from '@mui/material/IconButton';\nimport type { PaperProps } from '@mui/material/Paper';\nimport type { ReactNode } from 'react';\n\nimport { cmsColors } from '../../theme/variables';\nimport { CmsConfirmDialogStyles } from './CmsConfirmDialog.styles';\nimport { CmsDialogActions } from './CmsDialogActions';\nimport type {\n CmsConfirmColor,\n CmsDialogActionsAlign,\n} from './CmsDialogActions.styles';\n\nexport type CmsConfirmDialogProps = {\n /** Si el modal está abierto. */\n open: boolean;\n /** Callback al cerrar (botón X, scrim o Escape). */\n onClose: () => void;\n /** Ícono opcional (se muestra en un badge circular sobre el título). */\n icon?: ReactNode;\n /** Color de acento del badge del ícono. Por defecto el texto de navegación. */\n iconColor?: string;\n /** Título opcional. Product Sans 32/400. Admite `\\n` para saltos de línea. */\n title?: ReactNode;\n /**\n * Descripción opcional. Roboto 14/400. Puede incluir negrita (`<b>`/`<strong>`)\n * y enlaces (`<a>`); ambos se estilan según el diseño.\n */\n description?: ReactNode;\n /** Muestra el botón \"X\" de cerrar (dentro, arriba a la derecha). Por defecto `true`. */\n showClose?: boolean;\n /** `aria-label` del botón cerrar. */\n closeAriaLabel?: string;\n /** Label del botón \"Cancelar\". Si se omite, no se muestra. */\n cancelLabel?: ReactNode;\n /** Acción del botón \"Cancelar\". Por defecto cierra el modal (`onClose`). */\n onCancel?: () => void;\n /** Label del botón \"Confirmar/Enviar\". Si se omite, no se muestra. */\n confirmLabel?: ReactNode;\n /** Acción del botón \"Confirmar/Enviar\". */\n onConfirm?: () => void;\n /** Ícono opcional al inicio del botón \"Confirmar/Enviar\". */\n confirmIcon?: ReactNode;\n /** Color del botón \"Confirmar/Enviar\": `primary` (azul) o `danger` (rojo). */\n confirmColor?: CmsConfirmColor;\n /** Deshabilita el botón \"Cancelar\". */\n cancelDisabled?: boolean;\n /** Deshabilita el botón \"Confirmar/Enviar\". */\n confirmDisabled?: boolean;\n /** Los botones reparten el ancho del modal. Por defecto `false`. */\n fullWidthActions?: boolean;\n /** Alineación de los botones. Por defecto `end` (a la derecha). */\n actionsAlign?: CmsDialogActionsAlign;\n /** Ancho fijo del modal. Si se omite, crece con el contenido (respetando `minWidth`). */\n width?: number | string;\n /** Ancho mínimo del modal. Por defecto `420`. */\n minWidth?: number | string;\n /** Alto mínimo del modal (crece con el contenido). Por defecto `280`. */\n minHeight?: number | string;\n /** Evita cerrar al hacer clic fuera o con Escape (p. ej. mientras carga). */\n disableBackdropClose?: boolean;\n /**\n * Base para los `data-testid`. Emite: `${testId}` (modal),\n * `${testId}-icon-btn-close` (botón X), `${testId}-actions` (fila de botones)\n * y los botones `${testId}-actions-btn-cancel` y `${testId}-actions-btn-confirm`.\n */\n testId?: string;\n};\n\n/**\n * Modal de confirmación reutilizable: ícono, título, descripción y 1–2 botones,\n * todo opcional. Contenido alineado a la izquierda, acciones a la derecha y \"X\"\n * de cerrar dentro del modal. Réplica funcional del `confirm-modal` del Angular\n * legacy (`cmsmedios-ux`) con MUI + el theme de la lib. Los textos (i18n) los\n * pasa el gestor; este componente solo presenta.\n */\nexport function CmsConfirmDialog({\n open,\n onClose,\n icon,\n iconColor = cmsColors.textNav,\n title,\n description,\n showClose = true,\n closeAriaLabel,\n cancelLabel,\n onCancel,\n confirmLabel,\n onConfirm,\n confirmIcon,\n confirmColor = 'primary',\n cancelDisabled,\n confirmDisabled,\n fullWidthActions = false,\n actionsAlign = 'end',\n width,\n minWidth = 420,\n minHeight = 280,\n disableBackdropClose,\n testId,\n}: CmsConfirmDialogProps) {\n const hasActions = cancelLabel != null || confirmLabel != null;\n\n return (\n <Dialog\n open={open}\n onClose={(_event, reason) => {\n if (\n disableBackdropClose &&\n (reason === 'backdropClick' || reason === 'escapeKeyDown')\n )\n return;\n onClose();\n }}\n maxWidth={false}\n slotProps={{\n paper: {\n sx: CmsConfirmDialogStyles.sxPaper(width, minWidth, minHeight),\n ...(testId != null ? { 'data-testid': testId } : {}),\n } as PaperProps,\n }}>\n {showClose && (\n <IconButton\n aria-label={closeAriaLabel ?? 'Close'}\n onClick={onClose}\n sx={CmsConfirmDialogStyles.sxClose}\n data-testid={testId ? `${testId}-icon-btn-close` : undefined}>\n <CloseIcon />\n </IconButton>\n )}\n\n {icon != null && (\n <Box sx={CmsConfirmDialogStyles.sxIcon(iconColor)}>{icon}</Box>\n )}\n\n {title != null && (\n <Box component=\"h2\" sx={CmsConfirmDialogStyles.sxTitle}>\n {title}\n </Box>\n )}\n\n {description != null && (\n <Box component=\"p\" sx={CmsConfirmDialogStyles.sxDescription}>\n {description}\n </Box>\n )}\n\n {hasActions && (\n <Box sx={CmsConfirmDialogStyles.sxActions}>\n <CmsDialogActions\n cancelLabel={cancelLabel}\n onCancel={onCancel ?? onClose}\n confirmLabel={confirmLabel}\n onConfirm={onConfirm}\n confirmIcon={confirmIcon}\n confirmColor={confirmColor}\n cancelDisabled={cancelDisabled}\n confirmDisabled={confirmDisabled}\n fullWidth={fullWidthActions}\n align={actionsAlign}\n testId={testId ? `${testId}-actions` : undefined}\n />\n </Box>\n )}\n </Dialog>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/lib/version.ts","../src/lib/theme/material-theme.json","../src/lib/theme/createAppTheme.ts","../src/lib/theme/buttonStyles.ts","../src/lib/theme/selectStyles.ts","../src/lib/theme/fonts/GoogleSans-Regular.woff2","../src/lib/theme/fonts/GoogleSans-Italic.woff2","../src/lib/theme/fonts/GoogleSans-Medium.woff2","../src/lib/theme/fonts/GoogleSans-MediumItalic.woff2","../src/lib/theme/fonts/GoogleSans-Bold.woff2","../src/lib/theme/fonts/GoogleSans-BoldItalic.woff2","../src/lib/theme/fonts.ts","../src/lib/theme/themePreference.ts","../src/lib/i18n/createTranslator.ts","../src/lib/i18n/messages/en.ts","../src/lib/i18n/messages/es.ts","../src/lib/i18n/messages/pt.ts","../src/lib/i18n/messages/index.ts","../src/lib/i18n/types.ts","../src/lib/i18n/normalizeLocale.ts","../src/lib/i18n/CmsI18nProvider.tsx","../src/lib/i18n/useCmsTranslation.ts","../src/lib/components/toast/CmsToast.styles.ts","../src/lib/components/toast/CmsToast.tsx","../src/lib/components/toast/CmsToastProvider.tsx","../src/lib/components/toast/useCmsToast.ts","../src/lib/network/CmsNetworkProvider.tsx","../src/lib/network/useCmsNetworkStatus.ts","../src/lib/network/CmsNetworkToaster.tsx","../src/lib/network/useResilientAction.ts","../src/lib/components/link.tsx","../src/lib/components/sidebar/nav-helpers.ts","../src/lib/components/sidebar/nav-blocks.ts","../src/lib/components/sidebar/SidebarRail.styles.ts","../src/lib/components/sidebar/SidebarRail.tsx","../src/lib/utils/legacy-admin.ts","../src/lib/components/site-selector-menu/SiteSelectorMenu.styles.ts","../src/lib/components/site-selector-menu/SiteSelectorMenu.tsx","../src/lib/components/top-bar/AppearanceMenu.styles.ts","../src/lib/components/top-bar/TopBar.styles.ts","../src/lib/components/top-bar/AppearanceMenu.tsx","../src/lib/components/top-bar/newContentMenu.config.ts","../src/lib/components/top-bar/NewContentMenu.styles.ts","../src/lib/components/top-bar/NewContentMenu.tsx","../src/lib/components/top-bar/notificationsFeed.ts","../src/lib/components/top-bar/NotificationsMenu.styles.ts","../src/lib/components/top-bar/NotificationsMenu.tsx","../src/lib/components/dropdowns/SimpleDropdown.styles.ts","../src/lib/components/dropdowns/SimpleDropdown.tsx","../src/lib/components/top-bar/previewMenu.config.ts","../src/lib/components/top-bar/PreviewMenu.tsx","../src/lib/utils/cms-asset.ts","../src/lib/utils/profile-avatar.ts","../src/lib/components/user-avatar/UserAvatar.styles.ts","../src/lib/components/user-avatar/CurrentUserPhotoProvider.tsx","../src/lib/components/user-avatar/useCurrentUserPhoto.ts","../src/lib/components/user-avatar/UserAvatar.tsx","../src/lib/components/top-bar/ProfileMenu.tsx","../src/lib/components/top-bar/TopBarClock.tsx","../src/lib/components/top-bar/TopBar.tsx","../src/lib/components/shell/AppShell.styles.ts","../src/lib/components/shell/AppShell.tsx","../src/lib/components/sidebar/Sidebar.styles.ts","../src/lib/components/sidebar/Sidebar.tsx","../src/lib/components/error-page/CmsErrorPage.styles.ts","../src/lib/components/error-page/CmsErrorPage.tsx","../src/lib/components/mui-provider/CmsColorSchemeVars.tsx","../src/lib/components/mui-provider/CmsFontFaces.tsx","../src/lib/components/mui-provider/CmsThemeInitScript.tsx","../src/lib/components/mui-provider/CmsThemeModeSync.tsx","../src/lib/components/mui-provider/CmsMuiProvider.tsx","../src/lib/components/mui-provider/NextCmsMuiProvider.tsx","../src/lib/components/dropdowns/BtnDropdown.styles.ts","../src/lib/components/dropdowns/BtnDropdown.tsx","../src/lib/components/dropdowns/SelectDropdown.tsx","../src/lib/components/search/CmsSearchField.styles.ts","../src/lib/components/search/CmsSearchField.tsx","../src/lib/components/empty-state/CmsEmptyState.styles.ts","../src/lib/components/empty-state/CmsEmptyState.tsx","../src/lib/components/filter-bar/CmsFilterBar.styles.ts","../src/lib/components/filter-bar/CmsFilterBar.tsx","../src/lib/components/fields/fieldStyles.ts","../src/lib/components/fields/CmsCheckboxField.tsx","../src/lib/components/fields/FieldShell.tsx","../src/lib/components/fields/CmsComboboxField.tsx","../src/lib/components/fields/CmsDateField.styles.ts","../src/lib/components/fields/CmsDateField.tsx","../src/lib/components/fields/CmsMultiSelectField.tsx","../src/lib/components/fields/CmsNumberField.tsx","../src/lib/components/fields/CmsSelectField.tsx","../src/lib/components/fields/CmsTagsField.tsx","../src/lib/components/fields/CmsTextField.tsx","../src/lib/components/fields/FieldRenderer.tsx","../src/lib/components/advanced-search/CmsAdvancedSearch.styles.ts","../src/lib/components/advanced-search/defaultFields.ts","../src/lib/components/advanced-search/CmsAdvancedSearch.tsx","../src/lib/components/confirm-dialog/CmsConfirmDialog.styles.ts","../src/lib/components/confirm-dialog/CmsDialogActions.styles.ts","../src/lib/components/confirm-dialog/CmsDialogActions.tsx","../src/lib/components/confirm-dialog/CmsConfirmDialog.tsx"],"sourcesContent":["export const LIB_VERSION = '0.0.0' as const\n","{\n \"description\": \"TYPE: CUSTOM\\nMaterial Theme Builder export 2026-05-08 02:18:51\",\n \"seed\": \"#0067C4\",\n \"coreColors\": {\n \"primary\": \"#0067C4\",\n \"secondary\": \"#D8E2FF\",\n \"tertiary\": \"#B4BEDA\"\n },\n \"extendedColors\": [\n {\n \"name\": \"Bluestack color\",\n \"color\": \"#2962FF\",\n \"description\": \"primario de bluestack\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado publicada\",\n \"color\": \"#00C853\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado Redaccion\",\n \"color\": \"#0091EA\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado frescura\",\n \"color\": \"#30FF5D\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado Programado\",\n \"color\": \"#FF6D00\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado bloqueada\",\n \"color\": \"#D50000\",\n \"description\": \"\",\n \"harmonized\": false\n },\n {\n \"name\": \"Estado borrador\",\n \"color\": \"#FFAB00\",\n \"description\": \"\",\n \"harmonized\": false\n }\n ],\n \"schemes\": {\n \"light\": {\n \"primary\": \"#536dfe\",\n \"surfaceTint\": \"#3E5F90\",\n \"onPrimary\": \"#FFFFFF\",\n \"primaryContainer\": \"#D5E3FF\",\n \"onPrimaryContainer\": \"#254777\",\n \"secondary\": \"#455E91\",\n \"onSecondary\": \"#FFFFFF\",\n \"secondaryContainer\": \"#D8E2FF\",\n \"onSecondaryContainer\": \"#2C4678\",\n \"tertiary\": \"#455E91\",\n \"onTertiary\": \"#FFFFFF\",\n \"tertiaryContainer\": \"#D8E2FF\",\n \"onTertiaryContainer\": \"#2C4678\",\n \"error\": \"#BA1A1A\",\n \"onError\": \"#FFFFFF\",\n \"errorContainer\": \"#FFDAD6\",\n \"onErrorContainer\": \"#93000A\",\n \"background\": \"#F9F9FF\",\n \"onBackground\": \"#191C20\",\n \"surface\": \"#F9F9FF\",\n \"onSurface\": \"#191C20\",\n \"surfaceVariant\": \"#E0E2EC\",\n \"onSurfaceVariant\": \"#43474E\",\n \"outline\": \"#74777F\",\n \"outlineVariant\": \"#C4C6CF\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#2E3035\",\n \"inverseOnSurface\": \"#F0F0F7\",\n \"inversePrimary\": \"#A8C8FF\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#001B3C\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#254777\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#001A42\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#2C4678\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#001A42\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#2C4678\",\n \"surfaceDim\": \"#D9D9E0\",\n \"surfaceBright\": \"#F9F9FF\",\n \"surfaceContainerLowest\": \"#FFFFFF\",\n \"surfaceContainerLow\": \"#F3F3FA\",\n \"surfaceContainer\": \"#EDEDF4\",\n \"surfaceContainerHigh\": \"#E7E8EE\",\n \"surfaceContainerHighest\": \"#E1E2E9\"\n },\n \"light-medium-contrast\": {\n \"primary\": \"#0F3665\",\n \"surfaceTint\": \"#3E5F90\",\n \"onPrimary\": \"#FFFFFF\",\n \"primaryContainer\": \"#4E6EA0\",\n \"onPrimaryContainer\": \"#FFFFFF\",\n \"secondary\": \"#193566\",\n \"onSecondary\": \"#FFFFFF\",\n \"secondaryContainer\": \"#546CA1\",\n \"onSecondaryContainer\": \"#FFFFFF\",\n \"tertiary\": \"#193566\",\n \"onTertiary\": \"#FFFFFF\",\n \"tertiaryContainer\": \"#546CA1\",\n \"onTertiaryContainer\": \"#FFFFFF\",\n \"error\": \"#740006\",\n \"onError\": \"#FFFFFF\",\n \"errorContainer\": \"#CF2C27\",\n \"onErrorContainer\": \"#FFFFFF\",\n \"background\": \"#F9F9FF\",\n \"onBackground\": \"#191C20\",\n \"surface\": \"#F9F9FF\",\n \"onSurface\": \"#0F1116\",\n \"surfaceVariant\": \"#E0E2EC\",\n \"onSurfaceVariant\": \"#33363D\",\n \"outline\": \"#4F525A\",\n \"outlineVariant\": \"#6A6D75\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#2E3035\",\n \"inverseOnSurface\": \"#F0F0F7\",\n \"inversePrimary\": \"#A8C8FF\",\n \"primaryFixed\": \"#4E6EA0\",\n \"onPrimaryFixed\": \"#FFFFFF\",\n \"primaryFixedDim\": \"#345586\",\n \"onPrimaryFixedVariant\": \"#FFFFFF\",\n \"secondaryFixed\": \"#546CA1\",\n \"onSecondaryFixed\": \"#FFFFFF\",\n \"secondaryFixedDim\": \"#3B5487\",\n \"onSecondaryFixedVariant\": \"#FFFFFF\",\n \"tertiaryFixed\": \"#546CA1\",\n \"onTertiaryFixed\": \"#FFFFFF\",\n \"tertiaryFixedDim\": \"#3B5487\",\n \"onTertiaryFixedVariant\": \"#FFFFFF\",\n \"surfaceDim\": \"#C5C6CD\",\n \"surfaceBright\": \"#F9F9FF\",\n \"surfaceContainerLowest\": \"#FFFFFF\",\n \"surfaceContainerLow\": \"#F3F3FA\",\n \"surfaceContainer\": \"#E7E8EE\",\n \"surfaceContainerHigh\": \"#DCDCE3\",\n \"surfaceContainerHighest\": \"#D0D1D8\"\n },\n \"light-high-contrast\": {\n \"primary\": \"#002C5A\",\n \"surfaceTint\": \"#3E5F90\",\n \"onPrimary\": \"#FFFFFF\",\n \"primaryContainer\": \"#274A79\",\n \"onPrimaryContainer\": \"#FFFFFF\",\n \"secondary\": \"#0B2A5B\",\n \"onSecondary\": \"#FFFFFF\",\n \"secondaryContainer\": \"#2E487A\",\n \"onSecondaryContainer\": \"#FFFFFF\",\n \"tertiary\": \"#0C2A5B\",\n \"onTertiary\": \"#FFFFFF\",\n \"tertiaryContainer\": \"#2F487A\",\n \"onTertiaryContainer\": \"#FFFFFF\",\n \"error\": \"#600004\",\n \"onError\": \"#FFFFFF\",\n \"errorContainer\": \"#98000A\",\n \"onErrorContainer\": \"#FFFFFF\",\n \"background\": \"#F9F9FF\",\n \"onBackground\": \"#191C20\",\n \"surface\": \"#F9F9FF\",\n \"onSurface\": \"#000000\",\n \"surfaceVariant\": \"#E0E2EC\",\n \"onSurfaceVariant\": \"#000000\",\n \"outline\": \"#292C33\",\n \"outlineVariant\": \"#464951\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#2E3035\",\n \"inverseOnSurface\": \"#FFFFFF\",\n \"inversePrimary\": \"#A8C8FF\",\n \"primaryFixed\": \"#274A79\",\n \"onPrimaryFixed\": \"#FFFFFF\",\n \"primaryFixedDim\": \"#093361\",\n \"onPrimaryFixedVariant\": \"#FFFFFF\",\n \"secondaryFixed\": \"#2E487A\",\n \"onSecondaryFixed\": \"#FFFFFF\",\n \"secondaryFixedDim\": \"#143162\",\n \"onSecondaryFixedVariant\": \"#FFFFFF\",\n \"tertiaryFixed\": \"#2F487A\",\n \"onTertiaryFixed\": \"#FFFFFF\",\n \"tertiaryFixedDim\": \"#153162\",\n \"onTertiaryFixedVariant\": \"#FFFFFF\",\n \"surfaceDim\": \"#B7B8BF\",\n \"surfaceBright\": \"#F9F9FF\",\n \"surfaceContainerLowest\": \"#FFFFFF\",\n \"surfaceContainerLow\": \"#F0F0F7\",\n \"surfaceContainer\": \"#E1E2E9\",\n \"surfaceContainerHigh\": \"#D3D4DB\",\n \"surfaceContainerHighest\": \"#C5C6CD\"\n },\n \"dark\": {\n \"primary\": \"#A8C8FF\",\n \"surfaceTint\": \"#A8C8FF\",\n \"onPrimary\": \"#05305F\",\n \"primaryContainer\": \"#254777\",\n \"onPrimaryContainer\": \"#D5E3FF\",\n \"secondary\": \"#AEC6FF\",\n \"onSecondary\": \"#112F60\",\n \"secondaryContainer\": \"#2C4678\",\n \"onSecondaryContainer\": \"#D8E2FF\",\n \"tertiary\": \"#AEC6FF\",\n \"onTertiary\": \"#122F60\",\n \"tertiaryContainer\": \"#2C4678\",\n \"onTertiaryContainer\": \"#D8E2FF\",\n \"error\": \"#FFB4AB\",\n \"onError\": \"#690005\",\n \"errorContainer\": \"#93000A\",\n \"onErrorContainer\": \"#FFDAD6\",\n \"background\": \"#111318\",\n \"onBackground\": \"#E1E2E9\",\n \"surface\": \"#111318\",\n \"onSurface\": \"#E1E2E9\",\n \"surfaceVariant\": \"#43474E\",\n \"onSurfaceVariant\": \"#C4C6CF\",\n \"outline\": \"#8E9199\",\n \"outlineVariant\": \"#43474E\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#E1E2E9\",\n \"inverseOnSurface\": \"#2E3035\",\n \"inversePrimary\": \"#3E5F90\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#001B3C\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#254777\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#001A42\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#2C4678\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#001A42\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#2C4678\",\n \"surfaceDim\": \"#111318\",\n \"surfaceBright\": \"#37393E\",\n \"surfaceContainerLowest\": \"#0C0E13\",\n \"surfaceContainerLow\": \"#191C20\",\n \"surfaceContainer\": \"#1D2024\",\n \"surfaceContainerHigh\": \"#282A2F\",\n \"surfaceContainerHighest\": \"#33353A\"\n },\n \"dark-medium-contrast\": {\n \"primary\": \"#CCDDFF\",\n \"surfaceTint\": \"#A8C8FF\",\n \"onPrimary\": \"#00254E\",\n \"primaryContainer\": \"#7292C6\",\n \"onPrimaryContainer\": \"#000000\",\n \"secondary\": \"#CFDCFF\",\n \"onSecondary\": \"#012455\",\n \"secondaryContainer\": \"#7790C7\",\n \"onSecondaryContainer\": \"#000000\",\n \"tertiary\": \"#CFDCFF\",\n \"onTertiary\": \"#022455\",\n \"tertiaryContainer\": \"#7890C7\",\n \"onTertiaryContainer\": \"#000000\",\n \"error\": \"#FFD2CC\",\n \"onError\": \"#540003\",\n \"errorContainer\": \"#FF5449\",\n \"onErrorContainer\": \"#000000\",\n \"background\": \"#111318\",\n \"onBackground\": \"#E1E2E9\",\n \"surface\": \"#111318\",\n \"onSurface\": \"#FFFFFF\",\n \"surfaceVariant\": \"#43474E\",\n \"onSurfaceVariant\": \"#DADCE5\",\n \"outline\": \"#AFB2BB\",\n \"outlineVariant\": \"#8D9099\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#E1E2E9\",\n \"inverseOnSurface\": \"#282A2F\",\n \"inversePrimary\": \"#264878\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#001129\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#0F3665\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#00102E\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#193566\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#00102E\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#193566\",\n \"surfaceDim\": \"#111318\",\n \"surfaceBright\": \"#42444A\",\n \"surfaceContainerLowest\": \"#06070C\",\n \"surfaceContainerLow\": \"#1B1E22\",\n \"surfaceContainer\": \"#26282D\",\n \"surfaceContainerHigh\": \"#303338\",\n \"surfaceContainerHighest\": \"#3B3E43\"\n },\n \"dark-high-contrast\": {\n \"primary\": \"#EAF0FF\",\n \"surfaceTint\": \"#A8C8FF\",\n \"onPrimary\": \"#000000\",\n \"primaryContainer\": \"#A4C4FB\",\n \"onPrimaryContainer\": \"#000B1F\",\n \"secondary\": \"#ECEFFF\",\n \"onSecondary\": \"#000000\",\n \"secondaryContainer\": \"#A9C2FC\",\n \"onSecondaryContainer\": \"#000A23\",\n \"tertiary\": \"#ECEFFF\",\n \"onTertiary\": \"#000000\",\n \"tertiaryContainer\": \"#A9C2FC\",\n \"onTertiaryContainer\": \"#000A23\",\n \"error\": \"#FFECE9\",\n \"onError\": \"#000000\",\n \"errorContainer\": \"#FFAEA4\",\n \"onErrorContainer\": \"#220001\",\n \"background\": \"#111318\",\n \"onBackground\": \"#E1E2E9\",\n \"surface\": \"#111318\",\n \"onSurface\": \"#FFFFFF\",\n \"surfaceVariant\": \"#43474E\",\n \"onSurfaceVariant\": \"#FFFFFF\",\n \"outline\": \"#EEF0F9\",\n \"outlineVariant\": \"#C0C2CC\",\n \"shadow\": \"#000000\",\n \"scrim\": \"#000000\",\n \"inverseSurface\": \"#E1E2E9\",\n \"inverseOnSurface\": \"#000000\",\n \"inversePrimary\": \"#264878\",\n \"primaryFixed\": \"#D5E3FF\",\n \"onPrimaryFixed\": \"#000000\",\n \"primaryFixedDim\": \"#A8C8FF\",\n \"onPrimaryFixedVariant\": \"#001129\",\n \"secondaryFixed\": \"#D8E2FF\",\n \"onSecondaryFixed\": \"#000000\",\n \"secondaryFixedDim\": \"#AEC6FF\",\n \"onSecondaryFixedVariant\": \"#00102E\",\n \"tertiaryFixed\": \"#D8E2FF\",\n \"onTertiaryFixed\": \"#000000\",\n \"tertiaryFixedDim\": \"#AEC6FF\",\n \"onTertiaryFixedVariant\": \"#00102E\",\n \"surfaceDim\": \"#111318\",\n \"surfaceBright\": \"#4E5055\",\n \"surfaceContainerLowest\": \"#000000\",\n \"surfaceContainerLow\": \"#1D2024\",\n \"surfaceContainer\": \"#2E3035\",\n \"surfaceContainerHigh\": \"#393B41\",\n \"surfaceContainerHighest\": \"#45474C\"\n }\n },\n \"palettes\": {\n \"primary\": {\n \"0\": \"#000000\",\n \"5\": \"#001129\",\n \"10\": \"#001B3C\",\n \"15\": \"#00264E\",\n \"20\": \"#003061\",\n \"25\": \"#003B75\",\n \"30\": \"#004689\",\n \"35\": \"#00529E\",\n \"40\": \"#005EB3\",\n \"50\": \"#2777D5\",\n \"60\": \"#4A91F1\",\n \"70\": \"#76ACFF\",\n \"80\": \"#A8C8FF\",\n \"90\": \"#D5E3FF\",\n \"95\": \"#ECF1FF\",\n \"98\": \"#F9F9FF\",\n \"99\": \"#FDFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"secondary\": {\n \"0\": \"#000000\",\n \"5\": \"#061025\",\n \"10\": \"#111B30\",\n \"15\": \"#1B263B\",\n \"20\": \"#263046\",\n \"25\": \"#313B52\",\n \"30\": \"#3D475E\",\n \"35\": \"#48526A\",\n \"40\": \"#545E76\",\n \"50\": \"#6D7790\",\n \"60\": \"#8690AB\",\n \"70\": \"#A1ABC6\",\n \"80\": \"#BCC6E2\",\n \"90\": \"#D8E2FF\",\n \"95\": \"#EDF0FF\",\n \"98\": \"#F9F9FF\",\n \"99\": \"#FEFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"tertiary\": {\n \"0\": \"#000000\",\n \"5\": \"#061025\",\n \"10\": \"#111B30\",\n \"15\": \"#1B253B\",\n \"20\": \"#263046\",\n \"25\": \"#313B52\",\n \"30\": \"#3D475E\",\n \"35\": \"#48526A\",\n \"40\": \"#545E77\",\n \"50\": \"#6D7790\",\n \"60\": \"#8690AB\",\n \"70\": \"#A1ABC6\",\n \"80\": \"#BCC6E2\",\n \"90\": \"#D8E2FF\",\n \"95\": \"#EDF0FF\",\n \"98\": \"#FAF9FF\",\n \"99\": \"#FEFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"neutral\": {\n \"0\": \"#000000\",\n \"5\": \"#101114\",\n \"10\": \"#1A1C1E\",\n \"15\": \"#252629\",\n \"20\": \"#2F3033\",\n \"25\": \"#3A3B3E\",\n \"30\": \"#46474A\",\n \"35\": \"#525256\",\n \"40\": \"#5E5E62\",\n \"50\": \"#76777A\",\n \"60\": \"#909094\",\n \"70\": \"#ABABAF\",\n \"80\": \"#C7C6CA\",\n \"90\": \"#E3E2E6\",\n \"95\": \"#F1F0F4\",\n \"98\": \"#FAF9FD\",\n \"99\": \"#FDFBFF\",\n \"100\": \"#FFFFFF\"\n },\n \"neutral-variant\": {\n \"0\": \"#000000\",\n \"5\": \"#0D1117\",\n \"10\": \"#181C22\",\n \"15\": \"#22262D\",\n \"20\": \"#2D3038\",\n \"25\": \"#383B43\",\n \"30\": \"#43474E\",\n \"35\": \"#4F525A\",\n \"40\": \"#5B5E66\",\n \"50\": \"#74777F\",\n \"60\": \"#8E9199\",\n \"70\": \"#A8ABB4\",\n \"80\": \"#C4C6CF\",\n \"90\": \"#E0E2EC\",\n \"95\": \"#EEF0FA\",\n \"98\": \"#F9F9FF\",\n \"99\": \"#FDFBFF\",\n \"100\": \"#FFFFFF\"\n }\n }\n}\n","import { alpha, createTheme } from '@mui/material/styles';\nimport type { PaletteMode, PaletteOptions } from '@mui/material/styles';\n\nimport materialThemeSource from './material-theme.json';\nimport { fontFamilies } from './variables';\n\ntype SchemeDef = (typeof materialThemeSource)['schemes']['light'];\n\nfunction extendedColor(name: string): string | undefined {\n return materialThemeSource.extendedColors.find((e) => e.name === name)?.color;\n}\n\nfunction neutralToGrey(p: (typeof materialThemeSource)['palettes']['neutral']) {\n return {\n 50: p['98'],\n 100: p['95'],\n 200: p['90'],\n 300: p['80'],\n 400: p['70'],\n 500: p['60'],\n 600: p['50'],\n 700: p['40'],\n 800: p['30'],\n 900: p['20'],\n A100: p['90'],\n A200: p['80'],\n A400: p['60'],\n A700: p['40'],\n };\n}\n\nfunction schemeToPalette(mode: PaletteMode, scheme: SchemeDef): PaletteOptions {\n const onSurfaceToken = scheme.onSurface;\n\n return {\n mode,\n primary: {\n main: scheme.primary,\n light: scheme.primaryContainer,\n dark: scheme.onPrimaryContainer,\n contrastText: scheme.onPrimary,\n },\n secondary: {\n main: scheme.secondary,\n light: '#D8E2FF',\n dark: scheme.onSecondaryContainer,\n contrastText: scheme.onSecondary,\n },\n tertiary: {\n main: scheme.tertiary,\n light: scheme.tertiaryContainer,\n dark: scheme.onTertiaryContainer,\n contrastText: scheme.onTertiary,\n },\n error: {\n main: scheme.error,\n light: scheme.errorContainer,\n dark: scheme.onErrorContainer,\n contrastText: scheme.onError,\n },\n warning: {\n main: extendedColor('Estado Programado') ?? '#FF6D00',\n light: '#FF9E40',\n dark: '#C25400',\n contrastText: '#FFFFFF',\n },\n info: {\n main: extendedColor('Estado Redaccion') ?? '#0091EA',\n light: '#64B5F6',\n dark: '#0064B7',\n contrastText: '#FFFFFF',\n },\n success: {\n main: extendedColor('Estado publicada') ?? '#00C853',\n light: '#69F0AE',\n dark: '#009624',\n contrastText: '#FFFFFF',\n },\n brand: {\n main: extendedColor('Bluestack color') ?? '#2962FF',\n },\n text: {\n primary: scheme.onSurface,\n secondary: scheme.onSurfaceVariant,\n disabled: alpha(scheme.onSurface, 0.38),\n },\n divider: scheme.outlineVariant,\n background: {\n default: scheme.background,\n // En claro, `paper` es el blanco base (surfaceContainerLowest). En oscuro,\n // usamos una superficie elevada (surfaceContainerHigh) para que las cards\n // se lean por encima del fondo del shell y no queden \"hundidas\" en negro.\n paper:\n mode === 'dark'\n ? scheme.surfaceContainerHigh\n : scheme.surfaceContainerLowest,\n },\n action: {\n active: alpha(onSurfaceToken, 0.56),\n hover: alpha(onSurfaceToken, mode === 'light' ? 0.04 : 0.08),\n selected: alpha(scheme.primary, 0.12),\n focus: alpha(scheme.primary, 0.12),\n disabled: alpha(onSurfaceToken, 0.26),\n disabledBackground: alpha(onSurfaceToken, 0.12),\n },\n common: {\n black: scheme.shadow,\n white: '#FFFFFF',\n },\n grey: neutralToGrey(materialThemeSource.palettes.neutral),\n m3: {\n surfaceTint: scheme.surfaceTint,\n surfaceDim: scheme.surfaceDim,\n surfaceBright: scheme.surfaceBright,\n surface: scheme.surface,\n surfaceContainerLowest: scheme.surfaceContainerLowest,\n surfaceContainerLow: scheme.surfaceContainerLow,\n surfaceContainer: scheme.surfaceContainer,\n surfaceContainerHigh: scheme.surfaceContainerHigh,\n surfaceContainerHighest: scheme.surfaceContainerHighest,\n outline: scheme.outline,\n outlineVariant: scheme.outlineVariant,\n inverseSurface: scheme.inverseSurface,\n inverseOnSurface: scheme.inverseOnSurface,\n inversePrimary: scheme.inversePrimary,\n onBackground: scheme.onBackground,\n surfaceVariant: scheme.surfaceVariant,\n onSurfaceVariant: scheme.onSurfaceVariant,\n },\n };\n}\n\nexport function createAppTheme() {\n const lightPalette = schemeToPalette(\n 'light',\n materialThemeSource.schemes.light,\n );\n const darkPalette = schemeToPalette('dark', materialThemeSource.schemes.dark);\n\n return createTheme({\n cssVariables: {\n // Atributo explícito y legible: MUI togglea `data-mui-color-scheme=\"dark\"`\n // sobre <html>. Las CSS vars de `variables.ts` se enganchan a ese selector.\n colorSchemeSelector: 'data-mui-color-scheme',\n },\n defaultColorScheme: 'light',\n colorSchemes: {\n light: { palette: lightPalette },\n dark: { palette: darkPalette },\n },\n typography: {\n fontFamily: fontFamilies.googleSans,\n },\n });\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows, sizes } from './variables';\n\n/**\n * Estilos de botón unificados de la librería.\n *\n * Define las dos variantes de botón pill del CMS y las piezas reutilizables\n * (superficie + hover) para que cualquier componente las componga sin repetir\n * colores ni medidas. `BtnDropdown` los usa para su botón principal y su flecha;\n * `sxPillButton` sirve para cualquier botón pill suelto.\n */\n\n/** Variante visual de los botones de la lib. */\nexport type CmsButtonVariant = 'cta' | 'white';\n\n/** Fondo, color de texto y borde según la variante (compartido por todas las piezas). */\nexport function cmsButtonSurface(variant: CmsButtonVariant): SxProps<Theme> {\n if (variant === 'white') {\n return {\n bgcolor: 'm3.surfaceContainerLowest',\n color: cmsColors.whiteBtnText,\n border: '1px solid',\n borderColor: cmsColors.whiteBtnBorder,\n };\n }\n return {\n bgcolor: cmsColors.primary,\n color: cmsColors.white,\n border: 'none',\n borderColor: 'transparent',\n };\n}\n\n/** Color de fondo en hover según la variante. */\nexport function cmsButtonHoverBg(variant: CmsButtonVariant): string {\n return variant === 'cta' ? cmsColors.primaryHover : 'action.hover';\n}\n\n/** Borde divisor (p. ej. entre botón principal y flecha de un split button). */\nexport function cmsButtonDivider(variant: CmsButtonVariant): string {\n return variant === 'white'\n ? cmsColors.whiteBtnBorder\n : 'rgba(255, 255, 255, 0.28)';\n}\n\n/** Botón pill completo y autónomo. Reutilizable en cualquier CTA de la lib. */\nexport function sxPillButton(variant: CmsButtonVariant = 'cta'): SxProps<Theme> {\n return {\n height: sizes.buttonHeight,\n px: '20px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontSize: 14,\n fontWeight: 500,\n minWidth: 0,\n gap: 1,\n boxShadow: shadows.button,\n ...(cmsButtonSurface(variant) as object),\n '& .MuiSvgIcon-root': { fontSize: 18 },\n '&:hover': {\n boxShadow: shadows.button,\n bgcolor: cmsButtonHoverBg(variant),\n },\n '&.Mui-disabled': {\n bgcolor:\n variant === 'white'\n ? 'm3.surfaceContainerLowest'\n : cmsColors.primaryDisabled,\n color: 'action.disabled',\n },\n };\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows, sizes } from './variables';\n\n/**\n * Estilos del `SelectDropdown` — el selector tipo \"vista/filtro\" del CMS\n * (mismo patrón visual que el dropdown \"Últimas Noticias\" del diseño).\n *\n * Vive en `theme/` (no junto al componente) porque es parte del set de estilos\n * compartidos y reutilizables: cualquier proyecto que consuma la librería puede\n * importarlo para construir un trigger/menú coherente con el sistema.\n *\n * Reglas de color (todas con variables de `variables.ts`):\n * - Trigger por defecto: borde `m3.outlineVariant` (#C4C6CF), texto `controlText`\n * (#000) en negrita, fondo transparente; hover → `neutralHover` (state layer\n * M3 `onSurface` al 8%, #191C20).\n * - Trigger activo (abierto) o resaltado (valor activo): fondo `secondary`\n * (#D8E2FF), sin borde.\n * - Opción del menú: hover → `neutralHover` (state layer M3 `onSurface` al 8%,\n * #191C20); seleccionada → fondo `secondary` (#D8E2FF). El menú es full-bleed\n * (sin padding lateral ni radio en los ítems): el resaltado llega de borde a\n * borde, sobre el fondo `menuSurface` (#ECEDF6) común a todos los desplegables.\n */\nexport const SelectStyles = {\n /**\n * Disparador outlined con label + chevron. Se rellena con `secondary` cuando\n * está abierto (`open`) o resaltado (`highlighted`, valor activo).\n */\n sxTrigger: (highlighted: boolean, open: boolean): SxProps<Theme> => {\n const filled = highlighted || open;\n return {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '10px',\n height: sizes.buttonHeight,\n pl: '16px',\n pr: '10px',\n borderRadius: radii.md,\n textTransform: 'none',\n fontSize: 14,\n // La negrita va en el input principal, no en la opción activa del menú.\n fontWeight: 600,\n minWidth: 0,\n border: '1px solid',\n color: cmsColors.controlText,\n bgcolor: filled ? cmsColors.secondary : 'transparent',\n // Borde del filtro: 1px solid `m3.outlineVariant` (#C4C6CF).\n borderColor: filled ? 'transparent' : 'm3.outlineVariant',\n '&:hover': {\n // Hover del botón principal del filtro: state layer M3 `onSurface` al 8% (#191C20).\n bgcolor: filled ? cmsColors.secondary : cmsColors.neutralHover,\n borderColor: filled ? 'transparent' : 'm3.outlineVariant',\n },\n '& .sel-lead': {\n display: 'inline-flex',\n },\n '& .sel-lead .MuiSvgIcon-root': { fontSize: 18, width: 18, height: 18 },\n '& .sel-chevron': {\n display: 'inline-flex',\n color: 'm3.onSurfaceVariant',\n transition: 'transform 0.18s ease',\n transform: open ? 'rotate(180deg)' : 'none',\n },\n '& .sel-chevron .MuiSvgIcon-root': { fontSize: 18 },\n };\n },\n\n /** Paper sin padding lateral: los ítems llegan de borde a borde. */\n sxMenuPaper: (minWidth: number | string): SxProps<Theme> => ({\n mt: 0.75,\n py: '8px',\n px: 0,\n minWidth,\n borderRadius: radii.lg,\n bgcolor: cmsColors.menuSurface,\n border: '1px solid',\n borderColor: 'm3.outlineVariant',\n boxShadow: shadows.menuSoft,\n overflow: 'hidden',\n }),\n\n sxList: {\n p: 0,\n display: 'flex',\n flexDirection: 'column',\n } as SxProps<Theme>,\n\n /**\n * Ítem full-bleed (sin radio): hover → `secondaryHover`; activo → `secondary`.\n * Peso normal incluso en la opción activa (la negrita vive en el trigger).\n */\n sxItem: (selected: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n px: '16px',\n py: '10px',\n borderRadius: 0,\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 400,\n color: cmsColors.textNav,\n bgcolor: selected ? cmsColors.secondary : 'transparent',\n // El color del ícono lo define cada opción (`iconColor`) desde el\n // componente; acá solo se ajusta el ancho para que pegue al label.\n '& .MuiListItemIcon-root': {\n minWidth: 0,\n },\n '& .MuiSvgIcon-root': { fontSize: 18, width: 18, height: 18 },\n '&:hover': {\n bgcolor: cmsColors.neutralHover,\n },\n '&.Mui-selected': {\n bgcolor: cmsColors.secondary,\n '&:hover': { bgcolor: cmsColors.secondaryHover },\n },\n }),\n};\n","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,d09GMgABAAAAAF9oABEAAAAA/GgAAF8AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYNuGoFeG4GOZByuDgZgP1NUQVR0AIQ+EQgKgowAgdQJC4kOAAE2AiQDkhgEIAWFHgcgDAcbt9onmJu6UXGu7qrw/z5NgxoV4xZPbwYbeOqvT4+KGkpaAWX//39GcjJkjC4betV6BSWq7ITRY89SGKhkEnxnsIKtMGPClaZjMUEbCrkh1MljaGCO3pUzVbGGVjeEQp9Oqh1uxbepFXbc1MIgeYH5WuEobJGJzMsknopCItkdPwpbVM/LpwF9qXm191A1bGq/iash86KFHvIat9NfmUytPFhVv3/49r/IUUpRkMiJyQRdswiMW/iomvPy/PPf+f2PuXZVcpwm0le5Ih/sT0j4bNU2NX2KjHksg5Bxa5/SyzpknbPO+T+9/+5dQFU+4CrvQ4wwk5xJ8qFqpUqswG67dWlWAAiW9ynGQZAGsgt4/D+03wP7tc/ch2p0C0k8WSMk8UhLeI5Uon2d/7WpKQ4LT33daJi6jTh1IwIVOYAKkAohFUy6ODLobCs960CGb/NNutl95+3nsZuohiAidcRS+DH3LgFP2K1d+9fODVF9yYMVlcORE2euM5FC/yj2za212JQFGXy2TDmQLVcWwXLly2UxFGs2ZEEMpc7x/JzevS/5+RElJBBiWIBgQRKCaFMKgVEILXWg6qxlXcWRQF2oTajorKvZjDrtxCqiQ/yc/rWFgCcBDxFRosRe1AkQJARJcalSW7vS1W112WrGRDtvu/VXZlbb2IfnY1yt/FZxN6mequBE/RPTzcVLDJkdUALzFcD/oc60Wr6LUwoUOGthmAC3fz6QLX8coAKAO8priSbCCXDYAEMgAgKwAgCvSk2/0wCX2mVQAaJs43QOhGyWcMp0eoNwCPHnn/xNs7MAZ2cHYABAHYAlRRypgD0czSWhQPASAu8EQDnyHFICeArkZSomOqX8SkHx7ZfLr5S/nxCf8Wf4h9+vVnl7MLvoi2xCPLRZalr57AIH/2U+IjYN09lKI1IpTbwSF57PaUlPfv5XvvdmThHwLDRLCCtNwzNB2Kvd/q0UO+mAtAIDS2mExf9v2itd/WenlAJwzExTKwwMATlHeprZu9q3WrkXlN535s2sRtqS2qGPAUtBhjmhIMw0EIYZs1DITvgIH4DDaBAgDEMmnGjZgPRoB8Dg380o3w8XG6cIi8ginoiEKa4oDx63z+/nxG2vldkmQURCCCKDXNztHz+v3Env/5/sksCWPaqqalWsiIiIiIgxxogRtfd99/fTTAigdPGguFMPI+Xvxv6Rbf0NH14HFrGSRUFPvB+vRhGZE+W30MkfIxTPilRLx6PSELNxl6z0p+NqxdcN7NdMlo6ixhQLu7RgNpbpisgilk56PNOi8maOtAWHw3lcKj6F98Qm6fDAYUPpcNkzqA6nfcVOhz2+Lhiw1ie2sB89MsECCzy/dGLA/TtiK8U+fPy+LyfZgn4dv+crsYDy7nf/i5Oi1vvd+1lvmI21PRLcoIE3f7+JI6autvdoA3/ULzsyAgqdvf8QrVUPGN+uWhMLMUfZqr6U2iuchZqj8pALNGb2vseAnsL1R/2Fp430s/f+i1M4+m5/Y0W+8fveSJ2QvHP/74HMFAJ52G8JBUQsAlaAbwujMFmNYYapVn3TvMJkJfJNTs/iFIdA8aYYRHdlqAjlQoSg7wtCnJRUrP4I7RfoZpUGehoCgenMmRBCyAG5FEMlJnZLJ5qdhM5Ec3TOT9Avi2MWZCEKLq6OSLF6BBayo/IYvvVT1YTYt61yZFxUfkJIF9pKreOMdlUwZa1TGzTFYbhtua0hNK6aqNmdFDJqMJVFt0ZbQ2yJdAFnrLuloRbH1b/0DxH4uPTsGTEBbq1+HEO+cAxh9iOAXbRYoPRh3+OgBlevJ3o0YPAFk6EdmSequ9OeaHfKE+VOWpKjawQ2d/SEnjh3iAd4Ug8v/Ukxh698qcMS+mFni/8TiRYad2YzmRpGbD/glwqj0EjvR2f/ypFsqHiK2wQlv7bIkwVAiMAahQeCOsuhbiKJQFhhHO0yo1UXnhBf+C/DYznJGvJfR9wgJhHc/ooLCgQQksNgYBNzsG8KuccmELvWioVJPWmASTiLCUN7EGO0VxLrBbSzXfd0M8xVh5Yvhh7vd1Tg3ulws9PCqoM38ylq0qBg6/UlVNZqyyfWkVY7vKND1KEd3aVnwRTdIWK7n6ld7dPztPX0+FP7RJ7Q4wmn7TE8aiYDz0rCh/1QH/yDenKYOpPmaEIT6l170R61O+c/Y3+Av1NdOW3n3DlxDp1v257WKrZVkQ1tlVfo8s7qNq/Vt5lik0mfcLpOy2k4NbByWADmglmmoT+qUyzGF2Pe8ZpOPthTcLJOujHWpgayu57Vg93aP7u+S/sVdoapj+1gHahd9VVtrnUNyMthZ0hfVE01t6bXJCr3rWNNq1vVwvMVp2OmaaOKib9DuaOPODTpeUMsldD4Ya1E7EWe5F43+otoexfM+LlTHXm6v8++0PPQkXyRlqzJsixIY2Znamrrqa34s5bUj5pjr/XScmFW0mbITIaeDIcsjh0Luwp/UWFjw3qTiWCm0SyyqQnZymY3Zafj6mQtHtzpNdJ60u9cdu3IQFJEHoAafTgwzv7R9CfH/lA3UtLWLKzvmZmN6LPa4KPegaaE9F/G7Uk+3d8ZswcG1VK+R5YXRBuG+3YSHdtm7PzCJVuKDM4BUGVtHwuyE31MoMRZDXocukt1eu3V2f130hnTRJ8suh+3QdrF4REjw9rKTOb5PJRH/m5TFmqX41lqtXPPEjHpLu9kaWswLjt/z/Gz+tCR2rKso6d9oD+PwhYTx0VTjRvWURXF3+trauGb4knlsi1JxYuxZ6du85rBG+xKw/bCP7Z8FJYwnhrai7qqnnenuu21PDvr4KSdSrb5Oc4Er/8ADvO88lPDdnZUOru7EGAVsADjNwOMYu98UZ7hKy7Y3vjX6EnXGBtltVxaPODPhES+7/BBXu9WrEopdw/pG9JGLhubdoqjLrnDe4eJGPQKv4ivmMtyH1VskZP9DPLdHbiJnhGPxxDiUBcVS01XuTQXAu8tjHu85+6Pa6d2A8ve6fvnWOndhlyTmy5rdISw7UJr0Z9t3QHa2i8CjBh1UWFahXjPaAk6Fy0/eAbN19jD6APwJfotvmXahKETeXdpLCQEPc2QpnopoHAnNmGj74jv4roG2y/qD4E2l1xx1bXCZkCkawt+zgtygdlFJpcEusLoKoN2Aa7Ru0HjJsptAnfI3MW7R+0+sQekHiYQRQlAUyKgIgCCcEAWYYEPUJdWEAdII7kXvzAUkiAgMcEkBG1UJAlHlwSMA0wKmFS4pMMlEy65WDJDJx82naBTAJvCQZ47D2VNBVGm4t9cVI0NwqzPBiSbCiRbYPIFmK/AtILZDp0dsNkJnV2wlXfSAD8EazCKLZYWAiNdVCmXMQP8i+ShQW2pjYCmVcx9Sm5o2NVQvzW4aerevQdWtYmUpvTHaJjZmKDHrlwAcEA/ijggFrekEt1+wlHvPt0Ki4n1bqRyOVW5zVP4q81ZsmarL1ex8Fdtz47sDCag1Tc/EtSoEKJQVp2+KPKopFFUfmVXfNQVF79KWV4lr6AlblSIbIsqaDwQCtyeiicHWqapJC0EQoFSpP7g5ZCOKxNxmA3ZSyTBhqkwvaQQh0D56R+aC/wk7E5dFO2pYAhYdtdpgCnrXP4N0Zy44mQpUqVub77M1whxR8AqKHHH+StC+SeMD6upQIU+YRVJYUXnvwpzo4VdI4tcueDCwX+1mgQrkJgrKq4Kk1ZhMl7qsZP5bbd/nHQdI5jxdpTt8watunOHZXtsQZEVrXeqHgT1iHPVfUnrsfcOEsOh/wyFi9rdT4QyVNT+/5cfLW269Dma2azMRaj6S66P4BvEkMIKaRyQQoA+HVlUkEReCaOsxNFUovi3WDQAxZ6SAWWwj8VZBVL8EiCRuhiiXYJHMvgiE16+hxsFBddIgOpVb0+qU8IBM9WBzVwJBgL4MHepnkQxrx7ENXdPVTGdROeveiCBz75xgZwKIyGebj2XBbbCmoPkcZ7C/EuJwM8VA52CVtjCWfX2M4UBm2VWTuV9Pi4MYJ6TejCaYqodee5cGKZnDT5m+xxUXOdxvv8xXM9MsGWfaJJJJ58Slp2OckijsKVjsTzYuZoVGoGVZr1RlKXYgVnMeKceFzPrpVQtLCGCX6TiNp5rALr1/M6OKfNIo4w2Biwd5bgHHCEbDRqyHtTJMmM+KTM1F62nXFiEDimjQT+DeL9G0N2DvrEenPvZccd+p3hUeAJvWnG88dobttIU4qLO+7SOinYKcrj/1qWcRDYo92ZJxNUkAS3fDvs30VaaW7W23glwLJcKmW4sIDxFvuJtI19sIkXi+6eGuepCVOjPw6i/URpJB4VXXbYC/DbNJ/yxu8xs2oqy+TaE8XI9ctpRQlO8uwxHXet8RjvRY/jy3sz0oP5UhEV5iQyUK9f2YMsa7petb7YmkDVVz7x9Kz8KDB5abD1vlaUi+Dz2XcZuaM0fIg5vRAzXQ1x96TlGrtQahFab+IG2FOrxnSSEK251qM31VBo3QEUELLdUA2qeyLuPljdhl/coiR8Eaws4vZEUNVpM9DTk4a1QhoyZqPsL9hzNMiW2zlJ4SWW4IYbB6RhkgiFUUcKfjkJAjczCEREIW9WixROws0jgJ7HBkiSTcGw6LtlouQqgwoLnKeqsjJJ3C9JVNyLdVUJVRahqqC+RfmT6V26AIThDiQ3jb3itRhhFbPQLNEbM2hvxfJrINVuMtYSaLLMcZX0pm2ymspXKtprtsA/lAMp31fjeIUKHhTtC62gjHHOC1MmD1PMJQgxjEgZwCAN4gwGMoQTM1mDHgeCo2IRVgoRXokRObLez0qMY96A4eZkwDAUCDZGm8XI0S+E6i8ejKeYCgYYM0Vu1GvkPoSxAb4SUdiU7npy7vg4QILuGltRlgDLGBCJF2iagpPZi1oN0AkNjc5fmdooUnOJBBBRUUwAlCwwCGAQKeVqT9SCdjWnBLtLjBSgoKBgEMAcFTUx+GJGaZevYao7eQy3ILsM80f1W92vQa8ZhHMAeCyPPMPz0v8n6Gbhr77s+6Gjpw5hg7N7DwaJ33YlDxzn3y4WHhRP6RN37eFoj+Oq94DWXdGGkYKIZI0HwaCU7+x50qL9JU7MX4bFv/3byCQWczz0Y+TLw64iBNPREwWrtM/uZ0vfbQqf6VtvY+DipwxVe9wNRkWrashixlxeqn6fn13iLxddPCfCfMK0xZhWbYzF8QKWseLpeHBUrEgVS12+7tv/qoK0/UJFFqOX1tQjNEtuh3aI3agXjzMf39M8frwK3r2g8iS06MQ6qU1kaItINEiusg3jXERveiajXCW2JoK0R2jbo7wvbIQJ2xH6CDoT4JujbsL5ThInQBCJGD6MS8OGQ9LkY1JIP95CqA3/8+gHR1ZJjAIK+IE5aaiRQMHZSjY3K8AAeBTwKNGjhkMiNB5WiAgIECOBRwB9UeJqlvPI7SkgxG0EdkXNbx6rAaCPDvVGV1S7NYxyjlu2VRFToYQk+c2DnSz0iIKYstdwoMbYnTqjPd2fBOngEjS357mEU+DmKAGp+dAyMTDrwKFbGq4vqKQxnmX81ZIyRPE378lVayzpFPEGRbIKgNAFRSDNlCKaEQkLJUT8FrSnbWId5UvUQQq1DBHlCKQ4qE706ogtB1aFMD5oRYlbQ3KC6EA2rMcaKSUTFJqWik7mfcEBDv0y1ltavN9pvj5xEuxrG3W8rYwXuQRv5d8S+mCla183QMHB8VXWNBELh1eUlQB4nr/SFHx4cWh2SR771cqUi5HnC8OBCTfXAdCXosP0ITojlcTB8vt8yxlejx97alcCcShus9ILr5YoRHBbSNHgkpKI5nIJD/j0YYRAgWoxYceK1iaNnCgwdPmLkKHIR8l/efM1sdqZnduZkLhS32SKgamGcUGOlk1xz3zJFnY9SMctEdYRlli9xSoU8sullkTsq4IsyTBG/IwxHnMRLaOWIKI+F8I2ACgenhI8cUePKS4iiBF4mUxYZsSjKNBIYshqClCAhJ2GwDVgikoCUGhpB4mLFcemMA5tSB0GmBDGlc6AzN4gxez0jolrJs1fI5272dz1b2f/t4Gyw0RZbfa3V9vwQ/ty1TH6WwW1meUlp1kaEGCLEGIFAuGxze/KMzGBym2Wwt2cGzK/iB9naRevdQvVPGn8rXYs3yfyUnaOGZg3oeRFSuOER3+HdhPdM1HE/SAFUiwD6hECevSHJ87kE8I2kokh0WQpRXmEy2Rd0DUcQvZM6av5dF1Kl1cSEcwk2BnDhHmmNSQil2DWJi4SzFG47gr5g5rPLy7/uTeK9yE6SifPDproZp8EUqI0S7PDPUfGFDG8dbqcuab4rsYwqJxXgEerW3v7FTVcCUiKTcEoNWshWPoIL3+7xObbCzTF1DhrNIMPdM/blMUUzic60YU48aVpTFRobA8TYIgz5PPlCVroxAQ1+mPjF+TAecD14miQeIJVf0U/ZBIdi/wo12eNR9kuhEau+gU2mjNYdFk2amzEcn30UChQKq+eq26LrEdL7KN1urbBSB7OKJRp0a31fV0Z6a88vE67FGgttXEbqi26SdB9l0Q2AGvPNJ0qbuwmPCjVu+LcuOVpcHqq9QgWgHiXXHr5Vm3t4WzapHIGvH4c1Hp8IjARLGk5tZux00+9H2Cf3mYt0TSo2RKbJBfTB9KQDb7LEQqRUvBQ84JR8d1BfecVXj0Zp8I5X50KyHBJz3Vcpe9rv81Cq6yfMMQLtiP1SUrs03/YephTlEyJ2E7WJVv6pRKY4Mb3EKLGCvOUPQFRwzI/mf9p19AvqOWAsN++QsfNE0bfkAF1ivcaNAMM6rJFymx20yjnhuRa2CQ33SWjHw0Cm6VQF3lPcrCwVcwyHXhTrYb4rSdGlTPTEAr/tuv9p01POV+vid4mdzTEcERmtUpG2UobN7PbgwBbQmZ2edcsQSE7O5zpZN0G3i7EUdJAcJdlCPZdPoAEyCUdAxNJPu0E+w1mMzjqkYIXmIHyEGNQwejzCGHLVGoXBEkTn03QgLvtWLTvMx4qZQHSOLRehfcK3nFNOosd+urrYq5uI62Ia3xSVabUqJ5Yht8eCGXNdSGvyZXK/0oC3ZV5uUnrrGvoTc0uvN5mgyqKjAPBGsBtCsssMRvlYRjt/okP02iF9iAdLsDFvzAxvIhQiymhioJv8C6G5xvvwW103rQGdeL/ynggD9L7qUbqel/7VybhW5nQ+JaqMHC1q+l6Qm8WtL4ox7K1uRbIHZ1CWtFVJeGpNBsTrIrxhYlLRyPBITYOvjH1D0bfEYZFJv9hqKyR1BjCsDdxa/5cubH2MtkwCXBezf0BSE6GsGBHD3aYK851xhCUPR2oScYeV5qjGZ7aqR+5Ge8Jg/IWWK30csYETDJnxWxnA0vB5Z74LZEgIQ99/4UTv0NlLM6GHLvmYFEB+ad+CfVvz1fQW72CWiP5tb/3/QOVFBamArYKomNlo2DlYuOSxciuUoEiRFCVKuZQrl66rKhn66q+ToUbzmGiiMpNN4zXTTBVmm6ObevV6aNSkZ4QI+iDmQgICHE4MIeEX/ofFlCLGLbxLU9NM0OE/GiuQaVLWuEuzsoobHS0yQkRFxaZeQmjkDrIIIvusgiO7m9lYOTbMz9ctkD5cpBivBHlJxAChMzbl8hN3vbJeDzLUaBAjx0QZ8l4rUjRwxk0iQMFAwUARCEUgLigYKBgo/DAioRQzXpRdhLOxd75f/SZVWzKdT6FL6ehKSlzNJ9rTwTU7yR3qBBuDRQ918wuGib+6BRBDJByLpvlMFEPMFXIskERIMm+uwTCx2OIpvxOJRZWWpNJW3LLPO6AlQe13N6RhN0FaIdTOs4FEYSAcA+Ek6xRYTJeUcJjypZ7RwpLxk4PmyEtGijCHMmS6llBqMl6QUSc4GSzLoDNE5kaLVq1Qg4FwDIYLVAczfThO7JPpF3RF+DUxJKHAUEYCqSIXOBhAL4hEgehB1PAqOoUglBgQxE82dCE384i4gVYLC8gi1b2Q8aqmCxA3U6ewqDDBxt/EQt+cjJgS0ZoaYmakZodTH6nGcHzRapKDlGNGKWsNmvC5U7q2bD6YAzn4eGtasiKL0lS9r6S2jpoypB6q9WzxWrhbossLUeoT8M4Lj6o1x+68TiNH/KPUJWX/jSMkISUjpxDGxi5BYknn7lDIo5TXFDPU8Wk2z3wLLLTIYi1d/bvTzjrnl1KCJpGPNU0ei/PV4z2ldKeHXgoFR3gR9ts8dBaIX65YLgLdrTi4oV/MnexcWcwkARfSuyIAg6FyqbTM1Fnosg6wwWE4Akf5sXiGlxpJa/laSeL0BqOk34Csy5WywwQAOePkw6i4FnIHmh5FJF0s+UOi2nmomVIRgQiUBTi8DZLBw2nEK63+sOF3eY8cEO3qID2eXmg3XpdortfRiTtbkmpJSluTTtzZN/7FOjrhmU44pW3nRKtg9jVymU5LUkzoK/kanartLDqGiC/QsTdXR3GomK0Td17rydfJoI9uE2iRVCUVNT+cw84D+9U7+fOkmlkEe91mFLcOuefNgmxfaUz5yQgCcl5HMQdy8U3dnlwNs+TmS+3Dd2yyfJPUUDmW1G4VTTw8VlTvn8sKcYDYEtJtOXvtlyxe31d0RYn2zQzfA2aV7gFDXreZ9NZhPFbLoieOvHRPwteSYPv44lK5aeED2TY0vCVTh+AVlQkSnvxlEvCwTYMf7dB1TElscc+DbWxlPSsZZxAXE/kfPTQgDNscJlNscMMdrvp/ebqBZZ5B2T7kEcnF3K2TPS81LZFJz4pkZl6yMiW5/n+a5+t/hmcxvJ/nPvrSpwGBF9cFtuZA+6pNEUVc4rG3c0HGr5LDqGTTShZVMknJuA1oyHPEqXBsH3aACSvRWBEgLNzZIgJZeQUFA4EFERNpCGIJFupySmLPtdSksoGJRYgwIA7AXTH0GPBsSJV2SSZyypsgJBoJQ+xDdCDCCD0iGf4efCW8HI7PfJx5IXNnelt6Tbo2XZie/pHSfoH34AAshHLElFJfwLWh61OXpDalRp6pl6Q8TqlLsaWQk28kIZKgO5V91r76Na/3zqTjONRdW2uNaVacYUtFgysOWacelVJZDEQIYLvA0oPgJOlEINcoBg+Ntt13ahqMEhqSp51x9hIZ+JmfsnIhWCQDGVg5SFYQOwcLQwIQPNftiVIaCIyHLabOo3C0B6mfOjjLk8cmaH/ktXyvm8BtT6AwMDeBZm31+9lBXxmlNw8lwoSVQmyAKm59g3iCdNGdR3eru4qEO7rPsR8tJ3249Ki7SFq8z2xJJ073N5bmjpZbcVWglrU6GYlrkyPeVlkqbp596pft5VcIgu92Efdr+iX97H7yq+0Vf0VeoZfnZXsZXmqIKNS/EQKebnIWGx5Y7/U3djUXT7zZwWlHxiw8jSItxcqNLwDJcs1+AZmgVnZarr2FSEzDjhLwJMWIdQyRr3sy/GQ4gDgZQk/Ty8li0811FTbCRmw0k3o7Bj9q/tGXh5uLk4Od9diWYsGAAgAIP+RNXuRJHnSnG/3TH7V3qbZ+7kwnOtLBfJt92ZXWfJHN2ZA1WZElWZCm1Gd2pmdyQ/XVVVtNcc5WdVUVypUpdcVxo0ek6FEaoUZeecZbvXtu+c9friNYLkXAtSZSm2yaDDPMkaNOk47aXFPkDLVKqRDkhMdcJBSN9oDd62FHA4IB8qGIWXsKFEzAwiVMVazytmvon5c/T8ED7uCBCw7YYIEJBuiggQoKyCCBCALwwAELDNBAAQkEQMAAwA0ucIYTHGAPO9jCBtawgiUsYA4zmMIExjCCIQygD73S3d54QhU1/yxIn5gOPqZaWFpZ29ja2deGo9OiNwAGwqctK6IxWByeALbXpkyh0ugMJovN4fLcPbwqwGQoD1lW2eWUW175FSAI5ACNsE+OFKd2M2lz3gUXXXLZFWHXro07iJ6RKAnzF6q0cGVVVV1N0WqLVVd9DTXW1IYK1I7IUQnwSQgHWco/BfLKq6SouV5+IO+YH8JKD8fQkx2YzkQWEcRelnoDuIVRX8t4ck2I/nyIQpBtl2g8oJi5bjccoC/3LTvpRUuFA84Fn52ff5mpJhhlkEoVShTIk8HJziaMSWMq0BDtor7by9XZvebai82xF5liLzQ5mWM2Ck75rGdDFzMbys1o8JreUGxaQ5GpPCePW7r2w5TGhMsiIqygqDJGPznvphxrIbkATQKFJg8mnHnCShE9RsxYKVKmqiR1mq+QyRR4cGH65swpwkWIFCVxkoqTJkv+zTK3X3tS+AYB0OWYgZ33bkfMM2Lm0t0YmrBZ5c34yLR5lNhbRx6jRx574qlnnnvhpVdeFx03XvwEBSuvokiVNddSa22111FnXXXXUy9C0EcDkM2h57Uj0pTFasjSpTLyqmqkHqvtG0P0sffasuqWDOkxq8wqd1N3sWCuP0bsn5GzUPbdrLOCMtf76dvwImV/fwxofjCQfCjX/Q+yglLgfyiuM7AnvAAf7y+f779vDnR/Qr0JY1q4b7tldjGbFT1YsBR9S+zs7N6dCg+u/JEj337eHjN4CWvZys8snrYO7MIYp/jmzdPm5Dy0UsVnbp42GqNQ7PB+m6f1vJQ+gfvDAWsR6IaHZHtFnY3a3W+o0yxg9ZEwUscVV/Kd3675pExDLJnIEWAV/77s+6zLzAzJkyx8qfDMX8751lbLzFVrmEpeBbLEwd8kmIAXJwsQBEvBOyN9ZWso1/Ll2ok2hjqPIWZoqPcaYmH4qN9I4Bgaq4Y4j6G5AENCr6H5IEO8Ymgh0JBINbQYZA4nW2DnKABoBUXNgK0N5txc4fKpA2jdeN8ELf+iTNbrgh76dJ+O/skOj45PTs/OLypiV5XdVHZX1Yd6SE9e8Hd51LRdP4zTvKw3t7Z3dvf2D37g9/IoAQ0rMJACQQYWHLCXPBRlVf+gt8ul51+EUrlSrdUbTR8AbABCDOoH1OWBmUpn5Px/K6tsx/XM1Ll84Ucy/b2Y/gsEQ+EIM2ajczwWTyQFZ25fOjjOsvBiFRWkyhcDtl8ecbwgSrKiarphWvbo2DjxQhuJGES07Ozi9htg0Bnh9EKRUZUgJrqwAMq932Li5khi8qebjtlIEw18we/zNIx3vAB4WrLQjcdnGFBPr4qbV/h83jKq4k1ov9mngAae8guYoUt+UFsK05g+tbbd+H8B+iMe6Ycz5UdA9tc5YEq5cq7pnevQ4PSTB//OG0YkePRPdR9z4CU/5ouwAPk7Pq0E0Sg2JuobouQtgLBnJwkAFw5BNvQXUEBFSQmsAU++/rXwFq+bgnHfrioSOJUJTStWisnW22iTL7Xaab/v/OJ3D733cW2Ybp5unx4wPWT6TgJx1wuINet77q4dfEzFcXnBNtjR/Fs/+s1fHm+RTzdNt8FzhXtEXw90qnvtAX4I3N8+o8PO3528Cd5Yb1P++nfiHYko+M0Afv5LyAncCMCPgZ/eX6B2b1LGp1iSNTlztbkhbO4ohWpqVkoIoUGuKpTrhVFp0dmpK1osfDMhIZ6YRG7wjlOJPnUzqwiRothEi1SEWjJaPfnpQb3BJUeuDjSWyOPcK4brXVVIflDN+1He18dQwww3wuiKmxdH8Wb7tcLGMtBveSJgEBQBGosjohDJuG6QntQyCR3uLh4upGph4r+V1JNlDANds6TLlP3DUoGO8nVSpkRnpbrprYeeKvWqRh9DDDTIYCMbrK/+BmqoHsLBNwHUxYDumaC2g11/AnDMx8HiPcB4HQBt2Pt1iGdvIZ8qJ4XNOFptY8AFdna9IxEMVd4eDNYVDQq325ON0pfSl4265NK2Cd5XG/a5laVNk+JZSqiQ+T0PrV1PW3GZk58eanEMysqP2ZomtJXf/jDQqs3z4S+J2aVi11RNWNkP62ZfIZk8vocpujd0ubt0AcuXU1h/JTpYCq8dUqkDGnxguc3dTBpi63je/5UVslaRkuN/kfjEiJihr5SHTSKNCk+wEUNcVokVqQSljq/w9VqaUmvUZutky35mNa8ru7frWiT0hHGM+7X42jUczhrNWofY1PzhWQsjM/vNfb5OjeWgVjAeuAxgK+NjrUBmY2KMWW5sLZlcQFzsuXIuyeFlurM4XjuXynCyeZIuDVEbOmsS0Hal7cm50dqJUbTrWbrd2WzCSiTBpkORgbXOAYFsKVqmSL67p7U0EVEqOfAS132nSHipPIWIENNHlEu1Q4OZKPGQNlM/tu654+2vRFvCMISYXxGNalRHO0QViaxxIjZQWWZulXCKFioZ7s/PtXZuFxs0zXJua4sIPIlwsnuc4uac8WgptapBMbCYvXtnOj0lCI29zCebbpOKnnGcttc92ItTEAtQp22QC4oBPDqkgm2MFLYO9MEFFwwu04kxxfyXIlHwsLLxGU+yWC9L+C7NMgbJfbzpizSqpSeY5lqYLZhH0EGuXHleZqqFTblgDDLJMWdoVqQZWO9xea8meelMnCHMstKDmYzSMocYhpdmCqWlrcJXoWB2IBnjykQR9hAbtLvYzbe4LZ/Q2jDWqNTCPpauFdUiU7hXqaBTYQB1ILvXqU6TLaoTlbtdrqkoVCk7A/WZJQ/ZkyhijVqkudIBp1EJlAg7obwkGT56dJWlAmv0QCfpZ/5tE2LjyJENFkSrtrr5NFTcay5ebIP5vI4RK6cNvm1r8JD3XRs0BmI9LFSOIIZOHxU7YLFCbjvRrUaB9gsaUocvlSB2gb4oQr0yH8GEd++xLBMB40FWpRTZ0xICmGSSOTMRQu1m1XbBbehjpdToY/1Wr5COjqPAQg3a9f92788fFVdZFIXYSFULQm+L668lmYBc6QcwzFy/bLUF/ZF6Mb1gHi3iOYOXmf8J6NWHW8cAUiTC25a3CVjC40kn5NSBXOg0/aqjUNx3DLEUilJTLkfFRO0Iz5n4MLPvfGISlb01+H18/NNpMg87CJ//OorZYwGjSn5+eHhxaLc3MeZR+yoq9DyLA7aLu/vsZl4PkgXONKXepJnl+gyib5vJi9nYctbPjzJe8OQBSn4tlC+atBfNthyyJR/XCV9pprwfKFXAXDN/BNJXKbt+hnL525TFbQvbMQwpGe0WS/nvzxwG5HT0OuLxVOGGbg74dSMmV+0uLyrGgrMKraIISLjE87DD8Kmx2oN59Opq9KtBz4vlQmedGsDo+USpWAkXiBu8rSl4h+lVLJlFQOFx8J/HncP3SV4dFmIgLQinEMUtalUCfGWmsDZqTmtbVmP3wzzYjh0ro1MVs2M1lZRoR4xTlFAmBw7i1NNZzUh9PxUt6GZeHQ16pXnn50aCGqisViquztVvVdqQ9vK3LZZLWT0Aa9+6dUzqi/0gNZ3SZ3ul5Q1witMuh2LGoNAzE2d4nEIpWU7HpI2tCvdHbnSnrSE1DNJBgmRyoe0SZSXFBEL8hx2yojbX0jRCldCp/sUpOso5MQ4ECGRCdavWCgUCBKqjNYn8zpUCvjWIG4nxPNWgQA60NbEOMQBuR6FNI3QkbBRUFQkxTWlKEV1lQNifMwU/2nFykJZ6S/UoCFG+YZhtK/U//g37ppw8ORotUjbr2fZAp8m8TowTR3xjjzVubSkQAjf3TcvV3WuhobWgjlDHTP7dkN0C6hzTR5nkUvwYnFXFElqYp6RdMkIkbxAgzYpp1iMWcbm8YpQ9MHET7bo/2dMS/3UWM6EPas9Ru9WEqZyCUaklExBVHTGR485CBHysNSeRLHc5zzVFWFG1vmwiogPj6BqMI5n7rjHSPNN3mygfogoy7ivyBNJgyzvvqI6jGNHIlKBmWoKSCW3KW6J+nPe0Lvuooqebdf+IcUXNgtkE8kHMCx3ItxpVFCWQjB4mu4wBb2nUPiaQgqUERpFCUVC1coMFKj/zZZQLQlWTgqvn4COJ/DiJeivUtuvYZOqDmE+IikGs+FYGOnYax7RWcnGk4tSXKH4ZCRHfIe8uqZX7OmveKOjDEfIsT7jV2c2n4SkhXDlhiO4osqYFwd9j+chtgXBIAkvcTIK+QesJyw1tV7SulkHH2dLaYNdZ3llw02/2lYEXOd588yejcHC+KMIOpfGl+Aar5c0NUrVaCejNNGzVBvY+wtVuYsNVCLRZFXFeXW06r0vFRB55V12Ek+XOOeW5O+36tN42PcglttL+IsAa2cOaNGKcU0JxnlfeiiUeaK4B/JgBKQyTi9sxI5Sm25ZjNI8YzyxB8B+XPm0j5L7sDRKyLG31u9nx3kfwYDM7cjpAzA+n83Cg+9GmiKd81cPR4ycfdIU6QvOWDpV4BeSo2JWSoJ2dUjW5qTZVr4JYpaZ3/LoYrXf+AuC3kaumRByB3T7yICQF9lnGhGDk5PBCg0IXd62d8A1NWT30Xnygy67cRKEK26je4Trck/bj/simmELYKu5Gfdjd1ohjc0BWVvp6nzJcThAIj2gLjT/6XT66EnC7UhvAvHbvzgetQ+9ut6oPXaRM4F0Tzi1GiDCh0B9rFiWNM4EWJ7Jm9//GSrenBs+MWaNis/7wydbzPk90kFm7YpUUPs6y83JTPG20FMlSuQZT2oEpTcy46j7nnBr7NLy9aAvz6Rwf16d1ndZngUkSp6aoOSOfF9yhvceHD8RIOEPoEN2UzVfzEanoRc5HuE3aQWtCK4JcVU5lFVRiEBhx582jYneAXgj2Tq7hKZQyf70WC5m3rJ2T5z4pCvNLh2DuW8zy2u5DYosj1eHMdFA+XYxdi0mmuTRnoDQNjgQ+MKHfPqyMMCZ0GxuNJm55b8iQd0xbZQ+jDdbKCEoKK5Hnp3VIIsZnK3mCy1JJOzUCe1/Zgi0evlLSTdRCEJ35y2QnzZZdmnVWW0mfDpU6TqwToLF7GUSS+EJfckJobme3TPrNRZfbsCm7nZkjwnczHs7iqehst0oY/Q6Fo1I898vFOoomyWsf6KO82/PFxLuA7Oh14fQG82S/MEBob4XKv0tThphOkuysyHwXI/NpZE/HCovldDSu8Yw8uPS547QrL/uGmj6xIGvEAR7pj3doHRv1TTXSpPZKbe/0lBgf5RvdJ/gMVUDqGdb237JRdYLkbHkSKR1R0kLQ4N120nJx3eK0a+TkcMNHi9OuZaH4yXb22HZgoilbSMwEZZhx9j/yYoJlaTED2BYNPMTtBpJ+lwRmHBQ1RTPPiHabPWWMiZXbvT5T4BRxziGd5Mh6PPNR3mm2GlIiH+EGMR2MtvTrDZm2iKl50yzKnzmxN33VGy+ShdCJbcq8+7Xn3evcT3QTyhmz2LtkfiFb8sPiSJnw5fUCxVPReomx8fkZgtqJdvn8/D0nWam7ZSFpfJuOlyiCmJshWPPrHDnUN9H1kACyCiDLVkydYHiS899fNY//bJOzDC6aer7FSIYAwcrTw7buJbvQQPWZcQTTWJbV8jPIhxOW0yU4kH1YdKQhsnBvsy1kWYsXkwtyqkhpVTmX4CKMCSZ1kWbUll1YmSH0+sHvUDG49X3xYrah+046G5rLa+pZkQjUuHEVPsq51QK8FYeNlJPI10VhyAknX6IzNcCe9meB0P8lu0dZyEkuyz7XkpmNSTGdp/+l0kBGPTCfbpOhVNWXeUL2cnSM88hJMuCS5ZdK0DN4LYdh3gou3zI55uXpMTZ7eiNjoHfjuN90GDdzVPc9ZE+QL9ztrXvvY06zDO6mWzcPrTUyzlSNd1/gCQhcBAKjabbUsK1Ks8f7svJxCLrJDHj4TIHmEZlsgE8izscuaqtcGyXp0NSvjjm0mgroKF43xx2Bd91LV4FrVgANfGGAPLMRmj+mhzw2Q28clHvKUeKiI9XIpZujXbdN8Gx8wBlAEMAF9GZn1PuknXyAEujXVsZkcIC78nzAQ7jPvVGB9h1hk4Omm9K9Ie5aXtGwmrW7iyQi1RHvfq4p55ZLJ08PB0F7nAb3JM5pvWmLcduXIvuqIJqlBbRZpJ0E9Xf49vS2+g3PMpMKXOac4zlOtRj3c+3j82JvbEvvxENzGA/+kUlv6ynL0YJHSUK+k+z4tlNrNC/k8swf2Dn1SJXezbZt+74UgpKwWo4dnFL8LBCseeLFki/gNwBM9+uMF3SA20fMgKV8QyO1Yrv/7tZjljxrzz8IwnSc2KyjRfq4gifa2UOgVjsn4B2PSFKd2T8BvAhJ3oAr2QVId+t2myHLre8WLDciPJGaHt/zlIFnaAQYCCO+Z+m+33TT3K0i3VG4jJwv+Q1Sbm+NJPCti+R/efrqnb9vfC5tzfvjqnNU+Bq92EUTM8YneqpepNfD6N70F3im4UBW/XJx/eYGwPBNPMtqNJT9Y8xqPNYcSxreQgucsTcuiK9YEd/1QVajJ6sREEcnXmrLeBwXj0vSb0xNGCs2S7XGWL/UtkmFiN6grEUQ6dncteVgP/FON5W9SgT64ZE33L7ldX7Nmu7eTVCVohprLe4KmX8MstXaNoE/yOvQGOUNtVIN31mo5/zf6DpfIYsX1XLev4kv9pgXl3vkb7R0btLWtTX2Qh0sn4s9XW0S1EQF5p4K/Ji4CQOyUS2Y1GDXuh9viU1ltGII+ZYxBjcNcMtLBUMOf8nKrq6t+qgsWuQQzAnZkuuNOQxdOzvg5bVBtpLp8WKNrpnrKIf/Nq+mIgWWCkDpLIpZddElMpZqa5eAyZGNx66huHzLd+B8go+QhBkyuy9ON/zyN4bc0RwK/doa+inDZ403CSucLscJQZ7lYkvI9/3ZxC824ravWbwk92B/c0yMlNe8rBMP4+PXjqtsMa1Ez4Axs8u6s2GIGeaVBSOHf86AZS2C5rba89v8kg5DLrJuBjPgVat9oRW1ftWq9t4NUFXNSn9wZc3WBq6DAo3aFoE3xGlXG1UNjTKdtlXgaRrbSkyqRsLtW8LPJRV8SanCaWwZlLkvZDWeZ2hRZSzefO7ilhjbj5Ma2jihRriUlFvF3vGjplJgyHiUoOGJf0UrbyPr3qbrMU0s1hrx/Ja6PnNf4h5z4iCYhOdHObrSw3GmBHuVSdGhe8iYAd/FNpeOyzALVfpIm9hgCQs4Rmc9VbI7hU6Yz8IV9k6iN39gEjIsQpOhaUABjvWsaOtbcSuW1fhfViNgIq6gah2FXekO+5utzlOpWpQfovEkTo7QO+a60Oq5lTdv+xLwx8hEr/OrVA+M7vn3q+G5E2CnbmIA9wEGtun+B+3SD1SwlqsfDEsnemVfJuhhRfr7X4LGifk9k+kv3503Lyu5IWv4XeS7k6+1ncl4kAXejx9tg0bvT8zoToe9lz5fMLMVJLnab/9Zi2x8nN1+88+erEawCd64py66vzFes3dvNO6dL3litm8ooygsvTrDkNcFDfdCVn0jRxNJ1P/VGOEXTQ/G/WBfK3xtygNw5CsQjRtPNAB41Afwizou7V5bWiV5S6veOtw9s/QFXgc8FTgxN36ACx/h23Ym10Znmzgysa+RYy3K/7og0nVpOoEOYZfai6s6hSYoKuBUpxulkvhB2LNbOxJDTD2ZrStNUZ3CyHR8HlkGTsE5NgbbxNaUeJtoBrxlZFX5EpVWzpjkeDnT2sRmXYRfrKhnq4w1SmFUnhvWHsvwWOgJw1SWjcF3D5binDoaQ2llLfKwNxhVFTiFwIGv/++WWeQryCitaUAbfv0+Df5ic1AGhDpYmqF+dKKFNJFlgn1yQ1fAKKlWSZtMGkab3VfPNdaKvHx+qYJF1t+li10yVrmErbkCkjHGNfIWrZrZ4gq08U3yIFWq3RWjDZKzcUKvkFcqZxL1p+iEul1fhJlU07AR/IqyUlEcN2qZ7c5AE0+r9Il/g00ykyeaRifq0yDY3AAPXSvwCfkRpdbhkEu8Ym6ZHHI6QArmuFbWrFMyWh2BFoHeFFX7tJ/M9Niyni2l89wCfszGKHuPRNtx6pWXvX/9Lgs++VGXM0X6rkb69Bd5BIGVzDV2zYWtctPVioisuEGvorVaA3GBnnL16mnYxYbg95lBR9tAcaFB7BXzwhK9zVpM02ESCi1MyGYEWSMTLcSr2W5YYeIjqtzNJ1SlmaTFzdLiRt9TLOM50zyLlwKySydbwpwlFux6LG6tihuV/a9u2SRQviFytiPrxualYz92xFQtddpDfIMJlf4xq6JSA+7WjmlDzCrOeD3xg+dzEEHzXl9i3qsCZJVN1qcZYW+6OXK5SXx7T0SiU9j4mNL9cktTcUkMsQZLvU23LOUmt0hLGjQn0ZQ7bKcZ3CSal/WqAE9R4hJjatJ0xZKWYmFc/AWeoaUxDMN8JEjHPF0jbzFoGC0uXyvHYIkjW6vL+1YgraVp0X+hTHQWAfqMJfKIOKFiFt5wF2Q/zvq0Ps0Amxvka1URhSRu1DLanYHpPB31+aldsEQz5ZP3mcVeMceNbyNygU/Er1Cx1JdB82fkT7JMsGs3tPmskhqlrNmkZrbZ/Q1cFV2b/+gGLM1QN/rp20yRS8qukLDdxygCn4AfUjDJ0F1V/ukzwEJlbFHeiZXZnT8MZNP0dDY0yM0An6MIkWfurqNVSIhFjB4s2jfApn9spnJFxiqamu8oil2LkQ96yKwphenPb4oNyEULnxLFImc1E7yDzC0gVKTqZCXNEnED+Qs84xnLMMJHNpdN1qcbYMm5j8Devsl+W1fih11D3EkwYp3spLclHG/rErUl7G7rfTUZCDsSTnYAmlUN33Bh7n/k1MOfkydHwieT9plHIheSwa59W+5Kesy6mKXsMcfQZum5UzHY1xD+9C586WsZvcEKOkiwlXmMCETlGniZ14hGVIJfkVfKZI0mHbPDFWjia5m31qz0pBnr9f+qQrDnP/mc1FqqHpNXZGOzOMcoEp+IW6aAHA4iZ7sr2MQzrV4JSzM0hNEwFOVPkqZcye9AVxg9F9I8IeTjcRr+1M94k1ZZ0k9EqazshR72BpOqHCcv9nNWJaZCsSO9+7OJ2mNAR8+qFUOg7411vc52N95P0xUB4GUH0T7/+MYciMcw+apcwFrdYGAa6TsBuFYMgI29BpD1E2ozU5yVjGG9UGBzBJ3caUePv6Q62iBFn9OpGGgx2sRBxryp2vhV0qSRCzFIDoGQZIdoHA5Ep9gFYuryTwugn7W9Awg4h4zQiMtjHBqEHI4hyDjsdhlGBo3OSr6FR/cKBHS3lcdjWzkst0hA91p4AJ8O9c+G2rzz0iAYAbo776OlVfORlS5B5VgVYJxDl5CxbP1wNiI2M3A/yex48/VfkTEyMnYmWjcHERNYYv11AN0E/WArs0Lkz/9ck4vKYPs7q+vXvoJ37OWYaZg5xGHD2GLi//qKMH0MwMbabdQPOS384YrILLGH5yh42+XVPzrIxVpianFcLaG5LWyBxMok6e3vQ9zSQs7n5Vb5oKak01EVXL410BWORdxtEkWNzl0RKI8UhWYixIsjY6hfo8qk1n1z4H7y98haJrxmgQbniMk86jHxByoq5or8plbBS79lhhXHkwQIb+HcPCnH7+aKRHas+puTmRVF6VMwKACWc9y9c7Sc1BbogD27ou5ExbN6qBl8By4MOAvnO4mZA3W0sZcUdnTEtKzZOJ6mVwUjzNLVFvTjtxhZixPbcT7bB7WJM+77/fdhCAlP++zpB2H/nFhcDzULqfk1sMcLwtEFsLQaIbUgfeD6yqS0PiGm2Z6Pd9+EZfRKBECBqpZpstNq5Ub2QKhyVOzdtlFjMttgMHLajPXGqFJUpylm+5xcobFGJapXSzLC7QrJXV9VpV0rK42zrFsRNVso1LVF1D2s1sC3YInWKxmpDA6yDbxfYBNRGy2WxYw8TacWz31ZKogkeVP/ylNdapMrwn2iqlmI6h2EvDOF1Pm07sC33y992Q1b+ioR3kXgp8tsMxso5Qf3YblKMr7v8rL1qH+owNZcUysyEteMx6jrV5Aov2NRkq1VDVqTpkRSGuWCdRXpza7xyn1k7CqZdt/l61W8tnRbSaRFE2ua0UllXaoc0DQ2qxuyu2YPgnPdUAcUTzbBSKZb8QEIAgtLoA5CKAnWfyQ0XRSiwopXh/qmQZ2COAs2fDQO8MlzM3ZcnCNpgR+5i4BGqi+m3po72HY3CRxmPlvh6K3+Crbvq1GYh/kHSHI293fREXUHBltvl7Q8eC9j/db6m9OWXnBdsON7ZM4govb4qtppIDHrwnrNr2zWiVcH38cxL1gJ3OpLaaZ+3AxM3vmCgIhVjd6OLfgGDRKyL+Sn228JqTfT7TfPpts+zbCBr/WScLEoorBpu/v0nhIXZft3+WupYiebaRdqbC6Vwip/sCjN+CnjT/2m5S4iveqBVecFC/tf/KZmbz7X+5VWtSJnWp65SWM5Zml1Sv+vQX+cHT6s0WvV6aX0x2B1p67T67q4RmE3yu01DntPhr2T8BGpcBIFyF3pdmu6PbPLtsFt3QCuoAtYlCKZJUKRom9WfIZt7WSS1iqMrDVRoUEd5NJ9K7mw6BpYi5kOdxMPzXU5OAQUbyoGNwkQKMr4gjKlkFxpsNawlMowX1CqktCqTJYqBrecYWAwrHzRLxwmxKJZOeILIBRTk12xpNqIm6Vo9XsbOUrrdJticTQs2FQxMGzQ1HPcIlU5oVcPYaOfcDkuqSJC6CkxEaKXwe6YpNvG8331umvGBEh01ANsvV6pU9b8/MWzO1hGjE9MfxVUMx7JjRGOXlnOEbrFQnq5wbvinPfWF2NnoKkMeBT8hChC1TgH4zThFDmR/pucItAqxEpEbTH9AY1ErWIJFtyvZP0t15bRNfJSlsDGZ2EtPVzY0MgwyWxo7lWB/KWM4OKHgzMmmmtZsL+yxpAx8Bc8rYqu9Y42UER31SSmico0skVKg5h4obGW1drRhYgW6t7VdX1PkQYFggqtmFplssWY4P+kuvETbxFDfAEuIPU2y7Rd82Vai7wptejFdOJcY3e6yCPhVaqltGqzuYbOiTH1TKqZKYVMUqaOToZYrJRWMIh0q/mG2tdrl0aX8gxTzVn1V7OaJfbWja2bWzaCN/BQjVAcFPGpbq1qPPHfe2KcUlfdLjPIg0yeU8TCm6B7CSNtFSSzJT4k19RRDfjzTNwvDALFQDjI5Dxv85Fn/IllBdikJVkk9LrPwAceq3woFf18urDb2J0h8El4VSWyaTJNtvcOISgQYAOyy2y8cwGTw9TTyQYmK6WVwNQxqSaWFDKBj4vYExgzS8aq8+tU7HM//27gNPi1fDPurTyIULB3XT7hvVwIn3/2LKiv5CaHZD0+g7YVMKv2gVN7N9DCtX2vMheO5eS+3PDqG4tAKPmMRT2JXvPDqzHCijQDOBXkWASdUMFoakFha0Hes6IURPLB5KyUQkVu1pyswtutPzw0sgWCh3Rc1QbrahQ5rMcB6cbY539Yta129r8wre+Tw2BXCC00txsLjN8XoOdjC+/k5Vy6cE721qeH1xXYz6RkcW5KmAytgQSOB0mVVzHUmzk5kDWH8dvUL1/SryQyZjCZdJ2RTNAX9RXlbyrAlhblvwXGuxama8t0Zem704z/pfIyV9dGsDtYbFBwiDt+2lOdhxfdZ7B1Aibu3xF0qIDab8Di9ajmotzbhah2VO5jwba8lHzEWHZOSh5yDCx3Mn6fgr+HPkpktDFZdK2RzCzW6tmUW5QcvSVnd23BAlTNf+cCDkejUzw/qEfPknV5w01CnbPBJZofCLC3hGaNOnT1XKdcHsX3a5SYyDUuz62Q1+IGSuTYyKcgrV50rZ8dYJ1zjE6AAkejozEcDxdhft+JZZ4sprVxF0Tod0tsUb5RX8UV+aQCqg9yfOZx6906L4AQUZAGxZr7L8vQ2kjr02uldD1umMGFVMVKRLWQaijaRaO/wSGVMeaX0f5WQZUsjaqMLXQIWFjIJ0jIEjvkZlNTvwqkLWb4Nz3pmTHREqXApvLXIuvAFITVTH2wuo4MveqkcS00hoUvUhskpMl4LaepYRQRJWiueuc8oUvDImGFwm6YMdMG0pD6Ke9uRJlpQnSZovRdnW5sXkwYDQG71ZiDxLuDuTxP4WuoXCFj1NisMQYvRjdR2UYe6VMthWti060soV4HlsNdCqh60duLLhgqQW1W/efZzVJnxwb0XgJY9FGxOCQyeaZDqNwTNCNDDdV0yHSqUi7XJdAbw7LEGM8uM1qmDyl1dWwjfgmdr1OKGAbSISZbJ2vxkjZAZNYcJnEjmcSsBV9iKcmD7AZnrujmUC7HKxSVK2UsuU6nXODCnPsX72IJ0P5iz+sq4/BiBosn4DDiw1YKzSz0OSLe9YD1afddxw4BmMRWKiVNJjNznrupQ23WMSREpv8leZraNbJqppHHdxZW8iBFUMEy8PmuwioepPSBN5xn6lV0/5VuZz0EEu1VO0KGoHH7TTEsn3CDymieKCXfZ/mparmLTjdyWFTrwRePKoyPQDJl4AsEPrLE0F6LL9UzKPGfsMTXuEJ4mCPSsRkFGk0hvWwiSPww7CfJxXYqQ8cQS4w7E//dwJDLKuISkN6c6YnMb6+H4rYdsOufhxFV4BsEAWqx2VODte6/jSNvzCaxvCzMI0QVM4Tzwstf8V/zuQQEoZ3JdhTr1bFWKbhHSUjI9vDUysapkngzxaTa4A9sFO28lcWEmHQrl0/26FSlBGolcZxMoOrZ5KV/Emh+UCmztY63jctsZHj1WmRdiXd0x8gOtRd8jizE4tnYSmN4Vs5SOUEodlaztVI7g6anU29cXZT7wX6ORFjWIDZUFeukHAKaK9IVM8klpencdhpuF4U1QsPuBfvgRtUGf3CxaOWZbIaBybBx+GSPVhUiiAR9i2mYJmlsxgPK6F94WoxJnJlDoAlATSLuPB57Hoc7j8WfB8EDn5iDNw6j8eewiHPic4i0+c8OgI0d+P04/D487hwed76mD49rw+P2x/eDlR0b/HLtOVx8zTdXTU+iLei8eF5UNn3es4Pgk4ckGO1Ba9hZBjN9fxyOJ+tgH7cjVbkhSi71QYmLgnjci5y/VMGhjwGv99dN7b71BWQ2i3/iWhntc6WhnKGUBVh8G59B0C9ArZiSY3H6vz9MronkCfD9E2lQ+jLbeUyibmHhit/JsiUta7SdDza5uxYV8gjyq0QnqspVrzrQdkyIwgiEpBoCsQZGJMCiYNv0y5UNBVEyzlZP7czu8ef0ROOkfFsPUyqL2rnFsWTQPzoRCSNGf6PDA7S0DZNROWNiGNuZ6IBdMtGIjeBQxUQsCHAap5aSYNQHSqOtOE75XvAPYn7IA4y5U3Is0ZYRT9f9i5Fh2i2VoYzBC7ZtuJdVgpqRicrRieG/aPAANXnL6IZtBM1486CDuQ2zl6xOelOFsR8s8RMuuAmXoNPqfOs1SBpYCzFCa5LAsQW3JV34cX9cd6l/j0enVRj1seWS3TEot5NW8xowzW1mQ3VviEdSa9a7pLfFXYTSV7GTstK4INoPrgnLTCXZF2HeFG9ZXpBZlo2bZcXszXBXl4YImeFsavoQeuvsBU2JLzc0YvaM78Zmw8OAKFlTDiq2wF6k0ZpI2tisyteO7dqfhdmZYTTPRCfY5qH3NEzFwMuysLOtmL3prppwCGRI6rSVDzLDQ7O/HYKHAUbg4cGfKR6kZq8EDn1mhRVeAWSD8BTyz5DvM0TkMTwC7r3uKLHevVyEv4OFN13z841gwb0dqhfQUeHcNPqeHwC/hOy+9/e9ljNv9m8DpTwsO7DNWLzrHnj5E+1ebXD8n3qvthtEfkJvRl/aZBGBKtgTpahSd7MEt9/DkhK/sRDyIDnBzKLjbf+UkqSmAIejG62lentu01kb3y3C/YWzEBIhBdHMU5dU94kXOlOO97jjaxW8DpfEKX6PYHalV/FGc+dKbVhgK/hEUVrioUhiDJeb22FS4suaDGgq9cj79PCCUN6Jn9K9BzO9S7dc/zEC02zhybVkE6ko2QHXkZTyWFxlVTjpLF1PPS16XEDUPiEXvHL9V4Sb2RiV7C7I3LTKTWYWGIsEKUkZAXFGANyJLN3XPVr2aY4WxtBu+XQutV/pf7kFHjmPiKw/gIichUdAH1zSSPf7BaPBgGpFS9dybSnfVvCJuLLkFEVUy/R4eJ2WYnxgxICjUI/cpwmY2Psqo35bCI1tS0zgZqjzfCXM9M+H4RUXEBWA0nu9V2q41gMGzSp9n1kF+O+ZpRcQpc++xq3DYdfhMHuxuL3kWYhjdsuAjprMyB145McrUb2NC4PBqffH/7j0sGMrtOtK/nSA3NlEG8ydHEbWtryV4QNbGa3YdeRsTgSQF6YYfTCxTGw9fzI3DfDIMkQEHFpUxdFMH0jUT/+UeUhNEdDbb82/boLmVBrm/L4yM3whMwwGH+F7N5Yvyyv8WR9K1tntJmL9kqZZeaifhaVNbi0RkJf/EITnC1q9d2Cr74B32gSr2s7dI3c8IdBpBjOTT/E8IdJoBhPz7FlKzR2YoKYs3Whk0IzEDTjU/wuSgS/47cOzWi/8tXBjCLg9+XTnJ77MrqdAnFu7E14Dv8Q/Bq823EfsfBp9uguQOsCW5E0G6OpM2IplkCEjJT0VgqZJYJmAW2QwrFwFo1XSYK3ZaExDAOu0vaDBsObVmCMgEAmmZ6YhgOL8vQJKk4givf7BL/xKrQaMe52jkopqwYipUr9+sHuHOmoa4dQEi/vtJvZAwK5g9L8x10lhcVxsnlvCKPJI9T66lLXtLmzIx550jBXka1Zl6Il2Q+eoNmSfKYxERCM2FaPWYq6mSehQ5j2UNRpEIBIoKzF0Xj+bvvv/VMFV8DVT9qHxWg6P4wuJSsxu47MYA8+bVoC/Q8w6ti3zEoFF+vwzfRldaxCxTP4mv6GcICypFytq9XJGNOyGCpm2vz95j0xlfQREaOIlJXGNJuKhUJNdMoo2YvVjvBAyiHC9v/24fiQXc4eAn0DnXd6Y8tcjntAnEPiEIkz4+EKhH2xekRCrMbLaN/ew35xQxu+qMWdw+VeNSGVgqlAaKAyOcjM0GWnITB6A/31Xot4+VbO95DvWQNFU/Q6cfsfUooGLZ42MEwz9WXD6GR+ZRtD4PFpcZCoRK0ihoj5MwTf56AazgSC9P3Xaslhq9jKwC+5cIG9okC9wOg1GvJRybo80n5GGhIKQRKKwugSKGQb8hi/CYsLsQgoZNZtAQCc+H7cxxEO6Tn4gyO/Q6qAjEFgMnaaTF+SiTisGg8t4jMPiKCG/xFRz2lYRIlOI1O+ZxNhrCc6KxfwlN1x57ILsDws9INpYGECh/IVFouQQv1sodogK0aR3DzI4FkWFUEUBFNpQhDKBr2ukM/vzZ4IrNfqZw7GZoK4aNmMgGhyAxRxpLeD/adgfL2Gw7/2IxfxzAYs58uN95AASuQCB7EciB4A2lot9cftAZiaP7x3Wyri5vBc392fAERr2rqEA4Z+IporTaD0cuSoXTkSkPq1/LIyo3ucvg5GWUblfgLlz8a5PcYSPXXiC6yEB98iFN2cvyspemJ21NjtrHdjKNhWHfzFJQRsHi7mMwV1CY3HpH2CxH6Vj9VkDWcj+LOQCSF8IhP9zlosKUe3jElGF5JlZOQBryxcWFAjyC5HYlbULoSkbOhVYorQMT0u5v8D0d1bj88+QtKLhqryMWEN462oIR5cgoospz+qr0WCGSMd/MajjgyGKlrcT9QfYmbbFdnwWuKkX6hgFrlWhxy3Be/EzJPitFGQ8PwR+nGEbqFQ9q1hUGhYqOBB69QpDZSK+H3tmFEsK4rB7RnCkIPAnYgYw6H4suh+NGQDUPFNg16FC7FoMdg0OgfujpgdsHcL0Y7B9GIVDvHoWdmGhsKBjaz9rwyZHe+u2kczc9TUZRn9SCwkZTPcd5jwPsxaNTZfuQvDk62H7fx9PpY9SqR6O8Ml1H/lzOVRGV0oDLJ6NyyLp16LuTvszy+f6Dn0VFl4WZzvGqxsKYmSMsZHmzel1ZPd646R8Qw/TLIsa2dK6JHBtJjQHYTwQ11/u0IzRu0f9iuJ9DQ2iTdWg47XPjPqGlZJ99fXCze1m4S1JN348MF1/pW8P+E00LpMiAxR69yakJmJ+KsrwYv4axOxfybW6qXJMhieHqh7G7G4uPzht3Up8MrII82ZSYRK+A5ud4QFskWw0TVO8soR3RjfuwiXj0a75qTDCTGzOmlFqt1GZnlWA3jstJRH7EzqT7/B0V3UoAOgRUdm7GZ6hsd+HMz2AIzMaVIeSdjdJkWybAic323OzBThk5sHvSPeO3p6IdZ8Vc1ZMgztMoZOHUJj5aMx8DBL3JzgMKfOxmAWVs3xtw2AWjFwIZn+FT2R8XxfmKxJF32LcWovBzBjydcjOPTp+jMWipnHoEKvUzfuhGzJL/XSuTcjEQ/0p44LamOZbRj78SVd0RKrjSXEK0VhPieb0OtSr0dtNSTP3UKjSBogla0gGR/olXunb9e366wN7PTqtqiUy+seqMGcb2wSauiZbIyN/rCxjb+MY3cKSV+dbDW36GwN7wLNhr7ssw4nZX/8DIcNF+DKI3Z/haC/3ojIDOVTvIHpnx+eDCco14+idcSE1JzMAxJLdFqUrjt7RWTNdcOkVej3lGQ7sgcCXxAwX8U49Zn+Gs6PMC1IlVbTum0zf4Ngfg5k+wJTZNu+PIfbNeTT47e24OXh9M0rB4HysMWNbAvgToxo8NlxevmTi2CVWbE0AdzqlXMf2L7+8QofRRO1+aDpvA8oGRdXiXo+dO9sXbSvWGJm9x+f4N1FNm0QapRmoYiOmXOzVlSmoEF1kxFSIXNpysNR1Lqbieq6NeBrtYBpRsOuTkSPN/EQijnCTQr31cSW9UNtpdEo8NI6ZRxmXa//KWEy9cgKgJbMS3ENaRpEbl9ZTyt/niT5mUmxcJaJKJtpHw+8iUce+izA2dOgdIheFBbF5UisRpmMamXJZaYwP8t3tuMxQcF6vfsgFj7qy259+uIv+DQx8Ab+UIjfX1pIrV7MpS4hEpoFVFBRV08NMb0bkX8Eyb8ccnL2yxqdWxZoU4Cvk5TyxV0RV8wyvTftjw/vvGZRgYcPE3kzSxw8zeSYOwylUySvrJSXVIkjJZfZwSJEHWOYxMOdusUlq0XgddZmJKGR0HN6ocg5vHdmu9oKvUVSwxHa+BPLvTDzxKV4k99bxNGI3ma1nc0S2x4kkqpauKAk3CzU1lIVoDGkpm7QOjSaP1iC5F8h4GI33NgWXD04YlIiBhnfOZgqvPoRzzVKAIqRVSOtKcXOhDVMffqbE2aTWDzCs7SyRXsmjN7S5g0koWFo/Y73P34r1g02XaL+wv8XquRPXKKV9Bse85wfqfkp0zOpFMts7kdV/n6iNY8BKHnwo5cHrcbX18UkhMZsXRSqnlmwtR+nNgrImUJrYSa24/VXlrKIVh/m7KCclawVEB/omqm+xVVh0SazA1lwpQjTUaHll99F5cxCgxsJxQraD99smJLwtQNZWCxd1EdflQFWQ2ew2lqQQUuyzLDElEX0fc52YW5KMLLDDElITCRLCtYWCqFa0MUedjE/Zq0tLWC/K5Daqk6cWYA8kpCagf8U48Ba0e2AupIzILrF+ehntLIvI9uJA+Z53VKpsnx5DdYhI6oLHmd8HN7uweFnf+XMa9JpYloQ7h8OexeHX4bDrQXnPXZM3vyYHdxaH2CfcC89YWHgfrP6m6CkX1sKBSZ7qH+H24l5g3WUJ+Jc5gbGfm4hxEul7OkfLcYbpeHOX3SH3M7h2sUgS0rF/nQ816L7DEtRi8a/6623j1dOTm8hE03RmNKvfk9fv7aBkWDoJFkWDkSlrTAI7u2UB5dX6eu3l4SNlNjVk1zeuE+8pK+PsYFnB2u4HcIiivW9b7O1sq6dYHlBeqa/TXhk+Cu4PWr0eTWoepmAZPgP1Li7DR1peR7iSbqnz2TjwikLSs3rCxdHj8Zw+dcqUooI56OwUXC0RAa8A1YNFrsSLM47FExrmzELlz8FkJw/LQlTk2jwsEccES09EX8Lq7ZFn1xOvpFli5QFyMFW09QG8YnD2k8HUCdykDs1oiH2bO2egtyCzsei3svgnFn+pJhe3DofYK1gLdmWb/Wb32rYXB/8w34RnxFG/l8dBwA+zg3oem933gilCf9oSjip+CiGXNXct/rFf0MAtfvn8tOy/GqhStPYehb6obebtXRFMTdXpIN3S2ZPygOLK9YaOllnFN8vF7ey5UzY9kxO5HgE3d60eb10uVsRn1rxRj2IOLqKiwN5AvDBVYq8mOQuVPxdNTMXGiMhGsp69Fvl50KFJRhZ5/YSQPtSILRiHodHl2V7ynDrkd4APpZJarb8TsJ1EtgepJFQ4q7/oQblieWkdPr4H9M9e89Jkc8Rewp5MVJYQryAqa0MneDbAV/AczaOL/ZvK/jthfsPdVXBW3NMlUG2EOWfv9ZmV773uBAnBvgJBYJxGx3yp7tpn1xZ19jnQ22BLfXCUxYeBC73ZD5a/N3wzzweQJdEsFAnTRMIskVDT+Xm+HkDVviH1aJRlQ0sKDYOBvtElLCcbR+LXzhy2G1im2udBGoInYuZfM3diSTYnXpfRlYMSzdcSzU6JZsO7SfNwrtVouXYFXES+U6O6s6OGE6Omy7T5wpw7c+Z07kC7l8ywG5hhtzHDXbO3kpuHtL4YKtNdfvLWF1Lke1+0nDa8iwptfhTdo8aHRb47R3X3jBpuH63WN99/IHS6ZSCnHPDWA4h8t4vq7qwNNzMiarxa6857e0xEOcZuY8GSqOGmqOl+XzXfc2ZuQ3HI/4zl1KvK+tvqAMzUJ63ZV+bNi2EDs2nM79gx00kV7U8b1JWci+IdwvvKnSl/ZejyitybtaUmTsrnbOiFUz6maH/aVD2b4jrxvjCI8hdCl+eTxhsl7d9KrGpqdk63pH5YSfJLaqG6ovmZwc8URfNXvofluu5RsXXDgxLqpbuBb358eF72bMDpcuW1OyUQ+a6s666L9Q2XJbAxavxh5Pt8XfcVeqjfzp76is/kL5+DPRxBWn0TS95xNNbOVO3jS+Lns8qOXFdP6KomO2xJ2DvfT2vk+/zQvOTo7zk2NN6DWXvr5ieT4MYd+/9Xo7l5x///Zbh1x+S23HF33Yt8T+f71vxAeJiiwpf/Z7UYkxlyW+64u8Yg6cQs8SCx/soKxqX3DzS9+QG7le023OEu97jPg/XD7JPUCoEZ+e5p2f3MZByI7s4Ig9+qlte9jwZ81QKz6j81hP6j6N8QkuJjPvENeE16+eSDwKHOWQo+660llo3LOZKaFRjfOAIWbFKAMxQ5j4viybl6s/DQdfYpFN+BYZfPMa34wG63Dj+krcDs2XT//ybAZo1q3/vdaJ+3aOUHteqtVu2xvn7t94W+/2dFB3zJBpr8lDcxdxusx9xU+VJttq2Nc96f+fygb6pXbfjsjW/6SW9+cG+s9i2bD3B729Bi1ubTZ317sKMq7LSfY7KLE81uHZvtjrtZ94ZxngK7ij9qz3qWvl233gRjN+nuSXqSsA998qH8xrf57+nzXf5H2UNzeOhx+Le/+VOe8pc842/5u3yuS9wtZgowYTdJjJbUMod88adAtFZIo9OhhceiXKGb2XuCrlcwbkU4CkyJVFa3ori937BhrCBhSRRKSUVVpg3a3jmR2z3KnvYHtL9Hme/9wjVr0ZEPLfz2W8285JbTQ/N/c+CLnjR1PpjsBefcOnr6qf+eM1l7l0SZ/wFP+T3QmWEQOtNUfm3ZqhG6BSrfBsAgQD3uLL4ptUkLLZNt4bjL4OGus4C64ZZLijZJVx6N8JSGR5xFgRX0X++ctfkPz1rO653IHFK4SVCgbi9loSxp+7IFQ5PRE9TbtMOUV/eh/irxP/UtKP0m810GxGUCnqcH7Y9ITwL50i5QwS6EIFy1yfn7X9Bvo9NAHb0nLG/AmUMKH2mYFSg429xxy9VXk2CIzSHtj2RQc9eDCXwCE3TNJif1B2N7IqnvfFfnjiK2EB18XiUH6L6rJPsHq52vgSD8hb/b2lN+aO1/YUS4Hi3kRqkJ72APRTZxp8jRwgcksZNrGp4nBHXQSaNUhrYmT37iSYHouwzCC9CDyi2XFEmkKzcj3Ml/77RZVh94vf/bP1l5OtRDoyPefKdcqVACmq6vT+1CiIHyHLRnMOgGdRmY8yYbKnWuXzDwy0ZcB2RTfbd2yxnASDmKVVbDUiugubwZYNBF+OuWIdTXKyQ7efWeLM3HluXhghNeXGNMEAUfbuaeSLhhk9Ky1JqQwPObZUJvYz9a92CyvbBIcdP37+8Dhw+qe6+W5lHT3WKPQfZgQ40VG4yGYphqeHq/8WJlNO97Akq72WfEAqOMgd3oU2245lY30zy53rhas/4lY0X/ipTkkGG95/2BvFaIEAEY7u2kTC4Hdb+9I0iJ5+vJVaSymne4D5rfbDeN4isw3jvNatabKMgtkbN5QBoGjMzN2Iasl0fdlNJpal7V/c7tukHQ1jxC3Bj9Qg/oynZVEw4vVPUoJW67r/ZqaD4VqLVeOQvUK+sc7/WO1Mrki19uP4vTotx+ArHSCjb087HbxHUbSx5epsgm80zlkIbdqhPUCvHCMWC+9A4cQeZlp8e+tmmViffAgSNC91ns8BpSctLAdlfTptu5lw7VjTJTn+51fL9r6dZE5Cb9PefdGIgssHVkWf9rV/1jE3VjxDpT9jq6+/2+6zMJiE/ZyNopenwcWkxc5vKtTeS+5UzLYr2XIXqSXVKvT792fg/sRlq4KjKT/6e8bkZyA3hYAR44zAYI2pu7rrfafc0EPV93CCyb8Yf7H3h957mqf85R1C3Aj75o7QL8+dn8u3/+7t20tKl7g2ARgIA/itax9KWLuGeH/OLAO3z/GKqLJ9dzpwbxa6Xn/I1sBMu+49jYe3OfJCCK6Qik7DaHUDpDRsKWb/gzEE9H3T56oI6as39eFlD0I74SfmMp3wFZrG6FynNV9RYPc+ur5/a55LyVo2c7T5WNQLmJZ5W0xgYO8w5tZpqa+XOiIUmrA3U+pbtU2/bu+clA6Y54huqnv+fKWabTfNWGMDdO2f8wmc2RLx1MI4b9EG+u3wdjBpqHUL/c+oYwiefbSUYjn5zSQdaZMJ1vJO0U4qtQfP6qOevkCZfZxgEAnQmtUrBgHtSwqzhPcuzKPVV1Eys9VTcyG/2qRW8PapS+SfS9aWvFbIhD4SND+gFVnYb/U8STWr8599xh0QFE6zNNoe8+Li9kLyKG8nruY1Uw5U1MPynkFYyVUnkWJkPRxUFgh4YajZSJl/ZgoX0nd2lQuDe4etuAoTAVyW9VtJPSr1jIMCKnEzxdP2mQzPsKia9Th1urN81Tb6V0kKNsZ916J3UGihorE4kSpYicEgdkONNTSzE6L8wETAItRIIYwiEW8iBmOr0bvFXvSZJ4jTrcTL1LpdSbKv1mi77WYBlU31xU+6BGlC0qFhWLPKIyUamo+FI00J67DgKiG1DS75i8pxufpBQClwSG/pTcfwLmkrklgKaEj5Bqdk1h+5VR0K/H15ft5T2ue+f12UyWoBssU2kJYNw0CG1c/81kHktsbJGxWSXdsDC554JUyZVfZoGbKHedE7o8LykTMjrkv+mT05jhJkCONZ09nAtJOfOk9OR+aa/cAnlGXmdUfZyDvFBVbtB0Iqahr9WkWirV6+WUXtOymxHqD2DThxwJahesSSTlfxvrIWNhNgME1aqzVswxo7DRxU8ndJvVf9TOhCZJ7cKyVrIw9kjoUfO+YfkUxt2ACzKhMuAEzIuzeSPscUiGPLbSC09cxZZJY9UlZ7e408exfmHLVpxW228cSZQFYLnlSt+22ScTeDi8Cb4A94QXp14NhnotNfjom+/n3nacbZujOHLVWxYCz1W7K6sh+f0nf9ukL8B11IY2X4928rpN5sY1vOXflI+wc6QJljKJJf3O19dKcCa0ns2I7pCI1YjpqT5EW4ofINh2kMho9NJBTOXUddX2tUd5Z+VSOarHOvZIUqeIijOqu8qim7IAxJlmwb+0j/7uLLKZCppEFcBixZOUnKIXVD2iWzooeyG1l4G7tdTnY5NzdU+hQPAaBT0xeo9WRRmIHPeO+PNqvSoBKIJ9VPudOHqJS4T+ndCnZUo6LqG1OnZeWF1EWSGqY2r7VYtHAPfHLuI2M43A3NZoTcqNkfbjuS3Sazl2dMTyFonrgu5t4OgjlXVcZ1Yq6Vt9+tHuDCD6hC7i/XxdJ4m2DdoRvNvEOSarjUqr0MFc7nhdxU9xu0uBcd6udvMU5wCPeDB85uue8bJar6Tlv9bKOF9uvgryePoymCCoi8MRR04GfedjvbYVrSjYCQG8MU9uQiHROZmVlyaK26Umml1LEyPRqBuxYuRsAxW0IpuUWCFNamJa0AjiJi0eaQpAANf3n35WSVWKEcgU1RQyQ4BoBftUGp2vmmBQLZeoQaqGjdPI0GGKUk5ENTbPv5GA8iTF6OV8O/G5tlAwnsz3KsVJkyFZqlTpCnTKosggU2XIJEnTHd7OXbbkirjLXIFGqVq1fX8sGDMrL3t/VngddA1hU9M56cKyvqxpA2VMIdE67MRM55IrygsG03fOWiw2z40CnwxRMqk+LpFCi+LqRJlPjlrA6/AZjDNRNADDZk2+k6fpYeivoiddBQAAAA==\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","/// <reference types=\"vite/client\" />\n/**\n * Fuente única del CMS Bluestack: **Google Sans**. Reemplaza a Roboto y Product\n * Sans (retiradas). Está **self-hosted** dentro de la lib: los `.woff2` viven en\n * `theme/fonts/` y Vite los inlinea como data URI en el build (ver\n * `assetsInlineLimit` en `vite.config.ts`). Así cada gestor que use el provider\n * MUI hereda la fuente sin CDN ni configuración de `public/`.\n *\n * Los archivos originales eran `.ttf` con cobertura multi-idioma (~2 MB c/u);\n * se subsetearon al **subconjunto latin** (es/en/pt + puntuación/símbolos de UI)\n * y se convirtieron a woff2 (~22-24 KB c/u). Pesos: 400/500/700, normal e italic.\n */\n\n// Google Sans (woff2, subconjunto latin)\nimport GoogleSans400 from './fonts/GoogleSans-Regular.woff2';\nimport GoogleSans400Italic from './fonts/GoogleSans-Italic.woff2';\nimport GoogleSans500 from './fonts/GoogleSans-Medium.woff2';\nimport GoogleSans500Italic from './fonts/GoogleSans-MediumItalic.woff2';\nimport GoogleSans700 from './fonts/GoogleSans-Bold.woff2';\nimport GoogleSans700Italic from './fonts/GoogleSans-BoldItalic.woff2';\n\n/**\n * Reglas `@font-face` de Google Sans, listas para inyectarse como estilos\n * globales (ver el componente `CmsFontFaces`).\n */\nexport const cmsFontFaces = `\n@font-face {\n font-family: 'Google Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(${GoogleSans400}) format('woff2');\n}\n@font-face {\n font-family: 'Google Sans';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(${GoogleSans400Italic}) format('woff2');\n}\n@font-face {\n font-family: 'Google Sans';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(${GoogleSans500}) format('woff2');\n}\n@font-face {\n font-family: 'Google Sans';\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(${GoogleSans500Italic}) format('woff2');\n}\n@font-face {\n font-family: 'Google Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(${GoogleSans700}) format('woff2');\n}\n@font-face {\n font-family: 'Google Sans';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(${GoogleSans700Italic}) format('woff2');\n}\n`;\n","// Preferencia de tema (claro/oscuro) persistida en `localStorage`.\n//\n// Mecanismo compartido: vive en la lib para que TODOS los gestores persistan y\n// lean el tema igual. El dato es por gestor (localStorage está aislado por\n// origen: elegir \"oscuro\" en un gestor NO se propaga a los demás dominios).\n//\n// Dos dimensiones, para recordar tal cual la selección del menú \"Apariencia\":\n// - `enabled`: switch \"Tema nuevo\". Apagado → se fuerza claro.\n// - `mode`: modo deseado (`light`/`dark`), se recuerda aunque `enabled` esté off.\n// El \"modo efectivo\" que se aplica al sitio = `enabled ? mode : 'light'`.\n//\n// Funciones puras que solo tocan `localStorage`/DOM (sin React ni MUI), así\n// funcionan aunque el gestor tenga su propia copia de @mui symlinkeada.\n\nexport type ThemeMode = 'light' | 'dark';\n\nexport type ThemePreference = {\n /** Switch \"Tema nuevo\" del menú Apariencia. Off → se fuerza claro. */\n enabled: boolean;\n /** Modo deseado por el usuario (se recuerda aunque `enabled` esté off). */\n mode: ThemeMode;\n};\n\n/** Clave de localStorage para el modo deseado (`light`/`dark`). */\nexport const THEME_MODE_STORAGE_KEY = 'cms-theme-mode';\n/** Clave de localStorage para el switch \"Tema nuevo\". */\nexport const THEME_ENABLED_STORAGE_KEY = 'cms-theme-enabled';\n/**\n * Atributo que MUI togglea en `<html>` (coincide con `colorSchemeSelector` de\n * `createAppTheme`). Las CSS vars `--cms-*` y `--mui-palette-*` se enganchan acá.\n */\nexport const THEME_COLOR_SCHEME_ATTRIBUTE = 'data-mui-color-scheme';\n\n/** Preferencia por defecto (sin nada guardado): tema nuevo activo, modo claro. */\nexport const DEFAULT_THEME_PREFERENCE: ThemePreference = {\n enabled: true,\n mode: 'light',\n};\n\n/** Modo efectivo aplicado al sitio a partir de la preferencia. */\nexport function getEffectiveThemeMode(pref: ThemePreference): ThemeMode {\n return pref.enabled && pref.mode === 'dark' ? 'dark' : 'light';\n}\n\n/** Lee la preferencia de `localStorage`. SSR-safe (fallback al default). */\nexport function readThemePreference(): ThemePreference {\n if (typeof window === 'undefined') return DEFAULT_THEME_PREFERENCE;\n try {\n const rawMode = window.localStorage.getItem(THEME_MODE_STORAGE_KEY);\n const rawEnabled = window.localStorage.getItem(THEME_ENABLED_STORAGE_KEY);\n return {\n mode: rawMode === 'dark' ? 'dark' : 'light',\n enabled: rawEnabled === null ? true : rawEnabled === 'true',\n };\n } catch {\n return DEFAULT_THEME_PREFERENCE;\n }\n}\n\n/** Modo efectivo leído directo de `localStorage`. SSR-safe. */\nexport function readEffectiveThemeMode(): ThemeMode {\n return getEffectiveThemeMode(readThemePreference());\n}\n\n/**\n * Guarda la preferencia y refleja el modo efectivo en el atributo de `<html>`\n * de una (para que el cambio se vea sin recargar). SSR-safe.\n */\nexport function writeThemePreference(pref: ThemePreference): void {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(THEME_MODE_STORAGE_KEY, pref.mode);\n window.localStorage.setItem(\n THEME_ENABLED_STORAGE_KEY,\n String(pref.enabled),\n );\n document.documentElement.setAttribute(\n THEME_COLOR_SCHEME_ATTRIBUTE,\n getEffectiveThemeMode(pref),\n );\n } catch {\n // Sin storage (modo privado / bloqueado): el tema simplemente no persiste.\n }\n}\n","import type {\n AppMessageNode,\n AppMessages,\n CmsMessages,\n ErrorPageMessageKey,\n NavigationModule,\n NetworkMessageKey,\n NewMenuMessageKey,\n NotificationsMenuMessageKey,\n PreviewMenuMessageKey,\n ProfileMenuMessageKey,\n SidebarMessageKey,\n ToastMessageKey,\n TopBarMessageKey,\n UserAvatarMessageKey,\n} from './types';\n\n/** Parámetros de interpolación para placeholders `{nombre}` en un mensaje. */\nexport type TranslationParams = Record<string, string | number>;\n\n/** Traductor genérico de claves del gestor por ruta con puntos (`ns.clave`). */\nexport type AppTranslate = (path: string, params?: TranslationParams) => string;\n\nexport type CmsTranslator = {\n messages: CmsMessages;\n /** Árbol de mensajes del gestor ya resuelto al locale activo (con fallback en). */\n appMessages: AppMessages;\n navigation: (module: NavigationModule | string) => string;\n sidebar: (key: SidebarMessageKey) => string;\n topBar: (key: TopBarMessageKey) => string;\n newMenu: (key: NewMenuMessageKey) => string;\n previewMenu: (key: PreviewMenuMessageKey) => string;\n profileMenu: (key: ProfileMenuMessageKey) => string;\n notificationsMenu: (\n key: NotificationsMenuMessageKey,\n params?: { count?: number },\n ) => string;\n toast: (key: ToastMessageKey) => string;\n network: (key: NetworkMessageKey) => string;\n userAvatar: (key: UserAvatarMessageKey) => string;\n errorPage: (key: ErrorPageMessageKey) => string;\n /**\n * Resuelve una clave propia del gestor por ruta con puntos\n * (p. ej. `t.app('usuarios.modal.deactivate.title')`). Si falta, devuelve la\n * ruta tal cual (útil para detectar claves ausentes en desarrollo).\n */\n app: AppTranslate;\n /**\n * Devuelve un traductor del gestor con un namespace fijado:\n * `const tu = t.scoped('usuarios'); tu('modal.deactivate.title')`.\n */\n scoped: (namespace: string) => AppTranslate;\n};\n\nfunction interpolate(template: string, params?: TranslationParams): string {\n if (!params) return template;\n return template.replace(/\\{(\\w+)\\}/g, (_, key: string) => {\n const value = params[key];\n return value === undefined ? `{${key}}` : String(value);\n });\n}\n\n/** Navega un árbol de mensajes del gestor por ruta con puntos. */\nfunction resolveAppPath(tree: AppMessages, path: string): string | undefined {\n let node: AppMessageNode | undefined = tree;\n for (const segment of path.split('.')) {\n if (typeof node !== 'object' || node === null) return undefined;\n node = node[segment];\n }\n return typeof node === 'string' ? node : undefined;\n}\n\nexport function createTranslator(\n messages: CmsMessages,\n appMessages: AppMessages = {},\n): CmsTranslator {\n const navigationLookup = messages.navigation as Record<string, string>;\n\n const app: AppTranslate = (path, params) => {\n const value = resolveAppPath(appMessages, path);\n return value === undefined ? path : interpolate(value, params);\n };\n\n return {\n messages,\n appMessages,\n navigation: (module) => navigationLookup[module] ?? module,\n sidebar: (key) => messages.sidebar[key],\n topBar: (key) => messages.topBar[key],\n newMenu: (key) => messages.newMenu[key],\n previewMenu: (key) => messages.previewMenu[key],\n profileMenu: (key) => messages.profileMenu[key],\n notificationsMenu: (key, params) =>\n interpolate(messages.notificationsMenu[key], params),\n toast: (key) => messages.toast[key],\n network: (key) => messages.network[key],\n userAvatar: (key) => messages.userAvatar[key],\n errorPage: (key) => messages.errorPage[key],\n app,\n scoped: (namespace) => (path, params) => app(`${namespace}.${path}`, params),\n };\n}\n","export const enMessages = {\n navigation: {\n COMMENTS: 'Comments',\n POLLS: 'Polls',\n MEDIA: 'Media',\n AUDIOS: 'Audio',\n IMAGES: 'Images',\n PLAYLISTS: 'Playlist',\n VIDEOS: 'Videos',\n NEWS: 'News',\n PLANNING: 'Planning',\n ANALYTICS: 'Analytics',\n TAGS: 'Tags',\n TRIVIAS: 'Trivia',\n OTHERS: 'Other',\n NEWSWIRES: 'News Wires',\n EVENTS: 'Events',\n PAGES: 'Pages',\n FEEDS: 'Feed',\n PERSONS: 'People',\n CONTRIBUTIONS: 'Contributions',\n RECIPES: 'Recipes',\n POSTS: 'Posts',\n BANNERS: 'Banners',\n BLOCKS: 'Blocks',\n MENUS: 'Menu',\n TOPICS: 'Topics',\n ADVANCEDQUERYS: 'Advanced search',\n IMPORTS: 'Imports',\n NEWSLETTERS: 'Newsletters',\n NOTIFICATIONS: 'Notifications',\n PAYMENTS: 'Payments',\n PLANS: 'Plans',\n REPORTS: 'Reports',\n SECTIONS: 'Sections',\n TWITTERS: 'Twitter Feeds',\n USERS: 'Users',\n ZONES: 'Zones',\n IA: 'IA',\n },\n sidebar: {\n navAriaLabel: 'Main navigation',\n collapse: 'Collapse',\n expand: 'Expand',\n newBadge: 'New',\n pin: 'Pin to top',\n unpin: 'Unpin',\n },\n topBar: {\n openSidebar: 'Open sidebar menu',\n closeSidebar: 'Close sidebar menu',\n new: 'New',\n language: 'Language',\n analytics: 'Analytics',\n preview: 'Preview',\n help: 'Help',\n publication: 'Publication',\n appearance: 'Appearance',\n newTheme: 'New theme',\n newThemeSubtitle: 'Redesigned interface',\n modeLabel: 'Mode',\n modeLight: 'Light',\n modeDark: 'Dark',\n classicUnavailable: 'The classic view is not available in this prototype.',\n },\n newMenu: {\n frequentsTitle: 'Frequent',\n othersTitle: 'Others',\n videosTitle: 'Videos',\n post: 'New Post',\n trivia: 'New Trivia',\n poll: 'New Poll',\n listicle: 'New Listicle',\n tag: 'New Tag',\n gamecast: 'New Gamecast',\n liveblog: 'New LiveBlog',\n aiPost: 'New AI Post',\n aiListicle: 'New AI Listicle',\n videoNative: 'New Video Native',\n videoEmbedded: 'New Video Embedded',\n videoYoutube: 'New Video Youtube',\n },\n previewMenu: {\n desktop: 'Preview Desktop',\n mobile: 'Preview Mobile',\n tablet: 'Preview Tablet',\n },\n profileMenu: {\n ariaLabel: 'My profile',\n myProfile: 'My Profile',\n webmasterView: 'Webmaster View',\n signOff: 'Sign off',\n },\n notificationsMenu: {\n title: 'Notifications',\n unreadCount: '{count} unread',\n empty: 'No notifications',\n ariaLabel: 'Notifications',\n close: 'Close',\n today: 'Today',\n yesterday: 'Yesterday',\n assignedBefore: 'You have',\n assignedAfter: 'new assigned topics.',\n pendingBefore: 'You have',\n pendingAfter: 'assigned topics about to expire.',\n assignedToday: 'Assigned today',\n assignedYesterday: 'Assigned yesterday',\n assignedOn: 'Assigned on',\n expires: 'Due',\n editorialOpportunityLabel: 'Editorial opportunity',\n editorialOpportunityText: '{count} topics require your attention',\n editorialOpportunityTop: 'Top',\n editorialOpportunityMatch: 'Match',\n editorialOpportunityTrending: 'Trending',\n editorialOpportunitySeeMoreOpportunities: 'See {count} more opportunities',\n editorialOpportunityHide: 'Hide',\n editorialOpportunityRemindLater: 'Remind me later',\n editorialOpportunitySeeMore: 'See more',\n },\n search: {\n placeholder: 'Search…',\n inputAriaLabel: 'Search',\n clearAriaLabel: 'Clear search',\n advancedAriaLabel: 'Advanced search',\n title: 'Advanced search',\n apply: 'Apply',\n reset: 'Reset',\n close: 'Close',\n noOptions: 'No matches',\n dateToday: 'Today',\n dateClear: 'Clear',\n dateOpenAriaLabel: 'Open calendar',\n prevMonthAriaLabel: 'Previous month',\n nextMonthAriaLabel: 'Next month',\n },\n searchFields: {\n text: 'Text',\n textPlaceholder: 'Title, summary or body',\n type: 'Type',\n typePlaceholder: 'All types',\n section: 'Section',\n sectionPlaceholder: 'All sections',\n category: 'Category',\n categoryPlaceholder: 'All categories',\n states: 'Statuses',\n statesPlaceholder: 'All statuses',\n creator: 'Creator',\n creatorPlaceholder: 'Type to search a creator',\n author: 'Author',\n authorPlaceholder: 'Type to search an author',\n tags: 'Tags',\n tagsPlaceholder: 'Type and press Enter',\n groups: 'Groups',\n groupsPlaceholder: 'All groups',\n amount: 'Amount to show',\n amountPlaceholder: 'e.g. 50',\n dateFrom: 'Date from',\n dateTo: 'Date to',\n sortBy: 'Sort by',\n sortByPlaceholder: 'Relevance',\n zone: 'Zone',\n zonePlaceholder: 'Any zone',\n priority: 'Priority',\n priorityPlaceholder: 'All',\n order: 'Order',\n orderPlaceholder: 'Descending',\n includeDrafts: 'Include drafts',\n includeHistory: 'Include historical content',\n },\n searchOptions: {\n typeNews: 'Article',\n typeList: 'List note',\n typeLiveblog: 'LiveBlog',\n statePublished: 'Published',\n stateDraft: 'In drafting',\n stateScheduled: 'Scheduled',\n stateReview: 'In review',\n stateDone: 'Finished',\n sortRelevance: 'Relevance',\n sortDate: 'Date',\n sortTitle: 'Title',\n orderDesc: 'Descending',\n orderAsc: 'Ascending',\n priorityHigh: 'High (1–10)',\n priorityMid: 'Medium (11–30)',\n priorityLow: 'Low (31+)',\n },\n toast: {\n close: 'Close',\n copyDetail: 'Copy error detail',\n copied: 'Copied',\n defaultSuccess: 'Operation completed successfully.',\n defaultError: 'An error occurred in the service.',\n defaultWarning: 'Please review the request.',\n defaultInfo: 'Information',\n },\n network: {\n disconnected:\n 'No connection. Check your network or Wi-Fi status. We will retry when the connection is restored.',\n retrying: 'Retrying requests.',\n restored: 'Connection restored.',\n },\n userAvatar: {\n alt: 'User avatar',\n unknownUser: 'Unknown user',\n },\n errorPage: {\n homeButton: 'Home',\n notFoundTitle: 'Sorry an error occurred.',\n notFoundSubtitle: 'This website is no longer available. Keep browsing!',\n notFoundCode: '404',\n errorLabel: 'Error',\n copyDetail: 'Copy detail.',\n copyDetailText:\n 'The route {url} you are trying to access is no longer available.',\n copied: 'Text copied to clipboard!',\n notAllowedTitle: 'Sorry.\\nYou do not have access.',\n notAllowedSubtitle:\n 'What you want to see is restricted by permissions. Keep browsing!',\n },\n} as const;\n","import type { CmsMessages } from '../types';\n\nexport const esMessages = {\n navigation: {\n COMMENTS: 'Comentarios',\n POLLS: 'Encuestas',\n MEDIA: 'Media',\n AUDIOS: 'Audio',\n IMAGES: 'Imágenes',\n PLAYLISTS: 'Playlist',\n VIDEOS: 'Videos',\n NEWS: 'Noticias',\n PLANNING: 'Planificación',\n ANALYTICS: 'Analíticas',\n TAGS: 'Tags',\n TRIVIAS: 'Trivias',\n OTHERS: 'Otros',\n NEWSWIRES: 'News Wires',\n EVENTS: 'Eventos',\n PAGES: 'Páginas',\n FEEDS: 'Feed',\n PERSONS: 'Personas',\n CONTRIBUTIONS: 'Contribuciones',\n RECIPES: 'Recetas',\n POSTS: 'Posts',\n BANNERS: 'Banners',\n BLOCKS: 'Bloques',\n MENUS: 'Menú',\n TOPICS: 'Temas',\n ADVANCEDQUERYS: 'Búsqueda avanzada',\n IMPORTS: 'Importaciones',\n NEWSLETTERS: 'Newsletters',\n NOTIFICATIONS: 'Notificaciones',\n PAYMENTS: 'Pagos',\n PLANS: 'Planes',\n REPORTS: 'Reportes',\n SECTIONS: 'Secciones',\n TWITTERS: 'Twitter Feeds',\n USERS: 'Usuarios',\n ZONES: 'Zonas',\n IA: 'IA',\n },\n sidebar: {\n navAriaLabel: 'Principal',\n collapse: 'Contraer',\n expand: 'Expandir',\n newBadge: 'Nuevo',\n pin: 'Anclar arriba',\n unpin: 'Desanclar',\n },\n topBar: {\n openSidebar: 'Abrir menú lateral',\n closeSidebar: 'Cerrar menú lateral',\n new: 'Nuevo',\n language: 'Idioma',\n analytics: 'Analíticas',\n preview: 'Previsualizar',\n help: 'Ayuda',\n publication: 'Publicación',\n appearance: 'Apariencia',\n newTheme: 'Tema nuevo',\n newThemeSubtitle: 'Interfaz rediseñada',\n modeLabel: 'Modo',\n modeLight: 'Claro',\n modeDark: 'Oscuro',\n classicUnavailable: 'La vista clásica no está disponible en este prototipo.',\n },\n newMenu: {\n frequentsTitle: 'Frecuentes',\n othersTitle: 'Otros',\n videosTitle: 'Videos',\n post: 'Nueva Nota',\n trivia: 'Nueva Trivia',\n poll: 'Nueva Encuesta',\n listicle: 'Nueva Nota Lista',\n tag: 'Nuevo Tag',\n gamecast: 'Nuevo Gamecast',\n liveblog: 'Nuevo LiveBlog',\n aiPost: 'Nueva Nota IA',\n aiListicle: 'Nueva Lista IA',\n videoNative: 'Nuevo Video Nativo',\n videoEmbedded: 'Nuevo Video Embebido',\n videoYoutube: 'Nuevo Video Youtube',\n },\n previewMenu: {\n desktop: 'Previsualizar Escritorio',\n mobile: 'Previsualizar Móvil',\n tablet: 'Previsualizar Tablet',\n },\n profileMenu: {\n ariaLabel: 'Mi perfil',\n myProfile: 'Mi perfil',\n webmasterView: 'Vista Webmaster',\n signOff: 'Cerrar sesión',\n },\n notificationsMenu: {\n title: 'Notificaciones',\n unreadCount: '{count} sin leer',\n empty: 'No hay notificaciones',\n ariaLabel: 'Notificaciones',\n close: 'Cerrar',\n today: 'Hoy',\n yesterday: 'Ayer',\n assignedBefore: 'Tienes',\n assignedAfter: 'nuevos temas asignados.',\n pendingBefore: 'Tienes',\n pendingAfter: 'temas asignados por vencer.',\n assignedToday: 'Asignado hoy',\n assignedYesterday: 'Asignado ayer',\n assignedOn: 'Asignado el',\n expires: 'Vence',\n editorialOpportunityLabel: 'Oportunidad editorial',\n editorialOpportunityText: '{count} temas requieren tu atención',\n editorialOpportunityTop: 'Top',\n editorialOpportunityMatch: 'Coincidencia',\n editorialOpportunityTrending: 'Trending',\n editorialOpportunitySeeMoreOpportunities: 'Ver {count} oportunidades más',\n editorialOpportunityHide: 'Ocultar',\n editorialOpportunityRemindLater: 'Recordar luego',\n editorialOpportunitySeeMore: 'Ver más',\n },\n search: {\n placeholder: 'Buscar…',\n inputAriaLabel: 'Buscar',\n clearAriaLabel: 'Borrar búsqueda',\n advancedAriaLabel: 'Búsqueda avanzada',\n title: 'Búsqueda avanzada',\n apply: 'Aplicar',\n reset: 'Restablecer',\n close: 'Cerrar',\n noOptions: 'Sin coincidencias',\n dateToday: 'Hoy',\n dateClear: 'Limpiar',\n dateOpenAriaLabel: 'Abrir calendario',\n prevMonthAriaLabel: 'Mes anterior',\n nextMonthAriaLabel: 'Mes siguiente',\n },\n searchFields: {\n text: 'Texto',\n textPlaceholder: 'Título, copete o cuerpo',\n type: 'Tipo',\n typePlaceholder: 'Todos los tipos',\n section: 'Sección',\n sectionPlaceholder: 'Todas las secciones',\n category: 'Categoría',\n categoryPlaceholder: 'Todas las categorías',\n states: 'Estados',\n statesPlaceholder: 'Todos los estados',\n creator: 'Creador',\n creatorPlaceholder: 'Escribí para buscar creador',\n author: 'Autor',\n authorPlaceholder: 'Escribí para buscar autor',\n tags: 'Etiquetas',\n tagsPlaceholder: 'Escribí y presioná Enter',\n groups: 'Grupos',\n groupsPlaceholder: 'Todos los grupos',\n amount: 'Cantidad a mostrar',\n amountPlaceholder: 'Ej: 50',\n dateFrom: 'Fecha desde',\n dateTo: 'Fecha hasta',\n sortBy: 'Ordenar por',\n sortByPlaceholder: 'Relevancia',\n zone: 'Zona',\n zonePlaceholder: 'Cualquier zona',\n priority: 'Prioridad',\n priorityPlaceholder: 'Todas',\n order: 'Orden',\n orderPlaceholder: 'Descendente',\n includeDrafts: 'Incluir borradores',\n includeHistory: 'Incluir contenido histórico',\n },\n searchOptions: {\n typeNews: 'Noticia',\n typeList: 'Nota Lista',\n typeLiveblog: 'LiveBlog',\n statePublished: 'Publicada',\n stateDraft: 'En Redacción',\n stateScheduled: 'Programada',\n stateReview: 'En Revisión',\n stateDone: 'Terminada',\n sortRelevance: 'Relevancia',\n sortDate: 'Fecha',\n sortTitle: 'Título',\n orderDesc: 'Descendente',\n orderAsc: 'Ascendente',\n priorityHigh: 'Alta (1–10)',\n priorityMid: 'Media (11–30)',\n priorityLow: 'Baja (31+)',\n },\n toast: {\n close: 'Cerrar',\n copyDetail: 'Copiar detalle del error',\n copied: 'Copiado',\n defaultSuccess: 'Operación realizada correctamente.',\n defaultError: 'Se produjo un error en el servicio.',\n defaultWarning: 'Revisá el requerimiento.',\n defaultInfo: 'Información',\n },\n network: {\n disconnected:\n 'Sin conexión. Revisa tu red o el estado del Wi-Fi. Reintentaremos cuando se restablezca.',\n retrying: 'Reintentando solicitudes.',\n restored: 'Conexión restablecida.',\n },\n userAvatar: {\n alt: 'Avatar de usuario',\n unknownUser: 'Usuario sin nombre',\n },\n errorPage: {\n homeButton: 'Inicio',\n notFoundTitle: 'Lo sentimos.\\nHa ocurrido un error.',\n notFoundSubtitle:\n 'Lo que quieres ver ya no está disponible. ¡Sigue navegando!',\n notFoundCode: '404',\n errorLabel: 'Error',\n copyDetail: 'Copiar detalle.',\n copyDetailText:\n 'La ruta {url} donde estás intentando acceder ya no está disponible.',\n copied: '¡Texto copiado en el portapapeles!',\n notAllowedTitle: 'Lo sentimos.\\nNo tienes acceso.',\n notAllowedSubtitle:\n 'Lo que quieres ver está restringido por permisos. ¡Sigue navegando!',\n },\n} satisfies CmsMessages;\n","import type { CmsMessages } from '../types';\n\nexport const ptMessages = {\n navigation: {\n COMMENTS: 'Comentários',\n POLLS: 'Enquetes',\n MEDIA: 'Mídia',\n AUDIOS: 'Áudio',\n IMAGES: 'Imagens',\n PLAYLISTS: 'Playlist',\n VIDEOS: 'Vídeos',\n NEWS: 'Notícias',\n PLANNING: 'Planejamento',\n ANALYTICS: 'Análises',\n TAGS: 'Tags',\n TRIVIAS: 'Trivias',\n OTHERS: 'Outros',\n NEWSWIRES: 'News Wires',\n EVENTS: 'Eventos',\n PAGES: 'Páginas',\n FEEDS: 'Feed',\n PERSONS: 'Pessoas',\n CONTRIBUTIONS: 'Contribuições',\n RECIPES: 'Receitas',\n POSTS: 'Posts',\n BANNERS: 'Banners',\n BLOCKS: 'Blocos',\n MENUS: 'Menu',\n TOPICS: 'Tópicos',\n ADVANCEDQUERYS: 'Busca avançada',\n IMPORTS: 'Importações',\n NEWSLETTERS: 'Newsletters',\n NOTIFICATIONS: 'Notificações',\n PAYMENTS: 'Pagamentos',\n PLANS: 'Planos',\n REPORTS: 'Relatórios',\n SECTIONS: 'Seções',\n TWITTERS: 'Twitter Feeds',\n USERS: 'Usuários',\n ZONES: 'Zonas',\n IA: 'IA',\n },\n sidebar: {\n navAriaLabel: 'Principal',\n collapse: 'Recolher',\n expand: 'Expandir',\n newBadge: 'Novo',\n pin: 'Fixar no topo',\n unpin: 'Desafixar',\n },\n topBar: {\n openSidebar: 'Abrir menu lateral',\n closeSidebar: 'Fechar menu lateral',\n new: 'Novo',\n language: 'Idioma',\n analytics: 'Análises',\n preview: 'Pré-visualizar',\n help: 'Ajuda',\n publication: 'Publicação',\n appearance: 'Aparência',\n newTheme: 'Tema novo',\n newThemeSubtitle: 'Interface redesenhada',\n modeLabel: 'Modo',\n modeLight: 'Claro',\n modeDark: 'Escuro',\n classicUnavailable: 'A visualização clássica não está disponível neste protótipo.',\n },\n newMenu: {\n frequentsTitle: 'Frequentes',\n othersTitle: 'Outros',\n videosTitle: 'Vídeos',\n post: 'Nova Matéria',\n trivia: 'Novo Quiz',\n poll: 'Nova Enquete',\n listicle: 'Nova Lista',\n tag: 'Nova Tag',\n gamecast: 'Novo Gamecast',\n liveblog: 'Novo LiveBlog',\n aiPost: 'Nova Matéria IA',\n aiListicle: 'Nova Lista IA',\n videoNative: 'Novo Vídeo Nativo',\n videoEmbedded: 'Novo Vídeo Incorporado',\n videoYoutube: 'Novo Vídeo Youtube',\n },\n previewMenu: {\n desktop: 'Pré-visualizar Desktop',\n mobile: 'Pré-visualizar Celular',\n tablet: 'Pré-visualizar Tablet',\n },\n profileMenu: {\n ariaLabel: 'Meu perfil',\n myProfile: 'Meu perfil',\n webmasterView: 'Visão Webmaster',\n signOff: 'Sair',\n },\n notificationsMenu: {\n title: 'Notificações',\n unreadCount: '{count} não lidas',\n empty: 'Nenhuma notificação',\n ariaLabel: 'Notificações',\n close: 'Fechar',\n today: 'Hoje',\n yesterday: 'Ontem',\n assignedBefore: 'Você tem',\n assignedAfter: 'novos temas atribuídos.',\n pendingBefore: 'Você tem',\n pendingAfter: 'temas atribuídos a vencer.',\n assignedToday: 'Atribuído hoje',\n assignedYesterday: 'Atribuído ontem',\n assignedOn: 'Atribuído em',\n expires: 'Vence',\n editorialOpportunityLabel: 'Oportunidade editorial',\n editorialOpportunityText: '{count} temas exigem sua atenção',\n editorialOpportunityTop: 'Top',\n editorialOpportunityMatch: 'Correspondência',\n editorialOpportunityTrending: 'Em alta',\n editorialOpportunitySeeMoreOpportunities: 'Ver mais {count} oportunidades',\n editorialOpportunityHide: 'Ocultar',\n editorialOpportunityRemindLater: 'Lembrar depois',\n editorialOpportunitySeeMore: 'Ver mais',\n },\n search: {\n placeholder: 'Buscar…',\n inputAriaLabel: 'Buscar',\n clearAriaLabel: 'Limpar busca',\n advancedAriaLabel: 'Busca avançada',\n title: 'Busca avançada',\n apply: 'Aplicar',\n reset: 'Redefinir',\n close: 'Fechar',\n noOptions: 'Sem correspondências',\n dateToday: 'Hoje',\n dateClear: 'Limpar',\n dateOpenAriaLabel: 'Abrir calendário',\n prevMonthAriaLabel: 'Mês anterior',\n nextMonthAriaLabel: 'Mês seguinte',\n },\n searchFields: {\n text: 'Texto',\n textPlaceholder: 'Título, resumo ou corpo',\n type: 'Tipo',\n typePlaceholder: 'Todos os tipos',\n section: 'Seção',\n sectionPlaceholder: 'Todas as seções',\n category: 'Categoria',\n categoryPlaceholder: 'Todas as categorias',\n states: 'Estados',\n statesPlaceholder: 'Todos os estados',\n creator: 'Criador',\n creatorPlaceholder: 'Digite para buscar um criador',\n author: 'Autor',\n authorPlaceholder: 'Digite para buscar um autor',\n tags: 'Etiquetas',\n tagsPlaceholder: 'Digite e pressione Enter',\n groups: 'Grupos',\n groupsPlaceholder: 'Todos os grupos',\n amount: 'Quantidade a mostrar',\n amountPlaceholder: 'Ex: 50',\n dateFrom: 'Data de',\n dateTo: 'Data até',\n sortBy: 'Ordenar por',\n sortByPlaceholder: 'Relevância',\n zone: 'Zona',\n zonePlaceholder: 'Qualquer zona',\n priority: 'Prioridade',\n priorityPlaceholder: 'Todas',\n order: 'Ordem',\n orderPlaceholder: 'Decrescente',\n includeDrafts: 'Incluir rascunhos',\n includeHistory: 'Incluir conteúdo histórico',\n },\n searchOptions: {\n typeNews: 'Notícia',\n typeList: 'Nota Lista',\n typeLiveblog: 'LiveBlog',\n statePublished: 'Publicada',\n stateDraft: 'Em redação',\n stateScheduled: 'Programada',\n stateReview: 'Em revisão',\n stateDone: 'Concluída',\n sortRelevance: 'Relevância',\n sortDate: 'Data',\n sortTitle: 'Título',\n orderDesc: 'Decrescente',\n orderAsc: 'Crescente',\n priorityHigh: 'Alta (1–10)',\n priorityMid: 'Média (11–30)',\n priorityLow: 'Baixa (31+)',\n },\n toast: {\n close: 'Fechar',\n copyDetail: 'Copiar detalhe do erro',\n copied: 'Copiado',\n defaultSuccess: 'Operação realizada com sucesso.',\n defaultError: 'Ocorreu um erro no serviço.',\n defaultWarning: 'Revise a solicitação.',\n defaultInfo: 'Informação',\n },\n network: {\n disconnected:\n 'Sem conexão. Verifique sua rede ou o status do Wi-Fi. Tentaremos novamente quando a conexão for restabelecida.',\n retrying: 'Tentando pedidos novamente.',\n restored: 'Conexão restabelecida.',\n },\n userAvatar: {\n alt: 'Avatar do usuário',\n unknownUser: 'Usuário sem nome',\n },\n errorPage: {\n homeButton: 'Início',\n notFoundTitle: 'Desculpe, ocorreu um erro.',\n notFoundSubtitle: 'Este site não está mais disponível. Continue navegando!',\n notFoundCode: '404',\n errorLabel: 'Erro',\n copyDetail: 'Copiar detalhe.',\n copyDetailText:\n 'A rota {url} que você está tentando acessar não está mais disponível.',\n copied: 'Texto copiado para a área de transferência!',\n notAllowedTitle: 'Sentimos muito.\\nVocê não tem acesso.',\n notAllowedSubtitle:\n 'O que você deseja ver é restrito por permissões. Continue navegando!',\n },\n} satisfies CmsMessages;\n","import type {\n AppLocaleCatalog,\n AppMessageNode,\n AppMessages,\n CmsMessages,\n CmsMessagesOverride,\n Locale,\n LocaleCatalog,\n} from '../types';\nimport { enMessages } from './en';\nimport { esMessages } from './es';\nimport { ptMessages } from './pt';\n\nexport { enMessages, esMessages, ptMessages };\n\nexport const defaultLocaleCatalog: LocaleCatalog = {\n en: enMessages,\n es: esMessages,\n pt: ptMessages,\n};\n\nfunction mergeNamespace<T extends Record<string, string>>(\n base: T,\n override?: Partial<T>,\n): T {\n if (!override) return base;\n return { ...base, ...override };\n}\n\n/** Deep-merge custom overrides on top of the locale catalog entry. */\nexport function mergeMessages(\n locale: Locale,\n catalog: LocaleCatalog,\n overrides?: CmsMessagesOverride,\n): CmsMessages {\n const base = catalog[locale];\n const fallback = catalog.en;\n\n return {\n navigation: mergeNamespace(\n { ...fallback.navigation, ...base.navigation },\n overrides?.navigation,\n ),\n sidebar: mergeNamespace(\n { ...fallback.sidebar, ...base.sidebar },\n overrides?.sidebar,\n ),\n topBar: mergeNamespace({ ...fallback.topBar, ...base.topBar }, overrides?.topBar),\n newMenu: mergeNamespace(\n { ...fallback.newMenu, ...base.newMenu },\n overrides?.newMenu,\n ),\n previewMenu: mergeNamespace(\n { ...fallback.previewMenu, ...base.previewMenu },\n overrides?.previewMenu,\n ),\n profileMenu: mergeNamespace(\n { ...fallback.profileMenu, ...base.profileMenu },\n overrides?.profileMenu,\n ),\n notificationsMenu: mergeNamespace(\n { ...fallback.notificationsMenu, ...base.notificationsMenu },\n overrides?.notificationsMenu,\n ),\n search: mergeNamespace(\n { ...fallback.search, ...base.search },\n overrides?.search,\n ),\n searchFields: mergeNamespace(\n { ...fallback.searchFields, ...base.searchFields },\n overrides?.searchFields,\n ),\n searchOptions: mergeNamespace(\n { ...fallback.searchOptions, ...base.searchOptions },\n overrides?.searchOptions,\n ),\n toast: mergeNamespace({ ...fallback.toast, ...base.toast }, overrides?.toast),\n network: mergeNamespace(\n { ...fallback.network, ...base.network },\n overrides?.network,\n ),\n userAvatar: mergeNamespace(\n { ...fallback.userAvatar, ...base.userAvatar },\n overrides?.userAvatar,\n ),\n errorPage: mergeNamespace(\n { ...fallback.errorPage, ...base.errorPage },\n overrides?.errorPage,\n ),\n };\n}\n\n/** Deep-merge recursivo de dos árboles de mensajes del gestor (override gana). */\nfunction deepMergeAppNode(base: AppMessageNode, override: AppMessageNode): AppMessageNode {\n // Si alguno es hoja (string), el override reemplaza directamente.\n if (typeof base === 'string' || typeof override === 'string') {\n return override;\n }\n const result: Record<string, AppMessageNode> = { ...base };\n for (const key of Object.keys(override)) {\n const overrideChild = override[key];\n result[key] =\n key in base ? deepMergeAppNode(base[key], overrideChild) : overrideChild;\n }\n return result;\n}\n\n/**\n * Resuelve el árbol de mensajes del gestor para el locale activo, usando `en`\n * como fallback (igual criterio que `mergeMessages`). Devuelve `{}` si no se\n * pasó catálogo del gestor.\n */\nexport function mergeAppMessages(\n locale: Locale,\n appCatalog?: AppLocaleCatalog,\n): AppMessages {\n if (!appCatalog) return {};\n const fallback = appCatalog.en ?? {};\n const base = appCatalog[locale] ?? {};\n return deepMergeAppNode(fallback, base) as AppMessages;\n}\n","import type { enMessages } from './messages/en';\n\nexport const SUPPORTED_LOCALES = ['es', 'en', 'pt'] as const;\n\nexport type Locale = (typeof SUPPORTED_LOCALES)[number];\n\nexport const DEFAULT_LOCALE: Locale = 'en';\n\ntype DeepStringMap<T> = {\n [K in keyof T]: T[K] extends Record<string, unknown>\n ? { [K2 in keyof T[K]]: string }\n : string;\n};\n\n/** Message tree shape; values are strings, keys are inferred from `enMessages`. */\nexport type CmsMessages = DeepStringMap<typeof enMessages>;\n\nexport type NavigationModule = keyof CmsMessages['navigation'];\n\nexport type SidebarMessageKey = keyof CmsMessages['sidebar'];\n\nexport type TopBarMessageKey = keyof CmsMessages['topBar'];\n\nexport type NewMenuMessageKey = keyof CmsMessages['newMenu'];\n\nexport type PreviewMenuMessageKey = keyof CmsMessages['previewMenu'];\n\nexport type ProfileMenuMessageKey = keyof CmsMessages['profileMenu'];\n\nexport type NotificationsMenuMessageKey = keyof CmsMessages['notificationsMenu'];\n\nexport type ToastMessageKey = keyof CmsMessages['toast'];\n\nexport type NetworkMessageKey = keyof CmsMessages['network'];\n\nexport type UserAvatarMessageKey = keyof CmsMessages['userAvatar'];\n\nexport type ErrorPageMessageKey = keyof CmsMessages['errorPage'];\n\n/** Partial override tree; missing keys fall back to the active locale, then `en`. */\nexport type CmsMessagesOverride = {\n [Namespace in keyof CmsMessages]?: Partial<CmsMessages[Namespace]>;\n};\n\nexport type LocaleCatalog = Record<Locale, CmsMessages>;\n\n/**\n * Nodo de un árbol de mensajes propio de un gestor: una hoja string o un\n * sub-árbol anidable. Permite namespaces arbitrarios (`usuarios.*`, etc.)\n * que la lib desconoce.\n */\nexport type AppMessageNode = string | { [key: string]: AppMessageNode };\n\n/** Árbol de mensajes del gestor (namespaces → claves → string anidable). */\nexport type AppMessages = Record<string, AppMessageNode>;\n\n/**\n * Catálogo de mensajes del gestor por idioma. Cada gestor declara su propio\n * `en` como fuente de la forma y valida `es`/`pt` con `satisfies typeof enTree`\n * para garantizar que las tres lenguas comparten las mismas claves.\n */\nexport type AppLocaleCatalog = Record<Locale, AppMessages>;\n","import { DEFAULT_LOCALE, SUPPORTED_LOCALES, type Locale } from './types';\n\n/** Normaliza códigos BCP 47 o variantes (`es-MX`, `pt_BR`) al `Locale` soportado. */\nexport function normalizeLocale(value?: string | null): Locale {\n if (!value) return DEFAULT_LOCALE;\n\n const normalized = value.trim().toLowerCase().replace('_', '-');\n const primary = normalized.split('-')[0];\n\n if ((SUPPORTED_LOCALES as readonly string[]).includes(normalized)) {\n return normalized as Locale;\n }\n\n if ((SUPPORTED_LOCALES as readonly string[]).includes(primary)) {\n return primary as Locale;\n }\n\n return DEFAULT_LOCALE;\n}\n","'use client';\n\nimport { createContext, useMemo, type ReactNode } from 'react';\n\nimport { createTranslator, type CmsTranslator } from './createTranslator';\nimport { defaultLocaleCatalog, mergeAppMessages, mergeMessages } from './messages';\nimport { normalizeLocale } from './normalizeLocale';\nimport type {\n AppLocaleCatalog,\n CmsMessagesOverride,\n Locale,\n LocaleCatalog,\n} from './types';\n\nexport type CmsI18nContextValue = {\n locale: Locale;\n t: CmsTranslator;\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CmsI18nContext = createContext<CmsI18nContextValue | null>(null);\n\nexport type CmsI18nProviderProps = {\n locale?: Locale | string;\n /** Alias de `locale` (p. ej. consumidores que pasan `language=\"es\"`). */\n language?: Locale | string;\n messages?: CmsMessagesOverride;\n catalog?: LocaleCatalog;\n /** Catálogo de mensajes propio del gestor (namespaces libres, es/en/pt). */\n appMessages?: AppLocaleCatalog;\n children: ReactNode;\n};\n\nexport function CmsI18nProvider({\n locale,\n language,\n messages,\n catalog = defaultLocaleCatalog,\n appMessages,\n children,\n}: CmsI18nProviderProps) {\n const resolvedLocale = normalizeLocale(locale ?? language);\n\n const value = useMemo<CmsI18nContextValue>(() => {\n const resolvedMessages = mergeMessages(resolvedLocale, catalog, messages);\n const resolvedAppMessages = mergeAppMessages(resolvedLocale, appMessages);\n return {\n locale: resolvedLocale,\n t: createTranslator(resolvedMessages, resolvedAppMessages),\n };\n }, [appMessages, catalog, messages, resolvedLocale]);\n\n return <CmsI18nContext.Provider value={value}>{children}</CmsI18nContext.Provider>;\n}\n","'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { CmsI18nContext } from './CmsI18nProvider';\nimport { createTranslator } from './createTranslator';\nimport { defaultLocaleCatalog, mergeAppMessages, mergeMessages } from './messages';\nimport type {\n AppLocaleCatalog,\n CmsMessagesOverride,\n Locale,\n LocaleCatalog,\n} from './types';\nimport { DEFAULT_LOCALE } from './types';\n\nexport type UseCmsTranslationOptions = {\n locale?: Locale;\n messages?: CmsMessagesOverride;\n catalog?: LocaleCatalog;\n /** Catálogo propio del gestor cuando se usa el hook fuera del provider. */\n appMessages?: AppLocaleCatalog;\n};\n\nexport function useCmsTranslation(options?: UseCmsTranslationOptions) {\n const context = useContext(CmsI18nContext);\n\n const locale = options?.locale ?? context?.locale ?? DEFAULT_LOCALE;\n const catalog = options?.catalog ?? defaultLocaleCatalog;\n const overrides = options?.messages;\n const appCatalog = options?.appMessages;\n\n const t = useMemo(() => {\n if (!overrides && !appCatalog && context && context.locale === locale) {\n return context.t;\n }\n return createTranslator(\n mergeMessages(locale, catalog, overrides),\n mergeAppMessages(locale, appCatalog),\n );\n }, [appCatalog, catalog, context, locale, overrides]);\n\n return { locale, t };\n}\n\n/** BCP 47 tag for `Intl` / `toLocaleString` formatting. */\nexport function getIntlLocaleTag(locale: Locale): string {\n switch (locale) {\n case 'pt':\n return 'pt-BR';\n case 'en':\n return 'en-US';\n case 'es':\n default:\n return 'es-MX';\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport {\n feedbackBadgeColors,\n feedbackColors,\n fontFamilies,\n radii,\n} from '../../theme/variables';\nimport type { ToastSeverity } from './types';\n\nexport const CmsToastStyles = {\n /** Contenedor fijo que apila los toasts (abajo y centrado). */\n sxStack: {\n position: 'fixed',\n bottom: 16,\n left: 0,\n right: 0,\n px: 2,\n zIndex: (theme: Theme) => theme.zIndex.snackbar,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 1.25,\n pointerEvents: 'none',\n } as SxProps<Theme>,\n\n /** Toast compacto (success / warning / info). */\n sxToast: {\n pointerEvents: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n minWidth: 300,\n maxWidth: 420,\n px: 2,\n py: 1.5,\n borderRadius: radii.lg,\n bgcolor: feedbackColors.surface,\n color: feedbackColors.onSurface,\n boxShadow: '0 8px 24px rgba(0, 0, 0, 0.35)',\n } as SxProps<Theme>,\n\n /** Toast de error: más grande, en columna, con detalle copiable. */\n sxToastError: {\n pointerEvents: 'auto',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n gap: 1,\n minWidth: 360,\n maxWidth: 560,\n width: '100%',\n p: 2.5,\n borderRadius: radii.lg,\n bgcolor: feedbackColors.surface,\n color: feedbackColors.onSurface,\n boxShadow: '0 8px 24px rgba(0, 0, 0, 0.35)',\n } as SxProps<Theme>,\n\n /** Fila superior del toast de error (ícono + título + cerrar). */\n sxErrorHeader: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1.25,\n } as SxProps<Theme>,\n\n sxTextWrap: {\n flex: 1,\n minWidth: 0,\n } as SxProps<Theme>,\n\n sxTitle: {\n fontWeight: 600,\n fontSize: 14,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n sxMessage: {\n fontSize: 14,\n lineHeight: 1.4,\n whiteSpace: 'pre-line',\n } as SxProps<Theme>,\n\n /** Título del toast de error. */\n sxErrorTitle: {\n fontFamily: fontFamilies.googleSans,\n fontWeight: 700,\n fontSize: 16,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n /** Descripción del toast de error (sin fondo). */\n sxErrorMessage: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n color: feedbackColors.onSurfaceSoft,\n lineHeight: 1.4,\n whiteSpace: 'pre-line',\n mt: '10px',\n } as SxProps<Theme>,\n\n /** Detalle crudo del servidor (solo si el servicio devolvió texto de error). */\n sxDetail: {\n mt: '10px',\n p: 1,\n borderRadius: radii.sm,\n bgcolor: feedbackColors.overlay,\n color: feedbackColors.onSurfaceMuted,\n fontSize: 12.5,\n lineHeight: 1.4,\n wordBreak: 'break-word',\n } as SxProps<Theme>,\n\n /** Enlace (url del recurso) sobre la superficie oscura (monoespaciada). */\n sxLink: {\n display: 'block',\n mt: '10px',\n color: feedbackColors.link,\n fontFamily: fontFamilies.mono,\n fontSize: 11.5,\n lineHeight: 1.4,\n textDecoration: 'none',\n wordBreak: 'break-all',\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n\n /** Fila inferior: chip de versión + punto + fecha. */\n sxFooter: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n mt: '10px',\n color: feedbackColors.onSurfaceSoft,\n fontFamily: fontFamilies.googleSans,\n fontSize: 11,\n lineHeight: 1.4,\n } as SxProps<Theme>,\n\n /** Chip con la versión (ícono de etiqueta + vX.Y.Z). */\n sxVersionChip: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n px: 0.75,\n py: 0.25,\n borderRadius: radii.pill,\n bgcolor: feedbackColors.versionChipBg,\n color: feedbackColors.onSurfaceSoft,\n fontFamily: fontFamilies.googleSans,\n fontSize: 11,\n fontWeight: 600,\n '& svg': { fontSize: 13 },\n } as SxProps<Theme>,\n\n /** Punto separador entre versión y fecha. */\n sxDot: {\n flexShrink: 0,\n width: '3px',\n height: '3px',\n borderRadius: '50%',\n bgcolor: feedbackColors.separator,\n } as SxProps<Theme>,\n\n sxClose: {\n color: feedbackColors.onSurfaceMuted,\n p: 0.5,\n '&:hover': { color: feedbackColors.onSurface },\n } as SxProps<Theme>,\n\n sxCopyButton: {\n color: feedbackColors.onSurfaceMuted,\n p: 0.5,\n flexShrink: 0,\n '&:hover': { color: feedbackColors.onSurface },\n } as SxProps<Theme>,\n};\n\n/** Estilo del círculo de ícono (contenedor tonal + ícono por severidad). */\nexport function sxIconBadge(severity: ToastSeverity): SxProps<Theme> {\n const badge = feedbackBadgeColors[severity];\n return {\n flexShrink: 0,\n width: 28,\n height: 28,\n borderRadius: '50%',\n display: 'grid',\n placeItems: 'center',\n bgcolor: badge.bg,\n color: badge.on,\n '& svg': { fontSize: 18 },\n };\n}\n","'use client';\n\nimport { useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport CloseIcon from '@mui/icons-material/Close';\nimport ContentCopyOutlinedIcon from '@mui/icons-material/ContentCopyOutlined';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutlineOutlined';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport LocalOfferOutlinedIcon from '@mui/icons-material/LocalOfferOutlined';\nimport ReportProblemOutlinedIcon from '@mui/icons-material/ReportProblemOutlined';\n\nimport type { CmsTranslator } from '../../i18n/createTranslator';\nimport { CmsToastStyles, sxIconBadge } from './CmsToast.styles';\nimport type { ToastItem, ToastSeverity } from './types';\n\nconst ICONS: Record<ToastSeverity, typeof DoneIcon> = {\n success: DoneIcon,\n warning: ReportProblemOutlinedIcon,\n error: ErrorOutlineIcon,\n info: InfoOutlinedIcon,\n};\n\nexport interface CmsToastProps {\n item: ToastItem;\n t: CmsTranslator;\n /** Tag BCP 47 para formatear la fecha del detalle del error. */\n localeTag: string;\n /** Versión a mostrar en el detalle del error (app o lib). */\n appVersion: string;\n onClose: (id: string) => void;\n}\n\n/**\n * Construye el texto copiable del toast de error, con el mismo formato que el\n * Angular legacy (`Message / Error / Url / Service / Params / Version`).\n */\nfunction buildCopyText(\n message: string,\n item: ToastItem,\n url: string,\n version: string,\n dateTime: string,\n): string {\n const detail = item.detail;\n return [\n `Message: ${message}`,\n detail?.error ? `Error: ${detail.error}` : null,\n `Url: ${url}`,\n detail?.service ? `Service: ${detail.service}` : null,\n detail?.params !== undefined\n ? `Params: ${JSON.stringify(detail.params)}`\n : null,\n `Version: v${version} ${dateTime}`,\n ]\n .filter(Boolean)\n .join('\\n');\n}\n\nexport function CmsToast({\n item,\n t,\n localeTag,\n appVersion,\n onClose,\n}: CmsToastProps) {\n const Icon = ICONS[item.severity];\n const [copied, setCopied] = useState(false);\n\n // Url y fecha se capturan una vez al montar el toast (no en cada render).\n const [meta] = useState(() => ({\n url: typeof window !== 'undefined' ? window.location.href : '',\n dateTime: new Date().toLocaleString(localeTag),\n }));\n\n const handleCopy = () => {\n const text = buildCopyText(\n item.message,\n item,\n meta.url,\n appVersion,\n meta.dateTime,\n );\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n navigator.clipboard.writeText(text).then(\n () => {\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1500);\n },\n () => undefined,\n );\n }\n };\n\n const badge = (\n <Box sx={sxIconBadge(item.severity)} aria-hidden>\n <Icon />\n </Box>\n );\n\n const closeButton = (\n <IconButton\n data-testid=\"btn-toast-close\"\n size=\"small\"\n aria-label={t.toast('close')}\n onClick={() => onClose(item.id)}\n sx={CmsToastStyles.sxClose}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n );\n\n const copyButton = (\n <Tooltip title={copied ? t.toast('copied') : t.toast('copyDetail')}>\n <IconButton\n data-testid=\"btn-toast-copy\"\n size=\"small\"\n aria-label={t.toast('copyDetail')}\n onClick={handleCopy}\n sx={CmsToastStyles.sxCopyButton}>\n {copied ? (\n <DoneIcon fontSize=\"small\" />\n ) : (\n <ContentCopyOutlinedIcon fontSize=\"small\" />\n )}\n </IconButton>\n </Tooltip>\n );\n\n // Toast de error: más grande, con url del recurso, versión y botón copiar.\n if (item.severity === 'error') {\n return (\n <Box\n data-testid={`toast-${item.severity}`}\n data-severity={item.severity}\n sx={CmsToastStyles.sxToastError}\n role=\"alert\">\n <Box sx={CmsToastStyles.sxErrorHeader}>\n {badge}\n <Box sx={CmsToastStyles.sxTextWrap}>\n {item.title ? (\n <Box sx={CmsToastStyles.sxErrorTitle}>{item.title}</Box>\n ) : null}\n <Box sx={CmsToastStyles.sxErrorMessage}>{item.message}</Box>\n\n {item.detail?.error ? (\n <Box sx={CmsToastStyles.sxDetail}>{item.detail.error}</Box>\n ) : null}\n\n {meta.url ? (\n <Box component=\"a\" href={meta.url} sx={CmsToastStyles.sxLink}>\n {meta.url}\n </Box>\n ) : null}\n\n <Box sx={CmsToastStyles.sxFooter}>\n <Box component=\"span\" sx={CmsToastStyles.sxVersionChip}>\n <LocalOfferOutlinedIcon />v{appVersion}\n </Box>\n <Box sx={CmsToastStyles.sxDot} />\n <Box component=\"span\">{meta.dateTime}</Box>\n </Box>\n </Box>\n {copyButton}\n {closeButton}\n </Box>\n </Box>\n );\n }\n\n // Toast compacto (success / warning / info): click en cualquier parte cierra.\n return (\n <Box\n data-testid={`toast-${item.severity}`}\n data-severity={item.severity}\n sx={{ ...CmsToastStyles.sxToast, cursor: 'pointer' }}\n role=\"status\"\n onClick={() => onClose(item.id)}>\n {badge}\n <Box sx={CmsToastStyles.sxTextWrap}>\n {item.title ? <Box sx={CmsToastStyles.sxTitle}>{item.title}</Box> : null}\n <Box sx={CmsToastStyles.sxMessage}>{item.message}</Box>\n </Box>\n {closeButton}\n </Box>\n );\n}\n","'use client';\n\nimport {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\nimport Box from '@mui/material/Box';\n\nimport type { CmsTranslator } from '../../i18n/createTranslator';\nimport { normalizeLocale } from '../../i18n/normalizeLocale';\nimport type { Locale } from '../../i18n/types';\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { LIB_VERSION } from '../../version';\nimport { CmsToast } from './CmsToast';\nimport { CmsToastStyles } from './CmsToast.styles';\nimport type { ToastItem } from './types';\n\nexport interface CmsToastContextValue {\n /** Encola un toast ya normalizado. Devuelve su id. */\n enqueue: (item: Omit<ToastItem, 'id'>) => string;\n /** Cierra un toast por id; sin id, cierra todos. */\n dismiss: (id?: string) => void;\n /** Translator resuelto al locale del provider (para resolver mensajes). */\n t: CmsTranslator;\n /** Locale activo del provider. */\n locale: Locale;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CmsToastContext = createContext<CmsToastContextValue | null>(null);\n\nexport interface CmsToastProviderProps {\n children: ReactNode;\n /** Locale del usuario (sale de `profile.locale` en el gestor). */\n locale?: Locale | string;\n /** Alias de `locale`. */\n language?: Locale | string;\n /** Versión a mostrar en el detalle del toast de error. Default: `LIB_VERSION`. */\n appVersion?: string;\n /** Máximo de toasts simultáneos (se descarta el más viejo). Default: 4. */\n max?: number;\n}\n\n/**\n * Provee el sistema de toasts a toda la app. Renderiza una pila fija (abajo a\n * la izquierda) y expone `useCmsToast()` para disparar feedback de operaciones.\n *\n * El mecanismo vive en la lib; el **disparo** lo hace el gestor (catch de un\n * server action / handler de mutación).\n */\nexport function CmsToastProvider({\n children,\n locale,\n language,\n appVersion,\n max = 4,\n}: CmsToastProviderProps) {\n const resolvedLocale = normalizeLocale(locale ?? language);\n const { locale: tLocale, t } = useCmsTranslation({ locale: resolvedLocale });\n const version = appVersion ?? LIB_VERSION;\n\n const [items, setItems] = useState<ToastItem[]>([]);\n const idRef = useRef(0);\n const timers = useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map());\n\n const dismiss = useCallback((id?: string) => {\n if (id === undefined) {\n timers.current.forEach((tm) => clearTimeout(tm));\n timers.current.clear();\n setItems([]);\n return;\n }\n const tm = timers.current.get(id);\n if (tm) {\n clearTimeout(tm);\n timers.current.delete(id);\n }\n setItems((prev) => prev.filter((it) => it.id !== id));\n }, []);\n\n const enqueue = useCallback(\n (item: Omit<ToastItem, 'id'>) => {\n idRef.current += 1;\n const id = `toast-${idRef.current}`;\n const next: ToastItem = { ...item, id };\n setItems((prev) => {\n const merged = [...prev, next];\n return merged.length > max ? merged.slice(merged.length - max) : merged;\n });\n if (next.duration !== null && next.duration > 0) {\n const tm = setTimeout(() => dismiss(id), next.duration);\n timers.current.set(id, tm);\n }\n return id;\n },\n [dismiss, max],\n );\n\n // Limpia timers pendientes al desmontar.\n useEffect(() => {\n const map = timers.current;\n return () => {\n map.forEach((tm) => clearTimeout(tm));\n map.clear();\n };\n }, []);\n\n const value = useMemo<CmsToastContextValue>(\n () => ({ enqueue, dismiss, t, locale: tLocale }),\n [enqueue, dismiss, t, tLocale],\n );\n\n const localeTag = useMemo(() => {\n switch (tLocale) {\n case 'pt':\n return 'pt-BR';\n case 'en':\n return 'en-US';\n default:\n return 'es-MX';\n }\n }, [tLocale]);\n\n return (\n <CmsToastContext.Provider value={value}>\n {children}\n <Box sx={CmsToastStyles.sxStack}>\n {items.map((item) => (\n <CmsToast\n key={item.id}\n item={item}\n t={t}\n localeTag={localeTag}\n appVersion={version}\n onClose={dismiss}\n />\n ))}\n </Box>\n </CmsToastContext.Provider>\n );\n}\n","'use client';\n\nimport { useContext, useMemo } from 'react';\n\nimport { getCommonError, resolveErrorSeverity } from '../../errors';\nimport { CmsToastContext } from './CmsToastProvider';\nimport type {\n CmsResponseLike,\n NotifyCmsResponseOptions,\n ToastErrorOptions,\n ToastOptions,\n ToastSeverity,\n} from './types';\n\n/** Duración por defecto (ms) según severidad. Error no se autocierra. */\nconst DEFAULT_DURATION: Record<ToastSeverity, number | null> = {\n success: 5000,\n info: 5000,\n warning: 5000,\n error: null,\n};\n\nexport interface CmsToastApi {\n /** Toast de éxito (verde). */\n success: (message: string, options?: ToastOptions) => string;\n /** Toast informativo (azul). */\n info: (message: string, options?: ToastOptions) => string;\n /** Toast de advertencia (ámbar) — condición esperada/accionable. */\n warning: (message: string, options?: ToastOptions) => string;\n /** Toast de error (rojo, grande, con detalle copiable). */\n error: (message: string, options?: ToastErrorOptions) => string;\n /** Atajo genérico. */\n show: (\n severity: ToastSeverity,\n message: string,\n options?: ToastErrorOptions,\n ) => string;\n /** Cierra un toast por id; sin id, cierra todos. */\n dismiss: (id?: string) => void;\n /**\n * Interpreta un envelope `CmsResponse` y dispara el toast adecuado:\n * - `status: 'ok'` → success.\n * - fallo → severidad por código (`resolveErrorSeverity`) y mensaje legible\n * (`getCommonError` → `error` crudo → default i18n).\n */\n notifyCmsResponse: (\n response: CmsResponseLike | null | undefined,\n options?: NotifyCmsResponseOptions,\n ) => string;\n}\n\n/**\n * Hook para disparar toasts. Debe usarse dentro de `CmsToastProvider`.\n */\nexport function useCmsToast(): CmsToastApi {\n const ctx = useContext(CmsToastContext);\n if (!ctx) {\n throw new Error('useCmsToast debe usarse dentro de <CmsToastProvider>.');\n }\n const { enqueue, dismiss, t, locale } = ctx;\n\n return useMemo<CmsToastApi>(() => {\n const show: CmsToastApi['show'] = (severity, message, options) =>\n enqueue({\n severity,\n message,\n title: options?.title,\n duration:\n options?.duration === undefined\n ? DEFAULT_DURATION[severity]\n : options.duration,\n detail:\n severity === 'error'\n ? {\n errorCode: options?.errorCode,\n error: options?.error,\n service: options?.service,\n params: options?.params,\n }\n : undefined,\n });\n\n const success: CmsToastApi['success'] = (message, options) =>\n show('success', message, options);\n const info: CmsToastApi['info'] = (message, options) =>\n show('info', message, options);\n const warning: CmsToastApi['warning'] = (message, options) =>\n show('warning', message, options);\n const error: CmsToastApi['error'] = (message, options) =>\n show('error', message, options);\n\n const notifyCmsResponse: CmsToastApi['notifyCmsResponse'] = (\n response,\n options,\n ) => {\n if (response?.status === 'ok') {\n return success(options?.successMessage ?? t.toast('defaultSuccess'), {\n title: options?.successTitle,\n });\n }\n const severity = resolveErrorSeverity(response?.errorCode);\n const mapped = getCommonError(response?.errorCode, locale);\n const message =\n mapped ??\n response?.error ??\n (severity === 'warning'\n ? t.toast('defaultWarning')\n : t.toast('defaultError'));\n if (severity === 'warning') {\n return warning(message);\n }\n return error(message, {\n errorCode: response?.errorCode,\n error: response?.error,\n service: options?.service,\n params: options?.params,\n });\n };\n\n return { success, info, warning, error, show, dismiss, notifyCmsResponse };\n }, [enqueue, dismiss, t, locale]);\n}\n","'use client';\n\nimport {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\n\n/** Estado de conectividad del navegador. */\nexport type CmsNetworkState = 'online' | 'offline';\n\nexport interface CmsNetworkContextValue {\n /** Estado actual de la conexión. */\n status: CmsNetworkState;\n /** Atajo: `status === 'online'`. */\n isOnline: boolean;\n /**\n * Promesa que resuelve cuando la conexión vuelve a `online`. Si ya está\n * online, resuelve al instante. La usa el reintento para \"retomar el llamado\"\n * cuando vuelve internet.\n */\n waitForOnline: () => Promise<void>;\n /**\n * Fuerza una verificación por ping (útil cuando una petición falló por red\n * pero `navigator.onLine` todavía dice `true`).\n */\n verifyConnectivity: () => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CmsNetworkContext = createContext<CmsNetworkContextValue | null>(\n null,\n);\n\nexport interface CmsNetworkProviderProps {\n children: ReactNode;\n /**\n * URL de ping para confirmar conectividad real (además de los eventos del\n * navegador). Debe responder rápido a un `GET` sin CORS. `null` desactiva el\n * ping y deja solo los eventos `online`/`offline`. Default: endpoint 204 de\n * Google (mismo que usa el Angular legacy).\n */\n pingUrl?: string | null;\n /** Intervalo del polling de ping mientras siga offline (ms). Default 5000. */\n pingIntervalMs?: number;\n}\n\nconst DEFAULT_PING_URL = 'https://clients3.google.com/generate_204';\nconst DEFAULT_PING_INTERVAL = 5000;\n\n/** Estado inicial SSR-safe: en el servidor asume `online`. */\nfunction initialState(): CmsNetworkState {\n if (typeof navigator === 'undefined') return 'online';\n return navigator.onLine ? 'online' : 'offline';\n}\n\n/**\n * Provee el estado de conectividad a toda la app y una promesa `waitForOnline`\n * para reanudar peticiones al recuperar internet.\n *\n * Replica el `NetworkService` del Angular legacy: combina `navigator.onLine`,\n * los eventos `window` `online`/`offline` y un **ping activo con polling** que\n * confirma la reconexión real (los eventos del navegador a veces mienten).\n *\n * El mecanismo vive en la lib; el **disparo** de toasts lo hace\n * `CmsNetworkToaster` (globales) y `useResilientAction` (por petición).\n */\nexport function CmsNetworkProvider({\n children,\n pingUrl = DEFAULT_PING_URL,\n pingIntervalMs = DEFAULT_PING_INTERVAL,\n}: CmsNetworkProviderProps) {\n const [status, setStatus] = useState<CmsNetworkState>(initialState);\n\n // Resolvers de las promesas `waitForOnline` pendientes.\n const onlineResolvers = useRef<Array<() => void>>([]);\n\n const flushOnline = useCallback(() => {\n const resolvers = onlineResolvers.current;\n onlineResolvers.current = [];\n resolvers.forEach((resolve) => resolve());\n }, []);\n\n const waitForOnline = useCallback(() => {\n // Fuente fresca: si el navegador ya reporta conexión, resuelve al instante.\n if (typeof navigator === 'undefined' || navigator.onLine) {\n return Promise.resolve();\n }\n return new Promise<void>((resolve) => {\n onlineResolvers.current.push(resolve);\n });\n }, []);\n\n const verifyConnectivity = useCallback(() => {\n if (!pingUrl || typeof fetch === 'undefined') return;\n // `ngsw-bypass` evita el service worker; el timestamp evita la caché.\n const sep = pingUrl.includes('?') ? '&' : '?';\n const url = `${pingUrl}${sep}ngsw-bypass=true&_t=${Date.now()}`;\n fetch(url, { mode: 'no-cors', cache: 'no-store' })\n .then(() => setStatus('online'))\n .catch(() => setStatus('offline'));\n }, [pingUrl]);\n\n // Al pasar a `online`, resuelve las esperas pendientes.\n useEffect(() => {\n if (status === 'online') flushOnline();\n }, [status, flushOnline]);\n\n // Eventos del navegador. Ante `offline`, confirma con un ping.\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const goOnline = () => setStatus('online');\n const goOffline = () => {\n setStatus('offline');\n verifyConnectivity();\n };\n window.addEventListener('online', goOnline);\n window.addEventListener('offline', goOffline);\n return () => {\n window.removeEventListener('online', goOnline);\n window.removeEventListener('offline', goOffline);\n };\n }, [verifyConnectivity]);\n\n // Polling de ping mientras siga offline: confirma la reconexión real aunque\n // el evento `online` no llegue (redes que no lo emiten de forma fiable).\n useEffect(() => {\n if (status !== 'offline' || !pingUrl) return;\n const id = setInterval(verifyConnectivity, pingIntervalMs);\n return () => clearInterval(id);\n }, [status, pingUrl, pingIntervalMs, verifyConnectivity]);\n\n const value = useMemo<CmsNetworkContextValue>(\n () => ({\n status,\n isOnline: status === 'online',\n waitForOnline,\n verifyConnectivity,\n }),\n [status, waitForOnline, verifyConnectivity],\n );\n\n return (\n <CmsNetworkContext.Provider value={value}>\n {children}\n </CmsNetworkContext.Provider>\n );\n}\n","'use client';\n\nimport { useContext } from 'react';\n\nimport {\n CmsNetworkContext,\n type CmsNetworkContextValue,\n} from './CmsNetworkProvider';\n\n/**\n * Lee el estado de conectividad. Debe usarse dentro de `<CmsNetworkProvider>`.\n */\nexport function useCmsNetworkStatus(): CmsNetworkContextValue {\n const ctx = useContext(CmsNetworkContext);\n if (!ctx) {\n throw new Error(\n 'useCmsNetworkStatus debe usarse dentro de <CmsNetworkProvider>.',\n );\n }\n return ctx;\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nimport { useCmsToast } from '../components/toast/useCmsToast';\nimport { useCmsTranslation } from '../i18n/useCmsTranslation';\nimport { useCmsNetworkStatus } from './useCmsNetworkStatus';\n\n/**\n * Componente sin UI que observa el estado de conexión y dispara los toasts\n * globales, replicando el Angular legacy:\n *\n * - Al perder internet → toast de error \"sin conexión\" (no se autocierra).\n * - Al recuperarla → cierra el anterior y muestra \"conexión restablecida\".\n *\n * Se monta una sola vez, dentro de `CmsNetworkProvider` + `CmsToastProvider`.\n * El reintento y \"reanudar el llamado\" por acción los maneja\n * `useResilientAction`.\n */\nexport function CmsNetworkToaster() {\n const { status } = useCmsNetworkStatus();\n const { t } = useCmsTranslation();\n const toast = useCmsToast();\n\n const prevStatus = useRef(status);\n const disconnectToastId = useRef<string | null>(null);\n\n useEffect(() => {\n const prev = prevStatus.current;\n prevStatus.current = status;\n if (status === prev) return;\n\n if (status === 'offline') {\n // Evita duplicar el toast si ya hay uno visible.\n if (disconnectToastId.current === null) {\n disconnectToastId.current = toast.error(t.network('disconnected'), {\n errorCode: 'net.offline',\n });\n }\n return;\n }\n\n // Volvió la conexión: cierra el de \"sin conexión\" y confirma.\n if (disconnectToastId.current !== null) {\n toast.dismiss(disconnectToastId.current);\n disconnectToastId.current = null;\n toast.success(t.network('restored'));\n }\n }, [status, t, toast]);\n\n return null;\n}\n","'use client';\n\nimport { useCallback } from 'react';\n\nimport { useCmsToast } from '../components/toast/useCmsToast';\nimport { useCmsTranslation } from '../i18n/useCmsTranslation';\nimport {\n classifyNetworkError,\n getNetworkErrorCodeFromResult,\n} from './classifyNetworkError';\nimport { useCmsNetworkStatus } from './useCmsNetworkStatus';\n\nexport interface ResilientRunOptions {\n /** Servicio/endpoint (para el detalle del toast, si el resultado es error). */\n service?: string;\n /** Params de la llamada (para el detalle del toast). */\n params?: Record<string, unknown>;\n /** Máximo de reintentos con backoff (fallos de servidor/timeout). Default 3. */\n maxRetries?: number;\n /** Mostrar el toast \"reintentando\" al reanudar tras una desconexión. Default true. */\n notifyRetry?: boolean;\n}\n\nexport type ResilientRunner = <T>(\n fn: () => Promise<T>,\n options?: ResilientRunOptions,\n) => Promise<T>;\n\nconst MAX_BACKOFF_MS = 8000;\n\nconst delay = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\n\n/** Backoff exponencial topado: 1s, 2s, 4s, 8s (igual que el Angular legacy). */\nconst backoff = (attempt: number) => Math.min(1000 * 2 ** (attempt - 1), MAX_BACKOFF_MS);\n\n/** `true` si el navegador reporta que no hay conexión (siempre valor fresco). */\nconst isOfflineNow = () =>\n typeof navigator !== 'undefined' ? !navigator.onLine : false;\n\n/**\n * Envuelve la invocación de un server action para hacerla **resiliente a la\n * red**, replicando el comportamiento del Angular legacy:\n *\n * - **Sin internet (usuario offline):** no se pierde la acción. Se espera —sin\n * consumir reintentos— a que vuelva la conexión y entonces se **retoma el\n * llamado** automáticamente (muestra \"reintentando…\").\n * - **Backend caído / timeout / 5xx (con internet):** reintenta con backoff\n * exponencial (1s, 2s, 4s, 8s) hasta `maxRetries`; luego devuelve el\n * resultado de error para que el caller muestre el toast.\n * - **Error de negocio (4xx / `status:'fail'`):** no reintenta; devuelve el\n * resultado tal cual para que el caller decida (toast/update optimista).\n *\n * El toast global de \"sin conexión\" / \"conexión restablecida\" lo dispara\n * `CmsNetworkToaster`; este hook solo añade el \"reintentando…\" por acción.\n *\n * Uso en el gestor:\n * ```ts\n * const run = useResilientAction();\n * const res = await run(() => setUserStatus(slug, id, action),\n * { service: '/users/actions/setStatus', params: { id, action } });\n * ```\n */\nexport function useResilientAction(): ResilientRunner {\n const network = useCmsNetworkStatus();\n const toast = useCmsToast();\n const { t } = useCmsTranslation();\n\n return useCallback(\n async <T>(fn: () => Promise<T>, options?: ResilientRunOptions): Promise<T> => {\n const maxRetries = options?.maxRetries ?? 3;\n const notifyRetry = options?.notifyRetry ?? true;\n let attempt = 0;\n let announcedRetry = false;\n\n // Espera a la reconexión y avisa (una vez) que se reintenta.\n const waitAndAnnounce = async () => {\n await network.waitForOnline();\n if (notifyRetry && !announcedRetry) {\n announcedRetry = true;\n toast.info(t.network('retrying'));\n }\n };\n\n // Si arranca sin conexión, espera antes del primer intento.\n if (isOfflineNow()) {\n await waitAndAnnounce();\n }\n\n while (true) {\n try {\n const result = await fn();\n\n // El server action pudo devolver un error de red (Next→OpenCms).\n const netCode = getNetworkErrorCodeFromResult(result);\n if (netCode) {\n if (isOfflineNow()) {\n network.verifyConnectivity();\n await waitAndAnnounce();\n continue; // sin gastar presupuesto por estar offline\n }\n if (attempt < maxRetries) {\n attempt += 1;\n await delay(backoff(attempt));\n continue;\n }\n }\n return result;\n } catch (error) {\n // Sin conexión: espera indefinida a la reconexión (retoma el llamado).\n if (isOfflineNow()) {\n network.verifyConnectivity();\n await waitAndAnnounce();\n continue; // no consume el presupuesto de reintentos\n }\n\n // Con internet: red/timeout/5xx transitorio → backoff acotado.\n const classified = classifyNetworkError(error);\n if (classified?.retryable && attempt < maxRetries) {\n attempt += 1;\n await delay(backoff(attempt));\n continue;\n }\n\n // Error de negocio o presupuesto agotado: lo maneja el caller.\n throw error;\n }\n }\n },\n [network, toast, t],\n );\n}\n","import type {\n AnchorHTMLAttributes,\n ElementType,\n ForwardedRef,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport { forwardRef } from 'react';\n\nexport type CmsLinkProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n children?: ReactNode;\n};\n\nexport type CmsLinkComponent = ElementType<\n CmsLinkProps & RefAttributes<HTMLAnchorElement>\n>;\n\nexport const DefaultCmsLink = forwardRef(function DefaultCmsLink(\n { href, children, ...rest }: CmsLinkProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n return (\n <a href={href} ref={ref} {...rest}>\n {children}\n </a>\n );\n});\n","import type { CmsTranslator } from '../../i18n';\nimport type { NavItemPermissions, NavLinkItem } from '../../types/navigation';\n\nexport function resolveNavLabel(item: NavLinkItem, t: CmsTranslator): string {\n return item.label ?? t.navigation(item.module);\n}\n\nexport function isPathActive(pathname: string, href: string): boolean {\n if (pathname === href) return true;\n if (href !== '/' && pathname.startsWith(`${href}/`)) return true;\n return false;\n}\n\nexport function isItemActive(pathname: string, item: NavLinkItem): boolean {\n if (isPathActive(pathname, item.href)) return true;\n return item.children?.some((child) => isPathActive(pathname, child.href)) ?? false;\n}\n\n/**\n * Prefija `item.href` con `legacyBaseUrl` cuando el ítem apunta al admin legacy.\n * Si el ítem lo pide (`appendPublicationId`) y hay publicación activa, agrega el\n * id de publicación al final (rutas del Angular master `/admin/x/:idPub`).\n */\nexport function resolveNavHref(\n item: NavLinkItem,\n legacyBaseUrl?: string,\n selectedPublicationId?: string,\n): string {\n if (!item.legacy || !legacyBaseUrl) return item.href;\n const base = `${legacyBaseUrl.replace(/\\/$/, '')}${item.href}`;\n if (item.appendPublicationId && selectedPublicationId) {\n return `${base.replace(/\\/$/, '')}/${selectedPublicationId}`;\n }\n return base;\n}\n\nexport function findModulePermission(\n permissions: Array<NavItemPermissions>,\n module: string,\n): NavItemPermissions | undefined {\n return permissions.find((permission) => permission.module === module);\n}\n\nexport function getVisibleChildren(\n item: NavLinkItem,\n permissions: Array<NavItemPermissions>,\n): NavLinkItem[] {\n return item.children?.filter((child) => findModulePermission(permissions, child.module)) ?? [];\n}\n","'use client';\n//import BarChartOutlinedIcon from '@mui/icons-material/BarChartOutlined';\nimport BookmarkBorderOutlinedIcon from '@mui/icons-material/BookmarkBorderOutlined';\nimport ChatBubbleOutlineOutlinedIcon from '@mui/icons-material/ChatBubbleOutlineOutlined';\nimport CreateOutlinedIcon from '@mui/icons-material/CreateOutlined';\nimport EventOutlinedIcon from '@mui/icons-material/EventOutlined';\nimport ExploreOutlinedIcon from '@mui/icons-material/ExploreOutlined';\nimport ImageOutlinedIcon from '@mui/icons-material/ImageOutlined';\nimport ImportExportOutlinedIcon from '@mui/icons-material/ImportExportOutlined';\n//import LabelOutlinedIcon from '@mui/icons-material/LabelOutlined';\nimport MailOutlineOutlinedIcon from '@mui/icons-material/MailOutlineOutlined';\nimport MoreHorizOutlinedIcon from '@mui/icons-material/MoreHorizOutlined';\nimport NotificationsNoneOutlinedIcon from '@mui/icons-material/NotificationsNoneOutlined';\nimport PeopleOutlinedIcon from '@mui/icons-material/PeopleOutlined';\n//import PermMediaOutlinedIcon from '@mui/icons-material/PermMediaOutlined';\nimport PlayCircleOutlineOutlinedIcon from '@mui/icons-material/PlayCircleOutlineOutlined';\nimport RestaurantOutlinedIcon from '@mui/icons-material/RestaurantOutlined';\nimport SearchOutlinedIcon from '@mui/icons-material/SearchOutlined';\nimport ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined';\nimport ManageAccountsOutlinedIcon from '@mui/icons-material/ManageAccountsOutlined';\nimport FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';\nimport TimelineOutlinedIcon from '@mui/icons-material/TimelineOutlined';\n//import MessageOutlinedIcon from '@mui/icons-material/MessageOutlined';\nimport MicNoneOutlinedIcon from '@mui/icons-material/MicNoneOutlined';\nimport PlaylistPlayOutlinedIcon from '@mui/icons-material/PlaylistPlayOutlined';\nimport PendingActionsOutlinedIcon from '@mui/icons-material/PendingActionsOutlined';\nimport ForumOutlinedIcon from '@mui/icons-material/ForumOutlined';\nimport UsbOutlinedIcon from '@mui/icons-material/UsbOutlined';\nimport FormatListBulletedOutlinedIcon from '@mui/icons-material/FormatListBulletedOutlined';\nimport GridViewOutlinedIcon from '@mui/icons-material/GridViewOutlined';\nimport ViewQuiltOutlinedIcon from '@mui/icons-material/ViewQuiltOutlined';\nimport SubscriptionsOutlinedIcon from '@mui/icons-material/SubscriptionsOutlined';\nimport InsertChartOutlinedIcon from '@mui/icons-material/InsertChartOutlined';\nimport QuizOutlinedIcon from '@mui/icons-material/QuizOutlined';\nimport SellOutlinedIcon from '@mui/icons-material/SellOutlined';\nimport MenuOutlinedIcon from '@mui/icons-material/MenuOutlined';\nimport type { NavBlock } from '../../types/navigation';\n\n/**\n * Navegación lateral por defecto.\n * `module` debe coincidir exactamente con `module` en POST /auth/modulesAvailable\n * y con las claves en `messages.navigation`.\n */\nexport const ACCOUNT_NAV_BLOCKS: NavBlock[] = [\n {\n href: '/admin/comments/',\n icon: ForumOutlinedIcon,\n module: 'COMMENTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/poll.jsp',\n icon: InsertChartOutlinedIcon,\n module: 'POLLS',\n legacy: true,\n },\n {\n href: '/media',\n icon: ImageOutlinedIcon,\n module: 'MEDIA',\n children: [\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/audios.jsp',\n icon: MicNoneOutlinedIcon,\n module: 'AUDIOS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/playlist.jsp',\n icon: ImageOutlinedIcon,\n module: 'IMAGES',\n legacy: true,\n },\n {\n href: '/media/playlist',\n icon: PlaylistPlayOutlinedIcon,\n module: 'PLAYLISTS',\n },\n {\n href: '/admin/videos/',\n icon: PlayCircleOutlineOutlinedIcon,\n module: 'VIDEOS',\n legacy: true,\n },\n ],\n },\n {\n href: '/admin/posts/',\n icon: FormatAlignCenterIcon,\n module: 'POSTS',\n legacy: true,\n },\n {\n href: '/admin/reports/',\n icon: TimelineOutlinedIcon,\n module: 'PRODUCTION',\n legacy: true,\n },\n\n {\n href: '/admin/planning',\n icon: PendingActionsOutlinedIcon,\n module: 'PLANNING',\n legacy: true,\n appendPublicationId: true,\n },\n /* {\n href: '/analiticas',\n icon: BarChartOutlinedIcon,\n module: 'ANALYTICS',\n }, */\n {\n href: '/admin/tags',\n icon: SellOutlinedIcon,\n module: 'TAGS',\n legacy: true,\n appendPublicationId: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/trivias.jsp',\n icon: QuizOutlinedIcon,\n module: 'TRIVIAS',\n legacy: true,\n },\n {\n href: '/otros',\n icon: MoreHorizOutlinedIcon,\n module: 'OTHERS',\n children: [\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/newswires.jsp',\n icon: UsbOutlinedIcon,\n module: 'NEWSWIRES',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/event.jsp',\n icon: EventOutlinedIcon,\n module: 'EVENTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminPages.jsp',\n icon: ExploreOutlinedIcon,\n module: 'PAGES',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/dashboard.jsp',\n icon: FormatListBulletedOutlinedIcon,\n module: 'FEEDS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminPages.jsp',\n icon: PeopleOutlinedIcon,\n module: 'PERSONS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminPosts.jsp',\n icon: CreateOutlinedIcon,\n module: 'POSTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/recipe.jsp',\n icon: RestaurantOutlinedIcon,\n module: 'RECIPES',\n legacy: true,\n },\n ],\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/banners.jsp',\n icon: ViewQuiltOutlinedIcon,\n module: 'BANNERS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/dynamicContent.jsp',\n icon: GridViewOutlinedIcon,\n module: 'BLOCKS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/menuSite.jsp',\n icon: MenuOutlinedIcon,\n module: 'MENUS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/navigationTags.jsp',\n icon: BookmarkBorderOutlinedIcon,\n module: 'TOPICS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/filterQueryList.jsp',\n icon: SearchOutlinedIcon,\n module: 'ADVANCEDQUERYS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminImports.jsp',\n icon: ImportExportOutlinedIcon,\n module: 'IMPORTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/newsletter.jsp',\n icon: MailOutlineOutlinedIcon,\n module: 'NEWSLETTERS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/adminQueues.jsp',\n icon: NotificationsNoneOutlinedIcon,\n module: 'NOTIFICATIONS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/payments.jsp',\n icon: ShoppingCartOutlinedIcon,\n module: 'PAYMENTS',\n legacy: true,\n },\n {\n href: '/system/modules/com.tfsla.diario.admin/templates/subscriptions.jsp',\n icon: SubscriptionsOutlinedIcon,\n module: 'PAYMENTS',\n legacy: true,\n },\n /* {\n href: '/reportes',\n icon: BarChartOutlinedIcon,\n module: 'REPORTS',\n },\n {\n href: '/secciones',\n icon: ViewListOutlinedIcon,\n module: 'SECTIONS',\n }, */\n {\n href: '/twitter-feeds',\n icon: ChatBubbleOutlineOutlinedIcon,\n module: 'TWITTERS',\n },\n {\n href: '/users',\n icon: ManageAccountsOutlinedIcon,\n module: 'USERS',\n },\n /* {\n href: '/zonas',\n icon: LayersOutlinedIcon,\n module: 'ZONES',\n },\n { href: '/ia', icon: ExploreOutlinedIcon, module: 'IA' }, */\n];\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows, stateColors } from '../../theme/variables';\n\nexport const SIDEBAR_RAIL_WIDTH = 88;\n\nconst ITEM_WIDTH = 56;\nconst ITEM_HEIGHT = 32;\nconst ICON_SIZE = 20;\n\nconst scrollbarHidden = {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n} as const;\n\nfunction activeColors(accent?: 'ai') {\n if (accent === 'ai')\n return { bg: stateColors.generating.bg, on: stateColors.generating.on };\n return { bg: cmsColors.secondary, on: cmsColors.onSecondaryContainer };\n}\n\nexport const SidebarRailStyles = {\n sxRoot: {\n width: SIDEBAR_RAIL_WIDTH,\n maxWidth: SIDEBAR_RAIL_WIDTH,\n minWidth: SIDEBAR_RAIL_WIDTH,\n flexShrink: 0,\n alignSelf: 'stretch',\n minHeight: 0,\n maxHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n bgcolor: 'm3.surfaceContainer',\n boxSizing: 'border-box',\n } as SxProps<Theme>,\n\n sxNavScroll: {\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n width: '100%',\n boxSizing: 'border-box',\n ...scrollbarHidden,\n } as SxProps<Theme>,\n\n sxNav: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 1,\n px: 0.5,\n py: 2,\n width: '100%',\n boxSizing: 'border-box',\n } as SxProps<Theme>,\n\n sxItemWrap: {\n position: 'relative',\n width: '100%',\n '&:hover .rail-pin-btn, &:focus-within .rail-pin-btn': {\n opacity: 1,\n transform: 'none',\n },\n } as SxProps<Theme>,\n\n sxItemButton: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 0,\n width: '100%',\n py: 0.5,\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n textDecoration: 'none',\n font: 'inherit',\n } as SxProps<Theme>,\n\n sxPinButton: (pinned: boolean): SxProps<Theme> => ({\n position: 'absolute',\n top: -2,\n right: 8,\n width: 22,\n height: 22,\n minWidth: 22,\n p: 0,\n borderRadius: '50%',\n bgcolor: 'm3.surfaceContainerHigh',\n color: pinned ? cmsColors.primary : 'm3.onSurfaceVariant',\n boxShadow: shadows.button,\n opacity: pinned ? 1 : 0,\n transform: pinned ? 'none' : 'scale(0.6)',\n transition:\n 'opacity 0.12s, transform 0.12s, background-color 0.12s, color 0.12s',\n zIndex: 2,\n '&:hover': {\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n },\n '& .MuiSvgIcon-root': {\n fontSize: 15,\n },\n }),\n\n sxPinDivider: {\n width: 32,\n height: '1px',\n bgcolor: cmsColors.border,\n my: 0.5,\n } as SxProps<Theme>,\n\n sxItemIconBox: (selected: boolean, accent?: 'ai'): SxProps<Theme> => {\n const active = activeColors(accent);\n return {\n position: 'relative',\n width: ITEM_WIDTH,\n height: ITEM_HEIGHT,\n borderRadius: '16px',\n display: 'grid',\n placeItems: 'center',\n transition: 'background-color 0.15s ease, color 0.15s ease',\n bgcolor: selected ? active.bg : 'transparent',\n color: selected ? active.on : 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: selected ? active.bg : cmsColors.surfaceHover,\n color: selected ? active.on : cmsColors.textStrong,\n },\n };\n },\n\n sxItemIcon: {\n fontSize: ICON_SIZE,\n } as SxProps<Theme>,\n\n sxItemLabel: (selected: boolean, accent?: 'ai'): SxProps<Theme> => ({\n fontSize: 12,\n fontWeight: 500,\n lineHeight: 1,\n textAlign: 'center',\n mt: '4px',\n color: selected ? activeColors(accent).on : cmsColors.textNav,\n }),\n\n sxChildrenChevron: {\n position: 'absolute',\n left: -8,\n top: '50%',\n transform: 'translateY(-50%)',\n fontSize: 14,\n color: cmsColors.textMuted,\n } as SxProps<Theme>,\n\n sxAccentDot: {\n position: 'absolute',\n top: -1,\n right: 6,\n width: 8,\n height: 8,\n borderRadius: '50%',\n bgcolor: stateColors.generating.on,\n boxShadow: `0 0 0 2px ${cmsColors.surface}`,\n } as SxProps<Theme>,\n\n sxChildrenMenuPaper: {\n mt: 0.5,\n borderRadius: radii.xl,\n bgcolor: cmsColors.surface,\n boxShadow: shadows.flyout,\n px: 1,\n } as SxProps<Theme>,\n\n sxChildrenMenuItem: (selected: boolean): SxProps<Theme> => ({\n minHeight: 44,\n borderRadius: '100px',\n px: 2,\n py: 1,\n gap: 1.25,\n color: cmsColors.textNav,\n bgcolor: selected ? cmsColors.secondary : 'transparent',\n '&:hover': {\n bgcolor: selected ? cmsColors.secondary : cmsColors.surfaceHover,\n },\n }),\n\n sxChildrenMenuListItemIcon: {\n minWidth: 34,\n color: 'm3.onSurfaceVariant',\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport PushPinOutlinedIcon from '@mui/icons-material/PushPinOutlined';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport { useCmsTranslation } from '../../i18n';\nimport type { CmsProfileServices } from '../../services/profile';\nimport type { NavItemPermissions, NavLinkItem } from '../../types/navigation';\nimport { toTestId } from '../../utils/toTestId';\nimport { DefaultCmsLink, type CmsLinkComponent } from '../link';\nimport {\n findModulePermission,\n getVisibleChildren,\n isItemActive,\n isPathActive,\n resolveNavHref,\n resolveNavLabel,\n} from './nav-helpers';\nimport { ACCOUNT_NAV_BLOCKS } from './nav-blocks';\nimport { SidebarRailStyles } from './SidebarRail.styles';\n\n/** Servicio de pines usado por el rail: solo necesita estos tres métodos. */\nexport type SidebarRailPinService = Pick<\n CmsProfileServices,\n 'addPins' | 'deletePins' | 'getPins'\n>;\n\n/**\n * `getPins()` devuelve `pines: unknown[]` sin tipar en el backend. Se acepta\n * tanto el string plano (mismo valor enviado a `addPins`) como un objeto que\n * lo traiga en `pin`/`module`, para no romper si el envelope cambia de forma.\n */\nfunction extractPinnedModule(entry: unknown): string | undefined {\n if (typeof entry === 'string') return entry;\n if (entry && typeof entry === 'object') {\n const { pin, module } = entry as { pin?: unknown; module?: unknown };\n if (typeof pin === 'string') return pin;\n if (typeof module === 'string') return module;\n }\n return undefined;\n}\n\nfunction RailItem({\n item,\n blockIndex,\n pathname,\n permissions,\n LinkComponent,\n legacyBaseUrl,\n selectedPublicationId,\n pinned,\n onTogglePin,\n}: {\n item: NavLinkItem;\n blockIndex: number;\n pathname: string;\n permissions: Array<NavItemPermissions>;\n LinkComponent: CmsLinkComponent;\n legacyBaseUrl?: string;\n selectedPublicationId?: string;\n pinned: boolean;\n onTogglePin: () => void;\n}) {\n // Mismo escopo que el Sidebar: `module` no es único (POSTS/PAYMENTS repetidos\n // en nav-blocks.ts) y no hay id de bloque estable, así que se usa el índice del\n // bloque para no duplicar testids cuando ambos ítems se ven a la vez.\n const blockScope = `block-${blockIndex}`;\n const { t } = useCmsTranslation();\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const menuOpen = Boolean(anchor);\n\n const permission = findModulePermission(permissions, item.module);\n const visibleChildren = getVisibleChildren(item, permissions);\n const hasChildren = visibleChildren.length > 0;\n if (!permission && !hasChildren) return null;\n\n const label = resolveNavLabel(item, t);\n const selected = hasChildren ? isItemActive(pathname, item) : isPathActive(pathname, item.href);\n const Icon = item.icon;\n const PinIcon = pinned ? PushPinIcon : PushPinOutlinedIcon;\n\n const content = (\n <>\n <Box sx={SidebarRailStyles.sxItemIconBox(selected, item.accent)}>\n <Icon sx={SidebarRailStyles.sxItemIcon} />\n {hasChildren && <ChevronRightIcon sx={SidebarRailStyles.sxChildrenChevron} />}\n {item.accent === 'ai' && !selected && <Box sx={SidebarRailStyles.sxAccentDot} />}\n </Box>\n <Box component=\"span\" sx={SidebarRailStyles.sxItemLabel(selected, item.accent)}>\n {label}\n </Box>\n </>\n );\n\n const pinButton = (\n <IconButton\n className=\"rail-pin-btn\"\n size=\"small\"\n data-testid={`toggle-pin-${blockScope}-${toTestId(item.module)}`}\n data-action={pinned ? 'unpin' : 'pin'}\n aria-label={pinned ? t.sidebar('unpin') : t.sidebar('pin')}\n title={pinned ? t.sidebar('unpin') : t.sidebar('pin')}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onTogglePin();\n }}\n sx={SidebarRailStyles.sxPinButton(pinned)}>\n <PinIcon />\n </IconButton>\n );\n\n if (hasChildren) {\n return (\n <Box sx={SidebarRailStyles.sxItemWrap}>\n <Box\n component=\"button\"\n type=\"button\"\n data-testid={`dropdown-toggle-nav-${blockScope}-${toTestId(item.module)}`}\n aria-label={label}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen ? 'true' : undefined}\n onClick={(e) => setAnchor(e.currentTarget)}\n sx={SidebarRailStyles.sxItemButton}>\n {content}\n </Box>\n {pinButton}\n <Menu\n anchorEl={anchor}\n open={menuOpen}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n transformOrigin={{ vertical: 'center', horizontal: 'left' }}\n slotProps={{\n paper: { sx: SidebarRailStyles.sxChildrenMenuPaper },\n list: { sx: { py: 1 } },\n }}>\n {visibleChildren.map((child) => {\n const ChildIcon = child.icon;\n return (\n <MenuItem\n key={child.href}\n data-testid={`dropdown-item-nav-${toTestId(child.module)}`}\n component={LinkComponent}\n href={resolveNavHref(child, legacyBaseUrl, selectedPublicationId)}\n onClick={() => setAnchor(null)}\n sx={SidebarRailStyles.sxChildrenMenuItem(isPathActive(pathname, child.href))}>\n <ListItemIcon sx={SidebarRailStyles.sxChildrenMenuListItemIcon}>\n <ChildIcon />\n </ListItemIcon>\n <ListItemText primary={resolveNavLabel(child, t)} />\n </MenuItem>\n );\n })}\n </Menu>\n </Box>\n );\n }\n\n return (\n <Box sx={SidebarRailStyles.sxItemWrap}>\n <Box\n component={LinkComponent}\n href={resolveNavHref(item, legacyBaseUrl, selectedPublicationId)}\n data-testid={`nav-${blockScope}-${toTestId(item.module)}`}\n sx={SidebarRailStyles.sxItemButton}>\n {content}\n </Box>\n {pinButton}\n </Box>\n );\n}\n\nexport type SidebarRailProps = {\n pathname: string;\n LinkComponent?: CmsLinkComponent;\n permissions: Array<NavItemPermissions>;\n /** Dominio del admin legacy (JSP/Angular) para prefijar hrefs con `item.legacy`. */\n legacyBaseUrl?: string;\n /** Id de publicación activa; se agrega a los ítems legacy con `appendPublicationId`. */\n selectedPublicationId?: string;\n /** Ítems de navegación. Por defecto, `ACCOUNT_NAV_BLOCKS`. */\n items?: NavLinkItem[];\n /**\n * Servicio de pines (`CmsProfileServices`, construido por el host con su\n * `axiosApi`/`authentication`). Si se omite, el anclado es solo visual y no\n * persiste entre sesiones.\n */\n profileServices?: SidebarRailPinService;\n};\n\n/**\n * Variante compacta del sidebar: rail vertical de íconos con etiqueta debajo,\n * sin modo expandido. Los ítems con hijos abren un menú flotante a la derecha.\n * Al pasar el mouse sobre un ítem aparece un botón para anclarlo arriba del\n * todo. El anclado se identifica por `item.module` y persiste vía\n * `profileServices.addPins`/`deletePins`/`getPins` (recurso de perfil).\n */\nexport function SidebarRail({\n pathname,\n permissions,\n LinkComponent = DefaultCmsLink,\n legacyBaseUrl,\n selectedPublicationId,\n items = ACCOUNT_NAV_BLOCKS,\n profileServices,\n}: SidebarRailProps) {\n const { t } = useCmsTranslation();\n const [pinnedModules, setPinnedModules] = useState<string[]>([]);\n\n useEffect(() => {\n if (!profileServices) return;\n let cancelled = false;\n profileServices\n .getPins()\n .then((response) => {\n if (cancelled) return;\n const modules = (response.pines ?? [])\n .map(extractPinnedModule)\n .filter((module): module is string => Boolean(module));\n setPinnedModules(modules);\n })\n .catch((error: unknown) => {\n console.error('[SidebarRail] getPins', error);\n });\n return () => {\n cancelled = true;\n };\n }, [profileServices]);\n\n const togglePin = (module: string) => {\n const wasPinned = pinnedModules.includes(module);\n const next = wasPinned\n ? pinnedModules.filter((m) => m !== module)\n : [...pinnedModules, module];\n setPinnedModules(next);\n\n if (!profileServices) return;\n const request = wasPinned\n ? profileServices.deletePins([module])\n : profileServices.addPins([module]);\n request.catch((error: unknown) => {\n console.error('[SidebarRail] togglePin', error);\n setPinnedModules(pinnedModules);\n });\n };\n\n const pinnedSet = new Set(pinnedModules);\n const pinnedItems = pinnedModules\n .map((module) => items.find((item) => item.module === module))\n .filter((item): item is NavLinkItem => Boolean(item));\n const unpinnedItems = items.filter((item) => !pinnedSet.has(item.module));\n\n return (\n <Box component=\"aside\" sx={SidebarRailStyles.sxRoot}>\n <Box sx={SidebarRailStyles.sxNavScroll}>\n <Box component=\"nav\" aria-label={t.sidebar('navAriaLabel')} sx={SidebarRailStyles.sxNav}>\n {pinnedItems.map((item) => (\n <RailItem\n key={item.href}\n item={item}\n blockIndex={items.indexOf(item)}\n pathname={pathname}\n permissions={permissions}\n LinkComponent={LinkComponent}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n pinned\n onTogglePin={() => togglePin(item.module)}\n />\n ))}\n {pinnedItems.length > 0 && <Box sx={SidebarRailStyles.sxPinDivider} />}\n {unpinnedItems.map((item) => (\n <RailItem\n key={item.href}\n item={item}\n blockIndex={items.indexOf(item)}\n pathname={pathname}\n permissions={permissions}\n LinkComponent={LinkComponent}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n pinned={false}\n onTogglePin={() => togglePin(item.module)}\n />\n ))}\n </Box>\n </Box>\n </Box>\n );\n}\n","/**\n * Redirección al admin viejo del CMS (JSP) replicando el `openExternalPage()` de\n * cmsmedios-ux: en vez de un enlace, se arma y envía un formulario POST oculto\n * al endpoint `auth/adminBack/login`, que re-establece la sesión en la pestaña\n * nueva y luego redirige a la ruta pedida (campo `r`).\n *\n * Es código de navegador (usa `document`): debe llamarse desde un handler de\n * cliente, no en SSR.\n */\n\n/** Datos de sesión que el form POST envía al admin viejo. */\nexport type LegacyAdminSession = {\n /** Token de autenticación (se envía en base64, igual que el Angular legacy). */\n token: string;\n browserId: string;\n siteName: string;\n publication: string | number;\n userName: string;\n /** Proyecto del CMS. Por defecto `'Offline'`. */\n project?: string;\n};\n\n/** Parámetros de dispositivo para la previsualización (protocolo/queryString). */\nexport type LegacyAdminDevice = {\n /** `'https'` (por defecto) o `'http'`. */\n protocol?: string;\n /** QueryString específico del formato de preview (viene del backend). */\n queryString?: string;\n};\n\nconst ADMIN_BACK_LOGIN_PATH =\n '/system/modules/com.tfsla.diario.webservices/auth/adminBack/login';\n\n/** Devuelve el host de una URL/origen, forzando https (como el Angular legacy). */\nfunction toHttpsOrigin(cmsBaseUrl: string): string {\n const host = cmsBaseUrl.replace(/^https?:\\/\\//, '').replace(/\\/$/, '');\n return `https://${host}`;\n}\n\n/** Crea un `<input type=\"hidden\">` con nombre y valor. */\nfunction hiddenInput(name: string, value: string): HTMLInputElement {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('id', name);\n input.setAttribute('name', name);\n input.setAttribute('value', value);\n return input;\n}\n\n/**\n * Arma y envía el formulario POST que abre una ruta del admin viejo en una\n * pestaña nueva, pasando la sesión del usuario (igual que cmsmedios).\n *\n * @param params.cmsBaseUrl - Origen del CMS (p. ej. `https://dev.cms-medios.com`).\n * @param params.path - Ruta destino dentro del CMS (campo `r`).\n * @param params.session - Datos de sesión a enviar (token, sitio, etc.).\n * @param params.device - Opcional: protocolo/queryString del preview.\n * @returns void\n */\nexport function submitLegacyAdminPage(params: {\n cmsBaseUrl: string;\n path: string;\n session: LegacyAdminSession;\n device?: LegacyAdminDevice;\n}): void {\n const { cmsBaseUrl, path, session, device } = params;\n const loginService = `${toHttpsOrigin(cmsBaseUrl)}${ADMIN_BACK_LOGIN_PATH}`;\n\n // Igual que el legacy: si hay queryString, se concatena a la ruta destino.\n let targetUrl = path;\n const queryString = device?.queryString ?? '';\n if (queryString.length) {\n targetUrl = queryString.includes('/')\n ? `${queryString}?path=${targetUrl}` // redirect\n : `${targetUrl}?${queryString}`; // Apache\n }\n\n const form = document.createElement('form');\n form.setAttribute('method', 'post');\n form.setAttribute('action', loginService);\n form.setAttribute('target', '_blank');\n\n form.appendChild(hiddenInput('token', btoa(session.token)));\n form.appendChild(hiddenInput('project', session.project ?? 'Offline'));\n form.appendChild(hiddenInput('browserId', session.browserId));\n form.appendChild(hiddenInput('siteName', session.siteName));\n form.appendChild(hiddenInput('publication', String(session.publication)));\n form.appendChild(hiddenInput('r', targetUrl));\n form.appendChild(hiddenInput('user', session.userName));\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport { cmsColors, radii, shadows } from '../../theme/variables';\n\nexport const SiteSelectorMenuStyles = {\n // Nameplate del header: píldora con logo + divisor + país + flecha.\n sxTriggerButton: (open: boolean): SxProps<Theme> => ({\n height: 38,\n borderRadius: radii.pill,\n border: 'none',\n color: cmsColors.textStrong,\n bgcolor: open ? cmsColors.secondaryHover : cmsColors.menuItemActive,\n textTransform: 'none',\n px: 1.5,\n py: 0,\n gap: 0,\n flexShrink: 0,\n '&:hover': {\n border: 'none',\n bgcolor: open ? cmsColors.secondaryHover : cmsColors.surfaceHover,\n },\n }),\n\n // Logo de la publicación seleccionada en el trigger (máx 70px de ancho).\n sxTriggerLogo: {\n display: 'block',\n maxWidth: 70,\n maxHeight: 20,\n width: 'auto',\n height: 'auto',\n objectFit: 'contain',\n } as SxProps<Theme>,\n\n sxTriggerDivider: {\n width: '1px',\n height: 18,\n flexShrink: 0,\n bgcolor: cmsColors.border,\n mx: 1.25,\n } as SxProps<Theme>,\n\n sxTriggerCountry: {\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1,\n color: cmsColors.textStrong,\n whiteSpace: 'nowrap',\n } as SxProps<Theme>,\n\n sxTriggerIcon: {\n fontSize: 20,\n ml: 0.5,\n } as SxProps<Theme>,\n\n // Panel flotante: superficie elevada, redondeado y con scroll (look del nuevo diseño).\n sxMenuPaper: {\n mt: 1,\n marginTop: 0,\n bgcolor: cmsColors.menuSurface,\n border: `1px solid ${cmsColors.border}`,\n borderRadius: '20px',\n boxShadow: shadows.menuSoft,\n width: 420,\n maxWidth: '92vw',\n maxHeight: 560,\n overflow: 'hidden',\n p: 1,\n } as SxProps<Theme>,\n\n sxMenuList: {\n p: 0,\n maxHeight: 540,\n overflowY: 'auto',\n } as SxProps<Theme>,\n\n // Cada marca/sitio es una sección; separador superior salvo la primera.\n sxSection: (isFirst: boolean): SxProps<Theme> => ({\n pt: isFirst ? 0 : 0.75,\n mt: isFirst ? 0 : 0.5,\n borderTop: isFirst ? 'none' : `1px solid ${cmsColors.border}`,\n }),\n\n sxSectionTitle: {\n px: 1.5,\n pt: 1,\n pb: 0.5,\n fontSize: 12,\n fontWeight: 500,\n letterSpacing: '0.07em',\n textTransform: 'uppercase',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n // Fila de opción (publicación). `isSub` la indenta como sub-sitio.\n sxOption: (selected: boolean, isSub: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n width: '100%',\n height: 48,\n minHeight: 48,\n boxSizing: 'border-box',\n pl: isSub ? 1.5 : 1.5,\n pr: 1.5,\n py: 0.5,\n borderRadius: '14px',\n bgcolor: selected ? cmsColors.secondary : 'transparent',\n // Hover: state layer M3 `onSurface` al 8% (#191C20), común a los desplegables.\n '&:hover': {\n bgcolor: selected ? cmsColors.secondary : cmsColors.neutralHover,\n },\n '&.Mui-selected': {\n bgcolor: cmsColors.secondary,\n '&:hover': { bgcolor: cmsColors.secondary },\n },\n }),\n\n // Zona inicial de la fila (punto / check / flecha). Más ancha en sub-filas\n // para alinear con la línea-guía vertical.\n sxLead: (isSub: boolean): SxProps<Theme> => ({\n width: isSub ? 42 : 28,\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n }),\n\n sxLeadDot: {\n width: 5,\n height: 5,\n borderRadius: radii.pill,\n bgcolor: cmsColors.border,\n } as SxProps<Theme>,\n\n sxLeadCheck: {\n fontSize: 20,\n color: cmsColors.onSecondaryContainer,\n } as SxProps<Theme>,\n\n // Flecha que despliega los sub-sitios; rota 90° al abrir.\n sxTwist: (open: boolean): SxProps<Theme> => ({\n width: 28,\n height: 28,\n minWidth: 0,\n p: 0,\n borderRadius: radii.pill,\n display: 'grid',\n placeItems: 'center',\n color: 'm3.onSurfaceVariant',\n transition: 'transform .15s, background-color .12s',\n transform: open ? 'rotate(90deg)' : 'none',\n '&:hover': { bgcolor: 'action.hover' },\n }),\n\n sxName: (selected: boolean, isSub: boolean): SxProps<Theme> => ({\n flex: 1,\n minWidth: 0,\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1.4,\n color: selected\n ? cmsColors.onSecondaryContainer\n : isSub\n ? 'm3.onSurfaceVariant'\n : cmsColors.textStrong,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n\n // Contador de sub-sitios (solo cuando la publicación trae hijos).\n sxCount: (selected: boolean): SxProps<Theme> => ({\n flexShrink: 0,\n fontSize: 11,\n fontWeight: 600,\n lineHeight: 1,\n px: 0.875,\n py: '3px',\n borderRadius: radii.pill,\n bgcolor: selected ? cmsColors.surface : cmsColors.menuItemActive,\n color: selected ? cmsColors.onSecondaryContainer : cmsColors.textNav,\n }),\n\n sxLogoWrap: {\n ml: 'auto',\n pl: 1.25,\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxLogoImg: {\n display: 'block',\n maxWidth: 70,\n maxHeight: 24,\n width: 'auto',\n height: 'auto',\n objectFit: 'contain',\n } as SxProps<Theme>,\n\n // Contenedor de sub-sitios con línea-guía vertical a la izquierda.\n sxKids: {\n position: 'relative',\n my: 0.25,\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: 25,\n top: 2,\n bottom: 8,\n width: '1.5px',\n bgcolor: cmsColors.border,\n borderRadius: '2px',\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CheckIcon from '@mui/icons-material/Check';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { useState } from 'react';\n\nimport type { Publication } from '../../types/publication';\nimport type { SiteSection } from '../../types/site';\nimport { findPublicationLabel } from '../../utils/site-selector';\nimport { toTestId } from '../../utils/toTestId';\nimport { SiteSelectorMenuStyles } from './SiteSelectorMenu.styles';\n\n/** ¿La publicación trae sub-sitios (multisitio)? */\nfunction hasChildren(publication: Publication): boolean {\n return Boolean(publication.children && publication.children.length > 0);\n}\n\n/**\n * Fila de una publicación. Si tiene hijos, muestra la flecha para desplegarlos\n * y un contador; si no, un punto (o el check cuando está seleccionada).\n */\nfunction SiteMenuItem({\n publication,\n selected,\n isSub,\n href,\n imageUrl,\n expanded,\n onToggle,\n}: {\n publication: Publication;\n selected: boolean;\n isSub: boolean;\n href: string;\n imageUrl?: string;\n expanded?: boolean;\n onToggle?: () => void;\n}) {\n const parent = hasChildren(publication);\n\n return (\n <a href={href} style={{ textDecoration: 'none', color: 'inherit' }}>\n <MenuItem\n selected={selected}\n data-testid={`link-site-${toTestId(publication.id)}`}\n sx={SiteSelectorMenuStyles.sxOption(selected, isSub)}>\n <Box sx={SiteSelectorMenuStyles.sxLead(isSub)}>\n {parent ? (\n <Box\n component=\"span\"\n role=\"button\"\n data-testid={`toggle-site-children-${toTestId(publication.id)}`}\n data-action={expanded ? 'collapse' : 'expand'}\n aria-label=\"expand\"\n onClick={(event) => {\n // Desplegar/plegar sin navegar a la publicación.\n event.preventDefault();\n event.stopPropagation();\n onToggle?.();\n }}\n sx={SiteSelectorMenuStyles.sxTwist(Boolean(expanded))}>\n <KeyboardArrowRightIcon sx={{ fontSize: 20 }} />\n </Box>\n ) : selected ? (\n <CheckIcon sx={SiteSelectorMenuStyles.sxLeadCheck} />\n ) : (\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxLeadDot} />\n )}\n </Box>\n\n <Typography sx={SiteSelectorMenuStyles.sxName(selected, isSub)}>\n {publication.description}\n </Typography>\n\n {parent ? (\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxCount(selected)}>\n {publication.children!.length}\n </Box>\n ) : null}\n\n {imageUrl ? (\n <Box sx={SiteSelectorMenuStyles.sxLogoWrap}>\n <Box\n component=\"img\"\n src={imageUrl}\n alt={publication.description}\n sx={SiteSelectorMenuStyles.sxLogoImg}\n />\n </Box>\n ) : null}\n </MenuItem>\n </a>\n );\n}\n\nexport type SiteSelectorMenuProps = {\n sites: SiteSection[];\n selectedPublicationId?: string;\n getPublicationHref: (publication: Publication) => string;\n resolvePublicationImageUrl?: (imagePath: string) => string;\n};\n\nexport function SiteSelectorMenu({\n sites,\n selectedPublicationId,\n getPublicationHref,\n resolvePublicationImageUrl,\n}: SiteSelectorMenuProps) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n\n // Sub-sitios desplegados. Arranca con los padres del seleccionado abiertos.\n const [expandedIds, setExpandedIds] = useState<Set<number>>(() => {\n const initial = new Set<number>();\n sites.forEach((section) =>\n section.publications.forEach((publication) => {\n if (\n hasChildren(publication) &&\n publication.children!.some(\n (child) => String(child.id) === selectedPublicationId,\n )\n ) {\n initial.add(publication.id);\n }\n }),\n );\n return initial;\n });\n\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const toggleExpanded = (id: number) => {\n setExpandedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const isSelected = (publication: Publication) =>\n Number(selectedPublicationId) === publication.id;\n\n const resolveImage = (publication: Publication) =>\n publication.imagePath && resolvePublicationImageUrl\n ? resolvePublicationImageUrl(publication.imagePath)\n : undefined;\n\n const labelId = selectedPublicationId ?? '';\n\n // Publicación seleccionada (incluye sub-sitios) para el nameplate del header.\n const selectedPublication = sites\n .flatMap((section) =>\n section.publications.flatMap((publication) => [\n publication,\n ...(publication.children ?? []),\n ]),\n )\n .find((publication) => String(publication.id) === labelId);\n const triggerLabel = selectedPublication?.description\n ? selectedPublication.description\n : findPublicationLabel(sites, labelId);\n const triggerLogo = selectedPublication\n ? resolveImage(selectedPublication)\n : undefined;\n\n return (\n <>\n <Button\n id=\"site-selector-button\"\n data-testid=\"dropdown-toggle-site-selector\"\n aria-controls={open ? 'site-selector-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n variant=\"outlined\"\n onClick={handleOpen}\n endIcon={\n <KeyboardArrowDownIcon sx={SiteSelectorMenuStyles.sxTriggerIcon} />\n }\n sx={SiteSelectorMenuStyles.sxTriggerButton(open)}>\n {triggerLogo ? (\n <Box\n component=\"img\"\n src={triggerLogo}\n alt=\"\"\n sx={SiteSelectorMenuStyles.sxTriggerLogo}\n />\n ) : null}\n {triggerLogo ? (\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxTriggerDivider} />\n ) : null}\n <Box component=\"span\" sx={SiteSelectorMenuStyles.sxTriggerCountry}>\n {triggerLabel}\n </Box>\n </Button>\n\n <Menu\n id=\"site-selector-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: SiteSelectorMenuStyles.sxMenuPaper,\n },\n list: {\n 'aria-labelledby': 'site-selector-button',\n disablePadding: true,\n sx: SiteSelectorMenuStyles.sxMenuList,\n },\n }}>\n {sites.map((section, sectionIndex) => (\n <Box\n key={section.title}\n sx={SiteSelectorMenuStyles.sxSection(sectionIndex === 0)}>\n <Typography sx={SiteSelectorMenuStyles.sxSectionTitle}>\n {section.title}\n </Typography>\n\n {section.publications.map((publication) => {\n const parent = hasChildren(publication);\n const expanded = expandedIds.has(publication.id);\n\n return (\n <Box key={publication.id}>\n <SiteMenuItem\n publication={publication}\n selected={isSelected(publication)}\n isSub={false}\n href={getPublicationHref(publication)}\n imageUrl={resolveImage(publication)}\n expanded={expanded}\n onToggle={() => toggleExpanded(publication.id)}\n />\n\n {parent && expanded ? (\n <Box sx={SiteSelectorMenuStyles.sxKids}>\n {publication.children!.map((child) => (\n <SiteMenuItem\n key={child.id}\n publication={child}\n selected={isSelected(child)}\n isSub\n href={getPublicationHref(child)}\n imageUrl={resolveImage(child)}\n />\n ))}\n </Box>\n ) : null}\n </Box>\n );\n })}\n </Box>\n ))}\n </Menu>\n </>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows } from '../../theme/variables';\n\n/**\n * Estilos del menú \"Apariencia\" del TopBar: switch \"Tema nuevo\" + segmentado\n * Claro/Oscuro (dos botones UNIDOS, look de píldora segmentada). Los colores\n * usan tokens mode-aware (los hexes de diseño son los de modo claro; en oscuro\n * se adaptan solos): `m3.onSurfaceVariant` (#43474E), `text.primary` (#191C20),\n * `onSecondaryContainer` (#2C4678) y `m3.outline` (#74777F).\n */\nexport const AppearanceMenuStyles = {\n /** Paper del popover — ancho FIJO (no varía al mostrar/ocultar el texto de ayuda). */\n sxPaper: {\n mt: 1,\n p: 2,\n width: 280,\n borderRadius: radii.lg,\n bgcolor: cmsColors.menuSurface,\n boxShadow: shadows.menu,\n fontFamily: fontFamilies.googleSans,\n } as SxProps<Theme>,\n\n /** Título \"Apariencia\": Google Sans 14px #43474E. */\n sxTitle: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n color: 'm3.onSurfaceVariant',\n mb: 1.5,\n } as SxProps<Theme>,\n\n /** Fila del switch (label a la izquierda, switch a la derecha). */\n sxRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n } as SxProps<Theme>,\n\n /** Label principal (\"Tema nuevo\"): Google Sans 15px #191C20. */\n sxRowLabel: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 15,\n fontWeight: 500,\n color: 'text.primary',\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n /** Subtítulo (\"Interfaz rediseñada\"): Google Sans 12px #43474E, +5px de separación del título. */\n sxRowSub: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 12,\n color: 'm3.onSurfaceVariant',\n lineHeight: 1.3,\n mt: '5px',\n } as SxProps<Theme>,\n\n /** Switch 52×25, con el azul primario del CMS al estar activo. */\n sxSwitch: {\n width: 52,\n height: 25,\n padding: 0,\n display: 'flex',\n '& .MuiSwitch-switchBase': {\n padding: 0,\n margin: '3.5px',\n '&.Mui-checked': {\n transform: 'translateX(27px)',\n color: cmsColors.white,\n '& + .MuiSwitch-track': {\n backgroundColor: cmsColors.primary,\n opacity: 1,\n },\n },\n },\n '& .MuiSwitch-thumb': { width: 18, height: 18, boxShadow: 'none' },\n '& .MuiSwitch-track': {\n borderRadius: '999px',\n backgroundColor: cmsColors.controlBorder,\n opacity: 1,\n },\n } as SxProps<Theme>,\n\n /** Separador. */\n sxDivider: {\n my: 1.5,\n borderColor: cmsColors.border,\n } as SxProps<Theme>,\n\n /** Caption \"MODO\": Google Sans 12px #43474E en mayúsculas. */\n sxCaption: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 12,\n fontWeight: 600,\n letterSpacing: '0.5px',\n textTransform: 'uppercase',\n color: 'm3.onSurfaceVariant',\n mb: 1,\n } as SxProps<Theme>,\n\n /**\n * Segmentado UNIDO: dos botones de 120×40 pegados, con extremos redondeados\n * (píldora) y un divisor central. Borde #74777F.\n */\n sxToggleGroup: {\n display: 'inline-flex',\n width: 'fit-content',\n '& .MuiToggleButtonGroup-grouped': {\n width: 120,\n height: 40,\n margin: 0,\n border: '1px solid',\n borderColor: 'm3.outline',\n textTransform: 'none',\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n gap: '6px',\n // Label del botón inactivo (p. ej. \"Oscuro\"): #191C20.\n color: 'text.primary',\n '& .MuiSvgIcon-root': { fontSize: 18 },\n // Botón izquierdo: extremo izquierdo redondeado, sin borde derecho (el divisor lo pone el derecho).\n '&:first-of-type': {\n borderTopLeftRadius: radii.pill,\n borderBottomLeftRadius: radii.pill,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n borderRight: 0,\n },\n // Botón derecho: extremo derecho redondeado, con el borde divisor a la izquierda.\n '&:last-of-type': {\n borderTopRightRadius: radii.pill,\n borderBottomRightRadius: radii.pill,\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderLeft: '1px solid',\n borderColor: 'm3.outline',\n marginLeft: 0,\n },\n '&:hover': { backgroundColor: cmsColors.surfaceHover },\n // Botón activo (p. ej. \"Claro\"): texto #2C4678 sobre contenedor secundario.\n '&.Mui-selected': {\n backgroundColor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n borderColor: 'm3.outline',\n '&:hover': { backgroundColor: cmsColors.secondary },\n },\n '&.Mui-disabled': {\n opacity: 0.45,\n color: 'text.disabled',\n borderColor: 'm3.outline',\n },\n },\n } as SxProps<Theme>,\n\n /** Texto de ayuda cuando el switch está apagado. */\n sxHelper: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 12,\n color: 'm3.onSurfaceVariant',\n mt: 1.5,\n lineHeight: 1.4,\n } as SxProps<Theme>,\n};\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, shadows } from '../../theme/variables';\n\nconst CLOCK_TIME_SIZE = 13;\nconst CLOCK_META_SIZE = 11;\n\nexport const ICON_SLOT_SIZE = 48;\nexport const HEADER_HEIGHT = 48;\nexport const FRAME_GAP = '15px';\nconst DIVIDER_HEIGHT = 27.6;\n\nexport const TopBarStyles = {\n sxAppBar: {\n bgcolor: 'm3.surfaceContainer',\n color: 'm3.onSurfaceVariant',\n height: HEADER_HEIGHT,\n } as SxProps<Theme>,\n\n sxToolbar: {\n minHeight: HEADER_HEIGHT,\n height: HEADER_HEIGHT,\n pl: '10px',\n pr: 2,\n gap: 1.5,\n } as SxProps<Theme>,\n\n sxMenuButton: {\n width: 40,\n height: 40,\n flexShrink: 0,\n borderRadius: '100px',\n color: 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: cmsColors.surfaceHover,\n },\n } as SxProps<Theme>,\n\n sxMenuButtonIcon: {\n fontSize: 24,\n } as SxProps<Theme>,\n\n sxLogoBox: {\n width: 200,\n height: 50,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n my: 'auto',\n } as SxProps<Theme>,\n\n sxActionsFrame: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: FRAME_GAP,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxIconActionsRow: {\n display: 'flex',\n alignItems: 'center',\n height: ICON_SLOT_SIZE,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxActionIcon: {\n width: ICON_SLOT_SIZE,\n height: ICON_SLOT_SIZE,\n color: 'm3.onSurfaceVariant',\n borderRadius: '50%',\n } as SxProps<Theme>,\n\n sxActionIconGlyph: {\n fontSize: 24,\n } as SxProps<Theme>,\n\n sxBadge: {\n '& .MuiBadge-badge': {\n fontSize: 11,\n fontWeight: 500,\n minWidth: 16,\n height: 16,\n px: 0.5,\n top: 10,\n right: 10,\n },\n } as SxProps<Theme>,\n\n sxDivider: {\n width: '1px',\n height: DIVIDER_HEIGHT,\n flexShrink: 0,\n bgcolor: cmsColors.border,\n } as SxProps<Theme>,\n\n sxClock: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxClockIcon: {\n fontSize: 20,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n sxClockText: {\n display: 'flex',\n flexDirection: 'column',\n } as SxProps<Theme>,\n\n sxClockTime: {\n fontSize: CLOCK_TIME_SIZE,\n fontWeight: 600,\n lineHeight: 1.2,\n color: cmsColors.textStrong,\n } as SxProps<Theme>,\n\n sxClockMeta: {\n fontSize: CLOCK_META_SIZE,\n lineHeight: 1.2,\n color: cmsColors.textNav,\n } as SxProps<Theme>,\n\n sxProfileButton: {\n p: 0,\n width: 34,\n height: 34,\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxProfileAvatar: {\n width: 34,\n height: 34,\n border: `1px solid ${cmsColors.avatarBorder}`,\n bgcolor: cmsColors.avatarBg,\n } as SxProps<Theme>,\n\n sxProfileMenuPaper: {\n mt: 1,\n minWidth: 220,\n borderRadius: 2,\n bgcolor: cmsColors.menuSurface,\n py: 0.5,\n boxShadow: shadows.menu,\n } as SxProps<Theme>,\n\n sxProfileMenuItem: {\n py: 1.25,\n px: 2,\n fontSize: 14,\n color: cmsColors.textStrong,\n // Hover: state layer M3 `onSurface` al 8% (#191C20), común a los desplegables.\n '&:hover': {\n bgcolor: cmsColors.neutralHover,\n },\n } as SxProps<Theme>,\n\n sxProfileMenuListItemIcon: {\n minWidth: 36,\n color: 'm3.onSurfaceVariant',\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n },\n } as SxProps<Theme>,\n\n sxProfileMenuDivider: {\n my: 0.5,\n borderColor: cmsColors.border,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport DarkModeOutlinedIcon from '@mui/icons-material/DarkModeOutlined';\nimport LightModeOutlinedIcon from '@mui/icons-material/LightModeOutlined';\nimport PaletteOutlinedIcon from '@mui/icons-material/PaletteOutlined';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Popover from '@mui/material/Popover';\nimport Switch from '@mui/material/Switch';\nimport ToggleButton from '@mui/material/ToggleButton';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { useColorScheme } from '@mui/material/styles';\nimport { useEffect, useState, type MouseEvent } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport {\n readThemePreference,\n writeThemePreference,\n type ThemeMode,\n} from '../../theme/themePreference';\nimport { AppearanceMenuStyles } from './AppearanceMenu.styles';\nimport { TopBarStyles } from './TopBar.styles';\n\n/**\n * Menú \"Apariencia\" del TopBar (ícono de paleta). Un switch \"Tema nuevo\"\n * habilita la selección de modo; con el switch apagado se fuerza el modo claro\n * y el segmentado Claro/Oscuro queda deshabilitado. Al elegir \"Oscuro\" se\n * togglea el `data-mui-color-scheme` de MUI y todo el sitio pasa a oscuro.\n *\n * La selección se **persiste en `localStorage`** (helper `themePreference`), así\n * el menú recuerda el switch y el modo, y el gestor abre en ese tema (por\n * gestor: localStorage está aislado por origen). Solo afecta estilos: no toca\n * datos ni funcionalidad del gestor.\n */\nexport function AppearanceMenu() {\n const { t } = useCmsTranslation();\n const { setMode } = useColorScheme();\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n // \"Tema nuevo\": habilita la selección de modo. Apagado → se fuerza claro.\n const [enabled, setEnabled] = useState(true);\n // Modo elegido por el usuario (se recuerda aunque se apague el switch).\n const [desiredMode, setDesiredMode] = useState<ThemeMode>('light');\n\n const open = Boolean(anchorEl);\n const title = t.topBar('appearance');\n\n // Hidratar desde localStorage tras el montaje (no en el initializer de\n // useState, para no romper la hidratación server/cliente: el SSR arranca con\n // los defaults). Mismo criterio que el `locale` del login.\n useEffect(() => {\n const pref = readThemePreference();\n /* eslint-disable react-hooks/set-state-in-effect -- sync único desde localStorage en el mount (evita mismatch de hidratación) */\n setEnabled(pref.enabled);\n setDesiredMode(pref.mode);\n /* eslint-enable react-hooks/set-state-in-effect */\n }, []);\n\n // Aplicar el modo efectivo a MUI cada vez que cambie (hidratación o usuario).\n // La persistencia se hace en los handlers (no acá) para no pisar el\n // localStorage con los defaults antes de hidratar.\n useEffect(() => {\n setMode(enabled ? desiredMode : 'light');\n }, [enabled, desiredMode, setMode]);\n\n const handleEnabledChange = (checked: boolean) => {\n setEnabled(checked);\n writeThemePreference({ enabled: checked, mode: desiredMode });\n };\n\n const handleModeChange = (\n _event: MouseEvent<HTMLElement>,\n value: ThemeMode | null,\n ) => {\n if (value && enabled) {\n setDesiredMode(value);\n writeThemePreference({ enabled, mode: value });\n }\n };\n\n const selected: ThemeMode = enabled ? desiredMode : 'light';\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n onClick={(event) => setAnchorEl(event.currentTarget)}\n aria-label={title}\n aria-haspopup=\"true\"\n aria-expanded={open}\n data-testid=\"dropdown-toggle-appearance\"\n sx={TopBarStyles.sxActionIcon}>\n <PaletteOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: AppearanceMenuStyles.sxPaper,\n ...({ 'data-testid': 'dropdown-menu-appearance' } as object),\n },\n }}>\n <Typography sx={AppearanceMenuStyles.sxTitle}>{title}</Typography>\n\n <Box sx={AppearanceMenuStyles.sxRow}>\n <Box>\n <Typography sx={AppearanceMenuStyles.sxRowLabel}>\n {t.topBar('newTheme')}\n </Typography>\n <Typography sx={AppearanceMenuStyles.sxRowSub}>\n {t.topBar('newThemeSubtitle')}\n </Typography>\n </Box>\n <Switch\n checked={enabled}\n onChange={(event) => handleEnabledChange(event.target.checked)}\n data-testid=\"check-new-theme\"\n sx={AppearanceMenuStyles.sxSwitch}\n slotProps={{ input: { 'aria-label': t.topBar('newTheme') } }}\n />\n </Box>\n\n <Divider sx={AppearanceMenuStyles.sxDivider} />\n\n <Typography sx={AppearanceMenuStyles.sxCaption}>\n {t.topBar('modeLabel')}\n </Typography>\n\n <ToggleButtonGroup\n exclusive\n value={selected}\n onChange={handleModeChange}\n disabled={!enabled}\n aria-label={t.topBar('modeLabel')}\n sx={AppearanceMenuStyles.sxToggleGroup}>\n <ToggleButton\n value=\"light\"\n aria-label={t.topBar('modeLight')}\n data-testid=\"btn-theme-light\"\n data-action=\"light\">\n <LightModeOutlinedIcon />\n {t.topBar('modeLight')}\n </ToggleButton>\n <ToggleButton\n value=\"dark\"\n aria-label={t.topBar('modeDark')}\n data-testid=\"btn-theme-dark\"\n data-action=\"dark\">\n <DarkModeOutlinedIcon />\n {t.topBar('modeDark')}\n </ToggleButton>\n </ToggleButtonGroup>\n\n {!enabled && (\n <Typography sx={AppearanceMenuStyles.sxHelper}>\n {t.topBar('classicUnavailable')}\n </Typography>\n )}\n </Popover>\n </>\n );\n}\n","import type { NewMenuMessageKey } from '../../i18n';\n\n/**\n * Ítem del menú \"Nuevo\" (botón \"+\"). Replica la estructura del header del CMS\n * Angular legacy (`newContent` de cmsmedios): cada ítem declara su clave i18n y\n * el/los permiso(s) de operación que habilitan su visibilidad.\n */\nexport type NewContentItem = {\n /** Identificador estable; lo recibe `onNewContentSelect` al hacer clic. */\n id: string;\n /** Clave i18n del namespace `newMenu`. */\n labelKey: NewMenuMessageKey;\n /**\n * Permiso(s) de operación requeridos (p. ej. `NEWS_CREATE`). Si es un array,\n * se exigen TODOS (criterio NAA-4038 del Angular legacy). Si se omite, el ítem\n * no requiere permiso.\n */\n permission?: string | string[];\n};\n\n/** Columna del menú \"Nuevo\" (Frecuentes / Otros / Videos). */\nexport type NewContentGroup = {\n /** Clave i18n del título de la columna (namespace `newMenu`). */\n titleKey: NewMenuMessageKey;\n items: NewContentItem[];\n};\n\n/**\n * Estructura por defecto del menú \"Nuevo\", equivalente al `newContent` del\n * header de cmsmedios (frecuentes / otros / videos) con sus permisos. El gestor\n * puede sobreescribirla por props si su producto difiere.\n */\nexport const DEFAULT_NEW_CONTENT_GROUPS: NewContentGroup[] = [\n {\n titleKey: 'frequentsTitle',\n items: [\n { id: 'news', labelKey: 'post', permission: 'NEWS_CREATE' },\n { id: 'trivias', labelKey: 'trivia', permission: 'TRIVIAS_CREATE' },\n { id: 'polls', labelKey: 'poll', permission: 'POLLS_CREATE' },\n { id: 'listas', labelKey: 'listicle', permission: 'NEWS_CREATE' },\n ],\n },\n {\n titleKey: 'othersTitle',\n items: [\n { id: 'tag', labelKey: 'tag', permission: 'TAGS_CREATE' },\n { id: 'gamecast', labelKey: 'gamecast', permission: 'NEWS_CREATE' },\n { id: 'liveblog', labelKey: 'liveblog', permission: 'NEWS_CREATE' },\n { id: 'aiPost', labelKey: 'aiPost', permission: 'IA_NEWS_CREATE' },\n { id: 'aiListicle', labelKey: 'aiListicle', permission: 'IA_NEWS_CREATE' },\n ],\n },\n {\n titleKey: 'videosTitle',\n items: [\n {\n id: 'videoNative',\n labelKey: 'videoNative',\n permission: ['VIDEOS_UPLOAD', 'VIDEOS_NATIVE'],\n },\n { id: 'videoEmbedded', labelKey: 'videoEmbedded', permission: 'VIDEOS_UPLOAD' },\n { id: 'videoYoutube', labelKey: 'videoYoutube', permission: 'VIDEOS_UPLOAD' },\n ],\n },\n];\n\n/**\n * Decide si un ítem es visible según los permisos de operación del usuario.\n *\n * - Si `operationPermissions` es `undefined`, no hay gating (se muestra todo);\n * útil para maquetado/mock antes de cablear `/auth/permissions`.\n * - Si el usuario es admin, ve todo.\n * - Si el ítem no declara permiso, se muestra.\n * - Con un array de permisos, se exigen todos.\n *\n * @param item - Ítem a evaluar.\n * @param operationPermissions - Nombres de operaciones concedidas al usuario.\n * @param isAdmin - Si el usuario es administrador.\n * @returns `true` si el ítem debe mostrarse.\n */\nexport function isNewContentItemVisible(\n item: NewContentItem,\n operationPermissions: string[] | undefined,\n isAdmin: boolean | undefined,\n): boolean {\n if (operationPermissions === undefined) return true;\n if (isAdmin) return true;\n if (!item.permission) return true;\n const required = Array.isArray(item.permission)\n ? item.permission\n : [item.permission];\n return required.every((name) => operationPermissions.includes(name));\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, shadows } from '../../theme/variables';\n\nexport const NewContentMenuStyles = {\n sxMenuPaper: {\n mt: 1,\n borderRadius: 2,\n bgcolor: cmsColors.menuSurface,\n py: 2,\n px: 1,\n boxShadow: shadows.menu,\n } as SxProps<Theme>,\n\n sxContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-start',\n gap: 4,\n px: 2,\n } as SxProps<Theme>,\n\n sxColumn: {\n display: 'flex',\n flexDirection: 'column',\n minWidth: 132,\n } as SxProps<Theme>,\n\n sxColumnTitle: {\n fontSize: 13,\n fontWeight: 500,\n color: cmsColors.textMuted,\n mb: 1,\n } as SxProps<Theme>,\n\n sxItem: {\n fontSize: 14,\n color: cmsColors.textStrong,\n py: 1,\n px: 1,\n borderRadius: 1,\n cursor: 'pointer',\n textDecoration: 'none',\n display: 'block',\n // Hover: state layer M3 `onSurface` al 8% (#191C20), común a los desplegables.\n '&:hover': {\n bgcolor: cmsColors.neutralHover,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport AddOutlinedIcon from '@mui/icons-material/AddOutlined';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport { useMemo, useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport {\n DEFAULT_NEW_CONTENT_GROUPS,\n isNewContentItemVisible,\n type NewContentGroup,\n type NewContentItem,\n} from './newContentMenu.config';\nimport { NewContentMenuStyles } from './NewContentMenu.styles';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type NewContentMenuProps = {\n /** Columnas e ítems del menú. Por defecto, la estructura del CMS legacy. */\n groups?: NewContentGroup[];\n /**\n * Nombres de operaciones concedidas al usuario (de `POST /auth/permissions`).\n * Si se omite, no hay filtrado por permisos (se muestran todos los ítems).\n */\n operationPermissions?: string[];\n /** Si el usuario es administrador (ve todos los ítems). */\n isAdmin?: boolean;\n /**\n * Dominio del deploy nuevo (master) al que se redirige, p. ej.\n * `https://master.d1c5iid93veq15.amplifyapp.com`. Se navega a\n * `<legacyBaseUrl><getRedirectPath(id)>` en una pestaña nueva.\n */\n legacyBaseUrl?: string;\n /**\n * Ruta/parámetro por ítem que se concatena a `legacyBaseUrl`. Por defecto\n * `/?new=<id>`: el deploy destino lee `new` y dispara la creación.\n */\n getRedirectPath?: (itemId: string) => string;\n /**\n * Fallback cuando no hay `legacyBaseUrl`: se invoca con el `id` del ítem\n * (punto de integración para maquetado).\n */\n onSelect?: (itemId: string) => void;\n};\n\n/** Ruta destino por defecto: el deploy leerá `?new=<id>` y disparará la acción. */\nfunction defaultNewRedirectPath(itemId: string): string {\n return `/?new=${encodeURIComponent(itemId)}`;\n}\n\n/** Une dominio + ruta sin barra doble. */\nfunction joinUrl(baseUrl: string, path: string): string {\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\n/**\n * Menú desplegable del botón \"Nuevo\" (+) del header. Replica las tres columnas\n * del header de cmsmedios (Frecuentes / Otros / Videos) con visibilidad por\n * permisos. El comportamiento de cada ítem lo resuelve el gestor.\n */\nexport function NewContentMenu({\n groups = DEFAULT_NEW_CONTENT_GROUPS,\n operationPermissions,\n isAdmin,\n legacyBaseUrl,\n getRedirectPath = defaultNewRedirectPath,\n onSelect,\n}: NewContentMenuProps) {\n const { t } = useCmsTranslation();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const handleClose = () => setAnchorEl(null);\n\n /** Filtra ítems por permiso y descarta columnas que quedan vacías. */\n const visibleGroups = useMemo(\n () =>\n groups\n .map((group) => ({\n ...group,\n items: group.items.filter((item) =>\n isNewContentItemVisible(item, operationPermissions, isAdmin),\n ),\n }))\n .filter((group) => group.items.length > 0),\n [groups, operationPermissions, isAdmin],\n );\n\n /**\n * Ejecuta la acción del ítem: navega al deploy master con el parámetro\n * (`<legacyBaseUrl>/?new=<id>`) en pestaña nueva; sin `legacyBaseUrl`, delega\n * en `onSelect`. Cierra el menú.\n * @param item - Ítem clickeado.\n * @returns void\n */\n const handleItemClick = (item: NewContentItem) => {\n if (legacyBaseUrl && typeof window !== 'undefined') {\n window.open(\n joinUrl(legacyBaseUrl, getRedirectPath(item.id)),\n '_blank',\n 'noopener',\n );\n } else {\n onSelect?.(item.id);\n }\n handleClose();\n };\n\n const title = t.topBar('new');\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n aria-label={title}\n aria-haspopup=\"true\"\n aria-expanded={open}\n onClick={(event: MouseEvent<HTMLElement>) =>\n setAnchorEl(event.currentTarget)\n }\n data-testid=\"dropdown-toggle-new-content\"\n sx={TopBarStyles.sxActionIcon}>\n <AddOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{\n paper: { sx: NewContentMenuStyles.sxMenuPaper },\n list: {\n sx: { p: 0 },\n ...({ 'data-testid': 'dropdown-menu-new-content' } as object),\n },\n }}>\n <Box sx={NewContentMenuStyles.sxContainer}>\n {visibleGroups.map((group) => (\n <Box key={group.titleKey} sx={NewContentMenuStyles.sxColumn}>\n <Typography\n component=\"span\"\n sx={NewContentMenuStyles.sxColumnTitle}>\n {t.newMenu(group.titleKey)}\n </Typography>\n {group.items.map((item) => (\n <Box\n key={item.id}\n component=\"span\"\n role=\"menuitem\"\n tabIndex={0}\n onClick={() => handleItemClick(item)}\n data-testid={`dropdown-item-new-${item.id}`}\n sx={NewContentMenuStyles.sxItem}>\n {t.newMenu(item.labelKey)}\n </Box>\n ))}\n </Box>\n ))}\n </Box>\n </Menu>\n </>\n );\n}\n","/**\n * Transforma la respuesta cruda de `POST /dashboard/notification`\n * (`newsTask` / `expireTask` / `videos`) en el feed único, ordenado por hora,\n * que consume el desplegable de la campanita (`NotificationsMenu`).\n *\n * Replica la lógica del header del CMS Angular (`cmsmedios-ux`):\n * `buildAssignedTopicsGroup`, `buildActivityNotificationsGroup`,\n * `buildSystemNote`, `buildDatetimeParts`, `parseSystemDescription`,\n * `highlightVideoFormats` y `buildDueParts`. Todas las fechas se calculan en la\n * zona de redacción de la publicación (offset GMT fijo), igual que el resto del CMS.\n */\n\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport { toSiteWallClock } from '../../utils/site-time';\n\n/** Tipo de tarjeta del feed. */\nexport type NotificationFeedType =\n | 'assigned'\n | 'pending'\n | 'system'\n | 'editorialOpportunity';\n\n/** Tema individual dentro de una tarjeta agrupada (asignados / por vencer / copilot). */\nexport interface NotificationTopic {\n /** Id crudo del ítem. Para copilot es el `opportunity_id` (necesario en el snooze). */\n id?: string;\n title: string;\n /** Código visible del tema (`CP-<id>`), en asignados / por vencer. */\n code: string;\n /** Temas asignados: etiqueta relativa de la fecha de asignación. */\n assignedToday?: boolean;\n assignedYesterday?: boolean;\n assignedDate?: string;\n /** Temas por vencer: fecha (\"DD/MM\") y hora (\"HH:mm\") de vencimiento. */\n dueDate?: string;\n dueTime?: string;\n /** Oportunidades copilot: % de coincidencia editorial (score) y tema. */\n matchPercent?: number;\n topic?: string;\n /** Datos de navegación al planning del evento destino. */\n eventId?: string;\n eventDate?: number;\n site?: string;\n publication?: number;\n unread?: boolean;\n}\n\n/** Item del feed ya listo para renderizar. */\nexport interface NotificationFeedItem {\n id: string;\n type: NotificationFeedType;\n /** Etiquetas de fecha/hora relativas (zona de redacción). */\n isToday: boolean;\n isYesterday: boolean;\n /** Fecha \"DD/MM/AAAA\" (se muestra si no es hoy ni ayer). */\n date: string;\n /** Hora \"HH:mm\" (24h). */\n time: string;\n /** Timestamp crudo usado para ordenar el feed por hora. */\n sortTime: number;\n unread: boolean;\n\n /** Tarjetas agrupadas (asignados / por vencer). */\n count?: number;\n expirationDatetime?: string;\n children?: NotificationTopic[];\n\n /** Notificación del sistema (video). */\n userFullName?: string;\n userLogin?: string;\n /** HTML seguro (escapado + formatos de video resaltados) para `dangerouslySetInnerHTML`. */\n preTextHtml?: string;\n pathPart?: string;\n postTextHtml?: string;\n detailHtml?: string;\n}\n\n/** Formatos de video que se resaltan (negrita + mayúscula) dentro del texto. */\nconst VIDEO_FORMATS = ['hls', 'dash', 'mp4', 'webm', 'mov', 'm3u8', 'mpd'];\n\nfunction pad(n: number): string {\n return String(n).padStart(2, '0');\n}\n\n/**\n * Normaliza un campo de timestamp del backend a epoch ms. Acepta un número, un\n * string numérico, una fecha ISO 8601 (`created_at` de copilot) o un objeto\n * `{ time }` (como `timeStamp.time`).\n */\nfunction readEpoch(value: unknown): number | null {\n if (value == null) return null;\n if (typeof value === 'object') {\n const time = (value as { time?: unknown }).time;\n return readEpoch(time);\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n // String puramente numérico → epoch; si no, se intenta como fecha ISO.\n if (/^\\d+$/.test(trimmed)) return parseInt(trimmed, 10);\n const parsed = Date.parse(trimmed);\n return Number.isNaN(parsed) ? null : parsed;\n }\n const n = Number(value);\n return Number.isNaN(n) ? null : n;\n}\n\n/**\n * Descompone un timestamp (epoch ms, UTC) en las partes de fecha/hora de la\n * zona de redacción, más los indicadores relativos hoy/ayer.\n */\nfunction buildDatetimeParts(\n value: unknown,\n gmt: string | null | undefined,\n nowWall: number,\n): {\n date: string;\n time: string;\n isToday: boolean;\n isYesterday: boolean;\n sortTime: number;\n} {\n const epoch = readEpoch(value);\n if (epoch == null) {\n return { date: '', time: '', isToday: false, isYesterday: false, sortTime: 0 };\n }\n const wall = toSiteWallClock(epoch, gmt);\n const d = new Date(wall);\n const date = `${pad(d.getUTCDate())}/${pad(d.getUTCMonth() + 1)}/${d.getUTCFullYear()}`;\n const time = `${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}`;\n\n const now = new Date(nowWall);\n const yesterday = new Date(nowWall - 86_400_000);\n const sameDay = (a: Date, b: Date) =>\n a.getUTCFullYear() === b.getUTCFullYear() &&\n a.getUTCMonth() === b.getUTCMonth() &&\n a.getUTCDate() === b.getUTCDate();\n\n return {\n date,\n time,\n isToday: sameDay(d, now),\n isYesterday: sameDay(d, yesterday),\n sortTime: epoch,\n };\n}\n\n/** Fecha \"DD/MM\" y hora \"HH:mm\" de vencimiento, en zona de redacción. */\nfunction buildDueParts(\n value: unknown,\n gmt: string | null | undefined,\n): { date: string; time: string } {\n const epoch = readEpoch(value);\n if (epoch == null) return { date: '', time: '' };\n const d = new Date(toSiteWallClock(epoch, gmt));\n return {\n date: `${pad(d.getUTCDate())}/${pad(d.getUTCMonth() + 1)}`,\n time: `${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}`,\n };\n}\n\n/** Escapa HTML y resalta los formatos de video conocidos en negrita + mayúscula. */\nfunction highlightVideoFormats(text: string): string {\n if (!text) return '';\n const escaped = text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n const pattern = new RegExp(`\\\\b(${VIDEO_FORMATS.join('|')})\\\\b`, 'gi');\n return escaped.replace(pattern, (match) => `<strong>${match.toUpperCase()}</strong>`);\n}\n\n/** Separa una descripción en texto previo, path (\"/algo/archivo.ext\") y texto posterior. */\nfunction parseSystemDescription(description: string): {\n preText: string;\n pathPart: string;\n postText: string;\n} {\n if (!description) return { preText: '', pathPart: '', postText: '' };\n const match = description.match(/(\\/[\\w\\-./]+\\.[\\w]+)/);\n if (match && match.index !== undefined) {\n return {\n preText: description.substring(0, match.index).trim(),\n pathPart: match[1],\n postText: description.substring(match.index + match[1].length).trim(),\n };\n }\n return { preText: description, pathPart: '', postText: '' };\n}\n\n/** Construye la card de nuevos temas asignados a partir de `newsTask`. */\nfunction buildAssignedGroup(\n tasks: DashboardNotificationsResponse['newsTask'],\n gmt: string | null | undefined,\n nowWall: number,\n): NotificationFeedItem | null {\n if (!tasks || !tasks.length) return null;\n // Hora de la card: la del delivery (`timeStamp.time`) del tema más reciente.\n const withDelivery = tasks.filter((t) => t && readEpoch(t.timeStamp) != null);\n const latest = withDelivery.length\n ? withDelivery.reduce(\n (max, t) =>\n Number(readEpoch(t.timeStamp)) > Number(readEpoch(max.timeStamp)) ? t : max,\n withDelivery[0],\n )\n : null;\n const datetime = buildDatetimeParts(\n latest ? latest.timeStamp : Date.now(),\n gmt,\n nowWall,\n );\n return {\n id: 'assigned-group',\n type: 'assigned',\n ...datetime,\n count: tasks.length,\n children: tasks.map((task) => {\n const assigned = buildDatetimeParts(task.assignedDate, gmt, nowWall);\n return {\n title: String(task.title ?? ''),\n code: `CP-${task.id}`,\n assignedToday: assigned.isToday,\n assignedYesterday: assigned.isYesterday,\n assignedDate: assigned.date,\n eventId: task.id != null ? String(task.id) : undefined,\n eventDate: task.startdate,\n site: task.site,\n publication: task.publication,\n unread: !task.isRead,\n };\n }),\n unread: tasks.some((t) => !t.isRead),\n };\n}\n\n/** Construye la card de actividades por vencer a partir de `expireTask`. */\nfunction buildPendingGroup(\n activities: DashboardNotificationsResponse['expireTask'],\n gmt: string | null | undefined,\n nowWall: number,\n now: number,\n): NotificationFeedItem | null {\n if (!activities || !activities.length) return null;\n const withDate = activities.filter((a) => a && a.startdate != null);\n const earliest = withDate.length\n ? withDate.reduce(\n (min, a) => (Number(a.startdate) < Number(min.startdate) ? a : min),\n withDate[0],\n )\n : activities[0];\n // `expireTask` no trae hora de entrega desde el back: se sella con \"ahora\"\n // para que la alerta figure como recién recibida (simplificación respecto de\n // la memoria por ids del CMS Angular). Los vencimientos reales de cada tema\n // se muestran en la lista desplegada (dueDate/dueTime).\n const datetime = buildDatetimeParts(now, gmt, nowWall);\n const earliestDue = earliest.startdate != null ? buildDueParts(earliest.startdate, gmt) : null;\n return {\n id: 'pending-group',\n type: 'pending',\n ...datetime,\n count: activities.length,\n expirationDatetime: earliestDue ? `${earliestDue.date}, ${earliestDue.time}hs` : '',\n children: activities.map((activity) => {\n const due = buildDueParts(activity.startdate, gmt);\n return {\n title: String(activity.title ?? ''),\n code: `CP-${activity.id}`,\n dueDate: due.date,\n dueTime: due.time,\n eventId: activity.id != null ? String(activity.id) : undefined,\n eventDate: activity.startdate,\n site: activity.site,\n publication: activity.publication,\n unread: !activity.isRead,\n };\n }),\n unread: activities.some((a) => !a.isRead),\n };\n}\n\n/** Construye una notificación del sistema (video) a partir de un item de `videos`. */\nfunction buildSystemNote(\n item: NonNullable<DashboardNotificationsResponse['videos']>[number],\n gmt: string | null | undefined,\n nowWall: number,\n index: number,\n): NotificationFeedItem {\n const description = String(item.description ?? '');\n const openIdx = description.indexOf('(');\n const closingIdx = description.indexOf(')');\n let userFullName: string;\n let userLogin = '';\n let bodyText = description;\n\n if (openIdx !== -1 && closingIdx !== -1 && closingIdx > openIdx) {\n userFullName = description.substring(0, openIdx).trim();\n userLogin = description.substring(openIdx, closingIdx + 1).trim();\n bodyText = description.substring(closingIdx + 1).trim();\n } else {\n userFullName = String(item.userName ?? '');\n }\n\n const parsed = parseSystemDescription(bodyText);\n const datetime = buildDatetimeParts(item.timeStamp, gmt, nowWall);\n return {\n // El índice garantiza unicidad aunque el backend repita `actionId`.\n id: `system-${item.actionId ?? 'x'}-${index}`,\n type: 'system',\n ...datetime,\n userFullName,\n userLogin,\n pathPart: parsed.pathPart,\n preTextHtml: highlightVideoFormats(parsed.preText),\n postTextHtml: highlightVideoFormats(parsed.postText),\n detailHtml: highlightVideoFormats(description),\n unread: !item.isRead,\n };\n}\n\n/**\n * Construye la card agrupada de oportunidades editoriales copilot a partir del\n * array `copilot` de `dashboard/notification` (NAA-4645). El back manda hasta 3,\n * por `score` desc; la primera es la destacada (siempre visible) y el resto queda\n * tras el botón \"Ver N más\". La hora de la card es el `created_at` más reciente.\n * Se excluyen las oportunidades ya pospuestas en la sesión (`snoozedIds`).\n */\nfunction buildEditorialOpportunitiesGroup(\n opportunities: DashboardNotificationsResponse['copilot'] | null | undefined,\n gmt: string | null | undefined,\n nowWall: number,\n snoozedIds: ReadonlySet<string>,\n): NotificationFeedItem | null {\n if (!opportunities || !opportunities.length) return null;\n const visible = opportunities.filter(\n (o) => o && !(o.id != null && snoozedIds.has(String(o.id))),\n );\n if (!visible.length) return null;\n const withDelivery = visible.filter((o) => readEpoch(o.created_at) != null);\n const latest = withDelivery.length\n ? withDelivery.reduce(\n (max, o) =>\n Number(readEpoch(o.created_at)) > Number(readEpoch(max.created_at)) ? o : max,\n withDelivery[0],\n )\n : null;\n const datetime = buildDatetimeParts(\n latest ? latest.created_at : Date.now(),\n gmt,\n nowWall,\n );\n return {\n id: 'editorial-group',\n type: 'editorialOpportunity',\n ...datetime,\n count: visible.length,\n children: visible.map((opportunity) => ({\n id: opportunity.id != null ? String(opportunity.id) : undefined,\n title: String(opportunity.title ?? ''),\n code: opportunity.id != null ? `CP-${opportunity.id}` : '',\n matchPercent: opportunity.score,\n topic: opportunity.topic,\n unread: !opportunity.isRead,\n })),\n unread: visible.some((o) => !o.isRead),\n };\n}\n\n/**\n * Arma el feed completo de notificaciones, ordenado por hora descendente\n * (lo más reciente primero).\n *\n * @param response Respuesta cruda de `POST /dashboard/notification`.\n * @param opts.now Instante actual (epoch ms) — por defecto `Date.now()`.\n * @param opts.gmtRedaction Offset GMT de la publicación seleccionada.\n * @param opts.snoozedCopilotIds Ids de oportunidades copilot pospuestas (se ocultan).\n */\nexport function buildNotificationsFeed(\n response: DashboardNotificationsResponse | null | undefined,\n opts: {\n now?: number;\n gmtRedaction?: string | null;\n snoozedCopilotIds?: Iterable<string>;\n } = {},\n): NotificationFeedItem[] {\n const now = opts.now ?? Date.now();\n const gmt = opts.gmtRedaction;\n const nowWall = toSiteWallClock(now, gmt);\n const snoozedIds = new Set(opts.snoozedCopilotIds ?? []);\n\n const items: NotificationFeedItem[] = [];\n\n if (response) {\n const editorial = buildEditorialOpportunitiesGroup(\n response.copilot,\n gmt,\n nowWall,\n snoozedIds,\n );\n if (editorial) items.push(editorial);\n const assigned = buildAssignedGroup(response.newsTask, gmt, nowWall);\n if (assigned) items.push(assigned);\n const pending = buildPendingGroup(response.expireTask, gmt, nowWall, now);\n if (pending) items.push(pending);\n (response.videos ?? []).forEach((video, i) => {\n items.push(buildSystemNote(video, gmt, nowWall, i));\n });\n }\n\n items.sort((a, b) => (b.sortTime || 0) - (a.sortTime || 0));\n return items;\n}\n\n/** Une el dominio de `master` (Angular) con una ruta, sin barra doble. */\nfunction joinUrl(baseUrl: string | undefined, path: string): string {\n if (!baseUrl) return path;\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\n/**\n * Construye la URL de redirección de un tema a `master` (el CMS Angular\n * desplegado), replicando la ruta interna que usa cmsmedios: el planning de la\n * publicación destino, abierto en la vista día sobre el evento.\n *\n * @param topic Tema clickeado (trae `publication`, `eventDate`, `eventId`).\n * @param masterBaseUrl Dominio de `master` (`NEXT_PUBLIC_BASE_ANGULAR`).\n * @param currentPublicationId Id de la publicación activa (fallback).\n * @returns URL absoluta a `master`, o `undefined` si no hay publicación destino.\n */\nexport function buildPlanningHref(\n topic: Pick<NotificationTopic, 'eventId' | 'eventDate' | 'publication'>,\n masterBaseUrl: string | undefined,\n currentPublicationId?: number | string,\n): string | undefined {\n const targetPub =\n topic.publication != null ? Number(topic.publication) : Number(currentPublicationId);\n if (!targetPub) return undefined;\n\n let path = `/admin/planning/${targetPub}`;\n if (topic.eventDate) {\n const params = new URLSearchParams({\n view: 'timeGridDay',\n eventDate: String(topic.eventDate),\n });\n if (topic.eventId) params.set('eventId', String(topic.eventId));\n path += `?${params.toString()}`;\n }\n return joinUrl(masterBaseUrl, path);\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport { alpha } from '@mui/material/styles';\n\nimport {\n cmsColors,\n editorialOpportunityColors,\n fontFamilies,\n notificationColors,\n radii,\n shadows,\n} from '../../theme/variables';\n\n/**\n * Estilos del centro de notificaciones (campanita del TopBar).\n * Replican el diseño del mockup \"Gestión de Noticias\" (bloque `.oe-toast`):\n * panel flotante con tarjetas por tipo, acordeones y lista de temas.\n */\nexport const NotificationsMenuStyles = {\n /** Panel flotante (modal): tarjeta independiente anclada arriba a la derecha. */\n sxPanel: {\n position: 'fixed',\n top: 60,\n right: 12,\n width: 380,\n maxWidth: 'calc(100vw - 24px)',\n maxHeight: 'calc(100vh - 84px)',\n display: 'flex',\n flexDirection: 'column',\n bgcolor: cmsColors.menuSurface,\n border: 1,\n borderColor: 'm3.outlineVariant',\n borderRadius: 4,\n boxShadow: shadows.menuSoft,\n overflow: 'hidden',\n outline: 'none',\n } as SxProps<Theme>,\n\n /** Velo tenue del modal (permite ver el fondo; cierra al hacer clic afuera). */\n sxBackdrop: {\n bgcolor: (theme: Theme) => alpha(theme.palette.common.black, 0.04),\n } as SxProps<Theme>,\n\n /** Pulso rojo del badge de no leídas sobre la campanita. */\n sxBadgePulse: (theme: Theme) => ({\n '@keyframes notifBellPulse': {\n '0%, 100%': {\n boxShadow: `0 0 0 0 ${alpha(theme.palette.error.main, 0.6)}`,\n },\n '50%': {\n boxShadow: `0 0 0 6px ${alpha(theme.palette.error.main, 0)}`,\n },\n },\n '& .MuiBadge-badge': {\n animation: 'notifBellPulse 1.6s ease-out infinite',\n },\n }),\n\n /** Encabezado: título + botón cerrar. */\n sxHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 2,\n py: 1.5,\n } as SxProps<Theme>,\n\n sxHeaderTitle: {\n color: 'm3.onSurface',\n fontWeight: 600,\n } as SxProps<Theme>,\n\n sxCloseButton: {\n color: 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.08),\n },\n } as SxProps<Theme>,\n\n /** Contenedor scrollable de la lista de notificaciones. */\n sxScroll: {\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n px: 1.5,\n pb: 1.5,\n } as SxProps<Theme>,\n\n /** Estado vacío. */\n sxEmpty: {\n px: 2,\n py: 4,\n textAlign: 'center',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Etiqueta de fecha/hora sobre cada notificación (\"Hoy, 14:32\"). */\n sxTimestamp: {\n color: 'm3.onSurfaceVariant',\n letterSpacing: '0.02em',\n px: 0.5,\n pt: 1.5,\n pb: 0.75,\n } as SxProps<Theme>,\n\n /** Fila de notificación (tarjeta). `clickable` agrega hover y cursor. */\n sxRow: (clickable: boolean): SxProps<Theme> => ({\n display: 'grid',\n gridTemplateColumns: clickable ? '36px 1fr 20px' : '36px 1fr',\n columnGap: 1.5,\n alignItems: 'start',\n p: 1.25,\n borderRadius: 3,\n bgcolor: 'm3.surface',\n textAlign: 'left',\n width: '100%',\n border: 0,\n cursor: clickable ? 'pointer' : 'default',\n transition: 'background-color .12s',\n '&:hover': clickable\n ? { bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.06) }\n : undefined,\n }),\n\n /** Avatar cuadrado de ícono. `type` define los colores. */\n sxAvatar: (type: keyof typeof notificationColors): SxProps<Theme> => ({\n position: 'relative',\n width: 36,\n height: 36,\n borderRadius: 3,\n display: 'grid',\n placeItems: 'center',\n bgcolor: notificationColors[type].bg,\n color: notificationColors[type].on,\n '& svg': { fontSize: 20 },\n }),\n\n /** Punto rojo de \"no leído\" sobre el avatar. */\n sxUnreadDot: {\n position: 'absolute',\n top: -2,\n right: -2,\n width: 10,\n height: 10,\n borderRadius: '50%',\n bgcolor: 'error.main',\n border: 2,\n borderColor: 'm3.surfaceContainer',\n } as SxProps<Theme>,\n\n /** Cuerpo de texto de la fila. */\n sxBody: {\n minWidth: 0,\n alignSelf: 'center',\n color: 'm3.onSurface',\n lineHeight: 1.4,\n overflowWrap: 'break-word',\n wordBreak: 'break-word',\n '& b': { fontWeight: 600 },\n '& strong': { fontWeight: 600, textTransform: 'uppercase' },\n } as SxProps<Theme>,\n\n /** Subtítulo (fecha de vencimiento de la card por vencer). */\n sxSubtitle: {\n display: 'block',\n mt: 0.25,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Login del usuario (entre paréntesis, sin negrita). */\n sxUserLogin: {\n color: 'm3.onSurfaceVariant',\n fontWeight: 500,\n } as SxProps<Theme>,\n\n /** Chip monoespaciado con el path del archivo de video. */\n sxPathChip: {\n display: 'inline-block',\n fontFamily: fontFamilies.mono,\n fontSize: 12,\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.06),\n color: 'm3.onSurface',\n px: 0.75,\n py: '1px',\n borderRadius: 1.5,\n wordBreak: 'break-all',\n my: 0.25,\n lineHeight: 1.5,\n } as SxProps<Theme>,\n\n /** Chevron de acordeón (rota al abrir). */\n sxChevron: (open: boolean): SxProps<Theme> => ({\n alignSelf: 'center',\n color: 'm3.onSurfaceVariant',\n fontSize: 20,\n transition: 'transform .2s',\n transform: open ? 'rotate(180deg)' : 'none',\n }),\n\n /** Lista de temas desplegada bajo una card agrupada. */\n sxTopics: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n pt: 0.75,\n pb: 0.25,\n pl: '38px',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: '17px',\n top: 8,\n bottom: 8,\n width: '2px',\n borderRadius: radii.pill,\n bgcolor: 'm3.outlineVariant',\n },\n } as SxProps<Theme>,\n\n /** Fila de un tema individual (navegable). */\n sxTopicRow: {\n display: 'grid',\n gridTemplateColumns: '1fr 20px',\n columnGap: 1.25,\n alignItems: 'center',\n p: 1,\n borderRadius: 2.5,\n textAlign: 'left',\n width: '100%',\n border: 0,\n bgcolor: 'transparent',\n cursor: 'pointer',\n color: 'inherit',\n textDecoration: 'none',\n transition: 'background-color .12s',\n '&:hover': {\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.08),\n },\n } as SxProps<Theme>,\n\n sxTopicTitle: {\n display: 'block',\n color: 'm3.onSurface',\n fontWeight: 500,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n sxTopicMeta: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.75,\n mt: 0.25,\n color: 'm3.onSurfaceVariant',\n letterSpacing: '0.02em',\n } as SxProps<Theme>,\n\n /** Punto separador entre el código y la fecha del tema. */\n sxMetaDot: {\n width: 3,\n height: 3,\n borderRadius: '50%',\n bgcolor: 'm3.outlineVariant',\n flexShrink: 0,\n } as SxProps<Theme>,\n\n /** Fecha de vencimiento resaltada (naranja). */\n sxDue: {\n color: notificationColors.pending.on,\n fontWeight: 600,\n } as SxProps<Theme>,\n\n sxTopicChevron: {\n color: 'm3.onSurfaceVariant',\n fontSize: 20,\n justifySelf: 'end',\n } as SxProps<Theme>,\n\n // ── Card de oportunidades editoriales copilot (NAA-4837) ─────────────────\n\n /** Contenedor de la card: apila encabezado, oportunidades, toggle y acciones. */\n sxOpportunityCard: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1.25,\n p: 1.25,\n borderRadius: 3,\n bgcolor: 'm3.surface',\n width: '100%',\n } as SxProps<Theme>,\n\n /** Encabezado clickeable (icono + label + título + chevron). */\n sxOpportunityHeader: {\n display: 'grid',\n gridTemplateColumns: '36px 1fr 20px',\n columnGap: 1.5,\n alignItems: 'center',\n width: '100%',\n p: 0,\n border: 0,\n bgcolor: 'transparent',\n textAlign: 'left',\n cursor: 'pointer',\n color: 'inherit',\n font: 'inherit',\n } as SxProps<Theme>,\n\n /** Fila del label (\"OPORTUNIDAD EDITORIAL\" + contador). */\n sxOpportunityLabel: {\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n } as SxProps<Theme>,\n\n sxOpportunityLabelText: {\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: '0.06em',\n textTransform: 'uppercase',\n color: editorialOpportunityColors.text,\n } as SxProps<Theme>,\n\n /** Contador circular con la cantidad de oportunidades del grupo. */\n sxOpportunityCount: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 18,\n height: 18,\n px: 0.5,\n borderRadius: radii.pill,\n bgcolor: cmsColors.secondary,\n color: editorialOpportunityColors.text,\n fontSize: 11,\n fontWeight: 600,\n lineHeight: 1,\n } as SxProps<Theme>,\n\n sxOpportunityHeaderTitle: {\n display: 'block',\n mt: 0.25,\n color: 'm3.onSurface',\n fontWeight: 600,\n lineHeight: 1.3,\n } as SxProps<Theme>,\n\n /**\n * Caja de una oportunidad, con barra de acento a la izquierda. `clickable`\n * la vuelve enlace al gestor de sugerencias (cursor + hover + reset de link).\n */\n sxOpportunityTopic: (top: boolean, clickable = false): SxProps<Theme> => ({\n display: 'block',\n bgcolor: editorialOpportunityColors.topicBg,\n borderLeft: '4px solid',\n borderLeftColor: top\n ? editorialOpportunityColors.accent\n : editorialOpportunityColors.topicBorder,\n borderRadius: 2.5,\n p: 1,\n color: 'inherit',\n textDecoration: 'none',\n ...(clickable\n ? {\n cursor: 'pointer',\n transition: 'filter .12s',\n '&:hover': { filter: 'brightness(0.96)' },\n }\n : {}),\n }),\n\n /** Meta de la oportunidad (\"Top · 94% Coincidencia\" / \"82% Coincidencia\"). */\n sxOpportunityMeta: (top: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: '0.04em',\n textTransform: 'uppercase',\n color: top ? editorialOpportunityColors.text : 'm3.onSurfaceVariant',\n }),\n\n sxOpportunityMetaDot: {\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Etiqueta \"Trending\" (dorado) de las oportunidades secundarias en tendencia. */\n sxOpportunityTrending: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.25,\n color: editorialOpportunityColors.trending,\n } as SxProps<Theme>,\n\n sxOpportunityTrendingIcon: {\n fontSize: 16,\n } as SxProps<Theme>,\n\n sxOpportunityTopicTitle: {\n mt: 0.5,\n color: 'm3.onSurface',\n fontWeight: 600,\n fontSize: 14,\n lineHeight: 1.35,\n overflowWrap: 'break-word',\n wordBreak: 'break-word',\n } as SxProps<Theme>,\n\n sxOpportunityCode: {\n mt: 0.5,\n fontSize: 12,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Botón punteado \"Ver N oportunidades más / Ocultar\". */\n sxOpportunityToggle: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 0.5,\n width: '100%',\n p: 1,\n bgcolor: 'transparent',\n border: '1px dashed',\n borderColor: 'm3.outlineVariant',\n borderRadius: 2.5,\n cursor: 'pointer',\n color: 'm3.onSurfaceVariant',\n fontSize: 14,\n fontFamily: fontFamilies.googleSans,\n transition: 'background-color .12s',\n '&:hover': {\n bgcolor: (theme: Theme) => alpha(theme.palette.text.primary, 0.06),\n },\n } as SxProps<Theme>,\n\n /** Pie: \"Recordar luego\" a la izquierda, \"Ver más\" a la derecha. */\n sxOpportunityFooter: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 0.25,\n } as SxProps<Theme>,\n\n sxOpportunityRemind: {\n bgcolor: 'transparent',\n border: 0,\n p: '4px 0',\n cursor: 'pointer',\n color: 'm3.onSurfaceVariant',\n fontSize: 14,\n fontFamily: fontFamilies.googleSans,\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n\n sxOpportunitySeeMore: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n bgcolor: 'transparent',\n border: 0,\n p: '4px 0',\n cursor: 'pointer',\n color: editorialOpportunityColors.text,\n fontSize: 14,\n fontWeight: 700,\n fontFamily: fontFamilies.googleSans,\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n\n sxOpportunitySeeMoreIcon: {\n fontSize: 18,\n } as SxProps<Theme>,\n} as const;\n","'use client';\n\nimport type { SvgIconComponent } from '@mui/icons-material';\nimport ArrowForwardOutlinedIcon from '@mui/icons-material/ArrowForwardOutlined';\nimport AssignmentIndOutlinedIcon from '@mui/icons-material/AssignmentIndOutlined';\nimport AutoAwesomeOutlinedIcon from '@mui/icons-material/AutoAwesomeOutlined';\nimport ChevronRightOutlinedIcon from '@mui/icons-material/ChevronRightOutlined';\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport ExpandMoreOutlinedIcon from '@mui/icons-material/ExpandMoreOutlined';\nimport MovieOutlinedIcon from '@mui/icons-material/MovieOutlined';\nimport NotificationsNoneOutlinedIcon from '@mui/icons-material/NotificationsNoneOutlined';\nimport ScheduleOutlinedIcon from '@mui/icons-material/ScheduleOutlined';\nimport TrendingUpOutlinedIcon from '@mui/icons-material/TrendingUpOutlined';\nimport Badge from '@mui/material/Badge';\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport Fade from '@mui/material/Fade';\nimport IconButton from '@mui/material/IconButton';\nimport Modal from '@mui/material/Modal';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { type MouseEvent, useMemo, useState } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { toTestId } from '../../utils/toTestId';\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport {\n buildNotificationsFeed,\n buildPlanningHref,\n type NotificationFeedItem,\n type NotificationFeedType,\n type NotificationTopic,\n} from './notificationsFeed';\nimport { NotificationsMenuStyles as S } from './NotificationsMenu.styles';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type NotificationsMenuProps = {\n /** Total de no leídas (badge de la campanita). */\n unreadCount: number;\n /** Respuesta cruda de `POST /dashboard/notification` (newsTask/expireTask/videos). */\n notificationsData?: DashboardNotificationsResponse | null;\n /** Dominio de `master` (Angular) para la redirección de los temas. */\n masterBaseUrl?: string;\n /** Id de la publicación activa (fallback de la redirección). */\n currentPublicationId?: number | string;\n /** Offset GMT de la publicación (para mostrar las fechas en zona de redacción). */\n gmtRedaction?: string | null;\n /**\n * Destino del \"Ver más\" / clic en una oportunidad copilot (página de\n * sugerencias). Lo arma el gestor: URL absoluta al deploy de sugerencias\n * (env) si estás en otro gestor → abre en pestaña nueva; ruta relativa si ya\n * estás en el gestor de sugerencias → navega en la misma. Sin valor, cae al callback.\n */\n copilotSuggestionsHref?: string;\n /** Clic en \"Ver más\" cuando no hay `copilotSuggestionsHref` (fallback). */\n onEditorialSeeMore?: () => void;\n /**\n * \"Recordar luego\" de la card de oportunidades: recibe los `opportunity_id` de\n * las oportunidades mostradas para que el gestor dispare `copilot/snooze` por\n * cada una. La card se oculta de inmediato (optimista).\n */\n onEditorialRemindLater?: (opportunityIds: string[]) => void;\n};\n\n/** Ícono de cada tipo de tarjeta. */\nconst TYPE_ICON: Record<NotificationFeedType, SvgIconComponent> = {\n assigned: AssignmentIndOutlinedIcon,\n pending: ScheduleOutlinedIcon,\n system: MovieOutlinedIcon,\n editorialOpportunity: AutoAwesomeOutlinedIcon,\n};\n\nexport function NotificationsMenu({\n unreadCount,\n notificationsData,\n masterBaseUrl,\n currentPublicationId,\n gmtRedaction,\n copilotSuggestionsHref,\n onEditorialSeeMore,\n onEditorialRemindLater,\n}: NotificationsMenuProps) {\n const { t } = useCmsTranslation();\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [expanded, setExpanded] = useState<Record<string, boolean>>({});\n // Hora de apertura del menú: se captura en el handler (no en render) para las\n // etiquetas relativas hoy/ayer, y se recalcula el feed cuando cambia.\n const [openedAt, setOpenedAt] = useState<number | null>(null);\n // Oportunidades copilot pospuestas en esta sesión (update optimista del snooze):\n // se ocultan del feed hasta que el back deje de mandarlas en el próximo fetch.\n const [snoozedIds, setSnoozedIds] = useState<ReadonlySet<string>>(new Set());\n const open = Boolean(anchorEl);\n\n const badgeContent = unreadCount > 0 ? unreadCount : undefined;\n\n const feed = useMemo(\n () =>\n buildNotificationsFeed(notificationsData, {\n now: openedAt ?? undefined,\n gmtRedaction,\n snoozedCopilotIds: snoozedIds,\n }),\n [notificationsData, gmtRedaction, openedAt, snoozedIds],\n );\n\n const openMenu = (event: MouseEvent<HTMLElement>) => {\n setOpenedAt(Date.now());\n setAnchorEl(event.currentTarget);\n };\n const close = () => setAnchorEl(null);\n const toggle = (id: string) =>\n setExpanded((prev) => ({ ...prev, [id]: !prev[id] }));\n\n /**\n * \"Recordar luego\": oculta la card al instante (optimista) y delega en el\n * gestor el snooze real (una llamada `copilot/snooze` por `opportunity_id`).\n */\n const remindOpportunitiesLater = (opportunityIds: string[]) => {\n if (opportunityIds.length) {\n setSnoozedIds((prev) => new Set([...prev, ...opportunityIds]));\n onEditorialRemindLater?.(opportunityIds);\n }\n };\n\n /**\n * \"Ver más\": si hay `copilotSuggestionsHref`, el enlace ya navega; si no,\n * dispara el callback del gestor. En ambos casos cierra el menú.\n */\n const seeMoreOpportunities = () => {\n if (!copilotSuggestionsHref) onEditorialSeeMore?.();\n close();\n };\n\n /** Etiqueta de fecha/hora de cabecera de una notificación (\"Hoy, 14:32\"). */\n const timestampLabel = (item: NotificationFeedItem): string => {\n const label = item.isToday\n ? t.notificationsMenu('today')\n : item.isYesterday\n ? t.notificationsMenu('yesterday')\n : item.date;\n if (!label) return item.time;\n return item.time ? `${label}, ${item.time}` : label;\n };\n\n return (\n <>\n <Tooltip title={t.notificationsMenu('title')}>\n <IconButton\n aria-label={t.notificationsMenu('ariaLabel')}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={openMenu}\n data-testid=\"dropdown-toggle-notifications\"\n sx={TopBarStyles.sxActionIcon}>\n <Badge\n badgeContent={badgeContent}\n color=\"error\"\n data-testid=\"badge-notifications-count\"\n sx={\n [\n TopBarStyles.sxBadge,\n ...(badgeContent ? [S.sxBadgePulse] : []),\n ] as SxProps<Theme>\n }>\n <NotificationsNoneOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </Badge>\n </IconButton>\n </Tooltip>\n\n <Modal\n open={open}\n onClose={close}\n closeAfterTransition\n aria-label={t.notificationsMenu('title')}\n slotProps={{ backdrop: { sx: S.sxBackdrop } }}>\n <Fade in={open}>\n <Box data-testid=\"modal-notifications\" sx={S.sxPanel}>\n <Box sx={S.sxHeader}>\n <Typography variant=\"subtitle2\" sx={S.sxHeaderTitle}>\n {t.notificationsMenu('title')}\n </Typography>\n <IconButton\n size=\"small\"\n aria-label={t.notificationsMenu('close')}\n onClick={close}\n data-testid=\"icon-btn-notifications-close\"\n sx={S.sxCloseButton}>\n <CloseOutlinedIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n\n {feed.length === 0 ? (\n <Box sx={S.sxEmpty}>\n <Typography variant=\"body2\">\n {t.notificationsMenu('empty')}\n </Typography>\n </Box>\n ) : (\n <Box sx={S.sxScroll}>\n {feed.map((item) => (\n <Box\n key={item.id}\n data-testid={`dropdown-item-${toTestId(item.id)}`}>\n {timestampLabel(item) ? (\n <Typography component=\"div\" variant=\"caption\" sx={S.sxTimestamp}>\n {timestampLabel(item)}\n </Typography>\n ) : null}\n\n {item.type === 'editorialOpportunity' ? (\n <EditorialOpportunityCard\n item={item}\n open={!!expanded[item.id]}\n onToggle={() => toggle(item.id)}\n onRemindLater={remindOpportunitiesLater}\n onSeeMore={seeMoreOpportunities}\n seeMoreHref={copilotSuggestionsHref}\n t={t}\n />\n ) : item.type === 'system' ? (\n <SystemRow item={item} />\n ) : (\n <GroupRow\n item={item}\n open={!!expanded[item.id]}\n onToggle={() => toggle(item.id)}\n masterBaseUrl={masterBaseUrl}\n currentPublicationId={currentPublicationId}\n onNavigate={close}\n t={t}\n />\n )}\n </Box>\n ))}\n </Box>\n )}\n </Box>\n </Fade>\n </Modal>\n </>\n );\n}\n\n/**\n * Card de oportunidades editoriales copilot (NAA-4837): encabezado con contador,\n * oportunidad destacada siempre visible, secundarias desplegables, botón de\n * despliegue y acciones \"Recordar luego\" / \"Ver más\".\n */\nfunction EditorialOpportunityCard({\n item,\n open,\n onToggle,\n onRemindLater,\n onSeeMore,\n seeMoreHref,\n t,\n}: {\n item: NotificationFeedItem;\n open: boolean;\n onToggle: () => void;\n onRemindLater: (opportunityIds: string[]) => void;\n onSeeMore: () => void;\n seeMoreHref?: string;\n t: ReturnType<typeof useCmsTranslation>['t'];\n}) {\n const topics = item.children ?? [];\n const [top, ...rest] = topics;\n const count = item.count ?? topics.length;\n // Absoluta (otro gestor) → pestaña nueva; relativa (mismo gestor) → misma pestaña.\n const seeMoreExternal = !!seeMoreHref && /^https?:\\/\\//i.test(seeMoreHref);\n // Props del enlace a sugerencias (oportunidad clickeable y \"Ver más\").\n const seeMoreLinkProps = seeMoreHref\n ? {\n href: seeMoreHref,\n onClick: onSeeMore,\n ...(seeMoreExternal ? { target: '_blank', rel: 'noopener noreferrer' } : {}),\n }\n : {};\n // \"Recordar luego\" pospone TODAS las oportunidades mostradas (una llamada al\n // snooze por cada opportunity_id) y oculta la card.\n const remindLater = () =>\n onRemindLater(\n topics.map((topic) => topic.id).filter((id): id is string => !!id),\n );\n\n return (\n <Box sx={S.sxOpportunityCard}>\n {/* Encabezado clickeable: icono + label con contador + título + chevron */}\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onToggle}\n data-testid=\"toggle-opportunity-card\"\n sx={S.sxOpportunityHeader}>\n <Box sx={S.sxAvatar('editorialOpportunity')}>\n <AutoAwesomeOutlinedIcon />\n {item.unread ? <Box component=\"span\" sx={S.sxUnreadDot} /> : null}\n </Box>\n <Box sx={{ minWidth: 0 }}>\n <Box sx={S.sxOpportunityLabel}>\n <Typography component=\"span\" variant=\"caption\" sx={S.sxOpportunityLabelText}>\n {t.notificationsMenu('editorialOpportunityLabel')}\n </Typography>\n <Box component=\"span\" sx={S.sxOpportunityCount}>\n {count}\n </Box>\n </Box>\n <Typography component=\"span\" variant=\"body2\" sx={S.sxOpportunityHeaderTitle}>\n {t.notificationsMenu('editorialOpportunityText', { count })}\n </Typography>\n </Box>\n <ExpandMoreOutlinedIcon sx={S.sxChevron(open)} />\n </Box>\n\n {/* Oportunidad destacada: siempre visible (clickeable → gestor de sugerencias) */}\n {top ? (\n <Box\n component={seeMoreHref ? 'a' : 'div'}\n {...seeMoreLinkProps}\n data-testid={`link-opportunity-${toTestId(top.id || top.code || 'top')}`}\n sx={S.sxOpportunityTopic(true, !!seeMoreHref)}>\n <Typography component=\"div\" variant=\"caption\" sx={S.sxOpportunityMeta(true)}>\n <TrendingUpOutlinedIcon sx={S.sxOpportunityTrendingIcon} />\n <span>\n {t.notificationsMenu('editorialOpportunityTop')} · {top.matchPercent}%{' '}\n {t.notificationsMenu('editorialOpportunityMatch')}\n </span>\n </Typography>\n <Box sx={S.sxOpportunityTopicTitle}>{top.title}</Box>\n {top.topic ? <Box sx={S.sxOpportunityCode}>{top.topic}</Box> : null}\n </Box>\n ) : null}\n\n {/* Oportunidades secundarias: visibles al desplegar */}\n <Collapse in={open} unmountOnExit>\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n {rest.map((topic, i) => (\n <Box\n key={`${item.id}-${i + 1}`}\n component={seeMoreHref ? 'a' : 'div'}\n {...seeMoreLinkProps}\n data-testid={`link-opportunity-${toTestId(topic.id || topic.code || String(i + 1))}`}\n sx={S.sxOpportunityTopic(false, !!seeMoreHref)}>\n <Typography component=\"div\" variant=\"caption\" sx={S.sxOpportunityMeta(false)}>\n <span>\n {topic.matchPercent}% {t.notificationsMenu('editorialOpportunityMatch')}\n </span>\n </Typography>\n <Box sx={S.sxOpportunityTopicTitle}>{topic.title}</Box>\n {topic.topic ? <Box sx={S.sxOpportunityCode}>{topic.topic}</Box> : null}\n </Box>\n ))}\n </Box>\n </Collapse>\n\n {/* Botón punteado: ver N oportunidades más / ocultar */}\n {topics.length > 1 ? (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onToggle}\n data-testid=\"toggle-opportunity-topics\"\n sx={S.sxOpportunityToggle}>\n {open\n ? t.notificationsMenu('editorialOpportunityHide')\n : t.notificationsMenu('editorialOpportunitySeeMoreOpportunities', {\n count: topics.length - 1,\n })}\n <ExpandMoreOutlinedIcon sx={S.sxChevron(open)} />\n </Box>\n ) : null}\n\n {/* Acciones: recordar luego (snooze) y ver más (sugerencias copilot) */}\n <Box sx={S.sxOpportunityFooter}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={remindLater}\n data-testid=\"btn-opportunity-remind-later\"\n sx={S.sxOpportunityRemind}>\n {t.notificationsMenu('editorialOpportunityRemindLater')}\n </Box>\n <Box\n component={seeMoreHref ? 'a' : 'button'}\n {...(seeMoreHref\n ? {\n href: seeMoreHref,\n onClick: onSeeMore,\n ...(seeMoreExternal\n ? { target: '_blank', rel: 'noopener noreferrer' }\n : {}),\n }\n : { type: 'button', onClick: onSeeMore })}\n data-testid=\"btn-opportunity-see-more\"\n sx={S.sxOpportunitySeeMore}>\n {t.notificationsMenu('editorialOpportunitySeeMore')}\n <ArrowForwardOutlinedIcon sx={S.sxOpportunitySeeMoreIcon} />\n </Box>\n </Box>\n </Box>\n );\n}\n\n/** Notificación del sistema (video): icono verde + texto con formatos resaltados. */\nfunction SystemRow({ item }: { item: NotificationFeedItem }) {\n const hasStructured =\n item.userFullName || item.userLogin || item.preTextHtml || item.pathPart || item.postTextHtml;\n return (\n <Box sx={S.sxRow(false)}>\n <Box sx={S.sxAvatar('system')}>\n <MovieOutlinedIcon />\n {item.unread ? <Box component=\"span\" sx={S.sxUnreadDot} /> : null}\n </Box>\n <Typography component=\"div\" variant=\"body2\" sx={S.sxBody}>\n {hasStructured ? (\n <>\n {item.userFullName ? <b>{item.userFullName}</b> : null}\n {item.userLogin ? (\n <Box component=\"span\" sx={S.sxUserLogin}>\n {' '}\n {item.userLogin}\n </Box>\n ) : null}\n {(item.userFullName || item.userLogin) &&\n (item.preTextHtml || item.pathPart || item.postTextHtml) ? (\n <span> — </span>\n ) : null}\n {item.preTextHtml ? (\n <Box component=\"span\" dangerouslySetInnerHTML={{ __html: item.preTextHtml }} />\n ) : null}\n {item.pathPart ? (\n <Box component=\"span\" sx={S.sxPathChip}>\n {item.pathPart}\n </Box>\n ) : null}\n {item.postTextHtml ? (\n <Box component=\"span\" dangerouslySetInnerHTML={{ __html: item.postTextHtml }} />\n ) : null}\n </>\n ) : (\n <Box component=\"span\" dangerouslySetInnerHTML={{ __html: item.detailHtml ?? '' }} />\n )}\n </Typography>\n </Box>\n );\n}\n\n/** Tarjeta agrupada (temas asignados / por vencer) con acordeón de temas. */\nfunction GroupRow({\n item,\n open,\n onToggle,\n masterBaseUrl,\n currentPublicationId,\n onNavigate,\n t,\n}: {\n item: NotificationFeedItem;\n open: boolean;\n onToggle: () => void;\n masterBaseUrl?: string;\n currentPublicationId?: number | string;\n onNavigate: () => void;\n t: ReturnType<typeof useCmsTranslation>['t'];\n}) {\n const Icon = TYPE_ICON[item.type];\n const before =\n item.type === 'assigned'\n ? t.notificationsMenu('assignedBefore')\n : t.notificationsMenu('pendingBefore');\n const after =\n item.type === 'assigned'\n ? t.notificationsMenu('assignedAfter')\n : t.notificationsMenu('pendingAfter');\n\n return (\n <>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onToggle}\n data-testid={`toggle-notification-group-${toTestId(item.type)}`}\n data-action={item.type}\n sx={S.sxRow(true)}>\n <Box sx={S.sxAvatar(item.type)}>\n <Icon />\n {item.unread ? <Box component=\"span\" sx={S.sxUnreadDot} /> : null}\n </Box>\n <Typography component=\"div\" variant=\"body2\" sx={S.sxBody}>\n {before} <b>{item.count}</b> {after}\n {item.expirationDatetime ? (\n <Typography component=\"span\" variant=\"caption\" sx={S.sxSubtitle}>\n {item.expirationDatetime}\n </Typography>\n ) : null}\n </Typography>\n <ExpandMoreOutlinedIcon sx={S.sxChevron(open)} />\n </Box>\n\n <Collapse in={open} unmountOnExit>\n <Box sx={S.sxTopics}>\n {(item.children ?? []).map((topic, i) => (\n <TopicRow\n key={`${item.id}-${i}`}\n topic={topic}\n type={item.type}\n masterBaseUrl={masterBaseUrl}\n currentPublicationId={currentPublicationId}\n onNavigate={onNavigate}\n t={t}\n />\n ))}\n </Box>\n </Collapse>\n </>\n );\n}\n\n/** Tema individual navegable: redirige al planning en `master`. */\nfunction TopicRow({\n topic,\n type,\n masterBaseUrl,\n currentPublicationId,\n onNavigate,\n t,\n}: {\n topic: NotificationTopic;\n type: NotificationFeedType;\n masterBaseUrl?: string;\n currentPublicationId?: number | string;\n onNavigate: () => void;\n t: ReturnType<typeof useCmsTranslation>['t'];\n}) {\n const href = buildPlanningHref(topic, masterBaseUrl, currentPublicationId);\n\n const assignedLabel = topic.assignedToday\n ? t.notificationsMenu('assignedToday')\n : topic.assignedYesterday\n ? t.notificationsMenu('assignedYesterday')\n : `${t.notificationsMenu('assignedOn')} ${topic.assignedDate ?? ''}`;\n\n return (\n <Box\n component={href ? 'a' : 'div'}\n href={href}\n target={href ? '_blank' : undefined}\n rel={href ? 'noopener noreferrer' : undefined}\n onClick={href ? onNavigate : undefined}\n data-testid={`link-topic-${toTestId(topic.code)}`}\n sx={S.sxTopicRow}>\n <Box sx={{ minWidth: 0 }}>\n <Typography component=\"span\" variant=\"body2\" sx={S.sxTopicTitle}>\n {topic.title}\n </Typography>\n <Typography component=\"span\" variant=\"caption\" sx={S.sxTopicMeta}>\n <span>{topic.code}</span>\n <Box component=\"span\" sx={S.sxMetaDot} />\n {type === 'pending' ? (\n <Box component=\"span\" sx={S.sxDue}>\n {t.notificationsMenu('expires')} {topic.dueDate} · {topic.dueTime}\n </Box>\n ) : (\n <span>{assignedLabel}</span>\n )}\n </Typography>\n </Box>\n <ChevronRightOutlinedIcon sx={S.sxTopicChevron} />\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, shadows } from '../../theme/variables';\n\nexport const SimpleDropdownStyles = {\n sxTriggerWrap: {\n display: 'inline-flex',\n } as SxProps<Theme>,\n\n /**\n * Disparador por defecto (botón de ícono, p. ej. `more_vert`).\n * En reposo el ícono es gris; en hover/activo el fondo es `iconButtonHoverBg`\n * y el ícono pasa a `controlText` (#000).\n */\n sxIconTrigger: (open: boolean): SxProps<Theme> => ({\n borderRadius: '30px',\n color: open ? cmsColors.controlText : cmsColors.iconButtonIcon,\n bgcolor: open ? cmsColors.iconButtonHoverBg : 'transparent',\n '& .MuiSvgIcon-root': { fontSize: 22 },\n '&:hover': {\n bgcolor: cmsColors.iconButtonHoverBg,\n color: cmsColors.controlText,\n },\n }),\n\n sxMenuPaper: (minWidth: number | string): SxProps<Theme> => ({\n mt: 1,\n // Menú M3: sin padding lateral (los ítems llegan de borde a borde) y con\n // 8px arriba/abajo. `overflow: hidden` recorta las esquinas del hover.\n py: '8px',\n px: 0,\n minWidth,\n borderRadius: radii.lg,\n bgcolor: cmsColors.menuSurface,\n border: 'none',\n boxShadow: shadows.menuDropdown,\n overflow: 'hidden',\n }),\n\n sxList: {\n p: 0,\n display: 'flex',\n flexDirection: 'column',\n } as SxProps<Theme>,\n\n sxGrid: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '2px',\n } as SxProps<Theme>,\n\n sxItem: (selected: boolean): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n px: '16px',\n py: '10px',\n // Full-bleed (sin radio): el hover llega de borde a borde (M3 por defecto).\n borderRadius: 0,\n color: cmsColors.textStrong,\n whiteSpace: 'normal',\n bgcolor: selected ? cmsColors.menuItemActive : 'transparent',\n // Hover: state layer M3 `onSurface` al 8% (#191C20).\n '&:hover': {\n bgcolor: cmsColors.neutralHover,\n },\n // Opción activa: fondo `menuItemActive` (#E1E2EB).\n '&.Mui-selected': {\n bgcolor: cmsColors.menuItemActive,\n '&:hover': { bgcolor: cmsColors.menuItemActive },\n },\n }),\n\n sxIcon: {\n minWidth: 0,\n mt: '2px',\n color: 'm3.onSurfaceVariant',\n display: 'inline-flex',\n '& .MuiSvgIcon-root': { fontSize: 20 },\n } as SxProps<Theme>,\n\n sxItemText: {\n display: 'flex',\n flexDirection: 'column',\n minWidth: 0,\n } as SxProps<Theme>,\n\n sxLabel: (hasDescription: boolean): SxProps<Theme> => ({\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: hasDescription ? 600 : 500,\n lineHeight: '20px',\n color: cmsColors.textStrong,\n }),\n\n sxDescription: {\n fontSize: 12,\n fontWeight: 400,\n lineHeight: '16px',\n color: 'm3.onSurfaceVariant',\n mt: '2px',\n } as SxProps<Theme>,\n\n sxSubItem: {\n pl: '44px',\n py: '8px',\n fontSize: 13,\n color: 'm3.onSurface',\n borderRadius: 0,\n '&:hover': {\n bgcolor: cmsColors.neutralHover,\n },\n } as SxProps<Theme>,\n\n sxFooter: {\n px: '12px',\n py: 1,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { Fragment, useMemo, useState } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\nimport { SimpleDropdownStyles } from './SimpleDropdown.styles';\nimport type { DropdownOption } from './types';\n\ntype MenuOrigin = {\n vertical: 'top' | 'center' | 'bottom';\n horizontal: 'left' | 'center' | 'right';\n};\n\nexport type SimpleDropdownProps = {\n /** Ítems del menú. */\n options: DropdownOption[];\n /**\n * Disparador del menú. Puede ser un nodo o una función que recibe el estado\n * de apertura (útil para cambiar el ícono). Solo se usa en modo no controlado.\n * Si no se pasa, se usa un botón de ícono por defecto (`triggerIcon`).\n */\n trigger?: ReactNode | ((state: { open: boolean }) => ReactNode);\n /**\n * Ícono del disparador por defecto (cuando no se pasa `trigger`).\n * Por defecto `more_vert`. El disparador del SimpleDropdown es siempre un ícono.\n */\n triggerIcon?: ReactNode;\n /** Número de columnas del menú. Por defecto `1`. */\n columns?: 1 | 2;\n /** Contenido extra al pie del menú (p. ej. un toggle). */\n footer?: ReactNode;\n /** Ancho mínimo del panel. Por defecto `220`. */\n minWidth?: number | string;\n anchorOrigin?: MenuOrigin;\n transformOrigin?: MenuOrigin;\n /** Cierra el menú al hacer clic en un ítem. Por defecto `true`. */\n closeOnSelect?: boolean;\n /** Modo controlado: elemento ancla del menú. */\n anchorEl?: HTMLElement | null;\n /** Modo controlado: si el menú está abierto. */\n open?: boolean;\n /** Modo controlado: callback de cierre. */\n onClose?: () => void;\n /** Valor para `data-testid` del panel. */\n testId?: string;\n};\n\n/**\n * Menú desplegable genérico y presentacional. Renderiza una lista de opciones\n * recibidas por props y ejecuta el `onClick` de cada una. Soporta una o dos\n * columnas, sub-ítems expandibles, separadores y un pie de menú opcional.\n *\n * Funciona en dos modos:\n * - No controlado: se le pasa `trigger` y gestiona su propio estado de apertura.\n * - Controlado: se le pasan `open`, `anchorEl` y `onClose` (p. ej. desde\n * `BtnDropdown`).\n */\nexport function SimpleDropdown({\n options,\n trigger,\n triggerIcon,\n columns = 1,\n footer,\n minWidth = 220,\n anchorOrigin = { vertical: 'bottom', horizontal: 'right' },\n transformOrigin = { vertical: 'top', horizontal: 'right' },\n closeOnSelect = true,\n anchorEl: controlledAnchorEl,\n open: controlledOpen,\n onClose,\n testId,\n}: SimpleDropdownProps) {\n const isControlled = controlledOpen !== undefined;\n const [internalAnchor, setInternalAnchor] = useState<HTMLElement | null>(\n null,\n );\n const [expandedKey, setExpandedKey] = useState<string | null>(null);\n\n const anchorEl = isControlled ? controlledAnchorEl ?? null : internalAnchor;\n const open = isControlled ? Boolean(controlledOpen) : Boolean(internalAnchor);\n\n /**\n * Cierra el menú según el modo (controlado o no) y limpia la expansión.\n * @returns void\n */\n const handleClose = () => {\n if (isControlled) onClose?.();\n else setInternalAnchor(null);\n setExpandedKey(null);\n };\n\n /**\n * Abre el menú anclándolo al disparador (solo en modo no controlado).\n * @param event - Evento de clic sobre el disparador.\n * @returns void\n */\n const handleTriggerClick = (event: MouseEvent<HTMLElement>) => {\n setInternalAnchor(event.currentTarget);\n };\n\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n\n /**\n * Maneja el clic sobre un ítem: expande sub-ítems o ejecuta su acción.\n * @param option - Ítem clickeado.\n * @param key - Clave única del ítem.\n * @returns void\n */\n const handleItemClick = (option: DropdownOption, key: string) => {\n if (option.disabled) return;\n if (option.subItems?.length) {\n setExpandedKey((current) => (current === key ? null : key));\n return;\n }\n option.onClick?.(option);\n if (closeOnSelect) handleClose();\n };\n\n /**\n * Renderiza un ítem del menú (con su ícono, sub-ítems y separador superior).\n * @param option - Ítem a renderizar.\n * @param index - Posición del ítem en la lista visible.\n * @returns Nodo del ítem.\n */\n const renderOption = (option: DropdownOption, index: number) => {\n const key = option.id ?? String(index);\n const isExpanded = expandedKey === key;\n\n return (\n <Fragment key={key}>\n {option.hasTopLine ? <Divider sx={{ my: 0.5 }} /> : null}\n <MenuItem\n disabled={option.disabled}\n selected={option.selected}\n onClick={() => handleItemClick(option, key)}\n data-testid={option.testId}\n sx={SimpleDropdownStyles.sxItem(Boolean(option.selected))}>\n {option.icon ? (\n <ListItemIcon sx={SimpleDropdownStyles.sxIcon}>\n {option.icon}\n </ListItemIcon>\n ) : null}\n <Box sx={SimpleDropdownStyles.sxItemText}>\n <Typography\n component=\"span\"\n sx={SimpleDropdownStyles.sxLabel(Boolean(option.description))}>\n {option.label}\n </Typography>\n {option.description ? (\n <Typography\n component=\"span\"\n sx={SimpleDropdownStyles.sxDescription}>\n {option.description}\n </Typography>\n ) : null}\n </Box>\n </MenuItem>\n {isExpanded\n ? option.subItems\n ?.filter((subItem) => subItem.show !== false)\n .map((subItem, subIndex) => (\n <MenuItem\n key={`${key}-${subItem.id ?? subIndex}`}\n disabled={subItem.disabled}\n data-testid={subItem.testId}\n onClick={() => {\n if (subItem.disabled) return;\n subItem.onClick?.(subItem);\n if (closeOnSelect) handleClose();\n }}\n sx={SimpleDropdownStyles.sxSubItem}>\n {subItem.label}\n </MenuItem>\n ))\n : null}\n </Fragment>\n );\n };\n\n const defaultTrigger = (\n <IconButton\n aria-haspopup=\"true\"\n sx={SimpleDropdownStyles.sxIconTrigger(open)}>\n {triggerIcon ?? <MoreVertIcon />}\n </IconButton>\n );\n const renderedTrigger =\n typeof trigger === 'function'\n ? trigger({ open })\n : (trigger ?? defaultTrigger);\n\n return (\n <>\n {!isControlled && renderedTrigger ? (\n <Box\n component=\"span\"\n onClick={handleTriggerClick}\n sx={SimpleDropdownStyles.sxTriggerWrap}>\n {renderedTrigger}\n </Box>\n ) : null}\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n slotProps={{\n paper: { sx: SimpleDropdownStyles.sxMenuPaper(minWidth) },\n list: {\n sx: SimpleDropdownStyles.sxList,\n // MUI no tipa atributos data-* en el slot list; cast puntual.\n ...(testId ? ({ 'data-testid': testId } as object) : {}),\n },\n }}>\n {columns === 2 ? (\n <Box sx={SimpleDropdownStyles.sxGrid}>\n {visibleOptions.map((option, index) => renderOption(option, index))}\n </Box>\n ) : (\n visibleOptions.map((option, index) => renderOption(option, index))\n )}\n {footer ? <Divider sx={{ my: 0.5 }} /> : null}\n {footer ? <Box sx={SimpleDropdownStyles.sxFooter}>{footer}</Box> : null}\n </Menu>\n </>\n );\n}\n","import type { PreviewMenuMessageKey } from '../../i18n';\n\n/**\n * Formato de previsualización (Desktop / Mobile / Tablet…). En el CMS legacy la\n * lista es dinámica (`POST /news/previewFormats`); acá se reciben por props.\n */\nexport type PreviewFormat = {\n /** Identificador estable; lo recibe `onSelect` al hacer clic. */\n id: string;\n /** Clave i18n del namespace `previewMenu` (cuando el texto es conocido). */\n labelKey?: PreviewMenuMessageKey;\n /** Texto ya resuelto (cuando el nombre viene dinámico del backend). */\n label?: string;\n /**\n * Ruta de preview de la publicación (campo `r` del form), p. ej.\n * `/sites/<sitio>/index.html`. Viene de `POST /news/previewFormats`. Si está\n * presente (con sesión), el clic redirige al admin viejo; si no, usa `onSelect`.\n */\n path?: string;\n /** QueryString del dispositivo (de `POST /news/previewFormats`). */\n queryString?: string;\n /** Protocolo del preview (`'https'` por defecto). */\n protocol?: string;\n};\n\n/**\n * Formatos por defecto con la ruta EXACTA de cmsmedios. El redirect (form POST\n * al CMS, como Ayuda) arma el campo `r` con `submitLegacyAdminPage`:\n * - Desktop → `r = /index.html`\n * - Mobile → `r = /preview/mobile.html?path=/index.html`\n * - Tablet → `r = /preview/tablet.html?path=/index.html`\n *\n * `path` es la ruta de la publicación (`/index.html` para la principal). El\n * `queryString` del device, al contener `/`, dispara la rama \"redirect\" de\n * cmsmedios (`<queryString>?path=<path>`). El gestor puede sobrescribir estos\n * formatos con los de `POST /news/previewFormats` por publicación.\n */\nexport const DEFAULT_PREVIEW_FORMATS: PreviewFormat[] = [\n { id: 'desktop', labelKey: 'desktop', path: '/index.html' },\n {\n id: 'mobile',\n labelKey: 'mobile',\n path: '/index.html',\n queryString: '/preview/mobile.html',\n },\n {\n id: 'tablet',\n labelKey: 'tablet',\n path: '/index.html',\n queryString: '/preview/tablet.html',\n },\n];\n","'use client';\n\nimport DevicesOtherOutlinedIcon from '@mui/icons-material/DevicesOtherOutlined';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport { useMemo } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport {\n submitLegacyAdminPage,\n type LegacyAdminSession,\n} from '../../utils/legacy-admin';\nimport { SimpleDropdown } from '../dropdowns/SimpleDropdown';\nimport type { DropdownOption } from '../dropdowns/types';\nimport {\n DEFAULT_PREVIEW_FORMATS,\n type PreviewFormat,\n} from './previewMenu.config';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type PreviewMenuProps = {\n /** Formatos de preview. Por defecto, Desktop / Mobile / Tablet. */\n formats?: PreviewFormat[];\n /** Origen del CMS (JSP) para el redirect al admin viejo. */\n cmsBaseUrl?: string;\n /** Sesión para el form POST del redirect (token, sitio, etc.). */\n legacySession?: LegacyAdminSession;\n /**\n * Punto de integración: se invoca con el `id` del formato cuando no se puede\n * redirigir directo (falta `path`/sesión). El gestor arma la URL y redirige.\n */\n onSelect?: (formatId: string) => void;\n};\n\n/**\n * Menú desplegable del botón de previsualización (icono de dispositivos) del\n * header. Usa el `SimpleDropdown` de la lib. Igual que en cmsmedios, solo se\n * renderiza si hay al menos un formato disponible.\n */\nexport function PreviewMenu({\n formats = DEFAULT_PREVIEW_FORMATS,\n cmsBaseUrl,\n legacySession,\n onSelect,\n}: PreviewMenuProps) {\n const { t } = useCmsTranslation();\n const title = t.topBar('preview');\n\n const options = useMemo<DropdownOption[]>(\n () =>\n formats.map((format) => ({\n id: format.id,\n label: format.labelKey ? t.previewMenu(format.labelKey) : format.label,\n testId: `dropdown-item-preview-${format.id}`,\n onClick: () => {\n // Con sesión y la ruta del formato, redirige al CMS con el form POST\n // (igual que Ayuda). `submitLegacyAdminPage` arma el `r` exacto de\n // cmsmedios: con queryString que contiene `/` → `<qs>?path=<path>`.\n if (cmsBaseUrl && legacySession && format.path) {\n submitLegacyAdminPage({\n cmsBaseUrl,\n path: format.path,\n session: legacySession,\n device: {\n protocol: format.protocol,\n queryString: format.queryString,\n },\n });\n return;\n }\n onSelect?.(format.id);\n },\n })),\n [formats, cmsBaseUrl, legacySession, onSelect, t],\n );\n\n if (formats.length === 0) return null;\n\n return (\n <SimpleDropdown\n options={options}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n testId=\"dropdown-menu-preview\"\n trigger={({ open }) => (\n <Tooltip title={title}>\n <IconButton\n aria-label={title}\n aria-haspopup=\"true\"\n aria-expanded={open}\n data-testid=\"dropdown-toggle-preview\"\n sx={TopBarStyles.sxActionIcon}>\n <DevicesOtherOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n )}\n />\n );\n}\n","const DEFAULT_CMS_ORIGIN = 'https://dev.cms-medios.com';\n\nexport function resolveCmsOrigin(cmsOrigin?: string): string {\n const base = cmsOrigin?.trim();\n if (!base) return DEFAULT_CMS_ORIGIN;\n return base.replace(/\\/$/, '');\n}\n\nexport function resolveCmsAssetUrl(path: string, cmsOrigin?: string): string {\n if (!path) return '';\n if (path.startsWith('http://') || path.startsWith('https://')) return path;\n const normalized = path.startsWith('/') ? path : `/${path}`;\n return `${resolveCmsOrigin(cmsOrigin)}${normalized}`;\n}\n","import { resolveCmsAssetUrl } from './cms-asset';\nimport type { ProfileGetResponse } from '../types/profile';\n\nconst NO_PICTURE = 'noPicture';\nconst DEFAULT_FALLBACK_AVATAR = '/topbar_profile.png';\n\nexport type ProfileAvatarOptions = {\n cmsOrigin?: string;\n fallbackAvatar?: string;\n};\n\nexport function getProfileAvatarSrc(\n profile: ProfileGetResponse,\n options?: ProfileAvatarOptions,\n): string {\n const { image } = profile;\n const fallback = options?.fallbackAvatar ?? DEFAULT_FALLBACK_AVATAR;\n if (!image || image === NO_PICTURE) return fallback;\n return resolveCmsAssetUrl(image, options?.cmsOrigin);\n}\n\nexport function getProfileDisplayName(profile: ProfileGetResponse): string {\n if (profile.fullName?.trim()) return profile.fullName.trim();\n const parts = [profile.firstName, profile.lastName].filter(Boolean);\n if (parts.length > 0) return parts.join(' ');\n return profile.userName;\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors } from '../../theme/variables';\n\n/** Proporción del ícono fallback respecto al diámetro del avatar (≈ 16/27). */\nconst ICON_RATIO = 0.58;\n\nexport const UserAvatarStyles = {\n /**\n * Avatar circular. Cuando no hay foto, el fondo secundario y el ícono\n * `PersonOutlined` quedan visibles (mismo look que la tabla del gestor).\n * Si `inactive`, cae a un gris apagado (usuario desactivado).\n */\n sxAvatar: (\n size: number,\n clickable: boolean,\n inactive: boolean,\n ): SxProps<Theme> => ({\n width: size,\n height: size,\n bgcolor: inactive ? cmsColors.avatarInactiveBg : cmsColors.secondary,\n color: inactive\n ? cmsColors.avatarInactiveIcon\n : cmsColors.onSecondaryContainer,\n cursor: clickable ? 'pointer' : 'default',\n }),\n\n /** Ícono fallback (persona) escalado al tamaño del avatar. */\n sxIcon: (size: number, inactive: boolean): SxProps<Theme> => ({\n fontSize: Math.round(size * ICON_RATIO),\n color: inactive\n ? cmsColors.avatarInactiveIcon\n : cmsColors.onSecondaryContainer,\n }),\n\n /** Superficie oscura del tooltip del avatar (fondo + flecha + texto claro). */\n sxTooltip: {\n bgcolor: cmsColors.tooltipSurface,\n color: cmsColors.white,\n '& .MuiTooltip-arrow': {\n color: cmsColors.tooltipSurface,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport { createContext, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\n/**\n * Estado compartido de la foto del usuario logueado.\n *\n * Es el equivalente React del `updateImageProfile` (BehaviorSubject) del CMS\n * Angular legacy: cuando el usuario cambia su foto de perfil, la pantalla de\n * edición llama a `setPhoto(...)` y todos los avatares marcados como\n * `isCurrentUser` se actualizan al instante, sin recargar ni hacer\n * prop-drilling.\n */\nexport interface CurrentUserPhotoContextValue {\n /** Foto actual del usuario logueado: ruta/URL, '' o 'noPicture'. `null` = sin valor todavía. */\n photo: string | null;\n /** Notifica una foto nueva (o '' / 'noPicture' al borrarla). */\n setPhoto: (photo: string | null) => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CurrentUserPhotoContext =\n createContext<CurrentUserPhotoContextValue | null>(null);\n\nexport interface CurrentUserPhotoProviderProps {\n /** Foto inicial del usuario logueado (p. ej. `profile.image`). */\n initialPhoto?: string | null;\n children: ReactNode;\n}\n\n/**\n * Provider de la foto del usuario logueado. Montarlo por encima de los avatares\n * que representan al usuario actual (típicamente en el `AppShell` o el layout de\n * la cuenta), sembrado con `profile.image`.\n */\nexport function CurrentUserPhotoProvider({\n initialPhoto = null,\n children,\n}: CurrentUserPhotoProviderProps) {\n const [photo, setPhoto] = useState<string | null>(initialPhoto);\n // Si el perfil se recarga del servidor con otra foto, resincronizamos el\n // estado ajustándolo en render (patrón recomendado por React, sin useEffect).\n const [seed, setSeed] = useState<string | null>(initialPhoto);\n if (seed !== initialPhoto) {\n setSeed(initialPhoto);\n setPhoto(initialPhoto);\n }\n\n const value = useMemo<CurrentUserPhotoContextValue>(\n () => ({ photo, setPhoto }),\n [photo],\n );\n\n return (\n <CurrentUserPhotoContext.Provider value={value}>\n {children}\n </CurrentUserPhotoContext.Provider>\n );\n}\n","'use client';\n\nimport { useContext } from 'react';\n\nimport {\n CurrentUserPhotoContext,\n type CurrentUserPhotoContextValue,\n} from './CurrentUserPhotoProvider';\n\n/**\n * Acceso al estado compartido de la foto del usuario logueado.\n *\n * Devuelve `null` si no hay provider montado: así `UserAvatar` y la pantalla de\n * perfil funcionan también sin el provider (caso tabla de usuarios, donde cada\n * avatar es otro usuario y no necesita actualización en vivo).\n */\nexport function useCurrentUserPhoto(): CurrentUserPhotoContextValue | null {\n return useContext(CurrentUserPhotoContext);\n}\n","'use client';\n\nimport PersonOutlinedIcon from '@mui/icons-material/PersonOutlined';\nimport Avatar from '@mui/material/Avatar';\nimport Tooltip from '@mui/material/Tooltip';\nimport { useMemo } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { resolveCmsAssetUrl } from '../../utils/cms-asset';\nimport { UserAvatarStyles } from './UserAvatar.styles';\nimport { useCurrentUserPhoto } from './useCurrentUserPhoto';\n\n/** Valor que el backend usa para \"sin foto\" (igual que en cmsmedios). */\nconst NO_PICTURE = 'noPicture';\n\nexport type UserAvatarProps = {\n /**\n * Foto del usuario: ruta relativa, URL absoluta, `''` o `'noPicture'`\n * (misma forma que el campo `photo` en cmsmedios). Si falta o es `'noPicture'`,\n * se muestra el ícono de persona sobre fondo secundario.\n */\n photo?: string | null;\n /** Nombre legible del usuario (campo `description` en cmsmedios). Tooltip + alt. */\n description?: string;\n /** Login del usuario (campo `username`). Fallback del nombre. */\n username?: string;\n /** Diámetro del avatar en px. Por defecto 32. */\n size?: number;\n /** Muestra el tooltip con el nombre al pasar el mouse. Por defecto `true`. */\n showTooltip?: boolean;\n /**\n * Marca al usuario como inactivo/desactivado: el avatar cae a un gris apagado\n * (fondo y ícono más grises). Por defecto `false`.\n */\n inactive?: boolean;\n /** Origen del CMS para resolver rutas relativas de la foto. */\n cmsOrigin?: string;\n /**\n * `crossOrigin` del `<img>`. Sin valor por defecto (lo más seguro para mostrar).\n * El `TopBar` de la lib usa `'anonymous'`; pasarlo si el CMS lo requiere.\n */\n crossOrigin?: 'anonymous' | 'use-credentials';\n /**\n * Marca este avatar como el del usuario logueado: así reacciona al cambio de\n * foto de perfil emitido por `CurrentUserPhotoProvider` (equivalente al\n * `updateImageProfile` del Angular legacy). Sin provider, usa la prop `photo`.\n */\n isCurrentUser?: boolean;\n /** Acción al hacer clic. Si se define, el avatar muestra cursor de puntero. */\n onClick?: () => void;\n /** Base para el `data-testid` (`avatar-<testId>`). */\n testId?: string;\n};\n\n/**\n * Avatar de usuario compartible: muestra la foto del usuario y, si no tiene,\n * el ícono `PersonOutlined` sobre fondo secundario. Incluye tooltip con el\n * nombre y textos traducidos (es/en/pt). Reacciona al cambio de la prop `photo`;\n * para el usuario logueado, reacciona además al `CurrentUserPhotoProvider`.\n */\nexport function UserAvatar({\n photo,\n description,\n username,\n size = 32,\n showTooltip = true,\n inactive = false,\n cmsOrigin,\n crossOrigin,\n isCurrentUser = false,\n onClick,\n testId,\n}: UserAvatarProps) {\n const { t } = useCmsTranslation();\n const currentUserPhoto = useCurrentUserPhoto();\n\n // Para el usuario logueado, si hay provider la foto la manda el provider\n // (se actualiza al cambiarla en el perfil); si no, usamos la prop.\n const effectivePhoto =\n isCurrentUser && currentUserPhoto ? currentUserPhoto.photo : photo;\n\n const src = useMemo(() => {\n if (!effectivePhoto || effectivePhoto === NO_PICTURE) return '';\n return resolveCmsAssetUrl(effectivePhoto, cmsOrigin);\n }, [effectivePhoto, cmsOrigin]);\n\n const name = description?.trim() || username?.trim() || '';\n const tooltipText = name || t.userAvatar('unknownUser');\n const altText = name || t.userAvatar('alt');\n\n const avatar = (\n <Avatar\n src={src || undefined}\n alt={altText}\n onClick={onClick}\n data-testid={testId ? `avatar-${testId}` : undefined}\n slotProps={crossOrigin ? { img: { crossOrigin } } : undefined}\n sx={UserAvatarStyles.sxAvatar(size, Boolean(onClick), inactive)}>\n <PersonOutlinedIcon sx={UserAvatarStyles.sxIcon(size, inactive)} />\n </Avatar>\n );\n\n if (!showTooltip) return avatar;\n\n return (\n <Tooltip\n title={tooltipText}\n arrow\n slotProps={{ tooltip: { sx: UserAvatarStyles.sxTooltip } }}>\n {avatar}\n </Tooltip>\n );\n}\n","'use client';\n\nimport EditOutlinedIcon from '@mui/icons-material/EditOutlined';\nimport LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';\nimport PersonOutlinedIcon from '@mui/icons-material/PersonOutlined';\nimport type { SvgIconComponent } from '@mui/icons-material';\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport { useMemo, useState } from 'react';\n\nimport { useCmsTranslation } from '../../i18n';\nimport type { ProfileMenuMessageKey } from '../../i18n';\nimport { cmsColors } from '../../theme/variables';\nimport type { ProfileGetResponse } from '../../types/profile';\nimport {\n getProfileDisplayName,\n type ProfileAvatarOptions,\n} from '../../utils/profile-avatar';\nimport { toTestId } from '../../utils/toTestId';\nimport { UserAvatar } from '../user-avatar/UserAvatar';\nimport { TopBarStyles } from './TopBar.styles';\n\n/**\n * Rutas del CMS Angular legacy (las mismas para todos los gestores). El dominio\n * base lo inyecta el gestor con la prop `legacyBaseUrl` (dato de entorno).\n */\nconst LEGACY_PROFILE_PATH = '/admin/user_profile/user-settings';\nconst LEGACY_WEBMASTER_PATH = '/system/login';\n\n/** Une el dominio base del Angular con una ruta, sin doble barra. */\nfunction joinLegacyUrl(baseUrl: string | undefined, path: string): string {\n if (!baseUrl) return path;\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\ntype ProfileMenuItem = {\n id: string;\n labelKey: ProfileMenuMessageKey;\n icon: SvgIconComponent;\n /** Si está, el ítem es un enlace al Angular legacy. */\n href?: string;\n /** Abre el enlace en una pestaña nueva. */\n external?: boolean;\n};\n\nfunction ProfileMenuOption({\n label,\n icon: Icon,\n onSelect,\n href,\n external,\n danger,\n testId,\n}: {\n label: string;\n icon: SvgIconComponent;\n onSelect: () => void;\n href?: string;\n external?: boolean;\n /** Variante destructiva: texto e icono en rojo (p. ej. \"Cerrar sesión\"). */\n danger?: boolean;\n /** `data-testid` del ítem del menú. */\n testId?: string;\n}) {\n const color = danger ? cmsColors.danger : cmsColors.textStrong;\n return (\n <MenuItem\n onClick={onSelect}\n data-testid={testId}\n sx={TopBarStyles.sxProfileMenuItem}\n {...(href\n ? {\n component: 'a',\n href,\n ...(external\n ? { target: '_blank', rel: 'noopener noreferrer' }\n : {}),\n }\n : {})}>\n <ListItemIcon sx={TopBarStyles.sxProfileMenuListItemIcon}>\n <Icon sx={danger ? { color: cmsColors.danger } : undefined} />\n </ListItemIcon>\n <ListItemText\n primary={label}\n slotProps={{\n primary: {\n sx: { fontSize: 14, fontWeight: 400, color },\n },\n }}\n />\n </MenuItem>\n );\n}\n\nexport type ProfileMenuProps = {\n profile: ProfileGetResponse;\n avatarOptions?: ProfileAvatarOptions;\n /** Dominio del CMS Angular legacy para \"Mi Perfil\" / \"Vista Webmaster\". */\n legacyBaseUrl?: string;\n};\n\nexport function ProfileMenu({\n profile,\n avatarOptions,\n legacyBaseUrl,\n}: ProfileMenuProps) {\n const { t } = useCmsTranslation();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const displayName = getProfileDisplayName(profile);\n\n const menuItems = useMemo<ProfileMenuItem[]>(\n () => [\n {\n id: 'profile',\n labelKey: 'myProfile',\n icon: PersonOutlinedIcon,\n href: joinLegacyUrl(legacyBaseUrl, LEGACY_PROFILE_PATH),\n },\n {\n id: 'webmaster',\n labelKey: 'webmasterView',\n icon: EditOutlinedIcon,\n href: joinLegacyUrl(legacyBaseUrl, LEGACY_WEBMASTER_PATH),\n external: true,\n },\n ],\n [legacyBaseUrl],\n );\n\n const signOffItem = useMemo<ProfileMenuItem>(\n () => ({ id: 'sign-off', labelKey: 'signOff', icon: LogoutOutlinedIcon }),\n [],\n );\n\n const handleClose = () => setAnchorEl(null);\n\n const handleSelect = (_id: string) => {\n handleClose();\n };\n\n return (\n <>\n <IconButton\n id=\"profile-menu-button\"\n aria-label={t.profileMenu('ariaLabel')}\n aria-controls={open ? 'profile-menu' : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={(e) => setAnchorEl(e.currentTarget)}\n data-testid=\"dropdown-toggle-profile\"\n sx={TopBarStyles.sxProfileButton}>\n <UserAvatar\n photo={profile.image}\n description={displayName}\n username={profile.userName}\n size={34}\n showTooltip={false}\n isCurrentUser\n cmsOrigin={avatarOptions?.cmsOrigin}\n crossOrigin=\"anonymous\"\n />\n </IconButton>\n\n <Menu\n id=\"profile-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: TopBarStyles.sxProfileMenuPaper,\n ...({ 'data-testid': 'dropdown-menu-profile' } as object),\n },\n list: { disablePadding: true },\n }}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 2,\n py: 1.5,\n borderBottom: 1,\n borderColor: 'divider',\n }}>\n <UserAvatar\n photo={profile.image}\n description={displayName}\n username={profile.userName}\n size={40}\n showTooltip={false}\n isCurrentUser\n cmsOrigin={avatarOptions?.cmsOrigin}\n crossOrigin=\"anonymous\"\n />\n <Box sx={{ minWidth: 0 }}>\n <Typography\n variant=\"subtitle2\"\n sx={{ fontWeight: 600, color: cmsColors.textStrong }}>\n {displayName}\n </Typography>\n <Typography variant=\"caption\" sx={{ color: cmsColors.textNav }}>\n {profile.email}\n </Typography>\n </Box>\n </Box>\n {menuItems.map((item) => (\n <ProfileMenuOption\n key={item.id}\n label={t.profileMenu(item.labelKey)}\n icon={item.icon}\n href={item.href}\n external={item.external}\n testId={`dropdown-item-${toTestId(item.id)}`}\n onSelect={() => handleSelect(item.id)}\n />\n ))}\n <Divider sx={TopBarStyles.sxProfileMenuDivider} />\n <ProfileMenuOption\n label={t.profileMenu(signOffItem.labelKey)}\n icon={signOffItem.icon}\n testId=\"dropdown-item-sign-off\"\n onSelect={() => handleSelect(signOffItem.id)}\n danger\n />\n </Menu>\n </>\n );\n}\n","'use client';\n\nimport ScheduleOutlinedIcon from '@mui/icons-material/ScheduleOutlined';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport { useEffect, useState } from 'react';\n\nimport { getIntlLocaleTag, useCmsTranslation } from '../../i18n';\nimport { formatSiteDateTime } from '../../utils/site-time';\nimport { TopBarStyles } from './TopBar.styles';\n\nexport type TopBarClockProps = {\n /** Offset GMT de la publicación, tal como llega del CMS (p. ej. `\"-4\"`). */\n gmtRedaction?: string;\n /** Formato horario del CMS: `\"12h\"` (AM/PM) o `\"24h\"`. */\n timeFormat?: string;\n};\n\n/**\n * Etiqueta GMT a partir del offset de la publicación:\n * `\"-4\"` → `\"GMT-4\"`, `\"5\"` → `\"GMT+5\"`, vacío → `\"GMT\"`.\n */\nfunction formatGmtLabel(gmtRedaction?: string): string {\n const raw = (gmtRedaction ?? '').trim();\n if (!raw) return 'GMT';\n return `GMT${/^[+-]/.test(raw) ? raw : `+${raw}`}`;\n}\n\n/**\n * Reloj del header: hora actual en la zona de redacción de la publicación\n * seleccionada. Equivale al `.time` del modal de calendario del CMS Angular\n * (`cmsmedios`): toma la hora del navegador y la desplaza por el offset GMT de\n * la publicación; el formato 12h/24h sale del `timeFormat` del CMS.\n */\nexport function TopBarClock({ gmtRedaction, timeFormat }: TopBarClockProps) {\n const { locale, t } = useCmsTranslation();\n const [now, setNow] = useState<number | null>(null);\n\n // La hora real se fija solo en cliente para evitar desajustes de hidratación\n // (el `Date.now()` del servidor no coincide con el del navegador).\n useEffect(() => {\n setNow(Date.now());\n const id = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(id);\n }, []);\n\n if (now === null) return null;\n\n const time = formatSiteDateTime(now, gmtRedaction, getIntlLocaleTag(locale), {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat !== '24h',\n });\n\n return (\n <Box sx={TopBarStyles.sxClock}>\n <ScheduleOutlinedIcon sx={TopBarStyles.sxClockIcon} />\n <Box sx={TopBarStyles.sxClockText}>\n <Typography component=\"span\" sx={TopBarStyles.sxClockTime}>\n {time}\n </Typography>\n <Typography component=\"span\" sx={TopBarStyles.sxClockMeta}>\n {`${t.topBar('publication')} · ${formatGmtLabel(gmtRedaction)}`}\n </Typography>\n </Box>\n </Box>\n );\n}\n","'use client';\n\nimport HelpOutlineOutlinedIcon from '@mui/icons-material/HelpOutlineOutlined';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport AppBar from '@mui/material/AppBar';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Toolbar from '@mui/material/Toolbar';\nimport Tooltip from '@mui/material/Tooltip';\nimport type { ReactNode } from 'react';\n\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport type { ProfileGetResponse } from '../../types/profile';\nimport type { Publication } from '../../types/publication';\nimport type { SiteSection } from '../../types/site';\nimport { useCmsTranslation } from '../../i18n';\nimport type { ProfileAvatarOptions } from '../../utils/profile-avatar';\nimport {\n submitLegacyAdminPage,\n type LegacyAdminSession,\n} from '../../utils/legacy-admin';\nimport { findPublicationBySlug } from '../../utils/site-selector';\nimport { SiteSelectorMenu } from '../site-selector-menu/SiteSelectorMenu';\nimport { AppearanceMenu } from './AppearanceMenu';\nimport { NewContentMenu } from './NewContentMenu';\nimport type { NewContentGroup } from './newContentMenu.config';\nimport { NotificationsMenu } from './NotificationsMenu';\nimport { PreviewMenu } from './PreviewMenu';\nimport type { PreviewFormat } from './previewMenu.config';\nimport { ProfileMenu } from './ProfileMenu';\nimport { TopBarClock } from './TopBarClock';\nimport { TopBarStyles } from './TopBar.styles';\n\n/** Une el dominio del Angular legacy con una ruta, sin barra doble. */\nfunction joinLegacyUrl(baseUrl: string | undefined, path: string): string {\n if (!baseUrl) return path;\n return `${baseUrl.replace(/\\/$/, '')}${path}`;\n}\n\nfunction TopBarDivider() {\n return (\n <Box\n component=\"span\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n sx={TopBarStyles.sxDivider}\n />\n );\n}\n\nexport type TopBarProps = {\n sites: SiteSection[];\n /** Solo aplica con un sidebar colapsable (p. ej. `Sidebar`). Omitir oculta el botón. */\n sidebarOpen?: boolean;\n onToggleSidebar?: () => void;\n notificationUnreadCount: number;\n /** Respuesta cruda de `POST /dashboard/notification` (newsTask/expireTask/videos). */\n notificationsData?: DashboardNotificationsResponse | null;\n /** Destino del \"Ver más\" / clic en una oportunidad copilot (página de sugerencias). */\n copilotSuggestionsHref?: string;\n /** Clic en \"Ver más\" cuando no hay `copilotSuggestionsHref` (fallback). */\n onEditorialSeeMore?: () => void;\n /** \"Recordar luego\": recibe los `opportunity_id` mostrados para el snooze. */\n onEditorialRemindLater?: (opportunityIds: string[]) => void;\n profile: ProfileGetResponse;\n primaryLogo: ReactNode;\n brandLogo?: ReactNode;\n selectedPublicationId?: string;\n getPublicationHref: (publication: Publication) => string;\n resolvePublicationImageUrl?: (imagePath: string) => string;\n profileAvatarOptions?: ProfileAvatarOptions;\n /** Dominio del CMS Angular legacy (deploy nuevo) para enlaces de perfil. */\n legacyBaseUrl?: string;\n /**\n * Origen del CMS (JSP), p. ej. `https://dev.cms-medios.com`. Se usa para Ayuda\n * y Preview, que redirigen al admin viejo (NO al deploy de `legacyBaseUrl`).\n */\n cmsBaseUrl?: string;\n /**\n * Sesión para el redirect al admin viejo (token, sitio, publicación, usuario).\n * Si se pasa, Ayuda/Preview usan el form POST de cmsmedios; si no, Ayuda cae a\n * un enlace simple al CMS.\n */\n legacySession?: LegacyAdminSession;\n /** Columnas/ítems del menú \"Nuevo\". Por defecto, la estructura del CMS legacy. */\n newContentGroups?: NewContentGroup[];\n /** Formatos del menú de previsualización. Por defecto, Desktop/Mobile/Tablet. */\n previewFormats?: PreviewFormat[];\n /**\n * Operaciones concedidas al usuario (`POST /auth/permissions`). Si se omite,\n * no se filtra el menú \"Nuevo\" por permisos.\n */\n operationPermissions?: string[];\n /** Si el usuario es administrador (ve todos los ítems del menú \"Nuevo\"). */\n isAdmin?: boolean;\n /** Fallback (sin sesión) del clic en un ítem del menú \"Nuevo\" (recibe su `id`). */\n onNewContentSelect?: (itemId: string) => void;\n /** Integración: clic en un formato de previsualización (recibe su `id`). */\n onPreviewSelect?: (formatId: string) => void;\n};\n\nexport function TopBar({\n sites,\n sidebarOpen,\n onToggleSidebar,\n notificationUnreadCount,\n notificationsData,\n copilotSuggestionsHref,\n onEditorialSeeMore,\n onEditorialRemindLater,\n profile,\n primaryLogo,\n brandLogo,\n selectedPublicationId,\n getPublicationHref,\n resolvePublicationImageUrl,\n profileAvatarOptions,\n legacyBaseUrl,\n cmsBaseUrl,\n legacySession,\n newContentGroups,\n previewFormats,\n operationPermissions,\n isAdmin,\n onNewContentSelect,\n onPreviewSelect,\n}: TopBarProps) {\n const { t, locale } = useCmsTranslation();\n\n const selectedPublication = selectedPublicationId\n ? findPublicationBySlug(sites, selectedPublicationId)\n : undefined;\n\n // Mismo armado de URL que el `openManual()` del Angular legacy: ruta del\n // manual de ayuda por idioma sobre el ORIGEN DEL CMS (no el deploy nuevo).\n const helpTitle = t.topBar('help');\n const helpBase = cmsBaseUrl ?? legacyBaseUrl;\n const helpPath = `/system/modules/com.tfsla.diario.help/${locale}/index.html`;\n\n /**\n * Abre el manual de ayuda. Con sesión, usa el form POST de cmsmedios (pasa el\n * token al admin viejo); sin sesión, cae a un enlace simple al CMS.\n * @returns void\n */\n const handleHelpClick = () => {\n if (cmsBaseUrl && legacySession) {\n submitLegacyAdminPage({\n cmsBaseUrl,\n path: helpPath,\n session: legacySession,\n });\n return;\n }\n if (typeof window !== 'undefined') {\n window.open(joinLegacyUrl(helpBase, helpPath), '_blank', 'noopener');\n }\n };\n\n return (\n <AppBar position=\"static\" elevation={0} sx={TopBarStyles.sxAppBar}>\n <Toolbar disableGutters variant=\"dense\" sx={TopBarStyles.sxToolbar}>\n {onToggleSidebar && (\n <IconButton\n aria-label={\n sidebarOpen ? t.topBar('closeSidebar') : t.topBar('openSidebar')\n }\n aria-expanded={sidebarOpen}\n onClick={onToggleSidebar}\n sx={TopBarStyles.sxMenuButton}\n data-testid=\"icon-btn-sidebar-toggle\">\n <MenuIcon sx={TopBarStyles.sxMenuButtonIcon} />\n </IconButton>\n )}\n\n <Box sx={TopBarStyles.sxLogoBox}>{primaryLogo}</Box>\n\n <Box sx={{ flex: 1 }} />\n\n <Box sx={TopBarStyles.sxActionsFrame}>\n <Box sx={TopBarStyles.sxIconActionsRow}>\n <NewContentMenu\n groups={newContentGroups}\n operationPermissions={operationPermissions}\n isAdmin={isAdmin}\n legacyBaseUrl={legacyBaseUrl}\n onSelect={onNewContentSelect}\n />\n\n <AppearanceMenu />\n\n <NotificationsMenu\n unreadCount={notificationUnreadCount}\n notificationsData={notificationsData}\n masterBaseUrl={legacyBaseUrl}\n currentPublicationId={selectedPublication?.id}\n gmtRedaction={selectedPublication?.gmtRedaction}\n copilotSuggestionsHref={copilotSuggestionsHref}\n onEditorialSeeMore={onEditorialSeeMore}\n onEditorialRemindLater={onEditorialRemindLater}\n />\n\n <PreviewMenu\n formats={previewFormats}\n cmsBaseUrl={cmsBaseUrl}\n legacySession={legacySession}\n onSelect={onPreviewSelect}\n />\n\n <Tooltip title={helpTitle}>\n <IconButton\n onClick={handleHelpClick}\n aria-label={helpTitle}\n sx={TopBarStyles.sxActionIcon}\n data-testid=\"icon-btn-help\">\n <HelpOutlineOutlinedIcon sx={TopBarStyles.sxActionIconGlyph} />\n </IconButton>\n </Tooltip>\n </Box>\n\n <TopBarDivider />\n\n {brandLogo}\n\n <SiteSelectorMenu\n sites={sites}\n selectedPublicationId={selectedPublicationId}\n getPublicationHref={getPublicationHref}\n resolvePublicationImageUrl={resolvePublicationImageUrl}\n />\n\n <TopBarDivider />\n\n <TopBarClock\n gmtRedaction={selectedPublication?.gmtRedaction}\n timeFormat={selectedPublication?.timeFormat}\n />\n\n <TopBarDivider />\n\n <ProfileMenu\n profile={profile}\n avatarOptions={profileAvatarOptions}\n legacyBaseUrl={legacyBaseUrl}\n />\n </Box>\n </Toolbar>\n </AppBar>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nexport const AppShellStyles = {\n sxRoot: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n height: '100%',\n minHeight: 0,\n overflow: 'hidden',\n bgcolor: 'm3.surfaceContainer',\n } as SxProps<Theme>,\n\n sxHeader: {\n flexShrink: 0,\n } as SxProps<Theme>,\n\n sxBody: {\n display: 'flex',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n } as SxProps<Theme>,\n\n sxMain: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n mt: '10px',\n pt: 1,\n pb: 3,\n pr: 3,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport type { ReactNode } from 'react';\nimport { CmsI18nProvider } from '../../i18n';\nimport type { AppLocaleCatalog, CmsMessagesOverride, Locale } from '../../i18n';\nimport type { NavItemPermissions } from '../../types/navigation';\nimport type { DashboardNotificationsResponse } from '../../services/dashboard';\nimport type { ProfileGetResponse } from '../../types/profile';\nimport type { Publication } from '../../types/publication';\nimport type { SiteSection } from '../../types/site';\nimport type { ProfileAvatarOptions } from '../../utils/profile-avatar';\nimport type { LegacyAdminSession } from '../../utils/legacy-admin';\nimport type { CmsLinkComponent } from '../link';\nimport { DefaultCmsLink } from '../link';\nimport { SidebarRail, type SidebarRailPinService } from '../sidebar/SidebarRail';\nimport { TopBar } from '../top-bar/TopBar';\nimport type { NewContentGroup } from '../top-bar/newContentMenu.config';\nimport type { PreviewFormat } from '../top-bar/previewMenu.config';\nimport { AppShellStyles } from './AppShell.styles';\n\nexport type AppShellProps = {\n pathname: string;\n sites: SiteSection[];\n children: ReactNode;\n notificationUnreadCount: number;\n /** Respuesta cruda de `POST /dashboard/notification` (newsTask/expireTask/videos). */\n notificationsData?: DashboardNotificationsResponse | null;\n /** Destino del \"Ver más\" / clic en una oportunidad copilot (página de sugerencias). */\n copilotSuggestionsHref?: string;\n /** Clic en \"Ver más\" cuando no hay `copilotSuggestionsHref` (fallback). */\n onEditorialSeeMore?: () => void;\n /** \"Recordar luego\": recibe los `opportunity_id` mostrados para el snooze. */\n onEditorialRemindLater?: (opportunityIds: string[]) => void;\n profile: ProfileGetResponse;\n primaryLogo: ReactNode;\n brandLogo?: ReactNode;\n selectedPublicationId: string;\n getPublicationHref: (publication: Publication) => string;\n resolvePublicationImageUrl?: (imagePath: string) => string;\n profileAvatarOptions?: ProfileAvatarOptions;\n /** Dominio del CMS Angular legacy (deploy nuevo) para enlaces de perfil. */\n legacyBaseUrl?: string;\n /**\n * Origen del CMS (JSP) para Ayuda/Preview. Si se omite, se usa `baseUrl`.\n */\n cmsBaseUrl?: string;\n /** Sesión para el redirect al admin viejo (token, sitio, publicación, usuario). */\n legacySession?: LegacyAdminSession;\n /** Columnas/ítems del menú \"Nuevo\". Por defecto, la estructura del CMS legacy. */\n newContentGroups?: NewContentGroup[];\n /** Formatos del menú de previsualización. Por defecto, Desktop/Mobile/Tablet. */\n previewFormats?: PreviewFormat[];\n /** Operaciones concedidas al usuario (`POST /auth/permissions`). */\n operationPermissions?: string[];\n /** Si el usuario es administrador (ve todos los ítems del menú \"Nuevo\"). */\n isAdmin?: boolean;\n /** Fallback (sin sesión) del clic en un ítem del menú \"Nuevo\" (recibe su `id`). */\n onNewContentSelect?: (itemId: string) => void;\n /** Integración: clic en un formato de previsualización (recibe su `id`). */\n onPreviewSelect?: (formatId: string) => void;\n LinkComponent?: CmsLinkComponent;\n permissions: Array<NavItemPermissions>;\n locale?: Locale | string;\n /** Alias de `locale`. */\n language?: Locale | string;\n messages?: CmsMessagesOverride;\n /** Catálogo de mensajes propio del gestor (namespaces libres, es/en/pt). */\n appMessages?: AppLocaleCatalog;\n\n baseUrl: string;\n /**\n * Servicio de pines del sidebar (`CmsProfileServices`, construido por el\n * host con su `axiosApi`/`authentication`). Si se omite, el anclado de\n * accesos es solo visual y no persiste entre sesiones.\n */\n profileServices?: SidebarRailPinService;\n};\n\nexport function AppShell({\n pathname,\n sites,\n children,\n notificationUnreadCount,\n notificationsData,\n copilotSuggestionsHref,\n onEditorialSeeMore,\n onEditorialRemindLater,\n profile,\n primaryLogo,\n brandLogo,\n selectedPublicationId,\n getPublicationHref,\n resolvePublicationImageUrl,\n profileAvatarOptions,\n legacyBaseUrl,\n cmsBaseUrl,\n legacySession,\n newContentGroups,\n previewFormats,\n operationPermissions,\n isAdmin,\n onNewContentSelect,\n onPreviewSelect,\n LinkComponent = DefaultCmsLink,\n permissions,\n locale,\n language,\n messages,\n appMessages,\n baseUrl,\n profileServices,\n}: AppShellProps) {\n return (\n <CmsI18nProvider\n locale={locale}\n language={language}\n messages={messages}\n appMessages={appMessages}>\n <Box sx={AppShellStyles.sxRoot}>\n <Box component=\"header\" sx={AppShellStyles.sxHeader}>\n <TopBar\n sites={sites}\n notificationUnreadCount={notificationUnreadCount}\n notificationsData={notificationsData}\n copilotSuggestionsHref={copilotSuggestionsHref}\n onEditorialSeeMore={onEditorialSeeMore}\n onEditorialRemindLater={onEditorialRemindLater}\n profile={profile}\n primaryLogo={primaryLogo}\n brandLogo={brandLogo}\n selectedPublicationId={selectedPublicationId}\n getPublicationHref={getPublicationHref}\n resolvePublicationImageUrl={resolvePublicationImageUrl}\n profileAvatarOptions={profileAvatarOptions}\n legacyBaseUrl={legacyBaseUrl}\n cmsBaseUrl={cmsBaseUrl ?? baseUrl}\n legacySession={legacySession}\n newContentGroups={newContentGroups}\n previewFormats={previewFormats}\n operationPermissions={operationPermissions}\n isAdmin={isAdmin}\n onNewContentSelect={onNewContentSelect}\n onPreviewSelect={onPreviewSelect}\n />\n </Box>\n <Box sx={AppShellStyles.sxBody}>\n <SidebarRail\n pathname={pathname}\n LinkComponent={LinkComponent}\n permissions={permissions}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n profileServices={profileServices}\n />\n <Box component=\"main\" sx={AppShellStyles.sxMain}>\n {children}\n </Box>\n </Box>\n </Box>\n </CmsI18nProvider>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows } from '../../theme/variables';\n\nconst ACTIVE_BG = cmsColors.secondary;\nconst HOVER_BG = cmsColors.surfaceHover;\nconst NAV_TEXT = cmsColors.textNav;\n\nexport const SIDEBAR_WIDTH_EXPANDED = 195;\nexport const SIDEBAR_WIDTH_COLLAPSED = 96;\n\nconst ICON_SIZE_EXPANDED = 24;\nconst ICON_SIZE_COLLAPSED = 24;\n\nconst scrollbarHidden = {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n} as const;\n\nexport const SidebarStyles = {\n sxRoot: (open: boolean): SxProps<Theme> => {\n const width = open ? SIDEBAR_WIDTH_EXPANDED : SIDEBAR_WIDTH_COLLAPSED;\n return {\n width,\n maxWidth: width,\n minWidth: width,\n flexShrink: 0,\n alignSelf: 'stretch',\n minHeight: 0,\n maxHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n bgcolor: 'm3.surfaceContainer',\n paddingTop: open ? '1rem' : '1.5rem',\n boxSizing: 'border-box',\n transition: 'width 0.2s ease, min-width 0.2s ease, max-width 0.2s ease',\n };\n },\n\n sxNavScroll: {\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n width: '100%',\n boxSizing: 'border-box',\n ...scrollbarHidden,\n } as SxProps<Theme>,\n\n sxNav: (open: boolean): SxProps<Theme> => ({\n display: 'flex',\n flexDirection: 'column',\n py: 1.5,\n gap: open ? 0.25 : 0.5,\n width: '100%',\n maxWidth: '100%',\n minWidth: 0,\n boxSizing: 'border-box',\n position: 'relative',\n px: open ? '1rem' : 0.75,\n alignItems: open ? 'stretch' : 'start',\n }),\n\n sxNavGroup: (open: boolean): SxProps<Theme> => ({\n position: 'relative',\n minWidth: 0,\n maxWidth: open ? '100%' : 'none',\n overflow: 'visible',\n width: open ? '100%' : 'auto',\n gap: 0,\n }),\n\n /** Wrapper del Tooltip: ancho completo expandido, auto en rail colapsado */\n sxTooltipWrap: (open: boolean): SxProps<Theme> => ({\n display: 'flex',\n width: open ? '100%' : 'auto',\n alignItems: 'flex-start',\n }),\n\n sxDivider: {\n my: 1,\n borderColor: cmsColors.border,\n } as SxProps<Theme>,\n\n sxItem: (\n selected: boolean,\n nested = false,\n hasChildren = false,\n collapsed = false,\n ): SxProps<Theme> => {\n if (collapsed) {\n return {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 48,\n minWidth: 0,\n width: 'auto',\n maxWidth: 'none',\n boxSizing: 'border-box',\n overflow: 'hidden',\n px: 0,\n py: 0,\n borderRadius: '100px',\n color: NAV_TEXT,\n textDecoration: 'none',\n bgcolor: selected ? ACTIVE_BG : 'transparent',\n '&:hover': {\n bgcolor: selected ? ACTIVE_BG : 'action.hover',\n },\n };\n }\n\n return {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: '15px', // separación ícono → texto\n minHeight: 40,\n minWidth: 0,\n maxWidth: 'none',\n // Para que el hover/active se vea igual al diseño: el fondo llega al borde izquierdo\n width: 'calc(100% + 1rem)',\n boxSizing: 'border-box',\n overflow: hasChildren ? 'visible' : 'hidden',\n px: nested ? 1.5 : 0,\n pl: nested ? 4.5 : 3,\n py: 0.75,\n ml: '-1rem',\n mr: 0,\n // Sub-items: píldora completa; top-level: píldora pegada a la izquierda\n borderRadius: nested ? '100px' : '0 100px 100px 0',\n color: NAV_TEXT,\n textDecoration: 'none',\n bgcolor: selected ? ACTIVE_BG : 'transparent',\n '&:hover': {\n bgcolor: selected ? ACTIVE_BG : HOVER_BG,\n },\n };\n },\n\n sxItemIcon: (selected: boolean, collapsed = false): SxProps<Theme> => ({\n fontSize: collapsed ? ICON_SIZE_COLLAPSED : ICON_SIZE_EXPANDED,\n color: selected ? 'secondary.dark' : 'm3.onSurfaceVariant',\n width: collapsed ? 48 : 'auto',\n flexShrink: 0,\n }),\n\n sxItemLabel: (selected: boolean): SxProps<Theme> => ({\n flex: 1,\n minWidth: 0,\n fontSize: 14,\n fontWeight: selected ? 600 : 400,\n lineHeight: 1.43,\n color: NAV_TEXT,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n\n sxExpandButton: {\n pl: '1.5rem',\n position: 'absolute',\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n p: 0.25,\n color: 'm3.onSurfaceVariant',\n zIndex: 1,\n } as SxProps<Theme>,\n\n sxChildrenMenuPaper: {\n mt: 0.5,\n borderRadius: radii.xl,\n bgcolor: cmsColors.menuSurface,\n boxShadow: shadows.flyout,\n // Menú M3: sin padding lateral (ítems de borde a borde) y 8px arriba/abajo.\n py: '8px',\n px: 0,\n overflow: 'hidden',\n } as SxProps<Theme>,\n\n sxChildrenMenuItem: (selected: boolean): SxProps<Theme> => ({\n minHeight: 44,\n // Full-bleed (sin radio): el hover llega de borde a borde (M3 por defecto).\n borderRadius: 0,\n px: 2,\n py: 1,\n gap: 1.25,\n color: NAV_TEXT,\n bgcolor: selected ? ACTIVE_BG : 'transparent',\n // Hover: state layer M3 `onSurface` al 8% (#191C20).\n '&:hover': {\n bgcolor: selected ? ACTIVE_BG : cmsColors.neutralHover,\n },\n '&.Mui-selected': {\n bgcolor: ACTIVE_BG,\n '&:hover': { bgcolor: ACTIVE_BG },\n },\n }),\n\n sxChildrenMenuListItemIcon: {\n minWidth: 34,\n color: 'm3.onSurfaceVariant',\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n },\n } as SxProps<Theme>,\n\n sxBetaChip: (open = false): SxProps<Theme> => ({\n height: 15,\n fontSize: 11,\n fontWeight: 600,\n letterSpacing: '0.04em',\n bgcolor: 'primary.main',\n color: 'primary.contrastText',\n borderRadius: '.625rem',\n px: 0.75,\n mr: open ? 1 : 0,\n lineHeight: 1,\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n};\n","'use client';\n\nimport { useMemo, useState, type ReactElement } from 'react';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { useCmsTranslation } from '../../i18n';\nimport type { CmsTranslator } from '../../i18n';\nimport { cmsColors } from '../../theme/variables';\nimport type { NavItemPermissions, NavLinkItem } from '../../types/navigation';\nimport { toTestId } from '../../utils/toTestId';\nimport { DefaultCmsLink, type CmsLinkComponent } from '../link';\nimport { SidebarStyles } from './Sidebar.styles';\nimport { ACCOUNT_NAV_BLOCKS } from './nav-blocks';\nimport {\n findModulePermission,\n getVisibleChildren,\n isItemActive,\n isPathActive,\n resolveNavHref,\n resolveNavLabel,\n} from './nav-helpers';\n\nfunction wrapWithTooltip(open: boolean, label: string, node: ReactElement) {\n if (open) return node;\n return (\n <Tooltip title={label} placement=\"right\" arrow>\n <Box component=\"span\" sx={SidebarStyles.sxTooltipWrap(open)}>\n {node}\n </Box>\n </Tooltip>\n );\n}\n\nfunction NavRow({\n item,\n blockIndex,\n nested = false,\n open = true,\n expanded,\n onToggleExpand,\n LinkComponent,\n pathname,\n permissions,\n t,\n legacyBaseUrl,\n selectedPublicationId,\n}: {\n item: NavLinkItem;\n blockIndex: number;\n nested?: boolean;\n open?: boolean;\n expanded?: boolean;\n onToggleExpand?: () => void;\n LinkComponent: CmsLinkComponent;\n pathname: string;\n permissions: Array<NavItemPermissions>;\n t: CmsTranslator;\n legacyBaseUrl?: string;\n selectedPublicationId: string;\n}) {\n // Los testids de navegación se escopan por el índice del bloque padre: `module`\n // no es único (POSTS y PAYMENTS se repiten en nav-blocks.ts) y no hay id de\n // bloque estable, así que sin el escopo habría testids duplicados en pantalla.\n const blockScope = `block-${blockIndex}`;\n const label = resolveNavLabel(item, t);\n const permission = findModulePermission(permissions, item.module);\n const visibleChildren = getVisibleChildren(item, permissions);\n const collapsed = !open;\n const selected = isPathActive(pathname, item.href);\n const parentSelected = isItemActive(pathname, item);\n const hasChildren = visibleChildren.length > 0;\n const Icon = item.icon;\n const iconSelected = nested ? selected : selected || parentSelected;\n const [childMenuAnchor, setChildMenuAnchor] = useState<HTMLElement | null>(null);\n const childMenuOpen = Boolean(childMenuAnchor);\n if (!permission && !hasChildren) return null;\n const content = (\n <>\n {hasChildren && !collapsed ? (\n <IconButton\n size=\"small\"\n data-testid={`toggle-nav-${blockScope}-${toTestId(item.module)}`}\n data-action={expanded ? 'collapse' : 'expand'}\n aria-label={expanded ? t.sidebar('collapse') : t.sidebar('expand')}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onToggleExpand?.();\n }}\n sx={SidebarStyles.sxExpandButton}>\n {expanded ? (\n <ExpandMoreIcon sx={{ fontSize: 20 }} />\n ) : (\n <ChevronRightIcon sx={{ fontSize: 20 }} />\n )}\n </IconButton>\n ) : null}\n <Icon sx={SidebarStyles.sxItemIcon(iconSelected, collapsed)} />\n {!collapsed ? (\n <Typography component=\"span\" sx={SidebarStyles.sxItemLabel(selected)}>\n {label}\n </Typography>\n ) : null}\n {permission?.isnew && (\n <Box component=\"span\" sx={SidebarStyles.sxBetaChip(open)}>\n {t.sidebar('newBadge')}\n </Box>\n )}\n </>\n );\n\n if (hasChildren && !collapsed) {\n return (\n <Box sx={SidebarStyles.sxNavGroup(open)}>\n <Box\n component=\"div\"\n data-testid={`nav-${blockScope}-${toTestId(item.module)}`}\n onClick={onToggleExpand}\n sx={{\n ...SidebarStyles.sxItem(parentSelected, nested, true, false),\n cursor: 'pointer',\n }}>\n {content}\n </Box>\n <Collapse in={expanded} timeout=\"auto\" unmountOnExit>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n mt: 0.25,\n minWidth: 0,\n maxWidth: '100%',\n overflow: 'hidden',\n }}>\n {visibleChildren.map((child) => (\n <NavRow\n key={child.href}\n item={child}\n blockIndex={blockIndex}\n nested\n open={open}\n LinkComponent={LinkComponent}\n pathname={pathname}\n permissions={permissions}\n t={t}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n />\n ))}\n </Box>\n </Collapse>\n </Box>\n );\n }\n\n // Sidebar colapsado + item con hijos: mostrar menú flotante (como en la imagen)\n if (hasChildren && collapsed) {\n const row = (\n <Box\n component=\"button\"\n type=\"button\"\n data-testid={`dropdown-toggle-nav-${blockScope}-${toTestId(item.module)}`}\n aria-label={label}\n aria-controls={childMenuOpen ? `sidebar-children-${item.href}` : undefined}\n aria-haspopup=\"true\"\n aria-expanded={childMenuOpen ? 'true' : undefined}\n onClick={(e) => setChildMenuAnchor(e.currentTarget)}\n onMouseEnter={(e) => setChildMenuAnchor(e.currentTarget)}\n sx={{\n ...SidebarStyles.sxItem(parentSelected, nested, hasChildren, true),\n border: 0,\n background: 'transparent',\n cursor: 'pointer',\n }}>\n {content}\n </Box>\n );\n\n // En colapsado + hijos: solo menú flotante (sin tooltip)\n return (\n <>\n {row}\n <Menu\n id={`sidebar-children-${item.href}`}\n anchorEl={childMenuAnchor}\n open={childMenuOpen}\n onClose={() => setChildMenuAnchor(null)}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n transformOrigin={{ vertical: 'center', horizontal: 'left' }}\n slotProps={{\n paper: { sx: SidebarStyles.sxChildrenMenuPaper },\n list: {\n onMouseLeave: () => setChildMenuAnchor(null),\n sx: { py: 1 },\n },\n }}>\n {visibleChildren.map((child) => {\n const ChildIcon = child.icon;\n return (\n <MenuItem\n key={child.href}\n data-testid={`dropdown-item-nav-${toTestId(child.module)}`}\n component={LinkComponent}\n href={resolveNavHref(child, legacyBaseUrl, selectedPublicationId)}\n onClick={() => setChildMenuAnchor(null)}\n sx={SidebarStyles.sxChildrenMenuItem(isPathActive(pathname, child.href))}>\n <ListItemIcon sx={SidebarStyles.sxChildrenMenuListItemIcon}>\n <ChildIcon />\n </ListItemIcon>\n <ListItemText\n primary={resolveNavLabel(child, t)}\n slotProps={{\n primary: {\n sx: {\n fontSize: 14,\n fontWeight: 400,\n color: cmsColors.textStrong,\n },\n },\n }}\n />\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n }\n\n const row = (\n <Box\n component={LinkComponent}\n href={resolveNavHref(item, legacyBaseUrl, selectedPublicationId)}\n data-testid={`nav-${blockScope}-${toTestId(item.module)}`}\n sx={SidebarStyles.sxItem(\n collapsed ? parentSelected : selected,\n nested,\n hasChildren,\n collapsed,\n )}>\n {content}\n </Box>\n );\n\n return wrapWithTooltip(open, label, row);\n}\n\nfunction NavSection({\n items,\n open = true,\n LinkComponent,\n pathname,\n permissions,\n t,\n legacyBaseUrl,\n selectedPublicationId,\n}: {\n items: NavLinkItem[];\n open: boolean;\n LinkComponent: CmsLinkComponent;\n pathname: string;\n permissions: Array<NavItemPermissions>;\n t: CmsTranslator;\n legacyBaseUrl?: string;\n selectedPublicationId: string;\n}) {\n\n const initialOpen = useMemo(() => {\n const state: Record<string, boolean> = {};\n for (const item of items) {\n if (item.children) {\n state[item.href] =\n item.defaultOpen ?? item.children.some((c) => isPathActive(pathname, c.href));\n }\n }\n return state;\n }, [items, pathname]);\n\n const [openGroups, setOpenGroups] = useState(initialOpen);\n\n const toggleGroup = (href: string) => {\n setOpenGroups((prev) => ({ ...prev, [href]: !prev[href] }));\n };\n\n return (\n <>\n {items.map((item, blockIndex) => (\n <NavRow\n key={item.href}\n item={item}\n blockIndex={blockIndex}\n open={open}\n permissions={permissions}\n expanded={openGroups[item.href]}\n onToggleExpand={\n getVisibleChildren(item, permissions).length > 0\n ? () => toggleGroup(item.href)\n : undefined\n }\n LinkComponent={LinkComponent}\n pathname={pathname}\n t={t}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n />\n ))}\n </>\n );\n}\n\nexport type SidebarProps = {\n open?: boolean;\n pathname: string;\n LinkComponent?: CmsLinkComponent;\n permissions: Array<NavItemPermissions>;\n /** Dominio del admin legacy (JSP/Angular) para prefijar hrefs con `item.legacy`. */\n legacyBaseUrl?: string;\n selectedPublicationId: string;\n};\n\nexport function Sidebar({\n open = true,\n pathname,\n permissions,\n LinkComponent = DefaultCmsLink,\n legacyBaseUrl,\n selectedPublicationId,\n}: SidebarProps) {\n const { t } = useCmsTranslation();\n\n return (\n <Box component=\"aside\" sx={SidebarStyles.sxRoot(open)}>\n <Box sx={SidebarStyles.sxNavScroll}>\n <Box\n component=\"nav\"\n aria-label={t.sidebar('navAriaLabel')}\n sx={SidebarStyles.sxNav(open)}>\n <NavSection\n permissions={permissions}\n items={ACCOUNT_NAV_BLOCKS}\n open={open}\n LinkComponent={LinkComponent}\n pathname={pathname}\n t={t}\n legacyBaseUrl={legacyBaseUrl}\n selectedPublicationId={selectedPublicationId}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors } from '../../theme/variables';\n\n/**\n * Estilos de la página de error compartida (404 / sin permisos).\n * Replica el layout de cmsmedios: ilustración + bloque de texto.\n * Solo variables del theme: nada de colores quemados.\n */\nexport const CmsErrorPageStyles = {\n // Cubre toda la ventana (por encima del shell), como en cmsmedios.\n // Ilustración e info en fila (columna en móvil).\n sxRoot: {\n position: 'fixed',\n inset: 0,\n zIndex: 1300,\n overflow: 'auto',\n display: 'flex',\n flexDirection: { xs: 'column', md: 'row' },\n alignItems: 'center',\n justifyContent: 'center',\n gap: { xs: 4, md: 8 },\n px: { xs: 3, md: 6 },\n py: { xs: 6, md: 8 },\n bgcolor: cmsColors.avatarBg,\n } as SxProps<Theme>,\n\n // Ilustración de marca (PNG servido desde el `public/` del gestor).\n sxIllustration: {\n width: { xs: 220, sm: 300, md: 420 },\n maxWidth: '100%',\n height: 'auto',\n flexShrink: 0,\n } as SxProps<Theme>,\n\n // Bloque de texto: alineado a la izquierda en desktop, centrado en móvil.\n sxContent: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: { xs: 'center', md: 'flex-start' },\n textAlign: { xs: 'center', md: 'left' },\n maxWidth: 520,\n } as SxProps<Theme>,\n\n // Título grande (respeta saltos de línea `\\n` de la traducción).\n sxTitle: {\n fontSize: { xs: 32, md: 46 },\n fontWeight: 700,\n lineHeight: 1.1,\n color: cmsColors.textStrong,\n whiteSpace: 'pre-line',\n } as SxProps<Theme>,\n\n // Subtítulo.\n sxSubtitle: {\n mt: 2,\n fontSize: { xs: 16, md: 18 },\n color: cmsColors.textNav,\n } as SxProps<Theme>,\n\n // Botón HOME (sobre el pill de la lib: separación y mayúsculas).\n sxButton: {\n mt: 3,\n textTransform: 'uppercase',\n px: 4,\n } as SxProps<Theme>,\n\n // Línea \"Error 404. Copiar detalle.\" (solo en 404).\n sxErrorLine: {\n mt: 3,\n fontSize: 14,\n color: cmsColors.textMuted,\n } as SxProps<Theme>,\n\n // Enlace \"Copiar detalle.\" clicable.\n sxCopyLink: {\n ml: 0.5,\n color: cmsColors.link,\n fontWeight: 500,\n cursor: 'pointer',\n userSelect: 'none',\n '&:hover': { textDecoration: 'underline' },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport type { ElementType } from 'react';\nimport { useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\n\nimport { useCmsTranslation } from '../../i18n';\nimport { sxPillButton } from '../../theme/buttonStyles';\nimport { DefaultCmsLink, type CmsLinkComponent } from '../link';\nimport { CmsErrorPageStyles } from './CmsErrorPage.styles';\n\n/** Variante de error a mostrar: 404 (no encontrado) o sin permisos. */\nexport type CmsErrorPageVariant = 'not-found' | 'not-allowed';\n\nexport type CmsErrorPageProps = {\n /** Tipo de error a mostrar. */\n variant: CmsErrorPageVariant;\n /** Destino del botón HOME. Por defecto la raíz del gestor (`/`). */\n homeHref?: string;\n /** Componente de enlace del host (p. ej. `next/link`). Por defecto un `<a>`. */\n LinkComponent?: CmsLinkComponent;\n /**\n * Ruta de la ilustración (servida desde el `public/` del gestor). Por defecto\n * `/errors/notfound.png` o `/errors/not-allowed.png` según la variante.\n */\n illustrationSrc?: string;\n};\n\n/**\n * Página de error compartida por todos los gestores (mecanismo en la lib).\n * Replica la de cmsmedios: ilustración + título + subtítulo + botón HOME, y en\n * el 404 la línea \"Error 404. Copiar detalle.\" que copia la URL al portapapeles.\n * Los textos salen del i18n de la lib (namespace `errorPage`, es/en/pt), así que\n * ningún gestor los duplica.\n */\nexport function CmsErrorPage({\n variant,\n homeHref = '/',\n LinkComponent = DefaultCmsLink,\n illustrationSrc,\n}: CmsErrorPageProps) {\n const { t } = useCmsTranslation();\n const [copied, setCopied] = useState(false);\n const isNotAllowed = variant === 'not-allowed';\n\n const title = t.errorPage(isNotAllowed ? 'notAllowedTitle' : 'notFoundTitle');\n const subtitle = t.errorPage(\n isNotAllowed ? 'notAllowedSubtitle' : 'notFoundSubtitle',\n );\n const imageSrc =\n illustrationSrc ??\n (isNotAllowed ? '/errors/not-allowed.png' : '/errors/notfound.png');\n\n // Copia al portapapeles el detalle del error (la ruta a la que se intentó\n // acceder), replicando el \"Copiar detalle\" de cmsmedios.\n const handleCopy = async () => {\n const url = typeof window !== 'undefined' ? window.location.href : '';\n const detail = t.errorPage('copyDetailText').replace('{url}', url);\n try {\n await navigator.clipboard.writeText(detail);\n setCopied(true);\n window.setTimeout(() => setCopied(false), 2500);\n } catch {\n // Si el navegador bloquea el portapapeles, no hacemos nada.\n }\n };\n\n return (\n <Box\n data-testid=\"panel-error\"\n data-variant={variant}\n sx={CmsErrorPageStyles.sxRoot}>\n <Box\n component=\"img\"\n src={imageSrc}\n alt=\"\"\n aria-hidden\n sx={CmsErrorPageStyles.sxIllustration}\n />\n <Box sx={CmsErrorPageStyles.sxContent}>\n <Typography component=\"h1\" sx={CmsErrorPageStyles.sxTitle}>\n {title}\n </Typography>\n <Typography component=\"p\" sx={CmsErrorPageStyles.sxSubtitle}>\n {subtitle}\n </Typography>\n <Button\n data-testid=\"btn-error-home\"\n component={LinkComponent as ElementType}\n href={homeHref}\n sx={{\n ...(sxPillButton('cta') as object),\n ...(CmsErrorPageStyles.sxButton as object),\n }}>\n {t.errorPage('homeButton')}\n </Button>\n {!isNotAllowed && (\n <Typography component=\"p\" sx={CmsErrorPageStyles.sxErrorLine}>\n {t.errorPage('errorLabel')} {t.errorPage('notFoundCode')}.\n <Box\n data-testid=\"btn-error-copy\"\n component=\"span\"\n role=\"button\"\n tabIndex={0}\n onClick={handleCopy}\n sx={CmsErrorPageStyles.sxCopyLink}>\n {copied ? t.errorPage('copied') : t.errorPage('copyDetail')}\n </Box>\n </Typography>\n )}\n </Box>\n </Box>\n );\n}\n","'use client';\n\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\nimport { buildCmsColorSchemeVars } from '../../theme/variables';\n\nconst { light, dark } = buildCmsColorSchemeVars();\n\n/**\n * Inyecta las CSS variables `--cms-*` de la paleta mode-aware.\n *\n * - `:root` → valores claros (base; aplican siempre).\n * - `:root[data-mui-color-scheme=\"dark\"]` → valores oscuros (mayor\n * especificidad; ganan cuando MUI pone el atributo en <html>).\n *\n * Va montado dentro de los providers MUI, así todos los gestores y el showroom\n * obtienen el modo oscuro sin cambios adicionales.\n */\nexport function CmsColorSchemeVars() {\n return (\n <GlobalStyles\n styles={{\n ':root': light,\n ':root[data-mui-color-scheme=\"dark\"]': dark,\n }}\n />\n );\n}\n","'use client';\n\nimport GlobalStyles from '@mui/material/GlobalStyles';\n\nimport { cmsFontFaces } from '../../theme/fonts';\n\n/**\n * Inyecta los `@font-face` de Google Sans (fuente única del CMS) como estilos\n * globales. Va montado dentro de los providers MUI de la lib, así cada gestor que\n * los use tiene la fuente disponible sin configurar nada.\n */\nexport function CmsFontFaces() {\n return <GlobalStyles styles={cmsFontFaces} />;\n}\n","import {\n THEME_COLOR_SCHEME_ATTRIBUTE,\n THEME_ENABLED_STORAGE_KEY,\n THEME_MODE_STORAGE_KEY,\n} from '../../theme/themePreference';\n\n// Script inline que corre ANTES del primer pintado: lee la preferencia de\n// `localStorage` y aplica el modo efectivo al atributo de `<html>`. Sin esto el\n// primer render saldría en claro (defaultMode) y luego saltaría a oscuro →\n// parpadeo. Es JS plano (no React), así que funciona igual en cualquier gestor.\n//\n// Va montado dentro de los providers MUI (primer hijo), así todos los gestores\n// y el login lo obtienen sin cablear nada por app.\nconst INIT_SCRIPT = `(function(){try{var m=localStorage.getItem('${THEME_MODE_STORAGE_KEY}');var e=localStorage.getItem('${THEME_ENABLED_STORAGE_KEY}');var on=e===null?true:e==='true';var eff=on&&m==='dark'?'dark':'light';document.documentElement.setAttribute('${THEME_COLOR_SCHEME_ATTRIBUTE}',eff);}catch(_){}})();`;\n\n/** Anti-flash de tema: aplica el modo guardado antes de pintar. */\nexport function CmsThemeInitScript() {\n return (\n <script\n suppressHydrationWarning\n dangerouslySetInnerHTML={{ __html: INIT_SCRIPT }}\n />\n );\n}\n","'use client';\n\nimport { useColorScheme } from '@mui/material/styles';\nimport { useEffect } from 'react';\n\nimport { readEffectiveThemeMode } from '../../theme/themePreference';\n\n// Al montar (solo cliente), sincroniza el estado de color de MUI con la\n// preferencia guardada en `localStorage`. El atributo `<html>` ya lo aplica el\n// `CmsThemeInitScript` (anti-flash, vía CSS), pero MUI arranca su contexto React\n// en `defaultMode=\"light\"`; este sync alinea `theme.palette.mode` para los\n// componentes que lo leen en JS. Va dentro del ThemeProvider de la lib.\nexport function CmsThemeModeSync() {\n const { setMode } = useColorScheme();\n\n useEffect(() => {\n setMode(readEffectiveThemeMode());\n }, [setMode]);\n\n return null;\n}\n","'use client';\n\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { ThemeProvider } from '@mui/material/styles';\nimport type { ReactNode } from 'react';\n\nimport { createAppTheme } from '../../theme/createAppTheme';\nimport { CmsColorSchemeVars } from './CmsColorSchemeVars';\nimport { CmsFontFaces } from './CmsFontFaces';\nimport { CmsThemeInitScript } from './CmsThemeInitScript';\nimport { CmsThemeModeSync } from './CmsThemeModeSync';\n\nconst theme = createAppTheme();\n\nexport type CmsMuiProviderProps = {\n children: ReactNode;\n};\n\n/** Provider MUI sin integración Next.js (playground Vite u otros frameworks). */\nexport function CmsMuiProvider({ children }: CmsMuiProviderProps) {\n return (\n <ThemeProvider theme={theme} defaultMode=\"light\" storageManager={null}>\n {/* Anti-flash + sincronización del modo con la preferencia guardada. */}\n <CmsThemeInitScript />\n <CmsThemeModeSync />\n <CssBaseline enableColorScheme />\n <CmsColorSchemeVars />\n <CmsFontFaces />\n {children}\n </ThemeProvider>\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { ThemeProvider } from '@mui/material/styles';\nimport { AppRouterCacheProvider } from '@mui/material-nextjs/v16-appRouter';\nimport type { ReactNode } from 'react';\n\nimport { createAppTheme } from '../../theme/createAppTheme';\nimport { CmsColorSchemeVars } from './CmsColorSchemeVars';\nimport { CmsFontFaces } from './CmsFontFaces';\nimport { CmsThemeInitScript } from './CmsThemeInitScript';\nimport { CmsThemeModeSync } from './CmsThemeModeSync';\n\nconst theme = createAppTheme();\n\nexport type NextCmsMuiProviderProps = {\n children: ReactNode;\n};\n\nexport function NextCmsMuiProvider({ children }: NextCmsMuiProviderProps) {\n return (\n <AppRouterCacheProvider options={{ enableCssLayer: true }}>\n {/* Anti-flash: aplica el tema guardado antes de pintar. */}\n <CmsThemeInitScript />\n <ThemeProvider theme={theme} defaultMode=\"light\" storageManager={null}>\n {/* Alinea el modo de MUI con la preferencia persistida. */}\n <CmsThemeModeSync />\n <CssBaseline enableColorScheme />\n <CmsColorSchemeVars />\n <CmsFontFaces />\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: '100dvh',\n }}>\n {children}\n </Box>\n </ThemeProvider>\n </AppRouterCacheProvider>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport {\n cmsButtonHoverBg,\n cmsButtonSurface,\n type CmsButtonVariant,\n} from '../../theme/buttonStyles';\nimport { cmsColors, fontFamilies, shadows, sizes } from '../../theme/variables';\n\nconst variantOf = (whiteBtn: boolean): CmsButtonVariant =>\n whiteBtn ? 'white' : 'cta';\n\nexport const BtnDropdownStyles = {\n sxGroup: {\n display: 'inline-flex',\n alignItems: 'stretch',\n // Espacio entre el botón principal y el desplegable\n gap: '2px',\n } as SxProps<Theme>,\n\n sxMainButton: (whiteBtn: boolean, fullPill: boolean): SxProps<Theme> => {\n const variant = variantOf(whiteBtn);\n return {\n height: sizes.buttonHeight,\n px: '20px',\n pr: fullPill ? '20px' : '14px',\n // Esquinas externas redondas; las internas (junto a la flecha) a 4px.\n borderRadius: fullPill ? '999px' : '999px 4px 4px 999px',\n textTransform: 'none',\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n minWidth: 0,\n gap: 1,\n boxShadow: shadows.button,\n ...(cmsButtonSurface(variant) as object),\n '& .MuiSvgIcon-root': { fontSize: 18 },\n '&:hover': {\n boxShadow: shadows.button,\n bgcolor: cmsButtonHoverBg(variant),\n },\n '&.Mui-disabled': {\n bgcolor: whiteBtn\n ? 'm3.surfaceContainerLowest'\n : cmsColors.primaryDisabled,\n color: 'action.disabled',\n },\n };\n },\n\n sxArrowButton: (whiteBtn: boolean, open: boolean): SxProps<Theme> => {\n const variant = variantOf(whiteBtn);\n return {\n height: sizes.buttonHeight,\n minWidth: 38,\n width: 38,\n px: 0,\n // Esquina interna (junto al botón principal) a 4px; externa redonda.\n borderRadius: '4px 999px 999px 4px',\n boxShadow: shadows.button,\n ...(cmsButtonSurface(variant) as object),\n '& .MuiSvgIcon-root': {\n fontSize: 22,\n transition: 'transform 0.15s',\n transform: open ? 'rotate(180deg)' : 'none',\n },\n '&:hover': {\n boxShadow: shadows.button,\n bgcolor: cmsButtonHoverBg(variant),\n },\n '&.Mui-disabled': {\n bgcolor: whiteBtn\n ? 'm3.surfaceContainerLowest'\n : cmsColors.primaryDisabled,\n color: 'action.disabled',\n },\n };\n },\n};\n","'use client';\n\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport { useMemo, useState } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\nimport { BtnDropdownStyles } from './BtnDropdown.styles';\nimport { SimpleDropdown } from './SimpleDropdown';\nimport type { DropdownOption } from './types';\n\nexport type BtnDropdownProps = {\n /** Texto o nodo (ya traducido) del botón principal. */\n titleButton: ReactNode;\n /** Opciones del menú desplegable. */\n options: DropdownOption[];\n /** Ícono opcional a la izquierda del texto del botón principal. */\n icon?: ReactNode;\n /** Acción del botón principal. */\n onAction?: () => void;\n /** Deshabilita el botón y el menú completo. */\n disabled?: boolean;\n /** Habilita o deshabilita solo el botón principal. Por defecto `true`. */\n enableButton?: boolean;\n /** Variante visual de botón blanco. */\n whiteBtn?: boolean;\n /** Muestra u oculta la flecha del desplegable. Por defecto `true`. */\n showDropdownOptions?: boolean;\n /** Valor base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Botón primario con menú desplegable integrado, en forma de píldora dividida.\n * Combina un botón principal de acción (emite `onAction`) con una flecha que\n * despliega opciones adicionales. Si no hay opciones visibles, la flecha se\n * oculta automáticamente.\n */\nexport function BtnDropdown({\n titleButton,\n options,\n icon,\n onAction,\n disabled = false,\n enableButton = true,\n whiteBtn = false,\n showDropdownOptions = true,\n testId,\n}: BtnDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n /**\n * Alterna la apertura del menú anclándolo al botón de la flecha.\n * @param event - Evento de clic sobre la flecha.\n * @returns void\n */\n const handleToggle = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl((current) => (current ? null : event.currentTarget));\n };\n\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const hasOptions = visibleOptions.length > 0;\n const showArrow = showDropdownOptions && hasOptions;\n\n return (\n <>\n <Box sx={BtnDropdownStyles.sxGroup}>\n <Button\n disableElevation\n startIcon={icon}\n onClick={onAction}\n disabled={disabled || !enableButton}\n data-testid={testId ? `btn-${testId}` : undefined}\n sx={BtnDropdownStyles.sxMainButton(whiteBtn, !showArrow)}>\n {titleButton}\n </Button>\n {showArrow ? (\n <Button\n disableElevation\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={handleToggle}\n disabled={disabled}\n data-testid={testId ? `dropdown-toggle-${testId}` : undefined}\n sx={BtnDropdownStyles.sxArrowButton(whiteBtn, open)}>\n <ArrowDropDownIcon />\n </Button>\n ) : null}\n </Box>\n\n <SimpleDropdown\n options={options}\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n testId={testId ? `dropdown-menu-${testId}` : undefined}\n />\n </>\n );\n}\n","'use client';\n\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { cloneElement, isValidElement, useMemo, useState } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { SelectStyles } from '../../theme/selectStyles';\n\n/** Tamaño fijo (px) de los íconos de las opciones, en trigger y menú. */\nconst ICON_SIZE = 18;\n\n/**\n * Fuerza el ícono de una opción a {@link ICON_SIZE}×{@link ICON_SIZE}px. El\n * tamaño se aplica con `sx` sobre el **propio** ícono (no con un selector del\n * contenedor): así gana al tamaño por defecto de MUI (24px) sin depender de la\n * especificidad CSS. El `sx` del consumidor se respeta salvo el tamaño.\n */\nfunction withIconSize(icon: ReactNode): ReactNode {\n if (!isValidElement(icon)) return icon;\n const el = icon as ReactElement<{ sx?: SxProps<Theme> }>;\n return cloneElement(el, {\n sx: [\n el.props.sx,\n { fontSize: ICON_SIZE, width: ICON_SIZE, height: ICON_SIZE },\n ] as SxProps<Theme>,\n });\n}\n\n/** Opción de un `SelectDropdown`. */\nexport type SelectOption = {\n /** Valor que se emite en `onChange` y se compara con `value`. */\n value: string;\n /** Texto o nodo (ya traducido) a mostrar. */\n label: ReactNode;\n /** Ícono opcional a la izquierda del label. */\n icon?: ReactNode;\n /**\n * Color del ícono de esta opción (en el disparador y en el menú). Acepta un\n * valor de variable del theme (`cmsColors.*`, `feedbackColors.*`) o un path\n * del tema MUI (p. ej. `'m3.onSurfaceVariant'`). Si se omite, el ícono usa el\n * gris por defecto (`m3.onSurfaceVariant`).\n */\n iconColor?: string;\n /** Si es `false` la opción no se renderiza. Por defecto `true`. */\n show?: boolean;\n};\n\nexport type SelectDropdownProps = {\n /** Valor seleccionado actualmente. */\n value: string;\n /** Opciones disponibles. */\n options: SelectOption[];\n /** Callback al elegir una opción. */\n onChange: (value: string) => void;\n /**\n * Resalta el disparador con el color de acento (`secondary`).\n * Útil para señalar que hay un filtro activo distinto del valor por defecto.\n */\n highlighted?: boolean;\n /**\n * Muestra los íconos de las opciones (en el disparador y en el menú).\n * `true` → variante con ícono; `false` → variante solo texto. Por defecto `true`.\n */\n showIcons?: boolean;\n /** Ancho mínimo del menú. Por defecto `200`. */\n minWidth?: number | string;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Texto a mostrar cuando ningún valor coincide. */\n placeholder?: ReactNode;\n /**\n * Prefijo fijo antes del valor seleccionado en el disparador (p. ej.\n * \"Estado:\"). Solo aparece en el trigger, no en el menú. El prefijo va en peso\n * normal y el valor seleccionado en negrita.\n */\n prefix?: ReactNode;\n /** `aria-label` del disparador (accesibilidad). */\n ariaLabel?: string;\n /** Valor base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Selector de una sola opción con la estética \"vista/filtro\" del CMS: un\n * disparador outlined con label + chevron y un menú cuyo ítem activo se resalta\n * en `secondaryContainer`. Es presentacional y controlado: el consumidor pasa\n * `value` y `onChange`.\n *\n * Pensado para filtros de listado (p. ej. \"Últimas Noticias\" o\n * \"Todos / Activos / Inactivos\"), reutilizable desde cualquier app que consuma\n * la librería.\n */\nexport function SelectDropdown({\n value,\n options,\n onChange,\n highlighted = false,\n showIcons = true,\n minWidth = 200,\n disabled = false,\n placeholder,\n prefix,\n ariaLabel,\n testId,\n}: SelectDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const active = useMemo(\n () => visibleOptions.find((option) => option.value === value),\n [visibleOptions, value],\n );\n\n /**\n * Aplica la selección y cierra el menú.\n * @param next - Valor de la opción elegida.\n * @returns void\n */\n const handleSelect = (next: string) => {\n onChange(next);\n setAnchorEl(null);\n };\n\n /** Renderiza una opción del menú. */\n const renderOption = (option: SelectOption) => {\n const selected = option.value === value;\n return (\n <MenuItem\n key={option.value}\n selected={selected}\n onClick={() => handleSelect(option.value)}\n data-testid={testId ? `${testId}-option-${option.value}` : undefined}\n sx={SelectStyles.sxItem(selected)}>\n {showIcons && option.icon ? (\n <ListItemIcon\n sx={{ color: option.iconColor ?? 'm3.onSurfaceVariant' }}>\n {withIconSize(option.icon)}\n </ListItemIcon>\n ) : null}\n {option.label}\n </MenuItem>\n );\n };\n\n return (\n <>\n <Button\n type=\"button\"\n disableElevation\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open ? 'true' : undefined}\n aria-label={ariaLabel}\n onClick={(event) => setAnchorEl(event.currentTarget)}\n data-testid={testId}\n sx={SelectStyles.sxTrigger(highlighted, open)}>\n {showIcons && active?.icon ? (\n <Box\n component=\"span\"\n className=\"sel-lead\"\n sx={{ color: active.iconColor ?? 'inherit' }}>\n {withIconSize(active.icon)}\n </Box>\n ) : null}\n <Box\n component=\"span\"\n sx={{ flex: 1, textAlign: 'left', whiteSpace: 'nowrap' }}>\n {prefix != null ? (\n <>\n <Box component=\"span\" sx={{ fontWeight: 400, mr: 0.5 }}>\n {prefix}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 600 }}>\n {active?.label ?? placeholder}\n </Box>\n </>\n ) : (\n (active?.label ?? placeholder)\n )}\n </Box>\n <Box component=\"span\" className=\"sel-chevron\">\n <ExpandMoreIcon />\n </Box>\n </Button>\n\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{\n paper: { sx: SelectStyles.sxMenuPaper(minWidth) },\n list: {\n sx: SelectStyles.sxList,\n role: 'listbox',\n ...(testId ? ({ 'data-testid': `${testId}-menu` } as object) : {}),\n },\n }}>\n {visibleOptions.map(renderOption)}\n </Menu>\n </>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii, sizes } from '../../theme/variables';\n\n/**\n * Estilos del `CmsSearchField` — el buscador del CMS (equivale al `app-search`\n * del Angular legacy). Caja redondeada sobre `surfaceContainerHigh`, con lupa\n * opcional a la izquierda, input que puede crecer/colapsar y un botón de\n * \"opciones avanzadas\" (tres puntos) opcional a la derecha.\n */\nexport const CmsSearchFieldStyles = {\n /** Caja contenedora del buscador (con hover y estado de foco). */\n sxRoot: (opts: { collapsed: boolean; focused: boolean }): SxProps<Theme> => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n height: sizes.searchHeight,\n pl: '16px',\n pr: '6px',\n // Borde reservado (2px transparente en reposo) para que el foco no desplace el layout.\n border: '2px solid transparent',\n borderRadius: radii.md,\n bgcolor: 'm3.surfaceContainerHigh',\n color: 'm3.onSurfaceVariant',\n transition:\n 'width 0.2s ease, flex-basis 0.2s ease, background-color 0.12s, border-color 0.12s',\n overflow: 'hidden',\n cursor: opts.collapsed ? 'pointer' : 'text',\n // Hover (sin foco): gris algo más oscuro.\n '&:hover': { bgcolor: cmsColors.searchHoverBg },\n ...(opts.collapsed ? { width: sizes.buttonHeight } : {}),\n // Foco (mientras se escribe): fondo gris lavanda + borde primario 2px.\n ...(opts.focused && !opts.collapsed\n ? {\n bgcolor: cmsColors.searchFocusBg,\n borderColor: cmsColors.primary,\n '&:hover': { bgcolor: cmsColors.searchFocusBg },\n }\n : {}),\n }),\n\n /** Lupa principal (toma el color primario al enfocar). */\n sxLeadIcon: (focused: boolean): SxProps<Theme> => ({\n color: focused ? cmsColors.primary : 'm3.onSurfaceVariant',\n fontSize: 20,\n flex: 'none',\n transition: 'color 0.12s',\n }),\n\n /** Input de texto. */\n sxInput: {\n flex: 1,\n minWidth: 0,\n border: 0,\n outline: 0,\n background: 'transparent',\n fontFamily: fontFamilies.googleSans,\n fontSize: 16,\n fontWeight: 400,\n color: cmsColors.textNav,\n '&::placeholder': {\n color: cmsColors.textNav,\n opacity: 1,\n },\n } as SxProps<Theme>,\n\n /** Botón redondo de opciones avanzadas (tres puntos). */\n sxIconBtn: {\n width: 28,\n height: 28,\n p: 0,\n flex: 'none',\n color: 'm3.onSurfaceVariant',\n '&:hover': {\n bgcolor: 'action.hover',\n color: 'm3.onSurface',\n },\n '& .MuiSvgIcon-root': { fontSize: 20 },\n } as SxProps<Theme>,\n\n /** Botón limpiar (X): toma el color primario; hover neutro al 10%. */\n sxClearBtn: {\n width: 28,\n height: 28,\n p: 0,\n flex: 'none',\n color: cmsColors.primary,\n '&:hover': {\n bgcolor: cmsColors.searchClearHoverBg,\n color: cmsColors.primary,\n },\n '& .MuiSvgIcon-root': { fontSize: 20 },\n } as SxProps<Theme>,\n\n /** Botón de opciones avanzadas cuando hay filtros activos. */\n sxAdvancedActive: {\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n '&:hover': {\n bgcolor: cmsColors.secondaryHover,\n color: cmsColors.onSecondaryContainer,\n },\n } as SxProps<Theme>,\n\n /** Punto indicador de filtros activos sobre el botón de avanzadas. */\n sxDot: {\n position: 'absolute',\n top: 2,\n right: 2,\n width: 8,\n height: 8,\n borderRadius: radii.pill,\n bgcolor: cmsColors.primary,\n border: '1.5px solid',\n borderColor: 'm3.surfaceContainerHigh',\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport MoreVertOutlinedIcon from '@mui/icons-material/MoreVertOutlined';\nimport SearchOutlinedIcon from '@mui/icons-material/SearchOutlined';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport { useRef, useState } from 'react';\nimport type { CSSProperties, KeyboardEvent } from 'react';\n\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { CmsSearchFieldStyles } from './CmsSearchField.styles';\n\nexport type CmsSearchFieldProps = {\n /** Valor del texto de búsqueda (controlado). */\n value: string;\n /** Callback en cada cambio del texto. */\n onChange: (value: string) => void;\n /** Callback al presionar Enter (búsqueda). */\n onSearch?: (value: string) => void;\n /** Callback al limpiar el campo. Si no se pasa, igual limpia `value`. */\n onClear?: () => void;\n /** Placeholder del input (ya traducido y modificable por el consumidor). */\n placeholder?: string;\n /** Muestra la lupa a la izquierda. Por defecto `true`. */\n showIcon?: boolean;\n /** Muestra el botón de opciones avanzadas (tres puntos). Por defecto `false`. */\n showAdvanced?: boolean;\n /** Marca el botón de avanzadas como activo (hay filtros aplicados). */\n advancedActive?: boolean;\n /** Callback al hacer clic en opciones avanzadas (abre modal o panel). */\n onAdvancedClick?: () => void;\n /**\n * Modo \"crece/colapsa\" como el `app-search` del Angular: arranca como un botón\n * con lupa y se expande al hacer foco; colapsa al perder foco si está vacío.\n * Por defecto `false` (input siempre expandido).\n */\n collapsible?: boolean;\n /** Ancho del input cuando está expandido. */\n width?: number | string;\n /**\n * Crece al enfocar hasta llenar el espacio disponible del contenedor (como el\n * buscador clásico del CMS), dejando `endGap` px antes del borde. En reposo\n * queda alineado a la derecha con ancho `width`. Por defecto `false`.\n */\n grow?: boolean;\n /** Ancho máximo opcional cuando `grow` está activo (por defecto sin tope). */\n maxWidth?: number | string;\n /** Espacio mínimo a la derecha cuando `grow` está activo. Por defecto `40`. */\n endGap?: number;\n /** `aria-label` del botón de avanzadas. */\n advancedAriaLabel?: string;\n /** `aria-label` del botón de limpiar. */\n clearAriaLabel?: string;\n /** `aria-label` del input. */\n ariaLabel?: string;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Buscador del CMS: input con lupa opcional, botón de limpiar y botón opcional\n * de \"opciones avanzadas\" (tres puntos) que el consumidor cablea a un modal o\n * panel lateral. Replica el comportamiento del `app-search` del Angular legacy\n * (incluido el modo `collapsible` que crece al enfocar y colapsa al vaciarse).\n *\n * Es presentacional y controlado: el texto y los textos visibles vienen por\n * props; la decisión de qué abrir en \"avanzadas\" vive en el gestor.\n */\nexport function CmsSearchField({\n value,\n onChange,\n onSearch,\n onClear,\n placeholder,\n showIcon = true,\n showAdvanced = false,\n advancedActive = false,\n onAdvancedClick,\n collapsible = false,\n width = 320,\n grow = false,\n maxWidth,\n endGap = 40,\n advancedAriaLabel,\n clearAriaLabel,\n ariaLabel,\n testId,\n}: CmsSearchFieldProps) {\n // Textos por defecto desde la lib (resueltos al idioma del provider). Si el\n // consumidor pasa el prop, manda el suyo.\n const { t } = useCmsTranslation();\n const s = t.messages.search;\n const resolvedPlaceholder = placeholder ?? s.placeholder;\n const resolvedAriaLabel = ariaLabel ?? s.inputAriaLabel;\n const resolvedClearAria = clearAriaLabel ?? s.clearAriaLabel;\n const resolvedAdvancedAria = advancedAriaLabel ?? s.advancedAriaLabel;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [focused, setFocused] = useState(false);\n\n // En modo collapsible la caja colapsa solo si no hay foco ni texto.\n const collapsed = collapsible && !focused && value.trim() === '';\n\n /** Maneja Enter para disparar la búsqueda. */\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') onSearch?.(value);\n };\n\n /** Limpia el texto y devuelve el foco al input. */\n const handleClear = () => {\n if (onClear) onClear();\n else onChange('');\n inputRef.current?.focus();\n };\n\n /** Expande el buscador colapsado al hacer clic en la caja. */\n const handleRootClick = () => {\n if (collapsed) inputRef.current?.focus();\n };\n\n let rootStyle: CSSProperties | undefined;\n if (collapsed) {\n rootStyle = undefined;\n } else if (grow) {\n // En reposo: alineado a la derecha con ancho `width`. Al enfocar: llena el\n // espacio disponible (flex-grow) dejando `endGap` px antes del borde.\n rootStyle = focused\n ? {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 0,\n maxWidth: maxWidth ?? 'none',\n marginLeft: 'auto',\n marginRight: endGap,\n transition: 'flex-basis 0.2s ease',\n }\n : {\n flexGrow: 0,\n flexShrink: 0,\n width,\n marginLeft: 'auto',\n marginRight: endGap,\n transition: 'flex-basis 0.2s ease',\n };\n } else {\n rootStyle = { flexBasis: width, maxWidth: '100%' };\n }\n\n return (\n <Box\n sx={CmsSearchFieldStyles.sxRoot({ collapsed, focused })}\n style={rootStyle}\n onClick={handleRootClick}\n data-testid={testId}>\n {showIcon && (\n <SearchOutlinedIcon sx={CmsSearchFieldStyles.sxLeadIcon(focused)} />\n )}\n\n {!collapsed && (\n <Box\n component=\"input\"\n ref={inputRef}\n type=\"text\"\n autoComplete=\"off\"\n aria-label={resolvedAriaLabel}\n placeholder={resolvedPlaceholder}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n sx={CmsSearchFieldStyles.sxInput}\n data-testid={testId ? `${testId}-input` : undefined}\n />\n )}\n\n {!collapsed && value.length > 0 && (\n <IconButton\n size=\"small\"\n aria-label={resolvedClearAria}\n onClick={handleClear}\n sx={CmsSearchFieldStyles.sxClearBtn}\n data-testid={testId ? `${testId}-icon-btn-clear` : undefined}>\n <CloseOutlinedIcon />\n </IconButton>\n )}\n\n {!collapsed && showAdvanced && (\n <IconButton\n size=\"small\"\n aria-label={resolvedAdvancedAria}\n aria-haspopup=\"dialog\"\n onClick={(event) => {\n event.stopPropagation();\n onAdvancedClick?.();\n }}\n sx={{\n ...(CmsSearchFieldStyles.sxIconBtn as object),\n position: 'relative',\n ...(advancedActive\n ? (CmsSearchFieldStyles.sxAdvancedActive as object)\n : {}),\n }}\n data-testid={testId ? `${testId}-icon-btn-advanced` : undefined}>\n <MoreVertOutlinedIcon />\n {advancedActive && <Box component=\"span\" sx={CmsSearchFieldStyles.sxDot} />}\n </IconButton>\n )}\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies } from '../../theme/variables';\n\n/**\n * Estilos del `CmsEmptyState` — bloque centrado de \"sin resultados\" para\n * listados y tablas (icono + título + subtítulo). El color del icono usa la\n * variable `actionIcon` (#43474E) para mantener el gris del sistema.\n */\nexport const CmsEmptyStateStyles = {\n /** Contenedor centrado en columna. */\n sxRoot: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n gap: '6px',\n py: 8,\n px: 3,\n } as SxProps<Theme>,\n\n /** Icono ilustrativo (por defecto `search_off`), en gris `actionIcon` (rgb 67,71,78). */\n sxIcon: {\n color: cmsColors.actionIcon,\n mb: '2px',\n '& .MuiSvgIcon-root': { fontSize: 40, color: cmsColors.actionIcon },\n } as SxProps<Theme>,\n\n /** Título del estado vacío. */\n sxTitle: {\n fontFamily: fontFamilies.googleSans,\n fontWeight: 600,\n fontSize: 16,\n color: cmsColors.textStrong,\n } as SxProps<Theme>,\n\n /** Subtítulo / ayuda. */\n sxDescription: {\n fontFamily: fontFamilies.googleSans,\n fontWeight: 400,\n fontSize: 14,\n color: cmsColors.textNav,\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport SearchOffOutlinedIcon from '@mui/icons-material/SearchOffOutlined';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport type { ReactNode } from 'react';\n\nimport { CmsEmptyStateStyles } from './CmsEmptyState.styles';\n\nexport type CmsEmptyStateProps = {\n /** Título principal (ya traducido). */\n title: string;\n /** Subtítulo / ayuda opcional (ya traducido). */\n description?: string;\n /** Icono a mostrar. Por defecto `search_off` (SearchOffOutlined). */\n icon?: ReactNode;\n /** Base para los `data-testid` (p. ej. `panel-users-empty`). */\n testId?: string;\n};\n\n/**\n * Bloque de \"sin resultados\" para listados y tablas: icono + título + subtítulo,\n * centrado. Presentacional; los textos vienen por props (i18n del gestor).\n * Replica el estado vacío del CMS Angular legacy.\n */\nexport function CmsEmptyState({\n title,\n description,\n icon,\n testId,\n}: CmsEmptyStateProps) {\n return (\n <Box sx={CmsEmptyStateStyles.sxRoot} data-testid={testId}>\n <Box sx={CmsEmptyStateStyles.sxIcon}>\n {icon ?? <SearchOffOutlinedIcon />}\n </Box>\n <Typography\n sx={CmsEmptyStateStyles.sxTitle}\n data-testid={testId ? `${testId}-title` : undefined}>\n {title}\n </Typography>\n {description ? (\n <Typography\n sx={CmsEmptyStateStyles.sxDescription}\n data-testid={testId ? `${testId}-description` : undefined}>\n {description}\n </Typography>\n ) : null}\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii } from '../../theme/variables';\n\n/**\n * Estilos del `CmsFilterBar` — la barra de filtros activos que aparece bajo la\n * toolbar del listado (label \"Filtros:\" + chips removibles + \"Limpiar todo\").\n *\n * Colores (todos con variables de `variables.ts`):\n * - Label + icono `filter_alt`: `actionIcon` (#43474E), 14px.\n * - Chip: fondo `secondary` (#D8E2FF); icono/texto `onSecondaryContainer`\n * (#2C4678), peso 400, 14px; X `onSecondaryContainer` con hover `secondaryHover`.\n * - \"Limpiar todo\": `primary` (#0067C4), 14px; X 18px.\n */\nexport const CmsFilterBarStyles = {\n /** Fila con label + chips + limpiar todo (envuelve si no entra). */\n sxRoot: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '10px',\n } as SxProps<Theme>,\n\n /** Grupo \"icono filter_alt + Filtros:\". */\n sxLabel: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n color: cmsColors.actionIcon,\n } as SxProps<Theme>,\n\n sxLabelIcon: {\n fontSize: 18,\n } as SxProps<Theme>,\n\n sxLabelText: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n color: cmsColors.actionIcon,\n } as SxProps<Theme>,\n\n /** Chip de un filtro activo (fondo secundario). */\n sxChip: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n height: 32,\n pl: '10px',\n pr: '4px',\n borderRadius: radii.sm,\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n } as SxProps<Theme>,\n\n /** Icono opcional a la izquierda del label del chip (p. ej. `search`). */\n sxChipIcon: {\n display: 'inline-flex',\n color: cmsColors.onSecondaryContainer,\n '& .MuiSvgIcon-root': { fontSize: 18 },\n } as SxProps<Theme>,\n\n sxChipLabel: {\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 400,\n color: cmsColors.onSecondaryContainer,\n whiteSpace: 'nowrap',\n } as SxProps<Theme>,\n\n /** Botón X del chip: quita ese filtro. */\n sxChipRemove: {\n width: 24,\n height: 24,\n p: 0,\n flex: 'none',\n color: cmsColors.onSecondaryContainer,\n '&:hover': {\n bgcolor: cmsColors.secondaryHover,\n color: cmsColors.onSecondaryContainer,\n },\n '& .MuiSvgIcon-root': { fontSize: 18 },\n } as SxProps<Theme>,\n\n /** \"Limpiar todo\": link de acción primario con X de 18px. */\n sxClearAll: {\n minWidth: 0,\n px: '8px',\n height: 32,\n textTransform: 'none',\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n color: cmsColors.primary,\n '&:hover': { bgcolor: cmsColors.neutralHover },\n '& .MuiButton-startIcon': { mr: '4px' },\n '& .MuiButton-startIcon .MuiSvgIcon-root': { fontSize: 18 },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport FilterAltOutlinedIcon from '@mui/icons-material/FilterAltOutlined';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport type { ReactNode } from 'react';\n\nimport { CmsFilterBarStyles } from './CmsFilterBar.styles';\n\n/** Chip de un filtro activo dentro del `CmsFilterBar`. */\nexport type CmsFilterChip = {\n /** Id estable del chip (para la key y el `data-testid`). */\n id: string;\n /** Texto o nodo a mostrar (ya traducido / formateado). */\n label: ReactNode;\n /** Icono opcional a la izquierda del label (p. ej. `search`). */\n icon?: ReactNode;\n /** Callback al quitar este filtro (clic en la X del chip). */\n onRemove: () => void;\n /** `aria-label` de la X del chip. */\n removeAriaLabel?: string;\n /** `data-testid` base del chip (la X será `${testId}-icon-btn-remove`). */\n testId?: string;\n};\n\nexport type CmsFilterBarProps = {\n /** Texto del prefijo (p. ej. \"Filtros:\"). */\n label: string;\n /** Chips de filtros activos. Si está vacío, la barra no se renderiza. */\n chips: CmsFilterChip[];\n /** Callback de \"Limpiar todo\" (limpia todos los filtros). Si se omite, no se muestra. */\n onClearAll?: () => void;\n /** Texto del botón \"Limpiar todo\" (ya traducido). */\n clearAllLabel?: string;\n /** `data-testid` base de la barra. */\n testId?: string;\n};\n\n/**\n * Barra de filtros activos: aparece bajo la toolbar del listado con el label\n * \"Filtros:\", un chip removible por cada filtro aplicado y un botón\n * \"Limpiar todo\". Presentacional y controlado: los chips y los callbacks los\n * arma el gestor (dominio del producto); la lib solo aporta la estética común.\n *\n * No renderiza nada si no hay chips activos.\n */\nexport function CmsFilterBar({\n label,\n chips,\n onClearAll,\n clearAllLabel,\n testId,\n}: CmsFilterBarProps) {\n if (chips.length === 0) return null;\n\n return (\n <Box sx={CmsFilterBarStyles.sxRoot} data-testid={testId}>\n <Box sx={CmsFilterBarStyles.sxLabel}>\n <FilterAltOutlinedIcon sx={CmsFilterBarStyles.sxLabelIcon} />\n <Typography component=\"span\" sx={CmsFilterBarStyles.sxLabelText}>\n {label}\n </Typography>\n </Box>\n\n {chips.map((chip) => (\n <Box\n key={chip.id}\n sx={CmsFilterBarStyles.sxChip}\n data-testid={chip.testId}>\n {chip.icon ? (\n <Box sx={CmsFilterBarStyles.sxChipIcon}>{chip.icon}</Box>\n ) : null}\n <Box component=\"span\" sx={CmsFilterBarStyles.sxChipLabel}>\n {chip.label}\n </Box>\n <IconButton\n size=\"small\"\n aria-label={chip.removeAriaLabel}\n onClick={chip.onRemove}\n sx={CmsFilterBarStyles.sxChipRemove}\n data-testid={\n chip.testId ? `${chip.testId}-icon-btn-remove` : undefined\n }>\n <CloseOutlinedIcon />\n </IconButton>\n </Box>\n ))}\n\n {onClearAll ? (\n <Button\n onClick={onClearAll}\n startIcon={<CloseOutlinedIcon />}\n sx={CmsFilterBarStyles.sxClearAll}\n data-testid={testId ? `${testId}-btn-clear-all` : undefined}>\n {clearAllLabel}\n </Button>\n ) : null}\n </Box>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows } from '../../theme/variables';\n\n/**\n * Estilos compartidos de los campos de formulario del CMS.\n *\n * Replican la estética \"Material 3 standard\" del diseño de referencia\n * (etiqueta arriba en gris, control con subrayado inferior; el subrayado pasa a\n * `primary` al enfocar). Viven juntos para que todos los campos\n * (`CmsTextField`, `CmsSelectField`, etc.) compartan exactamente el mismo look y\n * puedan reutilizarse en cualquier formulario de cualquier gestor.\n */\nexport const fieldStyles = {\n /** Contenedor vertical: etiqueta + control + ayuda. */\n sxField: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n minWidth: 0,\n } as SxProps<Theme>,\n\n /** Etiqueta superior (gris, label-medium). */\n sxLabel: {\n font: 'inherit',\n fontSize: 12,\n fontWeight: 500,\n lineHeight: '16px',\n letterSpacing: '0.02em',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Texto de ayuda bajo el control. */\n sxHint: {\n fontSize: 11,\n lineHeight: '16px',\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /**\n * `sx` para los controles basados en `TextField variant=\"standard\"`\n * (texto, número, fecha, select) y para el `renderInput` de los\n * `Autocomplete` (combobox, tags, multiselect). Unifica subrayado,\n * tipografía y color del placeholder.\n */\n sxStandard: {\n '& .MuiInputBase-root': {\n fontSize: 14,\n color: 'm3.onSurface',\n },\n '& .MuiInputBase-input': {\n paddingTop: '6px',\n paddingBottom: '6px',\n },\n // Subrayado en reposo / hover / foco.\n '& .MuiInputBase-root::before': {\n borderBottom: `1px solid ${cmsColors.border}`,\n },\n '& .MuiInputBase-root:hover:not(.Mui-disabled, .Mui-error)::before': {\n borderBottom: `1px solid ${cmsColors.controlBorder}`,\n },\n '& .MuiInputBase-root::after': {\n borderBottomColor: cmsColors.primary,\n },\n // Placeholder atenuado.\n '& input::placeholder, & textarea::placeholder': {\n color: 'm3.onSurfaceVariant',\n opacity: 0.6,\n },\n } as SxProps<Theme>,\n\n /**\n * Chips de los campos multiselección / etiquetas: fondo secundario, texto\n * sobre contenedor secundario y radio \"redondo cuadrado\".\n */\n sxChip: {\n height: 26,\n borderRadius: radii.sm,\n bgcolor: cmsColors.secondary,\n color: cmsColors.onSecondaryContainer,\n fontWeight: 500,\n '& .MuiChip-deleteIcon': {\n color: cmsColors.onSecondaryContainer,\n opacity: 0.7,\n '&:hover': { opacity: 1, color: cmsColors.onSecondaryContainer },\n },\n } as SxProps<Theme>,\n\n /** Paper del desplegable de los `Autocomplete` (con aire vertical). */\n sxAutocompletePaper: {\n borderRadius: radii.lg,\n border: '1px solid',\n borderColor: 'm3.outlineVariant',\n py: '6px',\n } as SxProps<Theme>,\n\n /**\n * Listbox de los `Autocomplete`: opciones \"embutidas\" (con aire lateral y\n * radio), hover en `secondaryHover` y opción activa en `secondary`.\n */\n sxAutocompleteListbox: {\n '& .MuiAutocomplete-option': {\n borderRadius: radii.sm,\n mx: '6px',\n my: '2px',\n minHeight: 40,\n },\n '& .MuiAutocomplete-option.Mui-focused': {\n bgcolor: cmsColors.secondaryHover,\n },\n '& .MuiAutocomplete-option[aria-selected=\"true\"]': {\n bgcolor: cmsColors.secondary,\n },\n '& .MuiAutocomplete-option[aria-selected=\"true\"].Mui-focused': {\n bgcolor: cmsColors.secondaryHover,\n },\n } as SxProps<Theme>,\n\n /**\n * Paper del menú de `CmsSelectField`. Menú M3 común a todos los desplegables:\n * fondo `menuSurface` (#ECEDF6), sin padding lateral (ítems de borde a borde) y\n * 8px arriba/abajo; `overflow: hidden` recorta las esquinas del hover.\n */\n sxSelectMenuPaper: {\n mt: '4px',\n py: '8px',\n px: 0,\n borderRadius: radii.lg,\n bgcolor: cmsColors.menuSurface,\n border: '1px solid',\n borderColor: 'm3.outlineVariant',\n boxShadow: shadows.menuSoft,\n overflow: 'hidden',\n } as SxProps<Theme>,\n\n /** Lista del menú del select (sin padding ni gap: los ítems van full-bleed). */\n sxSelectList: {\n p: 0,\n display: 'flex',\n flexDirection: 'column',\n } as SxProps<Theme>,\n\n /**\n * Opción del menú del select: full-bleed (sin radio), hover en `neutralHover`\n * (state layer M3 `onSurface` al 8%, #191C20), activa en `secondary`. El check\n * va a la derecha.\n */\n sxSelectItem: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n borderRadius: 0,\n px: '16px',\n py: '8px',\n fontSize: 14,\n color: cmsColors.controlText,\n '&:hover': { bgcolor: cmsColors.neutralHover },\n '&.Mui-selected': {\n bgcolor: cmsColors.secondary,\n '&:hover': { bgcolor: cmsColors.secondary },\n },\n '&.Mui-focusVisible': { bgcolor: cmsColors.neutralHover },\n } as SxProps<Theme>,\n\n /** Check de la opción activa del select. */\n sxSelectCheck: {\n fontSize: 18,\n color: cmsColors.primary,\n flex: 'none',\n } as SxProps<Theme>,\n\n /** Etiqueta del checkbox (alineada al control). */\n sxCheckboxLabel: {\n m: 0,\n gap: '4px',\n '& .MuiFormControlLabel-label': {\n fontSize: 14,\n color: 'm3.onSurface',\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cmsColors } from '../../theme/variables';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsCheckboxFieldProps = {\n /** Estado actual (controlado). */\n value: boolean;\n /** Callback con el nuevo estado. */\n onChange: (value: boolean) => void;\n /** Etiqueta a la derecha del checkbox (ya traducida). */\n label?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Checkbox con etiqueta. Activo = cuadro relleno con el color primario y check\n * blanco (íconos por defecto de MUI, sin override). Controlado y reutilizable.\n */\nexport function CmsCheckboxField({\n value,\n onChange,\n label,\n disabled = false,\n testId,\n}: CmsCheckboxFieldProps) {\n const id = useId();\n return (\n <FormControlLabel\n sx={fieldStyles.sxCheckboxLabel}\n disabled={disabled}\n control={\n <Checkbox\n id={id}\n checked={value}\n onChange={(event) => onChange(event.target.checked)}\n data-testid={testId}\n sx={{\n color: cmsColors.controlBorder,\n '&.Mui-checked': { color: cmsColors.primary },\n }}\n />\n }\n label={label}\n />\n );\n}\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport type { ReactNode } from 'react';\n\nimport { fieldStyles } from './fieldStyles';\n\nexport type FieldShellProps = {\n /** Etiqueta superior (ya traducida). Si se omite no se renderiza. */\n label?: ReactNode;\n /** `htmlFor` para asociar la etiqueta al control. */\n htmlFor?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** El control del campo. */\n children: ReactNode;\n};\n\n/**\n * Envoltorio común de un campo: etiqueta arriba + control + ayuda abajo.\n *\n * Centraliza la disposición vertical y la tipografía de la etiqueta para que\n * todos los campos del CMS se vean idénticos. Se exporta para poder construir\n * campos a medida que respeten el mismo layout.\n */\nexport function FieldShell({ label, htmlFor, hint, children }: FieldShellProps) {\n return (\n <Box sx={fieldStyles.sxField}>\n {label != null && (\n <Box component=\"label\" htmlFor={htmlFor} sx={fieldStyles.sxLabel}>\n {label}\n </Box>\n )}\n {children}\n {hint != null && <Box sx={fieldStyles.sxHint}>{hint}</Box>}\n </Box>\n );\n}\n","'use client';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\nimport type { FieldOption } from './types';\n\nexport type CmsComboboxFieldProps = {\n /** Valor seleccionado (value de la opción; vacío = ninguno). */\n value: string;\n /** Callback con el nuevo value (o '' al limpiar). */\n onChange: (value: string) => void;\n /** Opciones disponibles. */\n options: FieldOption[];\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Texto cuando no hay coincidencias (ya traducido). */\n noOptionsText?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Combobox de una sola opción con búsqueda escribiendo (equivale al campo\n * \"Creador\" / \"Autor\" del diseño). Internamente usa `Autocomplete` de MUI pero\n * expone una API por `value: string`. Controlado y reutilizable.\n */\nexport function CmsComboboxField({\n value,\n onChange,\n options,\n label,\n placeholder,\n hint,\n noOptionsText,\n disabled = false,\n testId,\n}: CmsComboboxFieldProps) {\n const id = useId();\n const { t } = useCmsTranslation();\n const resolvedNoOptions = noOptionsText ?? t.messages.search.noOptions;\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const selected = useMemo(\n () => visibleOptions.find((option) => option.value === value) ?? null,\n [visibleOptions, value],\n );\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Autocomplete\n id={id}\n data-testid={testId}\n options={visibleOptions}\n value={selected}\n disabled={disabled}\n noOptionsText={resolvedNoOptions}\n getOptionLabel={(option) =>\n typeof option.label === 'string' ? option.label : option.value\n }\n getOptionDisabled={(option) => Boolean(option.disabled)}\n isOptionEqualToValue={(option, current) =>\n option.value === current.value\n }\n onChange={(_event, next) => onChange(next ? next.value : '')}\n slotProps={{\n paper: { sx: fieldStyles.sxAutocompletePaper },\n listbox: { sx: fieldStyles.sxAutocompleteListbox },\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"standard\"\n placeholder={placeholder}\n sx={fieldStyles.sxStandard}\n />\n )}\n />\n </FieldShell>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, shadows } from '../../theme/variables';\n\n/**\n * Estilos del calendario M3 propio de `CmsDateField` (reemplaza al selector\n * nativo del navegador). Superficie gris, día seleccionado y botones en color\n * primario, ancho cómodo y sombra suave, igual que el diseño de referencia.\n */\nexport const datePickerStyles = {\n /** Paper del popover del calendario. */\n sxPaper: {\n width: 312,\n p: '12px 12px 8px',\n borderRadius: '16px',\n bgcolor: 'm3.surfaceContainer',\n backgroundImage: 'none',\n boxShadow: shadows.menu,\n } as SxProps<Theme>,\n\n /** Cabecera: mes/año + navegación. */\n sxHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: '6px',\n pb: '8px',\n } as SxProps<Theme>,\n\n sxMonthLabel: {\n fontSize: 14,\n fontWeight: 600,\n color: 'm3.onSurface',\n textTransform: 'capitalize',\n } as SxProps<Theme>,\n\n sxNav: { display: 'inline-flex', gap: '2px' } as SxProps<Theme>,\n\n sxNavBtn: {\n width: 36,\n height: 36,\n color: 'm3.onSurfaceVariant',\n '&:hover': { bgcolor: cmsColors.surfaceHover, color: 'm3.onSurface' },\n } as SxProps<Theme>,\n\n sxGrid: {\n display: 'grid',\n gridTemplateColumns: 'repeat(7, 1fr)',\n gap: '2px',\n } as SxProps<Theme>,\n\n sxDow: {\n height: 32,\n display: 'grid',\n placeItems: 'center',\n fontSize: 11,\n fontWeight: 500,\n color: 'm3.onSurfaceVariant',\n } as SxProps<Theme>,\n\n /** Celda de día, con sus variantes (otro mes / hoy / seleccionado). */\n sxDay: (opts: {\n other: boolean;\n today: boolean;\n selected: boolean;\n }): SxProps<Theme> => ({\n height: 40,\n border: 0,\n p: 0,\n borderRadius: '999px',\n display: 'grid',\n placeItems: 'center',\n fontSize: 14,\n cursor: 'pointer',\n bgcolor: 'transparent',\n color: 'm3.onSurface',\n transition: 'background-color 0.12s, color 0.12s',\n '&:hover': { bgcolor: cmsColors.surfaceHover },\n ...(opts.other ? { color: 'm3.onSurfaceVariant', opacity: 0.55 } : {}),\n ...(opts.today\n ? { boxShadow: `inset 0 0 0 1px ${cmsColors.primary}`, color: cmsColors.primary }\n : {}),\n ...(opts.selected\n ? {\n bgcolor: cmsColors.primary,\n color: cmsColors.white,\n fontWeight: 600,\n '&:hover': { bgcolor: cmsColors.primaryHover },\n }\n : {}),\n }),\n\n sxFooter: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '4px',\n pt: '6px',\n } as SxProps<Theme>,\n\n sxFooterBtn: {\n height: 36,\n px: '14px',\n borderRadius: '999px',\n textTransform: 'none',\n fontWeight: 500,\n color: cmsColors.primary,\n '&:hover': {\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 10%, transparent)`,\n },\n } as SxProps<Theme>,\n};\n","'use client';\n\nimport CalendarTodayOutlinedIcon from '@mui/icons-material/CalendarTodayOutlined';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport Popover from '@mui/material/Popover';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport {\n getIntlLocaleTag,\n useCmsTranslation,\n} from '../../i18n/useCmsTranslation';\nimport { datePickerStyles } from './CmsDateField.styles';\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsDateFieldProps = {\n /** Valor en formato ISO `AAAA-MM-DD` (controlado; vacío = sin fecha). */\n value: string;\n /** Callback con la nueva fecha ISO (o '' al limpiar). */\n onChange: (value: string) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\nfunction pad(n: number): string {\n return n < 10 ? `0${n}` : `${n}`;\n}\n\n/** Parsea un ISO `AAAA-MM-DD` a sus partes; `null` si no es válido. */\nfunction parseISO(value: string): { y: number; m: number; d: number } | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value);\n if (!match) return null;\n return { y: +match[1], m: +match[2] - 1, d: +match[3] };\n}\n\nfunction toISO(y: number, m: number, d: number): string {\n return `${y}-${pad(m + 1)}-${pad(d)}`;\n}\n\n/**\n * Campo de fecha con calendario Material 3 propio (no el selector nativo del\n * navegador, que no se puede estilar). El valor se maneja en ISO `AAAA-MM-DD` y\n * se muestra como `dd/mm/aaaa`. Los meses y días se rotulan según el idioma del\n * provider. Controlado y reutilizable.\n */\nexport function CmsDateField({\n value,\n onChange,\n label,\n hint,\n disabled = false,\n testId,\n}: CmsDateFieldProps) {\n const id = useId();\n const { t, locale } = useCmsTranslation();\n const s = t.messages.search;\n const localeTag = getIntlLocaleTag(locale);\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [open, setOpen] = useState(false);\n\n const selected = parseISO(value);\n const today = new Date();\n\n // Mes en vista: arranca en la fecha seleccionada o en el mes actual.\n const [view, setView] = useState(() =>\n selected\n ? { y: selected.y, m: selected.m }\n : { y: today.getFullYear(), m: today.getMonth() },\n );\n\n const display = selected\n ? `${pad(selected.d)}/${pad(selected.m + 1)}/${selected.y}`\n : '';\n\n // Nombres de los días (orden lunes→domingo) según el idioma.\n const weekdays = useMemo(() => {\n const fmt = new Intl.DateTimeFormat(localeTag, { weekday: 'short' });\n const monday = new Date(2023, 0, 2); // lunes de referencia\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(monday.getFullYear(), monday.getMonth(), monday.getDate() + i);\n return fmt.format(d).replace('.', '').slice(0, 2);\n });\n }, [localeTag]);\n\n const monthLabel = useMemo(\n () =>\n new Intl.DateTimeFormat(localeTag, {\n month: 'long',\n year: 'numeric',\n }).format(new Date(view.y, view.m, 1)),\n [localeTag, view],\n );\n\n // 42 celdas (6 semanas) empezando en lunes.\n const cells = useMemo(() => {\n const first = new Date(view.y, view.m, 1);\n const startDow = (first.getDay() + 6) % 7;\n return Array.from({ length: 42 }, (_, i) => {\n const date = new Date(view.y, view.m, 1 + (i - startDow));\n return { y: date.getFullYear(), m: date.getMonth(), d: date.getDate() };\n });\n }, [view]);\n\n const openPicker = (event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n const host = (event.currentTarget as HTMLElement).closest(\n '[data-cms-datefield]',\n ) as HTMLElement | null;\n setAnchorEl(host);\n setView(\n selected\n ? { y: selected.y, m: selected.m }\n : { y: today.getFullYear(), m: today.getMonth() },\n );\n setOpen(true);\n };\n\n const prevMonth = () =>\n setView((v) => (v.m === 0 ? { y: v.y - 1, m: 11 } : { y: v.y, m: v.m - 1 }));\n const nextMonth = () =>\n setView((v) => (v.m === 11 ? { y: v.y + 1, m: 0 } : { y: v.y, m: v.m + 1 }));\n\n const pickDay = (cell: { y: number; m: number; d: number }) => {\n onChange(toISO(cell.y, cell.m, cell.d));\n setOpen(false);\n };\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Box data-cms-datefield>\n <TextField\n id={id}\n variant=\"standard\"\n value={display}\n placeholder=\"dd/mm/aaaa\"\n disabled={disabled}\n fullWidth\n onClick={openPicker}\n sx={fieldStyles.sxStandard}\n slotProps={{\n input: {\n readOnly: true,\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n edge=\"end\"\n disabled={disabled}\n aria-label={s.dateOpenAriaLabel}\n onClick={openPicker}>\n <CalendarTodayOutlinedIcon sx={{ fontSize: 18 }} />\n </IconButton>\n </InputAdornment>\n ),\n },\n htmlInput: { 'data-testid': testId, style: { cursor: 'pointer' } },\n }}\n />\n </Box>\n\n <Popover\n open={open && Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={() => setOpen(false)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n transformOrigin={{ vertical: 'top', horizontal: 'left' }}\n slotProps={{ paper: { sx: datePickerStyles.sxPaper } }}>\n <Box sx={datePickerStyles.sxHeader}>\n <Box sx={datePickerStyles.sxMonthLabel}>{monthLabel}</Box>\n <Box sx={datePickerStyles.sxNav}>\n <IconButton\n size=\"small\"\n aria-label={s.prevMonthAriaLabel}\n onClick={prevMonth}\n sx={datePickerStyles.sxNavBtn}>\n <ChevronLeftIcon />\n </IconButton>\n <IconButton\n size=\"small\"\n aria-label={s.nextMonthAriaLabel}\n onClick={nextMonth}\n sx={datePickerStyles.sxNavBtn}>\n <ChevronRightIcon />\n </IconButton>\n </Box>\n </Box>\n\n <Box sx={datePickerStyles.sxGrid}>\n {weekdays.map((day, i) => (\n <Box key={`dow-${i}`} sx={datePickerStyles.sxDow}>\n {day}\n </Box>\n ))}\n {cells.map((cell, i) => {\n const other = cell.m !== view.m;\n const isToday =\n cell.y === today.getFullYear() &&\n cell.m === today.getMonth() &&\n cell.d === today.getDate();\n const isSelected =\n !!selected &&\n cell.y === selected.y &&\n cell.m === selected.m &&\n cell.d === selected.d;\n return (\n <Box\n key={`day-${i}`}\n component=\"button\"\n type=\"button\"\n onClick={() => pickDay(cell)}\n sx={datePickerStyles.sxDay({\n other,\n today: isToday,\n selected: isSelected,\n })}>\n {cell.d}\n </Box>\n );\n })}\n </Box>\n\n <Box sx={datePickerStyles.sxFooter}>\n <Button\n sx={datePickerStyles.sxFooterBtn}\n onClick={() => {\n onChange('');\n setOpen(false);\n }}>\n {s.dateClear}\n </Button>\n <Button\n sx={datePickerStyles.sxFooterBtn}\n onClick={() => {\n onChange(toISO(today.getFullYear(), today.getMonth(), today.getDate()));\n setOpen(false);\n }}>\n {s.dateToday}\n </Button>\n </Box>\n </Popover>\n </FieldShell>\n );\n}\n","'use client';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport Chip from '@mui/material/Chip';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cmsColors } from '../../theme/variables';\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\nimport type { FieldOption } from './types';\n\nexport type CmsMultiSelectFieldProps = {\n /** Valores seleccionados (controlado). */\n value: string[];\n /** Callback con los nuevos valores. */\n onChange: (value: string[]) => void;\n /** Opciones disponibles. */\n options: FieldOption[];\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder cuando no hay selección (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Texto cuando no hay coincidencias (ya traducido). */\n noOptionsText?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo de selección múltiple con chips y checkboxes en el desplegable\n * (equivale al campo \"Estados\" del diseño). Internamente usa `Autocomplete`\n * múltiple de MUI pero expone una API por `value: string[]`. Reutilizable.\n */\nexport function CmsMultiSelectField({\n value,\n onChange,\n options,\n label,\n placeholder,\n hint,\n noOptionsText,\n disabled = false,\n testId,\n}: CmsMultiSelectFieldProps) {\n const id = useId();\n const { t } = useCmsTranslation();\n const resolvedNoOptions = noOptionsText ?? t.messages.search.noOptions;\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n const selected = useMemo(\n () => visibleOptions.filter((option) => value.includes(option.value)),\n [visibleOptions, value],\n );\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Autocomplete\n id={id}\n data-testid={testId}\n multiple\n disableCloseOnSelect\n options={visibleOptions}\n value={selected}\n disabled={disabled}\n noOptionsText={resolvedNoOptions}\n getOptionLabel={(option) =>\n typeof option.label === 'string' ? option.label : option.value\n }\n getOptionDisabled={(option) => Boolean(option.disabled)}\n isOptionEqualToValue={(option, current) =>\n option.value === current.value\n }\n onChange={(_event, next) => onChange(next.map((option) => option.value))}\n slotProps={{\n paper: { sx: fieldStyles.sxAutocompletePaper },\n listbox: { sx: fieldStyles.sxAutocompleteListbox },\n }}\n renderValue={(items, getItemProps) =>\n items.map((option, index) => {\n const { key, ...chipProps } = getItemProps({ index });\n return (\n <Chip\n key={key}\n label={option.label}\n size=\"small\"\n sx={fieldStyles.sxChip}\n icon={\n option.color ? (\n <Box\n component=\"span\"\n sx={{\n width: 9,\n height: 9,\n borderRadius: '999px',\n bgcolor: option.color,\n ml: '6px',\n flex: 'none',\n }}\n />\n ) : undefined\n }\n {...chipProps}\n />\n );\n })\n }\n renderOption={(props, option, { selected: isSelected }) => {\n const { key, ...liProps } = props;\n return (\n <li key={key} {...liProps}>\n <Checkbox\n checked={isSelected}\n sx={{\n mr: 1,\n p: 0.5,\n color: cmsColors.controlBorder,\n '&.Mui-checked': { color: cmsColors.primary },\n }}\n />\n {option.color && (\n <Box\n component=\"span\"\n sx={{\n width: 9,\n height: 9,\n borderRadius: '999px',\n bgcolor: option.color,\n mr: '8px',\n flex: 'none',\n }}\n />\n )}\n {option.label}\n </li>\n );\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"standard\"\n placeholder={selected.length === 0 ? placeholder : undefined}\n sx={fieldStyles.sxStandard}\n />\n )}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport TextField from '@mui/material/TextField';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsNumberFieldProps = {\n /** Valor actual como string (controlado; vacío = sin valor). */\n value: string;\n /** Callback con el nuevo valor (string para permitir el campo vacío). */\n onChange: (value: string) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Valor mínimo permitido. */\n min?: number;\n /** Valor máximo permitido. */\n max?: number;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo numérico con la estética estándar del CMS. Mantiene el valor como string\n * para permitir el estado vacío. Controlado y reutilizable.\n */\nexport function CmsNumberField({\n value,\n onChange,\n label,\n placeholder,\n hint,\n min,\n max,\n disabled = false,\n testId,\n}: CmsNumberFieldProps) {\n const id = useId();\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <TextField\n id={id}\n variant=\"standard\"\n type=\"number\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n fullWidth\n onChange={(event) => onChange(event.target.value)}\n sx={fieldStyles.sxStandard}\n slotProps={{\n htmlInput: { min, max, inputMode: 'numeric', 'data-testid': testId },\n }}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport CheckIcon from '@mui/icons-material/Check';\nimport Box from '@mui/material/Box';\nimport MenuItem from '@mui/material/MenuItem';\nimport TextField from '@mui/material/TextField';\nimport { useId, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\nimport type { FieldOption } from './types';\n\nexport type CmsSelectFieldProps = {\n /** Valor seleccionado (controlado; vacío = ninguno). */\n value: string;\n /** Callback con el nuevo valor. */\n onChange: (value: string) => void;\n /** Opciones disponibles. */\n options: FieldOption[];\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder mostrado cuando no hay valor (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Muestra el check en la opción activa. Por defecto `true`. */\n showCheck?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Selector de una sola opción tipo formulario (subrayado M3). A diferencia de\n * `SelectDropdown` (píldora para filtros de listado), este es un campo de\n * formulario con etiqueta arriba. El menú resalta la opción activa en\n * `secondary`, hace hover en `secondaryHover`, deja aire entre el borde del\n * contenedor y el resaltado, y marca la activa con un check. Controlado y\n * reutilizable.\n */\nexport function CmsSelectField({\n value,\n onChange,\n options,\n label,\n placeholder,\n hint,\n disabled = false,\n showCheck = true,\n testId,\n}: CmsSelectFieldProps) {\n const id = useId();\n const visibleOptions = useMemo(\n () => options.filter((option) => option.show !== false),\n [options],\n );\n\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <TextField\n id={id}\n select\n variant=\"standard\"\n value={value}\n disabled={disabled}\n fullWidth\n onChange={(event) => onChange(event.target.value)}\n sx={fieldStyles.sxStandard}\n slotProps={{\n select: {\n displayEmpty: true,\n renderValue: (selected) => {\n const current = visibleOptions.find(\n (option) => option.value === (selected as string),\n );\n if (current) return current.label;\n return <span style={{ opacity: 0.6 }}>{placeholder ?? ''}</span>;\n },\n MenuProps: {\n anchorOrigin: { vertical: 'bottom', horizontal: 'left' },\n transformOrigin: { vertical: 'top', horizontal: 'left' },\n slotProps: {\n paper: { sx: fieldStyles.sxSelectMenuPaper },\n list: { sx: fieldStyles.sxSelectList },\n },\n },\n },\n htmlInput: { 'data-testid': testId },\n }}>\n {placeholder != null && (\n <MenuItem value=\"\" sx={fieldStyles.sxSelectItem}>\n <Box component=\"span\" sx={{ flex: 1, opacity: 0.6 }}>\n {placeholder}\n </Box>\n </MenuItem>\n )}\n {visibleOptions.map((option) => (\n <MenuItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n sx={fieldStyles.sxSelectItem}>\n <Box component=\"span\" sx={{ flex: 1 }}>\n {option.label}\n </Box>\n {showCheck && value === option.value && (\n <CheckIcon sx={fieldStyles.sxSelectCheck} />\n )}\n </MenuItem>\n ))}\n </TextField>\n </FieldShell>\n );\n}\n","'use client';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport TextField from '@mui/material/TextField';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsTagsFieldProps = {\n /** Etiquetas actuales (controlado). */\n value: string[];\n /** Callback con las nuevas etiquetas. */\n onChange: (value: string[]) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder cuando no hay etiquetas (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Sugerencias opcionales para el autocompletado. */\n suggestions?: string[];\n /** Ícono opcional a la izquierda del control (p. ej. una etiqueta/lupa). */\n startIcon?: ReactNode;\n /**\n * `sx` de los chips de etiqueta. Si se pasa, **reemplaza** el estilo por\n * defecto (`fieldStyles.sxChip`, primario tenue), permitiendo p. ej. usar el\n * color secundario.\n */\n chipSx?: SxProps<Theme>;\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo de etiquetas libres: se escribe y se presiona Enter para agregar chips\n * (equivale al campo \"Etiquetas\" del diseño). Internamente usa `Autocomplete`\n * `freeSolo` múltiple. Controlado y reutilizable.\n */\nexport function CmsTagsField({\n value,\n onChange,\n label,\n placeholder,\n hint,\n suggestions = [],\n startIcon,\n chipSx,\n disabled = false,\n testId,\n}: CmsTagsFieldProps) {\n const id = useId();\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <Autocomplete\n id={id}\n data-testid={testId}\n multiple\n freeSolo\n options={suggestions}\n value={value}\n disabled={disabled}\n onChange={(_event, next) =>\n onChange(\n next\n .map((item) => (typeof item === 'string' ? item.trim() : ''))\n .filter((item, index, all) => item && all.indexOf(item) === index),\n )\n }\n slotProps={{ paper: { sx: fieldStyles.sxAutocompletePaper } }}\n renderValue={(items, getItemProps) =>\n items.map((item, index) => {\n const { key, ...chipProps } = getItemProps({ index });\n return (\n <Chip\n key={key}\n label={item}\n size=\"small\"\n sx={chipSx ?? fieldStyles.sxChip}\n {...chipProps}\n />\n );\n })\n }\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"standard\"\n placeholder={value.length === 0 ? placeholder : undefined}\n sx={fieldStyles.sxStandard}\n slotProps={\n startIcon\n ? {\n ...params.slotProps,\n input: {\n ...params.slotProps.input,\n startAdornment: (\n <>\n <Box\n component=\"span\"\n sx={{\n display: 'inline-flex',\n color: 'm3.onSurfaceVariant',\n mr: 0.5,\n }}>\n {startIcon}\n </Box>\n {params.slotProps.input.startAdornment}\n </>\n ),\n },\n }\n : params.slotProps\n }\n />\n )}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport TextField from '@mui/material/TextField';\nimport { useId } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { FieldShell } from './FieldShell';\nimport { fieldStyles } from './fieldStyles';\n\nexport type CmsTextFieldProps = {\n /** Valor actual (controlado). */\n value: string;\n /** Callback con el nuevo texto. */\n onChange: (value: string) => void;\n /** Etiqueta superior (ya traducida). */\n label?: ReactNode;\n /** Placeholder (ya traducido). */\n placeholder?: string;\n /** Texto de ayuda bajo el control. */\n hint?: ReactNode;\n /** Tipo HTML del input. Por defecto `text`. */\n type?: 'text' | 'email' | 'url';\n /** Deshabilita el control. */\n disabled?: boolean;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/**\n * Campo de texto de una línea con la estética estándar del CMS (etiqueta arriba,\n * subrayado inferior). Controlado: el consumidor pasa `value` y `onChange`.\n * Reutilizable en cualquier formulario.\n */\nexport function CmsTextField({\n value,\n onChange,\n label,\n placeholder,\n hint,\n type = 'text',\n disabled = false,\n testId,\n}: CmsTextFieldProps) {\n const id = useId();\n return (\n <FieldShell label={label} htmlFor={id} hint={hint}>\n <TextField\n id={id}\n variant=\"standard\"\n type={type}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n fullWidth\n onChange={(event) => onChange(event.target.value)}\n sx={fieldStyles.sxStandard}\n slotProps={{ htmlInput: { 'data-testid': testId } }}\n />\n </FieldShell>\n );\n}\n","'use client';\n\nimport { CmsCheckboxField } from './CmsCheckboxField';\nimport { CmsComboboxField } from './CmsComboboxField';\nimport { CmsDateField } from './CmsDateField';\nimport { CmsMultiSelectField } from './CmsMultiSelectField';\nimport { CmsNumberField } from './CmsNumberField';\nimport { CmsSelectField } from './CmsSelectField';\nimport { CmsTagsField } from './CmsTagsField';\nimport { CmsTextField } from './CmsTextField';\nimport type { FieldConfig, FieldValue } from './types';\n\nexport type FieldRendererProps = {\n /** Configuración del campo a renderizar. */\n field: FieldConfig;\n /** Valor actual del campo. */\n value: FieldValue | undefined;\n /** Callback con el nuevo valor del campo. */\n onChange: (value: FieldValue) => void;\n};\n\n/**\n * Renderiza el componente de campo que corresponde a una `FieldConfig`,\n * resolviendo el tipo de valor por cada `kind`. Es el puente entre la\n * configuración declarativa del modal y los componentes de campo concretos.\n */\nexport function FieldRenderer({ field, value, onChange }: FieldRendererProps) {\n const asString = typeof value === 'string' ? value : '';\n const asArray = Array.isArray(value) ? value : [];\n const asBool = value === true;\n\n switch (field.kind) {\n case 'text':\n return (\n <CmsTextField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n type={field.type}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'number':\n return (\n <CmsNumberField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n min={field.min}\n max={field.max}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'date':\n return (\n <CmsDateField\n label={field.label}\n hint={field.hint}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'select':\n return (\n <CmsSelectField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n options={field.options}\n disabled={field.disabled}\n showCheck={field.showCheck}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'combobox':\n return (\n <CmsComboboxField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n options={field.options}\n disabled={field.disabled}\n testId={field.testId}\n value={asString}\n onChange={onChange}\n />\n );\n case 'multiselect':\n return (\n <CmsMultiSelectField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n options={field.options}\n disabled={field.disabled}\n testId={field.testId}\n value={asArray}\n onChange={onChange}\n />\n );\n case 'tags':\n return (\n <CmsTagsField\n label={field.label}\n placeholder={field.placeholder}\n hint={field.hint}\n disabled={field.disabled}\n testId={field.testId}\n value={asArray}\n onChange={onChange}\n />\n );\n case 'checkbox':\n return (\n <CmsCheckboxField\n label={field.label}\n disabled={field.disabled}\n testId={field.testId}\n value={asBool}\n onChange={onChange}\n />\n );\n default:\n return null;\n }\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, radii, shadows, sizes } from '../../theme/variables';\n\n/**\n * Estilos del `CmsAdvancedSearch` — el contenedor de \"Búsqueda avanzada\" en sus\n * dos presentaciones: modal centrado (como el gestor de Noticias) y panel\n * lateral derecho (como Imágenes/Videos). Comparten cabecera, cuerpo en grilla y\n * pie con Restablecer + Aplicar.\n */\nexport const CmsAdvancedSearchStyles = {\n /** Paper del modal centrado. */\n sxModalPaper: {\n width: 'min(1080px, calc(100vw - 48px))',\n maxWidth: 'none',\n borderRadius: radii.xl,\n bgcolor: 'm3.surfaceContainerLowest',\n backgroundImage: 'none',\n } as SxProps<Theme>,\n\n /** Paper del panel lateral. */\n sxDrawerPaper: (drawerWidth: number | string): SxProps<Theme> => ({\n width: drawerWidth,\n maxWidth: '100vw',\n bgcolor: 'm3.surfaceContainerLow',\n backgroundImage: 'none',\n display: 'flex',\n flexDirection: 'column',\n }),\n\n /** Layout vertical interno (cabecera / cuerpo / pie). */\n sxContainer: {\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0,\n maxHeight: '100%',\n } as SxProps<Theme>,\n\n /** Cabecera con ícono + título + cerrar. */\n sxHead: {\n flex: 'none',\n display: 'flex',\n alignItems: 'center',\n gap: '14px',\n px: '24px',\n py: '18px',\n borderBottom: '1px solid',\n borderColor: 'm3.outlineVariant',\n } as SxProps<Theme>,\n\n /** Ícono de la cabecera (cuadro con tinte primario). */\n sxHeadIcon: {\n width: 44,\n height: 44,\n flex: 'none',\n display: 'grid',\n placeItems: 'center',\n borderRadius: radii.lg,\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 14%, transparent)`,\n color: cmsColors.primary,\n '& .MuiSvgIcon-root': { fontSize: 24 },\n } as SxProps<Theme>,\n\n /** Título. */\n sxTitle: {\n flex: 1,\n minWidth: 0,\n fontSize: 22,\n fontWeight: 500,\n lineHeight: '28px',\n color: 'm3.onSurface',\n } as SxProps<Theme>,\n\n /** Botón cerrar. */\n sxClose: {\n flex: 'none',\n color: 'm3.onSurfaceVariant',\n '&:hover': { bgcolor: cmsColors.surfaceHover },\n } as SxProps<Theme>,\n\n /** Cuerpo desplazable. */\n sxBody: {\n flex: '1 1 auto',\n minHeight: 0,\n overflowY: 'auto',\n px: '24px',\n py: '24px',\n } as SxProps<Theme>,\n\n /** Grilla de campos. `columns` controla el modal; el drawer fuerza 1 columna. */\n sxGrid: (columns: number, single: boolean): SxProps<Theme> => ({\n display: 'grid',\n gap: '18px 22px',\n alignItems: 'start',\n gridTemplateColumns: single ? '1fr' : `repeat(${columns}, minmax(0, 1fr))`,\n }),\n\n /** Pie con acciones. */\n sxFoot: {\n flex: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '12px',\n px: '24px',\n py: '16px',\n borderTop: '1px solid',\n borderColor: 'm3.outlineVariant',\n bgcolor: 'm3.surfaceContainer',\n } as SxProps<Theme>,\n\n /** Botón \"Restablecer\" (texto). */\n sxReset: {\n height: sizes.buttonHeight,\n px: '16px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontWeight: 500,\n color: cmsColors.primary,\n '&:hover': {\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 8%, transparent)`,\n },\n '&.Mui-disabled': { color: 'm3.onSurface', opacity: 0.38 },\n } as SxProps<Theme>,\n\n /** Botón \"Aplicar\" (relleno primario). */\n sxApply: {\n height: sizes.buttonHeight,\n px: '24px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontWeight: 600,\n gap: '8px',\n bgcolor: cmsColors.primary,\n color: cmsColors.white,\n boxShadow: shadows.button,\n '&:hover': { bgcolor: cmsColors.primaryHover },\n '& .MuiSvgIcon-root': { fontSize: 18 },\n } as SxProps<Theme>,\n};\n","import type { CmsTranslator } from '../../i18n/createTranslator';\nimport type { FieldConfig } from '../fields/types';\n\n/**\n * Construye el catálogo estándar de campos de \"Búsqueda avanzada\" del CMS con\n * los textos por defecto de la librería (resueltos al idioma activo). Es lo que\n * usa `CmsAdvancedSearch` cuando el consumidor no pasa `fields`.\n *\n * Los campos de datos (sección, categoría, creador, autor, grupos, zona) traen\n * `options: []`: sus etiquetas/placeholder vienen traducidos de la lib, pero las\n * opciones reales las inyecta cada gestor (son datos del backend). Los campos de\n * enum fijo (tipo, estados, orden, prioridad, dirección) sí traen sus opciones\n * por defecto, también traducidas.\n *\n * @param t - Traductor de la lib (`useCmsTranslation().t`).\n * @returns Lista de campos lista para `CmsAdvancedSearch`.\n */\nexport function buildDefaultSearchFields(t: CmsTranslator): FieldConfig[] {\n const f = t.messages.searchFields;\n const o = t.messages.searchOptions;\n\n return [\n { kind: 'text', name: 'text', label: f.text, placeholder: f.textPlaceholder, span: 3 },\n {\n kind: 'select',\n name: 'type',\n label: f.type,\n placeholder: f.typePlaceholder,\n options: [\n { value: 'news', label: o.typeNews },\n { value: 'list', label: o.typeList },\n { value: 'liveblog', label: o.typeLiveblog },\n ],\n },\n {\n kind: 'select',\n name: 'section',\n label: f.section,\n placeholder: f.sectionPlaceholder,\n options: [],\n },\n {\n kind: 'select',\n name: 'category',\n label: f.category,\n placeholder: f.categoryPlaceholder,\n options: [],\n },\n {\n kind: 'multiselect',\n name: 'states',\n label: f.states,\n placeholder: f.statesPlaceholder,\n options: [\n { value: 'published', label: o.statePublished },\n { value: 'draft', label: o.stateDraft },\n { value: 'scheduled', label: o.stateScheduled },\n { value: 'review', label: o.stateReview },\n { value: 'done', label: o.stateDone },\n ],\n },\n {\n kind: 'combobox',\n name: 'creator',\n label: f.creator,\n placeholder: f.creatorPlaceholder,\n options: [],\n },\n {\n kind: 'combobox',\n name: 'author',\n label: f.author,\n placeholder: f.authorPlaceholder,\n options: [],\n },\n { kind: 'tags', name: 'tags', label: f.tags, placeholder: f.tagsPlaceholder },\n {\n kind: 'select',\n name: 'groups',\n label: f.groups,\n placeholder: f.groupsPlaceholder,\n options: [],\n },\n {\n kind: 'number',\n name: 'amount',\n label: f.amount,\n placeholder: f.amountPlaceholder,\n min: 1,\n },\n { kind: 'date', name: 'dateFrom', label: f.dateFrom },\n { kind: 'date', name: 'dateTo', label: f.dateTo },\n {\n kind: 'select',\n name: 'sortBy',\n label: f.sortBy,\n placeholder: f.sortByPlaceholder,\n options: [\n { value: 'relevance', label: o.sortRelevance },\n { value: 'date', label: o.sortDate },\n { value: 'title', label: o.sortTitle },\n ],\n },\n {\n kind: 'select',\n name: 'zone',\n label: f.zone,\n placeholder: f.zonePlaceholder,\n options: [],\n },\n {\n kind: 'select',\n name: 'priority',\n label: f.priority,\n placeholder: f.priorityPlaceholder,\n options: [\n { value: 'high', label: o.priorityHigh },\n { value: 'mid', label: o.priorityMid },\n { value: 'low', label: o.priorityLow },\n ],\n },\n {\n kind: 'select',\n name: 'order',\n label: f.order,\n placeholder: f.orderPlaceholder,\n options: [\n { value: 'desc', label: o.orderDesc },\n { value: 'asc', label: o.orderAsc },\n ],\n },\n { kind: 'checkbox', name: 'includeDrafts', label: f.includeDrafts, span: 1 },\n { kind: 'checkbox', name: 'includeHistory', label: f.includeHistory, span: 2 },\n ];\n}\n","'use client';\n\nimport CloseOutlinedIcon from '@mui/icons-material/CloseOutlined';\nimport FilterAltOutlinedIcon from '@mui/icons-material/FilterAltOutlined';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport Drawer from '@mui/material/Drawer';\nimport IconButton from '@mui/material/IconButton';\nimport { useMemo, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useCmsTranslation } from '../../i18n/useCmsTranslation';\nimport { FieldRenderer } from '../fields/FieldRenderer';\nimport type { FieldConfig, FieldValue, FieldValues } from '../fields/types';\nimport { CmsAdvancedSearchStyles } from './CmsAdvancedSearch.styles';\nimport { buildDefaultSearchFields } from './defaultFields';\n\n/** Presentación del contenedor de búsqueda avanzada. */\nexport type CmsAdvancedSearchVariant = 'modal' | 'drawer';\n\nexport type CmsAdvancedSearchProps = {\n /** Si el contenedor está abierto. */\n open: boolean;\n /** Callback al cerrar (botón X, scrim o Escape). */\n onClose: () => void;\n /** Modal centrado o panel lateral derecho. Por defecto `modal`. */\n variant?: CmsAdvancedSearchVariant;\n /** Título. Por defecto el de la lib (\"Búsqueda avanzada\", según idioma). */\n title?: ReactNode;\n /** Ícono de la cabecera. Por defecto un embudo de filtro. */\n titleIcon?: ReactNode;\n /**\n * Campos a mostrar. Si se omite, usa el catálogo estándar de la lib\n * (`buildDefaultSearchFields`) ya traducido. Cada gestor puede pasar solo los\n * campos que necesita o partir del catálogo por defecto y ajustar opciones.\n */\n fields?: FieldConfig[];\n /** Valores iniciales (al abrir se sincroniza el borrador con estos). */\n initialValues?: FieldValues;\n /** Callback al aplicar, con los valores del formulario. */\n onApply: (values: FieldValues) => void;\n /** Callback al restablecer (luego de limpiar el borrador). */\n onReset?: () => void;\n /** Texto del botón aplicar. Por defecto el de la lib. */\n applyLabel?: ReactNode;\n /** Texto del botón restablecer. Por defecto el de la lib. */\n resetLabel?: ReactNode;\n /** `aria-label` del botón cerrar. Por defecto el de la lib. */\n closeAriaLabel?: string;\n /** Columnas de la grilla en variante modal. Por defecto `3`. */\n columns?: number;\n /** Ancho del panel lateral. Por defecto `360`. */\n drawerWidth?: number | string;\n /** Base para los `data-testid`. */\n testId?: string;\n};\n\n/** Devuelve el valor vacío que corresponde a cada tipo de campo. */\nfunction emptyValueFor(field: FieldConfig): FieldValue {\n switch (field.kind) {\n case 'multiselect':\n case 'tags':\n return [];\n case 'checkbox':\n return false;\n default:\n return '';\n }\n}\n\n/**\n * Contenedor de \"Búsqueda avanzada\" reutilizable y declarativo. Recibe una lista\n * de `fields` y los renderiza en una grilla, manejando el estado del formulario\n * internamente. Se presenta como modal centrado o panel lateral derecho según\n * `variant`. El mismo componente sirve a cualquier gestor: solo cambian los\n * campos que se le pasan.\n */\nexport function CmsAdvancedSearch({\n open,\n onClose,\n variant = 'modal',\n title,\n titleIcon,\n fields,\n initialValues,\n onApply,\n onReset,\n applyLabel,\n resetLabel,\n closeAriaLabel,\n columns = 3,\n drawerWidth = 360,\n testId,\n}: CmsAdvancedSearchProps) {\n // Defaults desde la lib (resueltos al idioma del provider): campos, título y\n // textos de los botones. El consumidor puede sobrescribir cualquiera por prop.\n const { t } = useCmsTranslation();\n const s = t.messages.search;\n const resolvedFields = useMemo(\n () => fields ?? buildDefaultSearchFields(t),\n [fields, t],\n );\n const resolvedTitle = title ?? s.title;\n const resolvedApply = applyLabel ?? s.apply;\n const resolvedReset = resetLabel ?? s.reset;\n const resolvedCloseAria = closeAriaLabel ?? s.close;\n\n /** Borrador con los valores por defecto de cada campo + los iniciales. */\n const defaults = useMemo(() => {\n const base: FieldValues = {};\n for (const field of resolvedFields) base[field.name] = emptyValueFor(field);\n return { ...base, ...initialValues };\n }, [resolvedFields, initialValues]);\n\n const [draft, setDraft] = useState<FieldValues>(defaults);\n\n // Al abrir, reinicia el borrador con los valores iniciales vigentes. Se ajusta\n // el estado durante el render (patrón de React para \"estado derivado de un\n // cambio de prop\"), evitando un efecto con setState.\n const [prevOpen, setPrevOpen] = useState(open);\n if (open !== prevOpen) {\n setPrevOpen(open);\n if (open) setDraft(defaults);\n }\n\n /** Actualiza el valor de un campo del borrador. */\n const handleChange = (name: string, value: FieldValue) => {\n setDraft((prev) => ({ ...prev, [name]: value }));\n };\n\n /** Limpia todos los campos y notifica el restablecimiento. */\n const handleReset = () => {\n const cleared: FieldValues = {};\n for (const field of resolvedFields) cleared[field.name] = emptyValueFor(field);\n setDraft(cleared);\n onReset?.();\n };\n\n /** Aplica el borrador y cierra. */\n const handleApply = () => {\n onApply(draft);\n onClose();\n };\n\n const single = variant === 'drawer';\n\n const content = (\n <Box sx={CmsAdvancedSearchStyles.sxContainer} data-testid={testId}>\n <Box sx={CmsAdvancedSearchStyles.sxHead}>\n <Box sx={CmsAdvancedSearchStyles.sxHeadIcon}>\n {titleIcon ?? <FilterAltOutlinedIcon />}\n </Box>\n <Box component=\"h2\" sx={CmsAdvancedSearchStyles.sxTitle}>\n {resolvedTitle}\n </Box>\n <IconButton\n aria-label={resolvedCloseAria}\n onClick={onClose}\n sx={CmsAdvancedSearchStyles.sxClose}\n data-testid={testId ? `${testId}-icon-btn-close` : undefined}>\n <CloseOutlinedIcon />\n </IconButton>\n </Box>\n\n <Box sx={CmsAdvancedSearchStyles.sxBody}>\n <Box sx={CmsAdvancedSearchStyles.sxGrid(columns, single)}>\n {resolvedFields.map((field) => (\n <Box\n key={field.name}\n sx={{\n gridColumn:\n !single && field.span && field.span > 1\n ? `span ${field.span}`\n : undefined,\n }}>\n <FieldRenderer\n field={field}\n value={draft[field.name]}\n onChange={(value) => handleChange(field.name, value)}\n />\n </Box>\n ))}\n </Box>\n </Box>\n\n <Box sx={CmsAdvancedSearchStyles.sxFoot}>\n <Button\n type=\"button\"\n disableElevation\n onClick={handleReset}\n sx={CmsAdvancedSearchStyles.sxReset}\n data-testid={testId ? `${testId}-btn-reset` : undefined}>\n {resolvedReset}\n </Button>\n <Button\n type=\"button\"\n disableElevation\n onClick={handleApply}\n startIcon={<FilterAltOutlinedIcon />}\n sx={CmsAdvancedSearchStyles.sxApply}\n data-testid={testId ? `${testId}-btn-apply` : undefined}>\n {resolvedApply}\n </Button>\n </Box>\n </Box>\n );\n\n if (variant === 'drawer') {\n return (\n <Drawer\n anchor=\"right\"\n open={open}\n onClose={onClose}\n slotProps={{\n paper: { sx: CmsAdvancedSearchStyles.sxDrawerPaper(drawerWidth) },\n }}>\n {content}\n </Drawer>\n );\n }\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth={false}\n slotProps={{ paper: { sx: CmsAdvancedSearchStyles.sxModalPaper } }}>\n {content}\n </Dialog>\n );\n}\n","import type { SxProps, Theme } from '@mui/material/styles';\n\nimport { cmsColors, fontFamilies, radii } from '../../theme/variables';\n\n/**\n * Estilos del `CmsConfirmDialog` — modal de confirmación con ícono, título,\n * descripción y botones, todo opcional. Contenido alineado a la izquierda y\n * acciones a la derecha. Réplica funcional del `confirm-modal` del Angular\n * legacy (`cmsmedios-ux`) construida con MUI + variables del theme.\n */\nexport const CmsConfirmDialogStyles = {\n /**\n * Paper del modal: por defecto crece con el contenido respetando los mínimos\n * (ancho 420, alto 280). Si se pasa `width`, el ancho queda fijo.\n */\n sxPaper: (\n width: number | string | undefined,\n minWidth: number | string,\n minHeight: number | string,\n ): SxProps<Theme> => ({\n position: 'relative',\n width: width ?? 'auto',\n minWidth,\n maxWidth: 'calc(100vw - 32px)',\n minHeight,\n m: 2,\n px: '32px',\n py: '32px',\n borderRadius: radii.dialog,\n bgcolor: 'm3.surfaceContainerHigh',\n backgroundImage: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-start',\n gap: '16px',\n }),\n\n /** Botón \"X\" de cerrar (dentro, esquina superior derecha). 14×14. */\n sxClose: {\n position: 'absolute',\n top: 16,\n right: 16,\n p: 0.5,\n color: cmsColors.textNav,\n '& .MuiSvgIcon-root': { width: 14, height: 14, fontSize: 14 },\n } as SxProps<Theme>,\n\n /** Badge circular del ícono opcional, tintado con el color de acento. */\n sxIcon: (accent: string): SxProps<Theme> => ({\n width: 48,\n height: 48,\n flex: 'none',\n display: 'grid',\n placeItems: 'center',\n borderRadius: '50%',\n bgcolor: `color-mix(in oklab, ${accent} 16%, transparent)`,\n color: accent,\n '& .MuiSvgIcon-root': { fontSize: 24 },\n }),\n\n /** Título: M3 title-large — Google Sans 500 22/28, texto fuerte. Respeta saltos de línea. */\n sxTitle: {\n m: 0,\n fontFamily: fontFamilies.googleSans,\n fontSize: 22,\n fontWeight: 500,\n lineHeight: '28px',\n color: cmsColors.textStrong,\n whiteSpace: 'pre-line',\n } as SxProps<Theme>,\n\n /** Descripción: Google Sans 14/400. Admite negrita (`b`/`strong`) y enlaces (`a`). */\n sxDescription: {\n m: 0,\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.5,\n color: cmsColors.textStrong,\n whiteSpace: 'pre-line',\n '& b, & strong': { fontWeight: 700 },\n '& a': {\n color: cmsColors.link,\n fontWeight: 700,\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n } as SxProps<Theme>,\n\n /** Contenedor de la fila de botones (empuja al fondo del modal). */\n sxActions: {\n width: '100%',\n mt: 'auto',\n pt: '8px',\n } as SxProps<Theme>,\n};\n","import type { SxProps, Theme } from '@mui/material/styles';\nimport type { SystemStyleObject } from '@mui/system';\n\nimport { cmsColors, fontFamilies, radii, sizes } from '../../theme/variables';\n\n/** Alineación horizontal de la fila de botones. */\nexport type CmsDialogActionsAlign = 'start' | 'center' | 'end' | 'between';\n\n/** Color del botón \"Confirmar/Enviar\": CTA primario (azul) o destructivo (rojo). */\nexport type CmsConfirmColor = 'primary' | 'danger';\n\nconst JUSTIFY: Record<CmsDialogActionsAlign, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n};\n\n/**\n * Estilos de `CmsDialogActions` — la fila de botones (cancelar + confirmar) del\n * modal de confirmación. El \"cancelar\" es un botón tipo texto (transparente, con\n * hover secundario) y el \"confirmar\" es un CTA relleno (primario o destructivo).\n * Ambos pueden crecer para repartir el ancho disponible del padre (`sxGrow`).\n */\nexport const CmsDialogActionsStyles = {\n /** Contenedor flex de los botones (10px de separación). */\n sxRoot: (align: CmsDialogActionsAlign): SxProps<Theme> => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: JUSTIFY[align],\n gap: '10px',\n width: '100%',\n }),\n\n /** Hace que un botón crezca y reparta el ancho del contenedor. */\n sxGrow: { flex: 1 } as SxProps<Theme>,\n\n /** Botón \"Cancelar\": transparente, label primario, hover state layer primario 8%. */\n sxCancel: {\n height: sizes.buttonHeight,\n px: '16px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n color: cmsColors.primary,\n bgcolor: 'transparent',\n boxShadow: 'none',\n // Hover según Material: primario al 8% sobre transparente (state layer).\n '&:hover': {\n bgcolor: `color-mix(in oklab, ${cmsColors.primary} 8%, transparent)`,\n boxShadow: 'none',\n },\n '&.Mui-disabled': { color: cmsColors.primary, opacity: 0.38 },\n } as SxProps<Theme>,\n\n /** Botón \"Cancelar\" con `flex: 1` opcional para repartir ancho. */\n sxCancelButton: (fullWidth: boolean): SystemStyleObject<Theme> => ({\n ...(CmsDialogActionsStyles.sxCancel as SystemStyleObject<Theme>),\n ...(fullWidth ? (CmsDialogActionsStyles.sxGrow as SystemStyleObject<Theme>) : {}),\n }),\n\n /** Botón \"Confirmar/Enviar\" con `flex: 1` opcional para repartir ancho. */\n sxConfirmButton: (\n color: CmsConfirmColor,\n fullWidth: boolean,\n ): SystemStyleObject<Theme> => ({\n ...(CmsDialogActionsStyles.sxConfirm(color) as SystemStyleObject<Theme>),\n ...(fullWidth ? (CmsDialogActionsStyles.sxGrow as SystemStyleObject<Theme>) : {}),\n }),\n\n /** Botón \"Confirmar/Enviar\": relleno, label blanco, con su hover por color. */\n sxConfirm: (color: CmsConfirmColor): SxProps<Theme> => {\n const bg = color === 'danger' ? cmsColors.danger : cmsColors.primary;\n const hover = color === 'danger' ? cmsColors.dangerHover : cmsColors.primaryHover;\n return {\n height: sizes.buttonHeight,\n px: '24px',\n borderRadius: radii.pill,\n textTransform: 'none',\n fontFamily: fontFamilies.googleSans,\n fontSize: 14,\n fontWeight: 500,\n color: cmsColors.white,\n bgcolor: bg,\n boxShadow: 'none',\n '& .MuiButton-startIcon': { mr: '6px' },\n '& .MuiSvgIcon-root': { fontSize: 18 },\n '&:hover': { bgcolor: hover, boxShadow: 'none' },\n '&.Mui-disabled': { bgcolor: bg, color: cmsColors.white, opacity: 0.5 },\n };\n },\n};\n","'use client';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport type { ReactNode } from 'react';\n\nimport {\n CmsDialogActionsStyles,\n type CmsConfirmColor,\n type CmsDialogActionsAlign,\n} from './CmsDialogActions.styles';\n\nexport type { CmsConfirmColor, CmsDialogActionsAlign };\n\nexport type CmsDialogActionsProps = {\n /** Label del botón \"Cancelar\". Si se omite, ese botón no se muestra. */\n cancelLabel?: ReactNode;\n /** Acción del botón \"Cancelar\". */\n onCancel?: () => void;\n /** Label del botón \"Confirmar/Enviar\". Si se omite, ese botón no se muestra. */\n confirmLabel?: ReactNode;\n /** Acción del botón \"Confirmar/Enviar\". */\n onConfirm?: () => void;\n /** Ícono opcional al inicio del botón \"Confirmar/Enviar\". */\n confirmIcon?: ReactNode;\n /** Color del botón \"Confirmar/Enviar\": `primary` (azul) o `danger` (rojo). */\n confirmColor?: CmsConfirmColor;\n /** Deshabilita el botón \"Cancelar\". */\n cancelDisabled?: boolean;\n /** Deshabilita el botón \"Confirmar/Enviar\". */\n confirmDisabled?: boolean;\n /**\n * Si los botones crecen para repartir el ancho del contenedor padre. Por\n * defecto `true`. Con un solo botón, ocupa todo el ancho disponible.\n */\n fullWidth?: boolean;\n /** Alineación horizontal de los botones. Por defecto `end`. */\n align?: CmsDialogActionsAlign;\n /**\n * Base para los `data-testid`. El contenedor usa `testId`; el botón cancelar\n * emite `${testId}-btn-cancel` y el de confirmar `${testId}-btn-confirm`\n * (cada uno con su `data-action` `cancel` / `confirm` como atributo extra).\n */\n testId?: string;\n};\n\n/**\n * Fila de acciones del modal de confirmación. Muestra 1 o 2 botones según los\n * labels que reciba: el de \"Cancelar\" (tipo texto) y/o el de \"Confirmar/Enviar\"\n * (CTA primario o destructivo, con ícono opcional). Reutilizable de forma\n * independiente del modal.\n */\nexport function CmsDialogActions({\n cancelLabel,\n onCancel,\n confirmLabel,\n onConfirm,\n confirmIcon,\n confirmColor = 'primary',\n cancelDisabled,\n confirmDisabled,\n fullWidth = true,\n align = 'end',\n testId,\n}: CmsDialogActionsProps) {\n const hasCancel = cancelLabel != null;\n const hasConfirm = confirmLabel != null;\n if (!hasCancel && !hasConfirm) return null;\n\n return (\n <Box sx={CmsDialogActionsStyles.sxRoot(align)} data-testid={testId}>\n {hasCancel && (\n <Button\n type=\"button\"\n disableElevation\n onClick={onCancel}\n disabled={cancelDisabled}\n sx={CmsDialogActionsStyles.sxCancelButton(fullWidth)}\n data-testid={testId ? `${testId}-btn-cancel` : undefined}\n data-action=\"cancel\">\n {cancelLabel}\n </Button>\n )}\n {hasConfirm && (\n <Button\n type=\"button\"\n disableElevation\n onClick={onConfirm}\n disabled={confirmDisabled}\n startIcon={confirmIcon ?? undefined}\n sx={CmsDialogActionsStyles.sxConfirmButton(confirmColor, fullWidth)}\n data-testid={testId ? `${testId}-btn-confirm` : undefined}\n data-action=\"confirm\">\n {confirmLabel}\n </Button>\n )}\n </Box>\n );\n}\n","'use client';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport IconButton from '@mui/material/IconButton';\nimport type { PaperProps } from '@mui/material/Paper';\nimport type { ReactNode } from 'react';\n\nimport { cmsColors } from '../../theme/variables';\nimport { CmsConfirmDialogStyles } from './CmsConfirmDialog.styles';\nimport { CmsDialogActions } from './CmsDialogActions';\nimport type {\n CmsConfirmColor,\n CmsDialogActionsAlign,\n} from './CmsDialogActions.styles';\n\nexport type CmsConfirmDialogProps = {\n /** Si el modal está abierto. */\n open: boolean;\n /** Callback al cerrar (botón X, scrim o Escape). */\n onClose: () => void;\n /** Ícono opcional (se muestra en un badge circular sobre el título). */\n icon?: ReactNode;\n /** Color de acento del badge del ícono. Por defecto el texto de navegación. */\n iconColor?: string;\n /** Título opcional. M3 title-large (Google Sans 500 22/28). Admite `\\n` para saltos de línea. */\n title?: ReactNode;\n /**\n * Descripción opcional. Google Sans 14/400. Puede incluir negrita (`<b>`/`<strong>`)\n * y enlaces (`<a>`); ambos se estilan según el diseño.\n */\n description?: ReactNode;\n /** Muestra el botón \"X\" de cerrar (dentro, arriba a la derecha). Por defecto `true`. */\n showClose?: boolean;\n /** `aria-label` del botón cerrar. */\n closeAriaLabel?: string;\n /** Label del botón \"Cancelar\". Si se omite, no se muestra. */\n cancelLabel?: ReactNode;\n /** Acción del botón \"Cancelar\". Por defecto cierra el modal (`onClose`). */\n onCancel?: () => void;\n /** Label del botón \"Confirmar/Enviar\". Si se omite, no se muestra. */\n confirmLabel?: ReactNode;\n /** Acción del botón \"Confirmar/Enviar\". */\n onConfirm?: () => void;\n /** Ícono opcional al inicio del botón \"Confirmar/Enviar\". */\n confirmIcon?: ReactNode;\n /** Color del botón \"Confirmar/Enviar\": `primary` (azul) o `danger` (rojo). */\n confirmColor?: CmsConfirmColor;\n /** Deshabilita el botón \"Cancelar\". */\n cancelDisabled?: boolean;\n /** Deshabilita el botón \"Confirmar/Enviar\". */\n confirmDisabled?: boolean;\n /** Los botones reparten el ancho del modal. Por defecto `false`. */\n fullWidthActions?: boolean;\n /** Alineación de los botones. Por defecto `end` (a la derecha). */\n actionsAlign?: CmsDialogActionsAlign;\n /** Ancho fijo del modal. Si se omite, crece con el contenido (respetando `minWidth`). */\n width?: number | string;\n /** Ancho mínimo del modal. Por defecto `420`. */\n minWidth?: number | string;\n /** Alto mínimo del modal (crece con el contenido). Por defecto `280`. */\n minHeight?: number | string;\n /** Evita cerrar al hacer clic fuera o con Escape (p. ej. mientras carga). */\n disableBackdropClose?: boolean;\n /**\n * Base para los `data-testid`. Emite: `${testId}` (modal),\n * `${testId}-icon-btn-close` (botón X), `${testId}-actions` (fila de botones)\n * y los botones `${testId}-actions-btn-cancel` y `${testId}-actions-btn-confirm`.\n */\n testId?: string;\n};\n\n/**\n * Modal de confirmación reutilizable: ícono, título, descripción y 1–2 botones,\n * todo opcional. Contenido alineado a la izquierda, acciones a la derecha y \"X\"\n * de cerrar dentro del modal. Réplica funcional del `confirm-modal` del Angular\n * legacy (`cmsmedios-ux`) con MUI + el theme de la lib. Los textos (i18n) los\n * pasa el gestor; este componente solo presenta.\n */\nexport function CmsConfirmDialog({\n open,\n onClose,\n icon,\n iconColor = cmsColors.textNav,\n title,\n description,\n showClose = true,\n closeAriaLabel,\n cancelLabel,\n onCancel,\n confirmLabel,\n onConfirm,\n confirmIcon,\n confirmColor = 'primary',\n cancelDisabled,\n confirmDisabled,\n fullWidthActions = false,\n actionsAlign = 'end',\n width,\n minWidth = 420,\n minHeight = 280,\n disableBackdropClose,\n testId,\n}: CmsConfirmDialogProps) {\n const hasActions = cancelLabel != null || confirmLabel != null;\n\n return (\n <Dialog\n open={open}\n onClose={(_event, reason) => {\n if (\n disableBackdropClose &&\n (reason === 'backdropClick' || reason === 'escapeKeyDown')\n )\n return;\n onClose();\n }}\n maxWidth={false}\n slotProps={{\n paper: {\n sx: CmsConfirmDialogStyles.sxPaper(width, minWidth, minHeight),\n ...(testId != null ? { 'data-testid': testId } : {}),\n } as PaperProps,\n }}>\n {showClose && (\n <IconButton\n aria-label={closeAriaLabel ?? 'Close'}\n onClick={onClose}\n sx={CmsConfirmDialogStyles.sxClose}\n data-testid={testId ? `${testId}-icon-btn-close` : undefined}>\n <CloseIcon />\n </IconButton>\n )}\n\n {icon != null && (\n <Box sx={CmsConfirmDialogStyles.sxIcon(iconColor)}>{icon}</Box>\n )}\n\n {title != null && (\n <Box component=\"h2\" sx={CmsConfirmDialogStyles.sxTitle}>\n {title}\n </Box>\n )}\n\n {description != null && (\n <Box component=\"p\" sx={CmsConfirmDialogStyles.sxDescription}>\n {description}\n </Box>\n )}\n\n {hasActions && (\n <Box sx={CmsConfirmDialogStyles.sxActions}>\n <CmsDialogActions\n cancelLabel={cancelLabel}\n onCancel={onCancel ?? onClose}\n confirmLabel={confirmLabel}\n onConfirm={onConfirm}\n confirmIcon={confirmIcon}\n confirmColor={confirmColor}\n cancelDisabled={cancelDisabled}\n confirmDisabled={confirmDisabled}\n fullWidth={fullWidthActions}\n align={actionsAlign}\n testId={testId ? `${testId}-actions` : undefined}\n />\n </Box>\n )}\n </Dialog>\n );\n}\n"],"mappings":"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"}
|