@openg2p/registry-widgets 0.1.5 → 0.1.7

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.js CHANGED
@@ -920,700 +920,6 @@ const useWidgetEventBus = () => {
920
920
  return React.useContext(WidgetEventBusContext);
921
921
  };
922
922
 
923
- // Define stable empty arrays to avoid selector reference issues
924
- const EMPTY_ERRORS = [];
925
- const EMPTY_DATA_SOURCE$1 = [];
926
- const useBaseWidget = (options) => {
927
- const { config, dataSourceRequestHandler, schemaData, onValueChange } = options;
928
- const dispatch = reactRedux.useDispatch();
929
- const eventBus = useWidgetEventBus();
930
- const widgetId = config['widget-id'];
931
- // Get state from Redux
932
- const values = reactRedux.useSelector((state) => state.widget.values);
933
- const errors = reactRedux.useSelector((state) => state.widget.errors[widgetId] ?? EMPTY_ERRORS);
934
- const touched = reactRedux.useSelector((state) => state.widget.touched[widgetId] || false);
935
- const loading = reactRedux.useSelector((state) => state.widget.loading[widgetId] || false);
936
- const dataSourceOptions = reactRedux.useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE$1);
937
- // Skip value handling for layout widgets (they don't store data values)
938
- // Infer layout from widget-type
939
- const isLayoutWidget = config['widget-type'] === 'layout';
940
- // Track if user has explicitly set a value to prevent default from overwriting
941
- const userHasSetValueRef = React.useRef(false);
942
- // Use ref for values to avoid stale closures in handleChange
943
- const valuesRef = React.useRef(values);
944
- React.useEffect(() => {
945
- valuesRef.current = values;
946
- }, [values]);
947
- // Track last dispatched value to prevent duplicate dispatches
948
- const lastDispatchedValueRef = React.useRef(null);
949
- // Get current value
950
- const currentValue = React.useMemo(() => {
951
- if (isLayoutWidget) {
952
- return undefined; // Layout widgets don't have values
953
- }
954
- // Helper to extract displayable value from object (especially geo hierarchy objects)
955
- const extractValueFromObject = (obj) => {
956
- if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {
957
- return obj;
958
- }
959
- // Check for geo hierarchy structure first
960
- if ('geo_code_hierarchy_json' in obj || 'geo_lowest_level_value_id' in obj) {
961
- if ('geo_lowest_level_value_id' in obj) {
962
- return obj.geo_lowest_level_value_id;
963
- }
964
- // If it's a geo hierarchy object but no extractable ID, return undefined to avoid rendering object
965
- return undefined;
966
- }
967
- // Try common value fields
968
- if ('value' in obj) {
969
- return obj.value;
970
- }
971
- if ('id' in obj) {
972
- return obj.id;
973
- }
974
- if ('label' in obj) {
975
- return obj.label;
976
- }
977
- if ('name' in obj) {
978
- return obj.name;
979
- }
980
- // If no extractable value found, return undefined to avoid rendering object as React child
981
- // This prevents "Objects are not valid as a React child" errors
982
- return undefined;
983
- };
984
- // Try to get value from widgetId first (this should have the actual selected value)
985
- // For geo widgets with dataPath, widgetId stores the actual ID, while dataPath stores the hierarchy object
986
- let value = values[widgetId];
987
- // Extract value if it's an object (handles geo hierarchy objects stored in widgetId)
988
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
989
- value = extractValueFromObject(value);
990
- }
991
- // If widgetId doesn't have a value, try dataPath
992
- if (value === undefined && config['widget-data-path']) {
993
- value = getWidgetValue(values, config['widget-data-path'], widgetId);
994
- // Extract value if it's an object (handles geo hierarchy objects from dataPath)
995
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
996
- value = extractValueFromObject(value);
997
- }
998
- }
999
- // If value is still undefined and user has set a value, try reading from widgetId as backup
1000
- // This handles cases where dataPath lookup might fail temporarily
1001
- if (value === undefined && userHasSetValueRef.current && values[widgetId] !== undefined) {
1002
- value = values[widgetId];
1003
- // Extract value if it's an object (handles geo hierarchy objects)
1004
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1005
- value = extractValueFromObject(value);
1006
- }
1007
- }
1008
- // Final safety check: if value is still an object, extract displayable value
1009
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1010
- value = extractValueFromObject(value);
1011
- }
1012
- // If user has explicitly set a value, always return it (even if undefined/null)
1013
- // This prevents the default from overwriting user selections
1014
- if (userHasSetValueRef.current) {
1015
- return value;
1016
- }
1017
- // Only fall back to default if user hasn't set a value yet
1018
- // But check if value is explicitly null (user cleared it) vs undefined (never set)
1019
- if (value === null) {
1020
- return null; // User explicitly cleared it, don't use default
1021
- }
1022
- return value !== undefined ? value : config['widget-data-default'];
1023
- }, [values, config, widgetId, isLayoutWidget]);
1024
- // Initialize default value only once on mount (skip for layout widgets)
1025
- React.useEffect(() => {
1026
- if (isLayoutWidget) {
1027
- return;
1028
- }
1029
- // Only initialize default if value is undefined and user hasn't set a value yet
1030
- if (!userHasSetValueRef.current && config['widget-data-default'] !== undefined && currentValue === undefined) {
1031
- handleChange(config['widget-data-default'], false);
1032
- }
1033
- // eslint-disable-next-line react-hooks/exhaustive-deps
1034
- }, [isLayoutWidget]); // Only run once on mount
1035
- // Handle value change
1036
- // CRITICAL: Don't include 'values' in dependency array - it causes the callback to be recreated
1037
- // every time values change, which can lead to stale closures and double dispatches
1038
- const handleChange = React.useCallback((newValue, validate = true) => {
1039
- // Use valuesRef to get the latest values, not the stale closure value
1040
- const currentValues = valuesRef.current;
1041
- const currentValue = currentValues[widgetId] || getWidgetValue(currentValues, config['widget-data-path'], widgetId);
1042
- // CRITICAL: Prevent setting the same value (avoids unnecessary dispatches and potential loops)
1043
- if (currentValue === newValue) {
1044
- return;
1045
- }
1046
- // Mark that user has set a value (unless this is the default initialization)
1047
- if (newValue !== config['widget-data-default'] || userHasSetValueRef.current) {
1048
- userHasSetValueRef.current = true;
1049
- }
1050
- // CRITICAL FIX: If there's no dataPath, just set the value directly
1051
- // If there's a dataPath, we need to update both the widgetId and the dataPath
1052
- if (!config['widget-data-path']) {
1053
- // No dataPath: just set the value directly by widgetId
1054
- // CRITICAL: Check if we just dispatched this value to prevent duplicate dispatches
1055
- if (lastDispatchedValueRef.current === newValue) {
1056
- return;
1057
- }
1058
- lastDispatchedValueRef.current = newValue;
1059
- dispatch(setValue({ widgetId, value: newValue }));
1060
- }
1061
- else {
1062
- // Has dataPath: update both widgetId and dataPath
1063
- // CRITICAL: Create updated values object with newValue already set
1064
- // This prevents setWidgetValue from reading stale values
1065
- const currentValuesWithUpdate = {
1066
- ...valuesRef.current,
1067
- [widgetId]: newValue, // Ensure widgetId has the new value
1068
- };
1069
- const updatedValues = setWidgetValue(currentValuesWithUpdate, config['widget-data-path'], widgetId, newValue);
1070
- // setWidgetValue returns the complete updated structure with all existing data preserved
1071
- // Use setValues to update the entire state with deep merge
1072
- dispatch(setValues(updatedValues));
1073
- }
1074
- // Validate if needed
1075
- if (validate) {
1076
- const validationErrors = validateWidget(newValue, config['widget-data-validation'], config['widget-required']);
1077
- dispatch(setError({ widgetId, errors: validationErrors }));
1078
- }
1079
- // Call custom onChange if provided
1080
- if (onValueChange) {
1081
- onValueChange(widgetId, newValue);
1082
- }
1083
- // Publish widget:change event
1084
- // Skip publishing for last-level geo widgets (no child widgets waiting)
1085
- const geoConfig = config['widget-geo-config'];
1086
- const isLastLevelGeo = geoConfig?.isLastLevel === true;
1087
- if (eventBus && !isLastLevelGeo) {
1088
- eventBus.publish({
1089
- type: 'widget:change',
1090
- widgetId,
1091
- value: newValue,
1092
- timestamp: Date.now(),
1093
- });
1094
- }
1095
- }, [config, widgetId, dispatch, onValueChange, eventBus] // Removed 'values' to prevent stale closures
1096
- );
1097
- // Handle blur
1098
- const handleBlur = React.useCallback(() => {
1099
- dispatch(setTouched({ widgetId, touched: true }));
1100
- // Validate on blur
1101
- const validationErrors = validateWidget(currentValue, config['widget-data-validation'], config['widget-required']);
1102
- dispatch(setError({ widgetId, errors: validationErrors }));
1103
- // Publish widget:blur event
1104
- if (eventBus) {
1105
- eventBus.publish({
1106
- type: 'widget:blur',
1107
- widgetId,
1108
- value: currentValue,
1109
- timestamp: Date.now(),
1110
- });
1111
- }
1112
- }, [currentValue, config, widgetId, dispatch, eventBus]);
1113
- // Get field value helper
1114
- const getFieldValue = React.useCallback((path) => {
1115
- return getWidgetValue(values, path, '');
1116
- }, [values]);
1117
- // Conditional visibility and enablement
1118
- const isVisible = React.useMemo(() => {
1119
- // Layout widgets are always visible unless explicitly hidden
1120
- if (isLayoutWidget && !config['widget-data-options']?.condition) {
1121
- return true;
1122
- }
1123
- return shouldShowWidget(config['widget-data-options'], values);
1124
- }, [config['widget-data-options'], values, isLayoutWidget]);
1125
- const isEnabled = React.useMemo(() => {
1126
- // Layout widgets are always enabled (they don't have input state)
1127
- if (isLayoutWidget) {
1128
- return true;
1129
- }
1130
- if (config['widget-readonly']) {
1131
- return false;
1132
- }
1133
- return shouldEnableWidget(config['widget-data-options'], values);
1134
- }, [config['widget-readonly'], config['widget-data-options'], values, isLayoutWidget]);
1135
- // Format value for display
1136
- const formattedValue = React.useMemo(() => {
1137
- if (!config['widget-data-format']) {
1138
- return currentValue;
1139
- }
1140
- return formatValue(currentValue, config['widget-data-format'], config.widget);
1141
- }, [currentValue, config]);
1142
- // Track readonly state explicitly to detect changes
1143
- // Use JSON.stringify to create a stable reference for the dependency array
1144
- const isReadonly = config['widget-readonly'] ?? false;
1145
- const dataSource = config['widget-data-source'];
1146
- const geoConfig = config['widget-geo-config'];
1147
- // Use ref to store handler to avoid stale closures
1148
- const handlerRef = React.useRef(dataSourceRequestHandler);
1149
- React.useEffect(() => {
1150
- handlerRef.current = dataSourceRequestHandler;
1151
- }, [dataSourceRequestHandler]);
1152
- // Create a stable key for the config to detect changes
1153
- // This ensures the effect runs when widget-readonly changes
1154
- const apiService = dataSource?.type === 'api' ? dataSource.service : '';
1155
- const apiEndpoint = dataSource?.type === 'api' ? dataSource.endpoint : '';
1156
- const configKey = `${widgetId}-${isReadonly}-${dataSource?.type || 'none'}-${apiService}-${apiEndpoint}`;
1157
- // Handle data source loading
1158
- React.useEffect(() => {
1159
- if (!dataSource) {
1160
- return;
1161
- }
1162
- // For API data sources, check if widget is readonly
1163
- // According to PRD: "Level 1 geo widgets load on widget mount or when entering edit mode"
1164
- // So we should only load API data sources when widget is NOT readonly
1165
- if (dataSource.type === 'api' && isReadonly) {
1166
- return;
1167
- }
1168
- // For widgets with dependencies, check if dependency value exists
1169
- if (dataSource.type === 'api' && dataSource.dependsOn) {
1170
- // Check if dependency value exists
1171
- let depValue = null;
1172
- if (dataSource.dependsOn.includes('.')) {
1173
- depValue = getWidgetValue(values, dataSource.dependsOn, '');
1174
- }
1175
- else {
1176
- depValue = values[dataSource.dependsOn];
1177
- }
1178
- // If dependency is empty, don't load (will load when dependency has value)
1179
- if (depValue === null || depValue === undefined || depValue === '') {
1180
- return;
1181
- }
1182
- }
1183
- const loadDataSource = async () => {
1184
- // Get current handler from ref to avoid stale closures
1185
- // Also check prop directly as fallback (for initial render or when ref not updated yet)
1186
- const currentHandler = handlerRef.current || dataSourceRequestHandler;
1187
- // Only check for handler when we actually need it (inside the async function)
1188
- // This avoids false errors during React Strict Mode double-invocation
1189
- // If handler isn't available yet, silently skip - React will retry when it's ready
1190
- try {
1191
- if (dataSource.type === 'api' && !currentHandler) {
1192
- // Silently skip if handler isn't available yet (common during React Strict Mode double-invocation)
1193
- // React will call this effect again when the handler is ready
1194
- return;
1195
- }
1196
- dispatch(setLoading({ widgetId, loading: true }));
1197
- let data = [];
1198
- if (dataSource.type === 'static') {
1199
- data = getStaticDataSource(dataSource);
1200
- }
1201
- else if (dataSource.type === 'api') {
1202
- if (!currentHandler) {
1203
- // Silently skip if handler isn't available yet
1204
- dispatch(setLoading({ widgetId, loading: false }));
1205
- dispatch(setDataSource({ widgetId, data: [] }));
1206
- return;
1207
- }
1208
- // Extract level_id from widget-geo-config.level if available
1209
- const levelId = geoConfig?.level;
1210
- data = await getApiDataSource(dataSource, values, currentHandler, levelId);
1211
- }
1212
- else if (dataSource.type === 'schema') {
1213
- data = getSchemaDataSource(dataSource, schemaData || {});
1214
- }
1215
- // Transform to { value, label } format
1216
- // For geo widgets, default to level_value_id and level_value_mnemonic
1217
- let valueKey;
1218
- let labelKey;
1219
- if (dataSource.type === 'static') {
1220
- valueKey = undefined;
1221
- labelKey = undefined;
1222
- }
1223
- else if (geoConfig) {
1224
- // Geo widgets: default to level_value_id and level_value_mnemonic
1225
- valueKey = dataSource.valueKey || 'level_value_id';
1226
- labelKey = dataSource.labelKey || 'level_value_mnemonic';
1227
- }
1228
- else {
1229
- // Non-geo widgets: use specified keys or undefined
1230
- valueKey = dataSource.valueKey;
1231
- labelKey = dataSource.labelKey;
1232
- }
1233
- const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1234
- dispatch(setDataSource({ widgetId, data: transformed }));
1235
- }
1236
- catch (error) {
1237
- console.error(`[useBaseWidget] ERROR loading data source for ${widgetId}:`, error);
1238
- dispatch(setDataSource({ widgetId, data: [] }));
1239
- }
1240
- finally {
1241
- dispatch(setLoading({ widgetId, loading: false }));
1242
- }
1243
- };
1244
- loadDataSource();
1245
- // Use configKey to ensure effect runs when readonly state changes
1246
- // eslint-disable-next-line react-hooks/exhaustive-deps
1247
- }, [configKey, values, dataSourceRequestHandler, schemaData, widgetId, dispatch]);
1248
- return {
1249
- widgetId,
1250
- value: currentValue,
1251
- formattedValue,
1252
- error: errors,
1253
- touched,
1254
- loading,
1255
- isVisible,
1256
- isEnabled,
1257
- onChange: handleChange,
1258
- onBlur: handleBlur,
1259
- setError: (errors) => dispatch(setError({ widgetId, errors })),
1260
- getFieldValue,
1261
- dataSourceOptions,
1262
- config,
1263
- };
1264
- };
1265
-
1266
- /**
1267
- * Hook for general widget cascade functionality
1268
- * Handles listening to parent widget changes and reloading data sources
1269
- */
1270
- const useWidgetCascade = (options) => {
1271
- const { config, dataSourceRequestHandler, values } = options;
1272
- const dispatch = reactRedux.useDispatch();
1273
- const eventBus = useWidgetEventBus();
1274
- const widgetId = config['widget-id'];
1275
- const cascadeConfig = config['widget-cascade'];
1276
- const dataSource = config['widget-data-source'];
1277
- const valuesRef = React.useRef(values);
1278
- const handlerRef = React.useRef(dataSourceRequestHandler);
1279
- // Keep refs updated
1280
- React.useEffect(() => {
1281
- valuesRef.current = values;
1282
- handlerRef.current = dataSourceRequestHandler;
1283
- }, [values, dataSourceRequestHandler]);
1284
- React.useEffect(() => {
1285
- if (!cascadeConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
1286
- return;
1287
- }
1288
- const { listenTo, onEvent = 'widget:change', clearOnChange = true, reloadOnChange = true, debounce, throttle } = cascadeConfig;
1289
- if (listenTo.length === 0) {
1290
- return;
1291
- }
1292
- const handleEvent = async (event) => {
1293
- // Check if this event is from a parent we're listening to
1294
- if (!listenTo.includes(event.widgetId)) {
1295
- return;
1296
- }
1297
- const currentValues = valuesRef.current;
1298
- const currentHandler = handlerRef.current;
1299
- // Clear value if configured
1300
- if (clearOnChange) {
1301
- dispatch(setValue({ widgetId, value: undefined }));
1302
- }
1303
- // Reload data source if configured
1304
- if (reloadOnChange && currentHandler) {
1305
- try {
1306
- const data = await getApiDataSource(dataSource, currentValues, currentHandler);
1307
- // Transform to { value, label } format
1308
- const valueKey = dataSource.valueKey;
1309
- const labelKey = dataSource.labelKey;
1310
- const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1311
- dispatch(setDataSource({ widgetId, data: transformed }));
1312
- }
1313
- catch (error) {
1314
- console.error('Error reloading data source in cascade:', error);
1315
- dispatch(setDataSource({ widgetId, data: [] }));
1316
- }
1317
- }
1318
- };
1319
- // Subscribe to events
1320
- const unsubscribe = eventBus.subscribe(onEvent, handleEvent, { debounce, throttle });
1321
- return () => {
1322
- unsubscribe();
1323
- };
1324
- }, [cascadeConfig, eventBus, dataSource, widgetId, dispatch]);
1325
- };
1326
-
1327
- /**
1328
- * Geo Hierarchy Builder
1329
- * Manages geo hierarchy state and builds hierarchy JSON structure
1330
- */
1331
- class GeoHierarchyBuilder {
1332
- constructor() {
1333
- this.hierarchies = new Map();
1334
- }
1335
- /**
1336
- * Get or create hierarchy state for a group
1337
- */
1338
- getHierarchy(groupId = 'default') {
1339
- if (!this.hierarchies.has(groupId)) {
1340
- this.hierarchies.set(groupId, {
1341
- levels: new Map(),
1342
- order: [],
1343
- });
1344
- }
1345
- return this.hierarchies.get(groupId);
1346
- }
1347
- /**
1348
- * Add a level to the hierarchy
1349
- */
1350
- addLevel(level, level_value_id, level_value_mnemonic, groupId = 'default') {
1351
- const hierarchy = this.getHierarchy(groupId);
1352
- // If level already exists, remove it and everything after it
1353
- const existingIndex = hierarchy.order.indexOf(level);
1354
- if (existingIndex >= 0) {
1355
- // Remove this level and all subsequent levels
1356
- const levelsToRemove = hierarchy.order.slice(existingIndex);
1357
- levelsToRemove.forEach((l) => {
1358
- hierarchy.levels.delete(l);
1359
- hierarchy.order = hierarchy.order.filter((o) => o !== l);
1360
- });
1361
- }
1362
- // Add new level
1363
- hierarchy.levels.set(level, {
1364
- level,
1365
- level_value_id,
1366
- level_value_mnemonic,
1367
- });
1368
- hierarchy.order.push(level);
1369
- }
1370
- /**
1371
- * Remove a level and all levels below it
1372
- */
1373
- removeLevelAndBelow(level, groupId = 'default') {
1374
- const hierarchy = this.getHierarchy(groupId);
1375
- const index = hierarchy.order.indexOf(level);
1376
- if (index >= 0) {
1377
- // Remove this level and all subsequent levels
1378
- const levelsToRemove = hierarchy.order.slice(index);
1379
- levelsToRemove.forEach((l) => {
1380
- hierarchy.levels.delete(l);
1381
- hierarchy.order = hierarchy.order.filter((o) => o !== l);
1382
- });
1383
- }
1384
- }
1385
- /**
1386
- * Build hierarchy JSON structure
1387
- */
1388
- buildHierarchyJson(groupId = 'default') {
1389
- const hierarchy = this.getHierarchy(groupId);
1390
- if (hierarchy.order.length === 0) {
1391
- return null;
1392
- }
1393
- const hierarchyArray = hierarchy.order.map((level) => {
1394
- const data = hierarchy.levels.get(level);
1395
- return {
1396
- level: data.level,
1397
- level_value_id: data.level_value_id,
1398
- level_value_mnemonic: data.level_value_mnemonic,
1399
- };
1400
- });
1401
- const lowestLevel = hierarchy.order[hierarchy.order.length - 1];
1402
- const lowestLevelData = hierarchy.levels.get(lowestLevel);
1403
- return {
1404
- geo_lowest_level_value_id: lowestLevelData.level_value_id,
1405
- geo_code_hierarchy_json: {
1406
- hierarchy: hierarchyArray,
1407
- lowest_level_value_id: lowestLevelData.level_value_id,
1408
- },
1409
- };
1410
- }
1411
- /**
1412
- * Clear hierarchy for a group
1413
- */
1414
- clear(groupId = 'default') {
1415
- this.hierarchies.delete(groupId);
1416
- }
1417
- /**
1418
- * Clear all hierarchies
1419
- */
1420
- clearAll() {
1421
- this.hierarchies.clear();
1422
- }
1423
- /**
1424
- * Get current levels for a group
1425
- */
1426
- getLevels(groupId = 'default') {
1427
- const hierarchy = this.getHierarchy(groupId);
1428
- return hierarchy.order.map((level) => hierarchy.levels.get(level));
1429
- }
1430
- }
1431
- // Singleton instance
1432
- const geoHierarchyBuilder = new GeoHierarchyBuilder();
1433
-
1434
- // Define stable empty array to avoid selector reference issues
1435
- const EMPTY_DATA_SOURCE = [];
1436
- /**
1437
- * Hook for geo widget cascade functionality
1438
- * Handles geo hierarchy building and cascade behavior
1439
- */
1440
- const useGeoWidgetCascade = (options) => {
1441
- const { config, dataSourceRequestHandler, values } = options;
1442
- const dispatch = reactRedux.useDispatch();
1443
- const eventBus = useWidgetEventBus();
1444
- const widgetId = config['widget-id'];
1445
- const geoConfig = config['widget-geo-config'];
1446
- const dataSource = config['widget-data-source'];
1447
- const dataPath = config['widget-data-path'];
1448
- const valuesRef = React.useRef(values);
1449
- const handlerRef = React.useRef(dataSourceRequestHandler);
1450
- // Keep refs updated
1451
- React.useEffect(() => {
1452
- valuesRef.current = values;
1453
- handlerRef.current = dataSourceRequestHandler;
1454
- }, [values, dataSourceRequestHandler]);
1455
- // Get current value and data source options
1456
- const currentValue = reactRedux.useSelector((state) => {
1457
- if (!dataPath) {
1458
- return state.widget.values[widgetId];
1459
- }
1460
- return getWidgetValue(state.widget.values, dataPath, widgetId);
1461
- });
1462
- // Memoize selector to avoid returning new array reference
1463
- const dataSourceOptions = reactRedux.useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE);
1464
- React.useEffect(() => {
1465
- if (!geoConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
1466
- return;
1467
- }
1468
- const { level, isLastLevel, parentWidgetId } = geoConfig;
1469
- // Listen to parent widget changes
1470
- if (parentWidgetId) {
1471
- const handleParentChange = async (event) => {
1472
- if (event.widgetId !== parentWidgetId) {
1473
- return;
1474
- }
1475
- // CRITICAL: Use a small delay to ensure Redux state has been updated
1476
- // This prevents reading stale values from valuesRef
1477
- await new Promise(resolve => setTimeout(resolve, 0));
1478
- const currentValues = valuesRef.current;
1479
- const currentHandler = handlerRef.current;
1480
- // CRITICAL: Get the parent value from Redux state, not from the event
1481
- // The event.value might be stale, but Redux state is always current
1482
- const parentValue = currentValues[parentWidgetId];
1483
- // Remove this level and all below from hierarchy
1484
- geoHierarchyBuilder.removeLevelAndBelow(level);
1485
- // Clear this widget's value
1486
- // CRITICAL: Only dispatch setValue for THIS widget, not for parent or other widgets
1487
- // setWidgetValue returns the entire updated state, but we only want to update this widget
1488
- if (dataPath) {
1489
- const updatedValues = setWidgetValue(currentValues, dataPath, widgetId, undefined);
1490
- // Only dispatch setValue for this widget's widgetId, not for parent or other widgets
1491
- // This prevents accidentally overwriting the parent widget's value
1492
- // The setWidgetValue function updates the nested structure, but we only want to
1493
- // update the top-level widgetId key, not other keys that might be in updatedValues
1494
- const newWidgetValue = updatedValues[widgetId];
1495
- if (newWidgetValue !== undefined) {
1496
- dispatch(setValue({ widgetId, value: newWidgetValue }));
1497
- }
1498
- else {
1499
- // If widgetId is not in updatedValues, the value was set in a nested path
1500
- // In this case, we need to use setValues to update the entire structure
1501
- // But we need to be careful not to overwrite the parent widget's value
1502
- // Only update keys that are related to this widget's dataPath
1503
- const dataPathStr = typeof dataPath === 'string' ? dataPath : '';
1504
- if (dataPathStr && !dataPathStr.startsWith(parentWidgetId + '.')) {
1505
- // Only update if dataPath doesn't start with parentWidgetId
1506
- // This ensures we don't accidentally overwrite the parent widget's value
1507
- dispatch(setValue({ widgetId, value: undefined }));
1508
- }
1509
- }
1510
- }
1511
- else {
1512
- dispatch(setValue({ widgetId, value: undefined }));
1513
- }
1514
- // Reload data source with new parent value
1515
- // CRITICAL: Use parentValue from Redux, not event.value
1516
- if (currentHandler && parentValue !== null && parentValue !== undefined) {
1517
- try {
1518
- // Merge the new parent value into current values for the API call
1519
- // This ensures getApiDataSource can find the dependency value
1520
- const updatedValues = {
1521
- ...currentValues,
1522
- [parentWidgetId]: parentValue, // Use Redux value, not event.value
1523
- };
1524
- // Extract level_id from widget-geo-config.level
1525
- const levelId = geoConfig.level;
1526
- const data = await getApiDataSource(dataSource, updatedValues, currentHandler, levelId);
1527
- // Transform to { value, label } format
1528
- const valueKey = dataSource.valueKey || 'level_value_id';
1529
- const labelKey = dataSource.labelKey || 'level_value_mnemonic';
1530
- const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1531
- dispatch(setDataSource({ widgetId, data: transformed }));
1532
- }
1533
- catch (error) {
1534
- console.error('Error reloading geo data source:', error);
1535
- dispatch(setDataSource({ widgetId, data: [] }));
1536
- }
1537
- }
1538
- else {
1539
- // If parent value is cleared, clear the data source
1540
- dispatch(setDataSource({ widgetId, data: [] }));
1541
- }
1542
- };
1543
- const unsubscribe = eventBus.subscribe('widget:change', handleParentChange);
1544
- return () => {
1545
- unsubscribe();
1546
- };
1547
- }
1548
- }, [geoConfig, eventBus, dataSource, widgetId, dataPath, dispatch]);
1549
- // Handle value changes to build hierarchy
1550
- React.useEffect(() => {
1551
- if (!geoConfig) {
1552
- return;
1553
- }
1554
- // Skip if value is empty/null (but allow 0 and false)
1555
- if (currentValue === null || currentValue === undefined || currentValue === '') {
1556
- // If value was cleared, remove this level and below from hierarchy
1557
- const { level } = geoConfig;
1558
- geoHierarchyBuilder.removeLevelAndBelow(level);
1559
- return;
1560
- }
1561
- const { level, isLastLevel } = geoConfig;
1562
- // For last level, check if hierarchy is already built to prevent endless loops
1563
- if (isLastLevel && dataPath) {
1564
- const currentHierarchy = getWidgetValue(valuesRef.current, dataPath, widgetId);
1565
- // If hierarchy JSON is already set and matches current value, skip rebuilding
1566
- if (currentHierarchy && typeof currentHierarchy === 'object' && currentHierarchy.geo_code_hierarchy_json) {
1567
- // Check if the lowest level value matches
1568
- const currentLevelValue = typeof currentValue === 'object'
1569
- ? (currentValue.level_value_id || currentValue.id || currentValue.value)
1570
- : currentValue;
1571
- if (currentHierarchy.geo_lowest_level_value_id === currentLevelValue) {
1572
- return; // Hierarchy already built for this value, skip
1573
- }
1574
- }
1575
- }
1576
- // Extract level_value_id and level_value_mnemonic from current value
1577
- // The value could be the ID itself or an object with id/name
1578
- let level_value_id;
1579
- let level_value_mnemonic;
1580
- if (typeof currentValue === 'string' || typeof currentValue === 'number') {
1581
- // Value is just the ID, need to find mnemonic from data source
1582
- level_value_id = String(currentValue);
1583
- // Try to get mnemonic from data source options
1584
- const option = dataSourceOptions.find((opt) => opt.value === currentValue);
1585
- level_value_mnemonic = option?.label || String(currentValue);
1586
- }
1587
- else if (currentValue && typeof currentValue === 'object') {
1588
- level_value_id = currentValue.level_value_id || currentValue.id || currentValue.value;
1589
- level_value_mnemonic = currentValue.level_value_mnemonic || currentValue.name || currentValue.label;
1590
- }
1591
- else {
1592
- return;
1593
- }
1594
- // When a widget's own value changes, remove this level and all below from hierarchy first
1595
- // This ensures that when level 1 changes, we clear the hierarchy and rebuild from scratch
1596
- // The addLevel method already handles removing existing levels, but we explicitly clear to be safe
1597
- geoHierarchyBuilder.removeLevelAndBelow(level);
1598
- // Add level to hierarchy
1599
- geoHierarchyBuilder.addLevel(level, level_value_id, level_value_mnemonic);
1600
- // If this is the last level, build and store hierarchy JSON
1601
- if (isLastLevel && dataPath) {
1602
- const hierarchyJson = geoHierarchyBuilder.buildHierarchyJson();
1603
- if (hierarchyJson) {
1604
- // Store both geo_lowest_level_value_id and geo_code_hierarchy_json
1605
- const updatedValues = setWidgetValue(valuesRef.current, dataPath, widgetId, {
1606
- geo_lowest_level_value_id: hierarchyJson.geo_lowest_level_value_id,
1607
- geo_code_hierarchy_json: hierarchyJson.geo_code_hierarchy_json,
1608
- });
1609
- Object.entries(updatedValues).forEach(([key, value]) => {
1610
- dispatch(setValue({ widgetId: key, value }));
1611
- });
1612
- }
1613
- }
1614
- }, [geoConfig, currentValue, widgetId, dataPath, dispatch, dataSourceOptions]);
1615
- };
1616
-
1617
923
  var jsxRuntime = {exports: {}};
1618
924
 
1619
925
  var reactJsxRuntime_production = {};
@@ -2022,19 +1328,882 @@ function requireReactJsxRuntime_development () {
2022
1328
 
2023
1329
  var hasRequiredJsxRuntime;
2024
1330
 
2025
- function requireJsxRuntime () {
2026
- if (hasRequiredJsxRuntime) return jsxRuntime.exports;
2027
- hasRequiredJsxRuntime = 1;
1331
+ function requireJsxRuntime () {
1332
+ if (hasRequiredJsxRuntime) return jsxRuntime.exports;
1333
+ hasRequiredJsxRuntime = 1;
1334
+
1335
+ if (process.env.NODE_ENV === 'production') {
1336
+ jsxRuntime.exports = requireReactJsxRuntime_production();
1337
+ } else {
1338
+ jsxRuntime.exports = requireReactJsxRuntime_development();
1339
+ }
1340
+ return jsxRuntime.exports;
1341
+ }
1342
+
1343
+ var jsxRuntimeExports = requireJsxRuntime();
1344
+
1345
+ /**
1346
+ * Widget Event Bus
1347
+ * Provides a publish/subscribe mechanism for widget communication
1348
+ * Supports debounce and throttle for performance optimization
1349
+ */
1350
+ class WidgetEventBus {
1351
+ constructor() {
1352
+ this.subscriptions = new Map();
1353
+ this.throttleTimers = new Map();
1354
+ }
1355
+ /**
1356
+ * Subscribe to an event type
1357
+ * @param eventType The type of event to listen to
1358
+ * @param handler The handler function
1359
+ * @param options Debounce/throttle options
1360
+ * @returns Unsubscribe function
1361
+ */
1362
+ subscribe(eventType, handler, options) {
1363
+ if (!this.subscriptions.has(eventType)) {
1364
+ this.subscriptions.set(eventType, new Map());
1365
+ }
1366
+ const eventSubscriptions = this.subscriptions.get(eventType);
1367
+ const subscriptionId = `${Date.now()}-${Math.random()}`;
1368
+ const subscription = {
1369
+ handler,
1370
+ debounce: options?.debounce,
1371
+ throttle: options?.throttle,
1372
+ };
1373
+ if (!eventSubscriptions.has(subscriptionId)) {
1374
+ eventSubscriptions.set(subscriptionId, []);
1375
+ }
1376
+ eventSubscriptions.get(subscriptionId).push(subscription);
1377
+ // Return unsubscribe function
1378
+ return () => {
1379
+ const subs = eventSubscriptions.get(subscriptionId);
1380
+ if (subs) {
1381
+ const index = subs.indexOf(subscription);
1382
+ if (index > -1) {
1383
+ subs.splice(index, 1);
1384
+ if (subs.length === 0) {
1385
+ eventSubscriptions.delete(subscriptionId);
1386
+ }
1387
+ }
1388
+ }
1389
+ };
1390
+ }
1391
+ /**
1392
+ * Publish an event
1393
+ * @param event The event to publish
1394
+ */
1395
+ publish(event) {
1396
+ const eventSubscriptions = this.subscriptions.get(event.type);
1397
+ if (!eventSubscriptions) {
1398
+ return;
1399
+ }
1400
+ eventSubscriptions.forEach((subscriptions) => {
1401
+ subscriptions.forEach((subscription) => {
1402
+ this.executeHandler(subscription, event);
1403
+ });
1404
+ });
1405
+ }
1406
+ /**
1407
+ * Execute handler with debounce/throttle support
1408
+ */
1409
+ executeHandler(subscription, event) {
1410
+ const { handler, debounce, throttle } = subscription;
1411
+ // Clear existing debounce timer if any
1412
+ if (subscription.debounceTimer) {
1413
+ clearTimeout(subscription.debounceTimer);
1414
+ }
1415
+ // Handle throttle
1416
+ if (throttle && throttle > 0) {
1417
+ const throttleKey = `${event.type}-${event.widgetId}`;
1418
+ const now = Date.now();
1419
+ const lastCallTime = subscription.lastCallTime || 0;
1420
+ if (now - lastCallTime < throttle) {
1421
+ // Still in throttle period, schedule for later
1422
+ if (this.throttleTimers.has(throttleKey)) {
1423
+ return; // Already scheduled
1424
+ }
1425
+ const remainingTime = throttle - (now - lastCallTime);
1426
+ const timer = setTimeout(() => {
1427
+ subscription.lastCallTime = Date.now();
1428
+ handler(event);
1429
+ this.throttleTimers.delete(throttleKey);
1430
+ }, remainingTime);
1431
+ this.throttleTimers.set(throttleKey, timer);
1432
+ return;
1433
+ }
1434
+ subscription.lastCallTime = now;
1435
+ }
1436
+ // Handle debounce
1437
+ if (debounce && debounce > 0) {
1438
+ subscription.debounceTimer = setTimeout(() => {
1439
+ handler(event);
1440
+ subscription.debounceTimer = undefined;
1441
+ }, debounce);
1442
+ return;
1443
+ }
1444
+ // Execute immediately if no debounce/throttle
1445
+ handler(event);
1446
+ }
1447
+ /**
1448
+ * Clear all subscriptions
1449
+ */
1450
+ clear() {
1451
+ // Clear all timers
1452
+ this.subscriptions.forEach((eventSubscriptions) => {
1453
+ eventSubscriptions.forEach((subscriptions) => {
1454
+ subscriptions.forEach((sub) => {
1455
+ if (sub.debounceTimer) {
1456
+ clearTimeout(sub.debounceTimer);
1457
+ }
1458
+ });
1459
+ });
1460
+ });
1461
+ this.throttleTimers.forEach((timer) => clearTimeout(timer));
1462
+ this.throttleTimers.clear();
1463
+ this.subscriptions.clear();
1464
+ }
1465
+ }
1466
+
1467
+ const WidgetContext = React.createContext({
1468
+ dataSourceRequestHandler: undefined,
1469
+ schemaData: undefined,
1470
+ translate: undefined,
1471
+ });
1472
+ const useWidgetContext = () => {
1473
+ return React.useContext(WidgetContext);
1474
+ };
1475
+ const WidgetProvider = ({ store, dataSourceRequestHandler, schemaData, translate, children, }) => {
1476
+ const widgetStore = React.useMemo(() => store || createWidgetStore(), [store]);
1477
+ // Create event bus instance (one per provider)
1478
+ const eventBus = React.useMemo(() => new WidgetEventBus(), []);
1479
+ // Memoize context value to prevent unnecessary re-renders
1480
+ const contextValue = React.useMemo(() => ({
1481
+ dataSourceRequestHandler,
1482
+ schemaData,
1483
+ translate,
1484
+ }), [dataSourceRequestHandler, schemaData, translate]);
1485
+ // Warn if dataSourceRequestHandler is missing (will cause issues with API data sources)
1486
+ React.useEffect(() => {
1487
+ if (!dataSourceRequestHandler) {
1488
+ console.warn('[WidgetProvider] dataSourceRequestHandler is not provided. ' +
1489
+ 'Widgets with API data sources will not be able to load data. ' +
1490
+ 'Please provide dataSourceRequestHandler prop to WidgetProvider.');
1491
+ }
1492
+ }, [dataSourceRequestHandler]);
1493
+ // Cleanup event bus on unmount
1494
+ React.useEffect(() => {
1495
+ return () => {
1496
+ eventBus.clear();
1497
+ };
1498
+ }, [eventBus]);
1499
+ // Initialize schemaData to Redux store (only on mount)
1500
+ // This prevents overwriting user changes when schemaData prop changes
1501
+ React.useEffect(() => {
1502
+ if (schemaData) {
1503
+ widgetStore.dispatch(setValues(schemaData));
1504
+ }
1505
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1506
+ }, [schemaData, widgetStore]); // Only run on mount
1507
+ const content = (jsxRuntimeExports.jsx(reactRedux.Provider, { store: widgetStore, children: jsxRuntimeExports.jsx(WidgetContext.Provider, { value: contextValue, children: jsxRuntimeExports.jsx(WidgetEventBusContext.Provider, { value: eventBus, children: children }) }) }));
1508
+ return content;
1509
+ };
1510
+
1511
+ // Define stable empty arrays to avoid selector reference issues
1512
+ const EMPTY_ERRORS = [];
1513
+ const EMPTY_DATA_SOURCE$1 = [];
1514
+ const useBaseWidget = (options) => {
1515
+ const { config, dataSourceRequestHandler: propHandler, schemaData, onValueChange } = options;
1516
+ const dispatch = reactRedux.useDispatch();
1517
+ const context = useWidgetContext();
1518
+ const eventBus = useWidgetEventBus();
1519
+ const widgetId = config['widget-id'];
1520
+ // Fall back to WidgetContext for dataSourceRequestHandler
1521
+ const dataSourceRequestHandler = propHandler || context.dataSourceRequestHandler;
1522
+ // Get state from Redux
1523
+ const values = reactRedux.useSelector((state) => state.widget.values);
1524
+ const errors = reactRedux.useSelector((state) => state.widget.errors[widgetId] ?? EMPTY_ERRORS);
1525
+ const touched = reactRedux.useSelector((state) => state.widget.touched[widgetId] || false);
1526
+ const loading = reactRedux.useSelector((state) => state.widget.loading[widgetId] || false);
1527
+ const dataSourceOptions = reactRedux.useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE$1);
1528
+ // Skip value handling for layout widgets (they don't store data values)
1529
+ // Infer layout from widget-type
1530
+ const isLayoutWidget = config['widget-type'] === 'layout';
1531
+ // Track if user has explicitly set a value to prevent default from overwriting
1532
+ const userHasSetValueRef = React.useRef(false);
1533
+ // Use ref for values to avoid stale closures in handleChange
1534
+ const valuesRef = React.useRef(values);
1535
+ React.useEffect(() => {
1536
+ valuesRef.current = values;
1537
+ }, [values]);
1538
+ // Track last dispatched value to prevent duplicate dispatches
1539
+ const lastDispatchedValueRef = React.useRef(null);
1540
+ // Get current value
1541
+ const currentValue = React.useMemo(() => {
1542
+ if (isLayoutWidget) {
1543
+ return undefined; // Layout widgets don't have values
1544
+ }
1545
+ // Helper to extract displayable value from object (especially geo hierarchy objects)
1546
+ const extractValueFromObject = (obj) => {
1547
+ if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {
1548
+ return obj;
1549
+ }
1550
+ // Check for geo hierarchy structure first
1551
+ if ('geo_code_hierarchy_json' in obj || 'geo_lowest_level_value_id' in obj) {
1552
+ if ('geo_lowest_level_value_id' in obj) {
1553
+ return obj.geo_lowest_level_value_id;
1554
+ }
1555
+ // If it's a geo hierarchy object but no extractable ID, return undefined to avoid rendering object
1556
+ return undefined;
1557
+ }
1558
+ // Try common value fields
1559
+ if ('value' in obj) {
1560
+ return obj.value;
1561
+ }
1562
+ if ('id' in obj) {
1563
+ return obj.id;
1564
+ }
1565
+ if ('label' in obj) {
1566
+ return obj.label;
1567
+ }
1568
+ if ('name' in obj) {
1569
+ return obj.name;
1570
+ }
1571
+ // If no extractable value found, return undefined to avoid rendering object as React child
1572
+ // This prevents "Objects are not valid as a React child" errors
1573
+ return undefined;
1574
+ };
1575
+ // Try to get value from widgetId first (this should have the actual selected value)
1576
+ // For geo widgets with dataPath, widgetId stores the actual ID, while dataPath stores the hierarchy object
1577
+ let value = values[widgetId];
1578
+ // Extract value if it's an object (handles geo hierarchy objects stored in widgetId)
1579
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1580
+ value = extractValueFromObject(value);
1581
+ }
1582
+ // If widgetId doesn't have a value, try dataPath
1583
+ if (value === undefined && config['widget-data-path']) {
1584
+ value = getWidgetValue(values, config['widget-data-path'], widgetId);
1585
+ // Extract value if it's an object (handles geo hierarchy objects from dataPath)
1586
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1587
+ value = extractValueFromObject(value);
1588
+ }
1589
+ }
1590
+ // If value is still undefined and user has set a value, try reading from widgetId as backup
1591
+ // This handles cases where dataPath lookup might fail temporarily
1592
+ if (value === undefined && userHasSetValueRef.current && values[widgetId] !== undefined) {
1593
+ value = values[widgetId];
1594
+ // Extract value if it's an object (handles geo hierarchy objects)
1595
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1596
+ value = extractValueFromObject(value);
1597
+ }
1598
+ }
1599
+ // Final safety check: if value is still an object, extract displayable value
1600
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1601
+ value = extractValueFromObject(value);
1602
+ }
1603
+ // If user has explicitly set a value, always return it (even if undefined/null)
1604
+ // This prevents the default from overwriting user selections
1605
+ if (userHasSetValueRef.current) {
1606
+ return value;
1607
+ }
1608
+ // Only fall back to default if user hasn't set a value yet
1609
+ // But check if value is explicitly null (user cleared it) vs undefined (never set)
1610
+ if (value === null) {
1611
+ return null; // User explicitly cleared it, don't use default
1612
+ }
1613
+ return value !== undefined ? value : config['widget-data-default'];
1614
+ }, [values, config, widgetId, isLayoutWidget]);
1615
+ // Initialize default value only once on mount (skip for layout widgets)
1616
+ React.useEffect(() => {
1617
+ if (isLayoutWidget) {
1618
+ return;
1619
+ }
1620
+ // Only initialize default if value is undefined and user hasn't set a value yet
1621
+ if (!userHasSetValueRef.current && config['widget-data-default'] !== undefined && currentValue === undefined) {
1622
+ handleChange(config['widget-data-default'], false);
1623
+ }
1624
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1625
+ }, [isLayoutWidget]); // Only run once on mount
1626
+ // Handle value change
1627
+ // CRITICAL: Don't include 'values' in dependency array - it causes the callback to be recreated
1628
+ // every time values change, which can lead to stale closures and double dispatches
1629
+ const handleChange = React.useCallback((newValue, validate = true) => {
1630
+ // Use valuesRef to get the latest values, not the stale closure value
1631
+ const currentValues = valuesRef.current;
1632
+ const currentValue = currentValues[widgetId] || getWidgetValue(currentValues, config['widget-data-path'], widgetId);
1633
+ // CRITICAL: Prevent setting the same value (avoids unnecessary dispatches and potential loops)
1634
+ if (currentValue === newValue) {
1635
+ return;
1636
+ }
1637
+ // Mark that user has set a value (unless this is the default initialization)
1638
+ if (newValue !== config['widget-data-default'] || userHasSetValueRef.current) {
1639
+ userHasSetValueRef.current = true;
1640
+ }
1641
+ // CRITICAL FIX: If there's no dataPath, just set the value directly
1642
+ // If there's a dataPath, we need to update both the widgetId and the dataPath
1643
+ if (!config['widget-data-path']) {
1644
+ // No dataPath: just set the value directly by widgetId
1645
+ // CRITICAL: Check if we just dispatched this value to prevent duplicate dispatches
1646
+ if (lastDispatchedValueRef.current === newValue) {
1647
+ return;
1648
+ }
1649
+ lastDispatchedValueRef.current = newValue;
1650
+ dispatch(setValue({ widgetId, value: newValue }));
1651
+ }
1652
+ else {
1653
+ // Has dataPath: update both widgetId and dataPath
1654
+ // CRITICAL: Create updated values object with newValue already set
1655
+ // This prevents setWidgetValue from reading stale values
1656
+ const currentValuesWithUpdate = {
1657
+ ...valuesRef.current,
1658
+ [widgetId]: newValue, // Ensure widgetId has the new value
1659
+ };
1660
+ const updatedValues = setWidgetValue(currentValuesWithUpdate, config['widget-data-path'], widgetId, newValue);
1661
+ // setWidgetValue returns the complete updated structure with all existing data preserved
1662
+ // Use setValues to update the entire state with deep merge
1663
+ dispatch(setValues(updatedValues));
1664
+ }
1665
+ // Validate if needed
1666
+ if (validate) {
1667
+ const validationErrors = validateWidget(newValue, config['widget-data-validation'], config['widget-required']);
1668
+ dispatch(setError({ widgetId, errors: validationErrors }));
1669
+ }
1670
+ // Call custom onChange if provided
1671
+ if (onValueChange) {
1672
+ onValueChange(widgetId, newValue);
1673
+ }
1674
+ // Publish widget:change event
1675
+ // Skip publishing for last-level geo widgets (no child widgets waiting)
1676
+ const geoConfig = config['widget-geo-config'];
1677
+ const isLastLevelGeo = geoConfig?.isLastLevel === true;
1678
+ if (eventBus && !isLastLevelGeo) {
1679
+ eventBus.publish({
1680
+ type: 'widget:change',
1681
+ widgetId,
1682
+ value: newValue,
1683
+ timestamp: Date.now(),
1684
+ });
1685
+ }
1686
+ }, [config, widgetId, dispatch, onValueChange, eventBus] // Removed 'values' to prevent stale closures
1687
+ );
1688
+ // Handle blur
1689
+ const handleBlur = React.useCallback(() => {
1690
+ dispatch(setTouched({ widgetId, touched: true }));
1691
+ // Validate on blur
1692
+ const validationErrors = validateWidget(currentValue, config['widget-data-validation'], config['widget-required']);
1693
+ dispatch(setError({ widgetId, errors: validationErrors }));
1694
+ // Publish widget:blur event
1695
+ if (eventBus) {
1696
+ eventBus.publish({
1697
+ type: 'widget:blur',
1698
+ widgetId,
1699
+ value: currentValue,
1700
+ timestamp: Date.now(),
1701
+ });
1702
+ }
1703
+ }, [currentValue, config, widgetId, dispatch, eventBus]);
1704
+ // Get field value helper
1705
+ const getFieldValue = React.useCallback((path) => {
1706
+ return getWidgetValue(values, path, '');
1707
+ }, [values]);
1708
+ // Conditional visibility and enablement
1709
+ const isVisible = React.useMemo(() => {
1710
+ // Layout widgets are always visible unless explicitly hidden
1711
+ if (isLayoutWidget && !config['widget-data-options']?.condition) {
1712
+ return true;
1713
+ }
1714
+ return shouldShowWidget(config['widget-data-options'], values);
1715
+ }, [config['widget-data-options'], values, isLayoutWidget]);
1716
+ const isEnabled = React.useMemo(() => {
1717
+ // Layout widgets are always enabled (they don't have input state)
1718
+ if (isLayoutWidget) {
1719
+ return true;
1720
+ }
1721
+ if (config['widget-readonly']) {
1722
+ return false;
1723
+ }
1724
+ return shouldEnableWidget(config['widget-data-options'], values);
1725
+ }, [config['widget-readonly'], config['widget-data-options'], values, isLayoutWidget]);
1726
+ // Format value for display
1727
+ const formattedValue = React.useMemo(() => {
1728
+ if (!config['widget-data-format']) {
1729
+ return currentValue;
1730
+ }
1731
+ return formatValue(currentValue, config['widget-data-format'], config.widget);
1732
+ }, [currentValue, config]);
1733
+ // Track readonly state explicitly to detect changes
1734
+ // Use JSON.stringify to create a stable reference for the dependency array
1735
+ const isReadonly = config['widget-readonly'] ?? false;
1736
+ const dataSource = config['widget-data-source'];
1737
+ const geoConfig = config['widget-geo-config'];
1738
+ // Use ref to store handler to avoid stale closures
1739
+ const handlerRef = React.useRef(dataSourceRequestHandler);
1740
+ React.useEffect(() => {
1741
+ handlerRef.current = dataSourceRequestHandler;
1742
+ }, [dataSourceRequestHandler]);
1743
+ // Create a stable key for the config to detect changes
1744
+ // This ensures the effect runs when widget-readonly changes
1745
+ const apiService = dataSource?.type === 'api' ? dataSource.service : '';
1746
+ const apiEndpoint = dataSource?.type === 'api' ? dataSource.endpoint : '';
1747
+ const configKey = `${widgetId}-${isReadonly}-${dataSource?.type || 'none'}-${apiService}-${apiEndpoint}`;
1748
+ // Handle data source loading
1749
+ React.useEffect(() => {
1750
+ if (!dataSource) {
1751
+ return;
1752
+ }
1753
+ // For API data sources, check if widget is readonly
1754
+ // According to PRD: "Level 1 geo widgets load on widget mount or when entering edit mode"
1755
+ // So we should only load API data sources when widget is NOT readonly
1756
+ if (dataSource.type === 'api' && isReadonly) {
1757
+ return;
1758
+ }
1759
+ // For widgets with dependencies, check if dependency value exists
1760
+ if (dataSource.type === 'api' && dataSource.dependsOn) {
1761
+ // Check if dependency value exists
1762
+ let depValue = null;
1763
+ if (dataSource.dependsOn.includes('.')) {
1764
+ depValue = getWidgetValue(values, dataSource.dependsOn, '');
1765
+ }
1766
+ else {
1767
+ depValue = values[dataSource.dependsOn];
1768
+ }
1769
+ // If dependency is empty, don't load (will load when dependency has value)
1770
+ if (depValue === null || depValue === undefined || depValue === '') {
1771
+ return;
1772
+ }
1773
+ }
1774
+ const loadDataSource = async () => {
1775
+ // Get current handler from ref to avoid stale closures
1776
+ // Also check prop directly as fallback (for initial render or when ref not updated yet)
1777
+ const currentHandler = handlerRef.current || dataSourceRequestHandler;
1778
+ // Only check for handler when we actually need it (inside the async function)
1779
+ // This avoids false errors during React Strict Mode double-invocation
1780
+ // If handler isn't available yet, silently skip - React will retry when it's ready
1781
+ try {
1782
+ if (dataSource.type === 'api' && !currentHandler) {
1783
+ // Silently skip if handler isn't available yet (common during React Strict Mode double-invocation)
1784
+ // React will call this effect again when the handler is ready
1785
+ return;
1786
+ }
1787
+ dispatch(setLoading({ widgetId, loading: true }));
1788
+ let data = [];
1789
+ if (dataSource.type === 'static') {
1790
+ data = getStaticDataSource(dataSource);
1791
+ }
1792
+ else if (dataSource.type === 'api') {
1793
+ if (!currentHandler) {
1794
+ // Silently skip if handler isn't available yet
1795
+ dispatch(setLoading({ widgetId, loading: false }));
1796
+ dispatch(setDataSource({ widgetId, data: [] }));
1797
+ return;
1798
+ }
1799
+ // Extract level_id from widget-geo-config.level if available
1800
+ const levelId = geoConfig?.level;
1801
+ data = await getApiDataSource(dataSource, values, currentHandler, levelId);
1802
+ }
1803
+ else if (dataSource.type === 'schema') {
1804
+ data = getSchemaDataSource(dataSource, schemaData || {});
1805
+ }
1806
+ // Transform to { value, label } format
1807
+ // For geo widgets, default to level_value_id and level_value_mnemonic
1808
+ let valueKey;
1809
+ let labelKey;
1810
+ if (dataSource.type === 'static') {
1811
+ valueKey = undefined;
1812
+ labelKey = undefined;
1813
+ }
1814
+ else if (geoConfig) {
1815
+ // Geo widgets: default to level_value_id and level_value_mnemonic
1816
+ valueKey = dataSource.valueKey || 'level_value_id';
1817
+ labelKey = dataSource.labelKey || 'level_value_mnemonic';
1818
+ }
1819
+ else {
1820
+ // Non-geo widgets: use specified keys or undefined
1821
+ valueKey = dataSource.valueKey;
1822
+ labelKey = dataSource.labelKey;
1823
+ }
1824
+ const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1825
+ dispatch(setDataSource({ widgetId, data: transformed }));
1826
+ }
1827
+ catch (error) {
1828
+ console.error(`[useBaseWidget] ERROR loading data source for ${widgetId}:`, error);
1829
+ dispatch(setDataSource({ widgetId, data: [] }));
1830
+ }
1831
+ finally {
1832
+ dispatch(setLoading({ widgetId, loading: false }));
1833
+ }
1834
+ };
1835
+ loadDataSource();
1836
+ // Use configKey to ensure effect runs when readonly state changes
1837
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1838
+ }, [configKey, values, dataSourceRequestHandler, schemaData, widgetId, dispatch]);
1839
+ return {
1840
+ widgetId,
1841
+ value: currentValue,
1842
+ formattedValue,
1843
+ error: errors,
1844
+ touched,
1845
+ loading,
1846
+ isVisible,
1847
+ isEnabled,
1848
+ onChange: handleChange,
1849
+ onBlur: handleBlur,
1850
+ setError: (errors) => dispatch(setError({ widgetId, errors })),
1851
+ getFieldValue,
1852
+ dataSourceOptions,
1853
+ config,
1854
+ };
1855
+ };
1856
+
1857
+ /**
1858
+ * Hook for general widget cascade functionality
1859
+ * Handles listening to parent widget changes and reloading data sources
1860
+ */
1861
+ const useWidgetCascade = (options) => {
1862
+ const { config, dataSourceRequestHandler, values } = options;
1863
+ const dispatch = reactRedux.useDispatch();
1864
+ const eventBus = useWidgetEventBus();
1865
+ const widgetId = config['widget-id'];
1866
+ const cascadeConfig = config['widget-cascade'];
1867
+ const dataSource = config['widget-data-source'];
1868
+ const valuesRef = React.useRef(values);
1869
+ const handlerRef = React.useRef(dataSourceRequestHandler);
1870
+ // Keep refs updated
1871
+ React.useEffect(() => {
1872
+ valuesRef.current = values;
1873
+ handlerRef.current = dataSourceRequestHandler;
1874
+ }, [values, dataSourceRequestHandler]);
1875
+ React.useEffect(() => {
1876
+ if (!cascadeConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
1877
+ return;
1878
+ }
1879
+ const { listenTo, onEvent = 'widget:change', clearOnChange = true, reloadOnChange = true, debounce, throttle } = cascadeConfig;
1880
+ if (listenTo.length === 0) {
1881
+ return;
1882
+ }
1883
+ const handleEvent = async (event) => {
1884
+ // Check if this event is from a parent we're listening to
1885
+ if (!listenTo.includes(event.widgetId)) {
1886
+ return;
1887
+ }
1888
+ const currentValues = valuesRef.current;
1889
+ const currentHandler = handlerRef.current;
1890
+ // Clear value if configured
1891
+ if (clearOnChange) {
1892
+ dispatch(setValue({ widgetId, value: undefined }));
1893
+ }
1894
+ // Reload data source if configured
1895
+ if (reloadOnChange && currentHandler) {
1896
+ try {
1897
+ const data = await getApiDataSource(dataSource, currentValues, currentHandler);
1898
+ // Transform to { value, label } format
1899
+ const valueKey = dataSource.valueKey;
1900
+ const labelKey = dataSource.labelKey;
1901
+ const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1902
+ dispatch(setDataSource({ widgetId, data: transformed }));
1903
+ }
1904
+ catch (error) {
1905
+ console.error('Error reloading data source in cascade:', error);
1906
+ dispatch(setDataSource({ widgetId, data: [] }));
1907
+ }
1908
+ }
1909
+ };
1910
+ // Subscribe to events
1911
+ const unsubscribe = eventBus.subscribe(onEvent, handleEvent, { debounce, throttle });
1912
+ return () => {
1913
+ unsubscribe();
1914
+ };
1915
+ }, [cascadeConfig, eventBus, dataSource, widgetId, dispatch]);
1916
+ };
2028
1917
 
2029
- if (process.env.NODE_ENV === 'production') {
2030
- jsxRuntime.exports = requireReactJsxRuntime_production();
2031
- } else {
2032
- jsxRuntime.exports = requireReactJsxRuntime_development();
2033
- }
2034
- return jsxRuntime.exports;
1918
+ /**
1919
+ * Geo Hierarchy Builder
1920
+ * Manages geo hierarchy state and builds hierarchy JSON structure
1921
+ */
1922
+ class GeoHierarchyBuilder {
1923
+ constructor() {
1924
+ this.hierarchies = new Map();
1925
+ }
1926
+ /**
1927
+ * Get or create hierarchy state for a group
1928
+ */
1929
+ getHierarchy(groupId = 'default') {
1930
+ if (!this.hierarchies.has(groupId)) {
1931
+ this.hierarchies.set(groupId, {
1932
+ levels: new Map(),
1933
+ order: [],
1934
+ });
1935
+ }
1936
+ return this.hierarchies.get(groupId);
1937
+ }
1938
+ /**
1939
+ * Add a level to the hierarchy
1940
+ */
1941
+ addLevel(level, level_value_id, level_value_mnemonic, groupId = 'default') {
1942
+ const hierarchy = this.getHierarchy(groupId);
1943
+ // If level already exists, remove it and everything after it
1944
+ const existingIndex = hierarchy.order.indexOf(level);
1945
+ if (existingIndex >= 0) {
1946
+ // Remove this level and all subsequent levels
1947
+ const levelsToRemove = hierarchy.order.slice(existingIndex);
1948
+ levelsToRemove.forEach((l) => {
1949
+ hierarchy.levels.delete(l);
1950
+ hierarchy.order = hierarchy.order.filter((o) => o !== l);
1951
+ });
1952
+ }
1953
+ // Add new level
1954
+ hierarchy.levels.set(level, {
1955
+ level,
1956
+ level_value_id,
1957
+ level_value_mnemonic,
1958
+ });
1959
+ hierarchy.order.push(level);
1960
+ }
1961
+ /**
1962
+ * Remove a level and all levels below it
1963
+ */
1964
+ removeLevelAndBelow(level, groupId = 'default') {
1965
+ const hierarchy = this.getHierarchy(groupId);
1966
+ const index = hierarchy.order.indexOf(level);
1967
+ if (index >= 0) {
1968
+ // Remove this level and all subsequent levels
1969
+ const levelsToRemove = hierarchy.order.slice(index);
1970
+ levelsToRemove.forEach((l) => {
1971
+ hierarchy.levels.delete(l);
1972
+ hierarchy.order = hierarchy.order.filter((o) => o !== l);
1973
+ });
1974
+ }
1975
+ }
1976
+ /**
1977
+ * Build hierarchy JSON structure
1978
+ */
1979
+ buildHierarchyJson(groupId = 'default') {
1980
+ const hierarchy = this.getHierarchy(groupId);
1981
+ if (hierarchy.order.length === 0) {
1982
+ return null;
1983
+ }
1984
+ const hierarchyArray = hierarchy.order.map((level) => {
1985
+ const data = hierarchy.levels.get(level);
1986
+ return {
1987
+ level: data.level,
1988
+ level_value_id: data.level_value_id,
1989
+ level_value_mnemonic: data.level_value_mnemonic,
1990
+ };
1991
+ });
1992
+ const lowestLevel = hierarchy.order[hierarchy.order.length - 1];
1993
+ const lowestLevelData = hierarchy.levels.get(lowestLevel);
1994
+ return {
1995
+ geo_lowest_level_value_id: lowestLevelData.level_value_id,
1996
+ geo_code_hierarchy_json: {
1997
+ hierarchy: hierarchyArray,
1998
+ lowest_level_value_id: lowestLevelData.level_value_id,
1999
+ },
2000
+ };
2001
+ }
2002
+ /**
2003
+ * Clear hierarchy for a group
2004
+ */
2005
+ clear(groupId = 'default') {
2006
+ this.hierarchies.delete(groupId);
2007
+ }
2008
+ /**
2009
+ * Clear all hierarchies
2010
+ */
2011
+ clearAll() {
2012
+ this.hierarchies.clear();
2013
+ }
2014
+ /**
2015
+ * Get current levels for a group
2016
+ */
2017
+ getLevels(groupId = 'default') {
2018
+ const hierarchy = this.getHierarchy(groupId);
2019
+ return hierarchy.order.map((level) => hierarchy.levels.get(level));
2020
+ }
2035
2021
  }
2022
+ // Singleton instance
2023
+ const geoHierarchyBuilder = new GeoHierarchyBuilder();
2036
2024
 
2037
- var jsxRuntimeExports = requireJsxRuntime();
2025
+ // Define stable empty array to avoid selector reference issues
2026
+ const EMPTY_DATA_SOURCE = [];
2027
+ /**
2028
+ * Hook for geo widget cascade functionality
2029
+ * Handles geo hierarchy building and cascade behavior
2030
+ */
2031
+ const useGeoWidgetCascade = (options) => {
2032
+ const { config, dataSourceRequestHandler, values } = options;
2033
+ const dispatch = reactRedux.useDispatch();
2034
+ const eventBus = useWidgetEventBus();
2035
+ const widgetId = config['widget-id'];
2036
+ const geoConfig = config['widget-geo-config'];
2037
+ const dataSource = config['widget-data-source'];
2038
+ const dataPath = config['widget-data-path'];
2039
+ const valuesRef = React.useRef(values);
2040
+ const handlerRef = React.useRef(dataSourceRequestHandler);
2041
+ // Keep refs updated
2042
+ React.useEffect(() => {
2043
+ valuesRef.current = values;
2044
+ handlerRef.current = dataSourceRequestHandler;
2045
+ }, [values, dataSourceRequestHandler]);
2046
+ // Get current value and data source options
2047
+ const currentValue = reactRedux.useSelector((state) => {
2048
+ if (!dataPath) {
2049
+ return state.widget.values[widgetId];
2050
+ }
2051
+ return getWidgetValue(state.widget.values, dataPath, widgetId);
2052
+ });
2053
+ // Memoize selector to avoid returning new array reference
2054
+ const dataSourceOptions = reactRedux.useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE);
2055
+ React.useEffect(() => {
2056
+ if (!geoConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
2057
+ return;
2058
+ }
2059
+ const { level, isLastLevel, parentWidgetId } = geoConfig;
2060
+ // Listen to parent widget changes
2061
+ if (parentWidgetId) {
2062
+ const handleParentChange = async (event) => {
2063
+ if (event.widgetId !== parentWidgetId) {
2064
+ return;
2065
+ }
2066
+ // CRITICAL: Use a small delay to ensure Redux state has been updated
2067
+ // This prevents reading stale values from valuesRef
2068
+ await new Promise(resolve => setTimeout(resolve, 0));
2069
+ const currentValues = valuesRef.current;
2070
+ const currentHandler = handlerRef.current;
2071
+ // CRITICAL: Get the parent value from Redux state, not from the event
2072
+ // The event.value might be stale, but Redux state is always current
2073
+ const parentValue = currentValues[parentWidgetId];
2074
+ // Remove this level and all below from hierarchy
2075
+ geoHierarchyBuilder.removeLevelAndBelow(level);
2076
+ // Clear this widget's value
2077
+ // CRITICAL: Only dispatch setValue for THIS widget, not for parent or other widgets
2078
+ // setWidgetValue returns the entire updated state, but we only want to update this widget
2079
+ if (dataPath) {
2080
+ const updatedValues = setWidgetValue(currentValues, dataPath, widgetId, undefined);
2081
+ // Only dispatch setValue for this widget's widgetId, not for parent or other widgets
2082
+ // This prevents accidentally overwriting the parent widget's value
2083
+ // The setWidgetValue function updates the nested structure, but we only want to
2084
+ // update the top-level widgetId key, not other keys that might be in updatedValues
2085
+ const newWidgetValue = updatedValues[widgetId];
2086
+ if (newWidgetValue !== undefined) {
2087
+ dispatch(setValue({ widgetId, value: newWidgetValue }));
2088
+ }
2089
+ else {
2090
+ // If widgetId is not in updatedValues, the value was set in a nested path
2091
+ // In this case, we need to use setValues to update the entire structure
2092
+ // But we need to be careful not to overwrite the parent widget's value
2093
+ // Only update keys that are related to this widget's dataPath
2094
+ const dataPathStr = typeof dataPath === 'string' ? dataPath : '';
2095
+ if (dataPathStr && !dataPathStr.startsWith(parentWidgetId + '.')) {
2096
+ // Only update if dataPath doesn't start with parentWidgetId
2097
+ // This ensures we don't accidentally overwrite the parent widget's value
2098
+ dispatch(setValue({ widgetId, value: undefined }));
2099
+ }
2100
+ }
2101
+ }
2102
+ else {
2103
+ dispatch(setValue({ widgetId, value: undefined }));
2104
+ }
2105
+ // Reload data source with new parent value
2106
+ // CRITICAL: Use parentValue from Redux, not event.value
2107
+ if (currentHandler && parentValue !== null && parentValue !== undefined) {
2108
+ try {
2109
+ // Merge the new parent value into current values for the API call
2110
+ // This ensures getApiDataSource can find the dependency value
2111
+ const updatedValues = {
2112
+ ...currentValues,
2113
+ [parentWidgetId]: parentValue, // Use Redux value, not event.value
2114
+ };
2115
+ // Extract level_id from widget-geo-config.level
2116
+ const levelId = geoConfig.level;
2117
+ const data = await getApiDataSource(dataSource, updatedValues, currentHandler, levelId);
2118
+ // Transform to { value, label } format
2119
+ const valueKey = dataSource.valueKey || 'level_value_id';
2120
+ const labelKey = dataSource.labelKey || 'level_value_mnemonic';
2121
+ const transformed = transformDataSourceOptions(data, valueKey, labelKey);
2122
+ dispatch(setDataSource({ widgetId, data: transformed }));
2123
+ }
2124
+ catch (error) {
2125
+ console.error('Error reloading geo data source:', error);
2126
+ dispatch(setDataSource({ widgetId, data: [] }));
2127
+ }
2128
+ }
2129
+ else {
2130
+ // If parent value is cleared, clear the data source
2131
+ dispatch(setDataSource({ widgetId, data: [] }));
2132
+ }
2133
+ };
2134
+ const unsubscribe = eventBus.subscribe('widget:change', handleParentChange);
2135
+ return () => {
2136
+ unsubscribe();
2137
+ };
2138
+ }
2139
+ }, [geoConfig, eventBus, dataSource, widgetId, dataPath, dispatch]);
2140
+ // Handle value changes to build hierarchy
2141
+ React.useEffect(() => {
2142
+ if (!geoConfig) {
2143
+ return;
2144
+ }
2145
+ // Skip if value is empty/null (but allow 0 and false)
2146
+ if (currentValue === null || currentValue === undefined || currentValue === '') {
2147
+ // If value was cleared, remove this level and below from hierarchy
2148
+ const { level } = geoConfig;
2149
+ geoHierarchyBuilder.removeLevelAndBelow(level);
2150
+ return;
2151
+ }
2152
+ const { level, isLastLevel } = geoConfig;
2153
+ // For last level, check if hierarchy is already built to prevent endless loops
2154
+ if (isLastLevel && dataPath) {
2155
+ const currentHierarchy = getWidgetValue(valuesRef.current, dataPath, widgetId);
2156
+ // If hierarchy JSON is already set and matches current value, skip rebuilding
2157
+ if (currentHierarchy && typeof currentHierarchy === 'object' && currentHierarchy.geo_code_hierarchy_json) {
2158
+ // Check if the lowest level value matches
2159
+ const currentLevelValue = typeof currentValue === 'object'
2160
+ ? (currentValue.level_value_id || currentValue.id || currentValue.value)
2161
+ : currentValue;
2162
+ if (currentHierarchy.geo_lowest_level_value_id === currentLevelValue) {
2163
+ return; // Hierarchy already built for this value, skip
2164
+ }
2165
+ }
2166
+ }
2167
+ // Extract level_value_id and level_value_mnemonic from current value
2168
+ // The value could be the ID itself or an object with id/name
2169
+ let level_value_id;
2170
+ let level_value_mnemonic;
2171
+ if (typeof currentValue === 'string' || typeof currentValue === 'number') {
2172
+ // Value is just the ID, need to find mnemonic from data source
2173
+ level_value_id = String(currentValue);
2174
+ // Try to get mnemonic from data source options
2175
+ const option = dataSourceOptions.find((opt) => opt.value === currentValue);
2176
+ level_value_mnemonic = option?.label || String(currentValue);
2177
+ }
2178
+ else if (currentValue && typeof currentValue === 'object') {
2179
+ level_value_id = currentValue.level_value_id || currentValue.id || currentValue.value;
2180
+ level_value_mnemonic = currentValue.level_value_mnemonic || currentValue.name || currentValue.label;
2181
+ }
2182
+ else {
2183
+ return;
2184
+ }
2185
+ // When a widget's own value changes, remove this level and all below from hierarchy first
2186
+ // This ensures that when level 1 changes, we clear the hierarchy and rebuild from scratch
2187
+ // The addLevel method already handles removing existing levels, but we explicitly clear to be safe
2188
+ geoHierarchyBuilder.removeLevelAndBelow(level);
2189
+ // Add level to hierarchy
2190
+ geoHierarchyBuilder.addLevel(level, level_value_id, level_value_mnemonic);
2191
+ // If this is the last level, build and store hierarchy JSON
2192
+ if (isLastLevel && dataPath) {
2193
+ const hierarchyJson = geoHierarchyBuilder.buildHierarchyJson();
2194
+ if (hierarchyJson) {
2195
+ // Store both geo_lowest_level_value_id and geo_code_hierarchy_json
2196
+ const updatedValues = setWidgetValue(valuesRef.current, dataPath, widgetId, {
2197
+ geo_lowest_level_value_id: hierarchyJson.geo_lowest_level_value_id,
2198
+ geo_code_hierarchy_json: hierarchyJson.geo_code_hierarchy_json,
2199
+ });
2200
+ Object.entries(updatedValues).forEach(([key, value]) => {
2201
+ dispatch(setValue({ widgetId: key, value }));
2202
+ });
2203
+ }
2204
+ }
2205
+ }, [geoConfig, currentValue, widgetId, dataPath, dispatch, dataSourceOptions]);
2206
+ };
2038
2207
 
2039
2208
  class WidgetRegistry {
2040
2209
  constructor() {
@@ -2109,178 +2278,12 @@ class WidgetRegistry {
2109
2278
  return React.createElement(entry.component, {
2110
2279
  config,
2111
2280
  ...context,
2112
- ...entry.defaultProps,
2113
- });
2114
- }
2115
- }
2116
- // Singleton instance
2117
- const widgetRegistry = new WidgetRegistry();
2118
-
2119
- /**
2120
- * Widget Event Bus
2121
- * Provides a publish/subscribe mechanism for widget communication
2122
- * Supports debounce and throttle for performance optimization
2123
- */
2124
- class WidgetEventBus {
2125
- constructor() {
2126
- this.subscriptions = new Map();
2127
- this.throttleTimers = new Map();
2128
- }
2129
- /**
2130
- * Subscribe to an event type
2131
- * @param eventType The type of event to listen to
2132
- * @param handler The handler function
2133
- * @param options Debounce/throttle options
2134
- * @returns Unsubscribe function
2135
- */
2136
- subscribe(eventType, handler, options) {
2137
- if (!this.subscriptions.has(eventType)) {
2138
- this.subscriptions.set(eventType, new Map());
2139
- }
2140
- const eventSubscriptions = this.subscriptions.get(eventType);
2141
- const subscriptionId = `${Date.now()}-${Math.random()}`;
2142
- const subscription = {
2143
- handler,
2144
- debounce: options?.debounce,
2145
- throttle: options?.throttle,
2146
- };
2147
- if (!eventSubscriptions.has(subscriptionId)) {
2148
- eventSubscriptions.set(subscriptionId, []);
2149
- }
2150
- eventSubscriptions.get(subscriptionId).push(subscription);
2151
- // Return unsubscribe function
2152
- return () => {
2153
- const subs = eventSubscriptions.get(subscriptionId);
2154
- if (subs) {
2155
- const index = subs.indexOf(subscription);
2156
- if (index > -1) {
2157
- subs.splice(index, 1);
2158
- if (subs.length === 0) {
2159
- eventSubscriptions.delete(subscriptionId);
2160
- }
2161
- }
2162
- }
2163
- };
2164
- }
2165
- /**
2166
- * Publish an event
2167
- * @param event The event to publish
2168
- */
2169
- publish(event) {
2170
- const eventSubscriptions = this.subscriptions.get(event.type);
2171
- if (!eventSubscriptions) {
2172
- return;
2173
- }
2174
- eventSubscriptions.forEach((subscriptions) => {
2175
- subscriptions.forEach((subscription) => {
2176
- this.executeHandler(subscription, event);
2177
- });
2178
- });
2179
- }
2180
- /**
2181
- * Execute handler with debounce/throttle support
2182
- */
2183
- executeHandler(subscription, event) {
2184
- const { handler, debounce, throttle } = subscription;
2185
- // Clear existing debounce timer if any
2186
- if (subscription.debounceTimer) {
2187
- clearTimeout(subscription.debounceTimer);
2188
- }
2189
- // Handle throttle
2190
- if (throttle && throttle > 0) {
2191
- const throttleKey = `${event.type}-${event.widgetId}`;
2192
- const now = Date.now();
2193
- const lastCallTime = subscription.lastCallTime || 0;
2194
- if (now - lastCallTime < throttle) {
2195
- // Still in throttle period, schedule for later
2196
- if (this.throttleTimers.has(throttleKey)) {
2197
- return; // Already scheduled
2198
- }
2199
- const remainingTime = throttle - (now - lastCallTime);
2200
- const timer = setTimeout(() => {
2201
- subscription.lastCallTime = Date.now();
2202
- handler(event);
2203
- this.throttleTimers.delete(throttleKey);
2204
- }, remainingTime);
2205
- this.throttleTimers.set(throttleKey, timer);
2206
- return;
2207
- }
2208
- subscription.lastCallTime = now;
2209
- }
2210
- // Handle debounce
2211
- if (debounce && debounce > 0) {
2212
- subscription.debounceTimer = setTimeout(() => {
2213
- handler(event);
2214
- subscription.debounceTimer = undefined;
2215
- }, debounce);
2216
- return;
2217
- }
2218
- // Execute immediately if no debounce/throttle
2219
- handler(event);
2220
- }
2221
- /**
2222
- * Clear all subscriptions
2223
- */
2224
- clear() {
2225
- // Clear all timers
2226
- this.subscriptions.forEach((eventSubscriptions) => {
2227
- eventSubscriptions.forEach((subscriptions) => {
2228
- subscriptions.forEach((sub) => {
2229
- if (sub.debounceTimer) {
2230
- clearTimeout(sub.debounceTimer);
2231
- }
2232
- });
2233
- });
2281
+ ...entry.defaultProps,
2234
2282
  });
2235
- this.throttleTimers.forEach((timer) => clearTimeout(timer));
2236
- this.throttleTimers.clear();
2237
- this.subscriptions.clear();
2238
2283
  }
2239
2284
  }
2240
-
2241
- const WidgetContext = React.createContext({
2242
- dataSourceRequestHandler: undefined,
2243
- schemaData: undefined,
2244
- translate: undefined,
2245
- });
2246
- const useWidgetContext = () => {
2247
- return React.useContext(WidgetContext);
2248
- };
2249
- const WidgetProvider = ({ store, dataSourceRequestHandler, schemaData, translate, children, }) => {
2250
- const widgetStore = React.useMemo(() => store || createWidgetStore(), [store]);
2251
- // Create event bus instance (one per provider)
2252
- const eventBus = React.useMemo(() => new WidgetEventBus(), []);
2253
- // Memoize context value to prevent unnecessary re-renders
2254
- const contextValue = React.useMemo(() => ({
2255
- dataSourceRequestHandler,
2256
- schemaData,
2257
- translate,
2258
- }), [dataSourceRequestHandler, schemaData, translate]);
2259
- // Warn if dataSourceRequestHandler is missing (will cause issues with API data sources)
2260
- React.useEffect(() => {
2261
- if (!dataSourceRequestHandler) {
2262
- console.warn('[WidgetProvider] dataSourceRequestHandler is not provided. ' +
2263
- 'Widgets with API data sources will not be able to load data. ' +
2264
- 'Please provide dataSourceRequestHandler prop to WidgetProvider.');
2265
- }
2266
- }, [dataSourceRequestHandler]);
2267
- // Cleanup event bus on unmount
2268
- React.useEffect(() => {
2269
- return () => {
2270
- eventBus.clear();
2271
- };
2272
- }, [eventBus]);
2273
- // Initialize schemaData to Redux store (only on mount)
2274
- // This prevents overwriting user changes when schemaData prop changes
2275
- React.useEffect(() => {
2276
- if (schemaData) {
2277
- widgetStore.dispatch(setValues(schemaData));
2278
- }
2279
- // eslint-disable-next-line react-hooks/exhaustive-deps
2280
- }, [schemaData, widgetStore]); // Only run on mount
2281
- const content = (jsxRuntimeExports.jsx(reactRedux.Provider, { store: widgetStore, children: jsxRuntimeExports.jsx(WidgetContext.Provider, { value: contextValue, children: jsxRuntimeExports.jsx(WidgetEventBusContext.Provider, { value: eventBus, children: children }) }) }));
2282
- return content;
2283
- };
2285
+ // Singleton instance
2286
+ const widgetRegistry = new WidgetRegistry();
2284
2287
 
2285
2288
  const WidgetRenderer = ({ config, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData: propSchemaData, onValueChange, defaultComponent, }) => {
2286
2289
  // Use context values as fallback
@@ -2577,6 +2580,38 @@ const canPreviewInWeb = (file) => {
2577
2580
  return previewableExtensions.includes(extension.toLowerCase());
2578
2581
  };
2579
2582
 
2583
+ var img$f = "data:image/png;base64,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";
2584
+
2585
+ var img$e = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAkCAYAAACe0YppAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAJAAAAAAh0JciAAACrUlEQVRYCcWXPW8TQRCG31kbpNBChGiiRJQ0tFDggPgBtKGhJgEJUGxDFCmJUBKwDUoV2jRxS2NEhZCgAPELKBAhIPFRpKIwUXIe3vFHFJzbs2zWupHWu7e7M8/OenbuVkDReUzoLjbZvGDP/ysiWJQSlpLsiN7HOBp4rco6oBC+Svicz2QWERYULSjh605Q3dvHnk/B138sg1EV1DrjtPVAC9j1eS6NPD5x8lko3rgKch3FfmvbOY2w1a3n89xxlWdsMuvP3UqDPhO2xPLF9NueL3Tbct0dIZ4jJdTh8iH4Irf9H/hQwLZ4edSCs7ltz/Tc4CvWNhka2IwbXDKYZLMDt4Brep61CUFE8Jt26iwj9KbcKGDW7GrDfnGi+csf8zwqoh7MY1nFjhLYBpziKTl3UIDRDthqp5gJ5zENZsrMCXlscQE3DoMO2sJ8wURFr08GBRtAythgZeWIRAVsSDtZBdvqI5QeHamBE7c6yqPKJND/G0sZvIqXmQpmfI57wVrEGI/CFINhIOGCp3lml/mS+B5nwAuWx/iqs5hnDr8ap9ijT7noF+5JPNR0vWAblAqWWVkJLqkFV2rgxK1mVG8ySC4Oss/NqC5j2qfrBdf5RSERrg8c1cBNvYOHsoYfcXAveISvNHpcZIrLxSkm9rXO8SvngZquF2yDTPolVlaCS2rBlRo4cav56fscgvNJ+8wYqDEt3k6aEzfmBVtU82P/Wq+oZiq/pfdQkqf4Fgfw9XnBFtXM1XeZq73nmGPK68871yfUFuMF2yBz9RorK8ElteDiHY2blYI4/ks7xuUCxofNJ2OizfiZZVTW2GGfKJNMkc9cFlUu5k/QRQiOYx9TfHFcMrtkvhWdw2l2fmDnWFCY39i2XWucrOAXb1A5ruKjf26wkfeEXrE71V+iV9IhdJQEvwAAAABJRU5ErkJggg==";
2586
+
2587
+ var img$d = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjYtMDEtMDJUMTY6NTA6MDQrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjljMDI0ZTVhLWJiMWItNDBiMi05NThmLTg5YjExMTE5NGI4MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjMzZDZiMTBiLTQzNjYtYTc0Ny1iOTZlLWI4ZTBhZjQxMTkzOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI1M2M1ZmRhLTlkYzctNGQ0MC04Y2E3LThmMTQ2MmU4OWMxNSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjUzYzVmZGEtOWRjNy00ZDQwLThjYTctOGYxNDYyZTg5YzE1IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDQ5N2Y5YmYtMWZiMi00MWJlLTg5ZGItZGFiMDZmMjEwODE4IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OWMwMjRlNWEtYmIxYi00MGIyLTk1OGYtODliMTExMTk0YjgxIiBzdEV2dDp3aGVuPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7pSLHQ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";
2588
+
2589
+ var img$c = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAAL+LWFAAAoQklEQVR4Ae3dy49tWV0H8MubEI3GGBFwojwbGmjppsH3pQEnDIz6BzAz4T9QiVPxFZ0ZJ2LigBEDE00g0SADNb7CI4EQE41goBua7r7dPBQEvP52uvftuvU4tc/Ze+21fmt9TrJy6lbts/dan9+q8/3VqbpVN264ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAOAi+Ka7xwh+sUu8Rzip15nxNPBfjhGP8d49Y+l3QVAgQIEBhM4KWx3l+OcTPGfTF+IsYLYky3b8f49xifjPGxGH8RQx4Fwta3V8cJfz3Gx2N8Mcb/xbh9Zkzv+1CM98V4WQw3AgQIECBwqsAD8cAPx/hOjLNZc+jtb8Wxfx7jnhhuGwi8M87xjzEOoZ//2FSED8a4N4YbAQIECBBYKvCDceCUH+e/yDyfM4f+PTUNfxTjJTHcThB4VTzmIzEOIV/3se/F438nRurv1cT83QgQIECgvMBb4hL/GeO6bFn68c/EuV5Tftp9XeGXYjlPxViKfN1xn4hzTd9CcCNAgAABApcJ3Ix3bpk7cy49GuedGgu3BQLvjWO+G2PG2+r+kTjn6xZc3yEECBAgMJbAQ7Hcb8bYKm/On+crce7pVW23AwLTV/4lwn8uhibgAL4PESBAYECB0uE/58+nw/bFA/ouWvLUHZV4+WXGn+81AYvK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cqPi0586sS/E2LoJ+Eqc8/7is3cBAgQIEMgqMP1gYKn8eUtWlL3n/Yq44D/E2KoJ+GSc65V7L8L1CBAgQCCdwNb586kQkD9HboPpZwLeH+ObMU5tBKb/a/nbMV4cw40AAQIECCwReEEc9Fsx1ubPB+Ic8meJ+BXHTN3Y9FOTT8RY2gh8LY794xg/HsONAAECBAicIvBj8aApf6afH1uaP1+PY1Pkz3NiolluL4qJvuuZcV/cTy+pfH+M6TcJTuD/EePTMf42xkdj/E8MNwIECBAgsFZgyp93x3hnjOl3B0w/sP7SGFP+TD9f9kiMz8X4eIyPxJA/geBGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAn0I/D/rORE18R9ldgAAAABJRU5ErkJggg==";
2590
+
2591
+ var img$b = "data:image/png;base64,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";
2592
+
2593
+ var img$a = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAAL+LWFAABAAElEQVR4AeydB9wdRdX/z94ngZAQQLpYSCwgRQRUpBNAUbFRrcBfRUCaCiRUS95XqQlFsCJYEFQI8IKIBQsIAqJgAUGakKhYwCAkJKQ9d//fs89N8vTbdvfM7p7N5+a5d3dmzjm/mZ1z5szMmUj8cgQcgeARiKfLeJkn60gPn4hPvfFXZJ1643cUyZoSy6o8XwWBln9W7fdd7w3+rbIv6fdZ3O+73l/5OyZdJIvjWJ6VmsytxTKX53OhOVd/J397+buGzI2my0Ke+eUIOAIBIxAFzJuz5giUHoH4cBmLwnwxgm6Mcp2EEt24zneU+Uu5tx6fdRqfcfwt0rUIZvsMBJGnMBr+WhOZg4xzkHE2z+Zg0Pw9uliWFkko59URKBMCbgCUqTZdluAQiAWVdzLKvVc2SZS7KnlV8Cj6ROGLbMRvdGMlL2wd+YcaBLEaBhgFeBVmJ0ZCjzwsZ8kcOigg9MsRcASyQMANgCxQ9TIriUA8TTZEXW2J8FvWa7IlSn5Lfm+BQlu9koB0K3Qsz4Hd/RgHf6rV5U8U9yd+/ymaIf/qtmjP7wg4Ajo68csRcATaQiA+ibn2umxFpi3rKHnc9Vvodz7qrvcrewR0auFPTCvcX8Mg0O/4UO6NzmZtgl+OgCPQMgJuALQMlSesIgKJC/9E3PciO6Lsd+SF2ZHvm/HxdyesBqFTBX/mvzswCu7g+x1yjjxMJfkUQlj15NwEhIB3YgFVhrNij0A8VSbAxetR7zviet4R9bEDv9e258w56ACBp6nHO5mKuYN6VKPgt9FMWdBBOZ7FESglAm4AlLJaXahWEYhPYaX9UtmT1Wg74crX0b269se0mt/TFQqBZXB7L1MHd7Dq8nb2X/w8OlOeKpQEzqwjkCICbgCkCKYXFT4CjW13O6Hw90LhvxmOt+Hj70H4VZcFhzo98HsMgp9gENzEtsTbfVtiFjB7maEi4B1fqDXjfKWGQHw8c/hjZC86+jfjCp6CuvdV+amhW6KC+nYd3IJh+BNZJjdF57EV0S9HoMQIuAFQ4sqtqmjxJ2Qt4uDtwaK9N9PA9wKHSVXFwuXuCoHZuAhuYlHhT4iB+IvoAnmmq9I8syMQGAJuAARWIc5OZwjEJ8i6bAXbh1H+AYzw96QUn8fvDErPNTwCy/Ae/RzvwNVsAb0uOlf+M3wyv+sIFAcBNwCKU1fO6SAEGgv49mO1/gE8msLHlf4gjPxnJgjoYsJb2F1wNQsJr/WFhJlg7IXmgIAbADmA7CTSQyA+VTZg1f5+uGYPpNRd+fSkV7qX5Ai0jUAvOW6lI52VGANnyL/bLsEzOAJGCLgBYAS8k20dAeb0X8ic/v6Je19kF3KyaNsvRyA4BPRsg9uSaYIlcg1rBv4ZHIfOkCPQDwE3APqB4V/DQaCxXe/tcU0OZe71LXDmI/1wqsc5aY5AL2tRfhzV5VK2F/7Atxc2B8xT5I+AGwD5Y+4UR0GAxXyb13vkUOZXDyaZHofrlyNQdASeYp3Kt2u9cimLBx8oujDOf3kQcAOgPHVZWEniY2UNWVXeQyd5KEK8obCCOOOOQHME7sK4vVQWy5XRRfgG/HIEDBFwA8AQ/KqTZrS/K8fmHkoj1FX846uOh8tfKQQWspD1ao45Vq/ArZWS3IUNBgE3AIKpimow0hjtf4TO70jmSF9RDaldSkdgFARieZSO+Mt4BS5xr8AoOPmj1BFwAyB1SL3A4RCIT5ZJ9V75GA3uIzyfOFwav+cIVByB+RjGl9R65MLoLJldcSxc/BwQcAMgB5CrTCI+UbZn+97xYLAfH1/JX+XG4LK3ioDGFriW7YTnRefIr1vN5OkcgXYRcAOgXcQ8fVME4gNR9JOSYD3HkXiHphk8gSPgCIyEwJ100ufjD7g2miVqGPjlCKSGgBsAqUHpBTHan8iefZ3f/xhoTHJEHAFHIDUEZtNZX8i6mUvwCsxPrVQvqNIIuAFQ6epPR/h4qqxPCLSpuCyPoMQ10inVS3EEHIFhEJjHlNpXCYU5M5opTw7z3G85Ai0j4AZAy1B5wsEI6GE89aUyDcV/NM98G99ggPy3I5AdAgsxBL5YGysz/DCi7EAue8luAJS9hjOQT4/eZf/+NBqPKv4JGZDwIh0BR6A1BBYw5fZF4gnM8COKWwPMU61EwA2AlVj4tyYIMOJfp74MV38sxzAXuXqT5P7YEXAE8kIglueIpPmF2himBs6UuXmRdTrFRsANgGLXXy7cx8fJ2sTnn0pjOdYVfy6QOxFHoDME1BAQuYhzB2ZG58vTnRXiuaqCgBsAVanpDuRMFP9YOZ4Rv67q9+A9HWDoWRwBIwTm4xG4sLaUWAJuCBhVQfhk3QAIv45y5zCeLqvIQjmWRUafgviauTPgBEdCYCEP5uKF+Q/bLefSwf9H6nxqMpdV4ck9nv+X54uTTyxLeL6EtEtkLJ/F/BvXuLeEv3/no9eLqW/9V+OziM+q/FvK36hxT//G3NOPyAu4vw67Ptal7HXIsy4G4rp6j+fr8nwdPr4gFBACuZ5lke5nqZGLoumN+g6EMWfDHgE3AOzrICgO2Mu/T8yCIjp0j9Ofb80sgtwclOhsFPvjtYjQL3V5HAU7m/v/QCHPZST3fL4sdUYNz9FqGBxqCGyEDJOQYXI9lkkYCpNpV5O4vzGfcXz8ygsBPW9AF+6eI9flRdLphI+AGwDh11EuHMbTZGvmDs+D2O65EKwmEVXg9+NZuY8R+18S5Y6yZ1z+uFwg/+JlpArKfyFkJJ+QDfEnTEbiyWok4FF4eRTJq5F+Cz6rlR8FMwlvpp0dH82QP5hx4ISDQcANgGCqwoYRFP+G9Ug+x+jsQ3CAXvIrJQRmU869KLt7AfVeVN69qPlHPZzr6OgmYaQn432KZSuMgq3ooLYih34mjZ7Tn7aBQB0v0zdqsXwSQ+BfbeTzpCVDwA2AklVoq+Iwzz+Oef7jGI2eQh5f4NcqcEPT6aj9fv67A0Wvo6p7mUe/z491HQpUN3eSY6THJR4CNQy2puPakfLUW+B9WOfAzsfrcibrA85nfYBOQflVMQT85alYhau4jPrfg8I6m68bV1D8bkV+HpXzWwynX6Hwb2du/o7oAnmm20I9f/sIxJ+QtVhrsCMGwU4osp3xGryeUnz6oH0o56AITsIbcGX7WT1HkRFwA6DItdcm70Twe1XcI1+lo9y1zaxVTq7x1m9HwdzOXPWvZJ78LroYte9XcAjEh2MOrCHbMpG1MwbaTjCon/WDYzRUhiK5NeqVI4go+GCoLDpf6SLgBkC6eAZZGu7+VeQ5OYl5v9NgULdy+TUyAuoKvZU1ET9CkfyIVdMPjZzUn4SOALtaNsVweytt/63wqoav7z4YvdIW0/ZPJ87n2b5tcHSgyvDUDYAy1OIoMsQnyY5s6/saSTYfJVnVHz3GlMiPWBT1Izq+m+n4dL+9XyVDAEN4PIbw7ix6fSsdnxoELyuZiGmK8wDbBg+LzpY70izUywoLATcAwqqP1LjRRVP1VeVMXNdHUqjX80BkV47y6/LD6Dx5eOBj/1UFBOLjZRPpwTsgsjfyundgaKXHTKV8ubZYTvFFrUPBKcMdVwxlqMVBMsRT5V24PL/I7RcNelTlnwvA5AYW7l3JOPAmH+VXuSkMlT3xDiyUvVhQ+B5c4O8ghZ9yuRKmJ8Dk6GimXL/yln8rAwJuAJShFhsysCr6hfFYuYif+5dIrG5E0cA7P6SRX0l3fqMr/W6grE7exBhYIG9j9PtufGdvQ/LVqiP9qJJeEy2VY9n18s9RU/nDwiDgBkBhqmpkRnFhRjJVDmeEezapqh67fzEY/Lih9G9A6T83MnL+xBEYHQGMgdVlgbyDd+w9pHwLn6ovon0Wb8BJMlMu5h0DFr+KjIAbAEWuPXhnlfNGjFS+wde9Ci5KN+z3YgLdRMf0PcKZXOfzld1A6XlHQqARjGgfDO33ovr0fesZKW0F7t/E+qIPsUvmHxWQtbQiugFQ4KoloM/+mOBfRQQ9eKWK12wa8KWyTL7BQTlPVBEAl9kGAQ48epGMkQ/x/h0KB5NsuDCnOpf37wgCCF1jzokz0BECbgB0BJttJkb9Ezld7UIq74O2nJhQ1yNsr0f2Sziz8Kf8dTekSTU4UUWAxhfJNHkTfz/Cz3fxWUXvV+lC9m9yeuXH8AbMr5LcZZDVDYCC1SKj/p144b4N25MLxnq37D6UKP0x8q3oTHmq28I8vyOQNgLxKbIe3qj/1zAGNk27/MDLe5z382C8AbcHzqez1w8BNwD6gRHyVw1zWl9LPsM898nwWZW5x8Wsb7iK0cXX6FhuC7l+nDdHoD8CGOq74KU7jHnyd3O/KgsHe1kfcVbtGfkfD5fdvzWE+90NgHDrZgVnGs4URXg5N1634ma5vzzNKOpLtbHyhegM+Xe5RXXpyoxAfKpsUF8qx9DRHoWca5dZ1n6y3Y3hc5CH0e6HSKBf3QAItGKWs8VI4kiU4Ux+j19+r8R//0KDPJ89+9/wPfslruUKitaILaCLBo9D/JdXAIKFvMtT8dx9uQKyFlZENwACrTrdchSPk2/C3r6BspgmW3cyYpiJiXMdip9gbH45AuVEAEOgxkkT++DRm4qEO5RTygFS/V+0SD7oW3MHYBLMDzcAgqmKlYxwbO/mcU2u5U6ZFxLVWUJ9HQ1wJiFG71wpvX9zBKqBACG7d8AjMJV9BPsgMVGqS3s9FNVlP44ZfqC0EhZUMDcAAqs4OoV30ylcSqewemCspcVOL6Ofy1jYdzruwb+kVaiX4wgUFQGm+V7OgsHT8IIdggzlXOAby3Mom0Mx9q8qaj2VkW83AAKpVVyDY+oLOYM7luMDYSltNujj5HsMc6aj+B9Ju3AvzxEoOgIYAq9k/ms6nfJ7kaWUHgF2CZxXGy8nMdW3rOj1VQb+3QAIoBZ1pXC8DMs4To4kDYCjVFmIkev/oh75NGeL359qyV6YI1BCBOKTZIu4V/4XL6Cu/ylfHx3JrdEYebfv8LFvvOVrXPaYtsUBL/uOcV1mkWmjtjIWIXHECXzL5FPRefL7IrDrPDoCISEQHy/bxGPksxjQeiJh2a5/RDU5kEHBHWUTrEjyuAFgWFvs7z+G+fDzYGGsIRtZkP4Z85mfYh/wr7Mo3Mt0BKqEAP3E9vQTn0XmN5ZM7qUooOOYEvxiyeQqjDhuABhUFQeJrFYfkxyneZAB+exIRvJ7Vvsez0KfW7Ij4iU7AtVEgAXCU9gddB4egW3KhABrgy6vLZPDOdDr+TLJVQRZ3ADIuZaS+f6lcgNkX58z6SzJ/ZvFi6exb0ED+Pg+/iyR9rIrjUASR+A5TiFkFw1AbFAiMH4bjZV3+LqAfGvUDYAc8U4W99TlRkhunCPZLEktwXq/gC19n8Pd7yeBZYm0l+0I9ENAA4XVx7F1UOQT3C7LCYRzWBfwNl8s3K+iM/7qBkDGAC8vHvfdG7Har+b3msvvFfyvBvHRUJ++l7/gFensFxcBjSGAEa6hwjWYUBmuZ/EmHsA04s/KIEzoMrgBkEMNofwPRfl/BVJjciCXNYn7eEE/wQv6i6wJefmOgCPQGgL0MXvQx1xA6le3liPoVMvoYz5KH3Np0FyWgDk3ADKsRCzzqD6ViHeRnJIhmbyKnoscn5THOZp3lvTmRdTpOAKOQGsIxAcSRXCyHMaOgc+RY53WcoWbCjnOrM1MpjnoSv3KAgE3ALJAlTJZrDOOyH7fwpLV88ALfTGy+F6tLh/HIn+y0II4845ABRDAG7B+vSafp+/RiIKFvuh7riJy4P9jcfGiQgsSKPNuAGRQMfEpsh6R/a6n6KKf9vU3GshRzPP/IAOYvEhHwBHIEAHWB7ydofOXIPGSDMnkUfSdRA58V3SmPJUHsSrRKGW8acsKJGjHpih/DYBTZOUf4377Ei7/LVz5W7Ymp+0IdI6Avrv6Duu7TClFdqPvoH2q9q2do+E5h0PAPQDDodLhPRrodrxsPyL72h0WEUK2B2kUH6HzuD0EZpwHR8AR6B4BvAE7YQFcQkmv6r40sxKexqB5K1uOf2PGQckIuwcgpQqNT5BdUf66daWoyn8p822fjRbJ1q78U2oUXowjEAgC+k7ru63vOCwtDYStdtlYW/tY7Wvbzejph0fAPQDD49LWXQL8vJkDff6PTKu1lTGcxHcTgOPDBOC4LxyWnBNHwBHIAgH6q1fTX32dsl+XRfk5lPk8/dW+9Fc/yYFWqUm4B6DL6mXF7b68TN+nmCIq/zoW9ZnRs7KjK/8uG4JndwQKgoC+6/rO67sPy0UM3b2a9rna9xYE8mDZdA9AF1XDnP8HeIm+SRFFDPCjK/wPxjX4yy4g8KyOgCNQYARYG7AbawO+jQhF3CmwjDUBH2RNwBUFrgJT1t0D0CH8KP/DUf6Xkb2Iyn9W1COvceXfYeV7NkegJAhoH6B9AeLMKqBIY7QP1r64gLwHwbJ7ADqoBqzm47Caz+sgq22WWJ5j7uxjWMzfsGXEqTsCjkBoCKBIP4Rr/UKJONezYBeK7HiMmfMLxrY5u24AtFkFzDt9ipW0/9tmthCS/xZL//3RWfJoCMw4D46AIxAeAvHJ8oq4V74DZ4U7rpzIh58mWqnucvCrRQR8CqBFoDRZ7zQ5u4DKv4634oxoAgv9XPm3Udue1BGoHgLaR2hfoX0G0hdqgaD2zdpHV6/WOpfYPQAtYqcNC7BObDF5KMn0AJ/34fL/aSgMOR+OgCNQDASYEngTc+zfhdtCHSyE8XJOzww5qRgo23LpHoAW8Fe3fwGVv+7t39aVfwsV7EkcAUdgCALad2gfwoO7hzwM+Ib21dpnB8xiMKy5AdCkKpIFfwWb88cV9jWifu3Mft+/NhHPHzsCjoAjMCIC2odoX6J9yoiJAnyg0wHadwfIWlAs+RTAKNXR2Or31VGShPZoERV6NKthNcqXX46AI+AIpIYACvXDuNe/SIHjUis044KYAj0CT8bFGZMpbPFuAIxQdSh/DfJzGY+L4iWZTWXuj/L/3Qgi+W1HwBFwBLpCACNgW4yAayhkUlcF5Ze5jhFwCEaABwsaBnM3AIYBRUNM4kK6ikfFCPITy0+iXrb4nS9PDyOO33IEHAFHIDUE4uNk7biHrYKRvDm1QrMtaBlbBN/NFkE9r8WvfggUZXTbj+VsvyYH+0TyPagUQvljjX8uWl32duWfbbvw0h0BR6APAe1rtM/RvqcgmIxhQPc97dsLwm9ubLoHoB/UyZG+Nfkxt4pwsM9SXFuH4trSON5+OQKOgCOQOwJMlR7MVOmlEB6bO/H2CT4f1eUt0blya/tZy5nDDYBGvdKQt6Mh/4yfEwtQ1c+g/PdD+d9cAF6dRUfAESgxAvSdu9N3XouIaxVAzPn0nW+k7/xNAXjNnEU3AICYBrwpDfgOvq6dOeLdE5iDFbs3VuwD3RflJZQFgfhYWUNWkU2Zl9XPRoRwU0M2+fCS932PSROtvN94rhDMX/GJG98jmYeLd8V95grnSyz/4POQLJGHootknmb0yxFQBPCebh7X5Id83bgAiDyNEbAjRsBDBeA1UxYrbwDEp8h68TL5NSi/LFOk0yg8kntYzPJ2Vvr/K43ivIxiIRBPZ13KApkM15uiiDepo+x5gTdNfotsmLM02gYfwkh4qKZGQSQP62+ZII9H02VZzrw4uQAQYIfAhsy1/4C2+doA2GnGwmPRGNk+OlOeapawzM8rbQDQoY6LF8gvqOAdClDJP0D5v5eVrAsKwKuzmAIC8amyAaPt3es12YO634kiX8kn9LnWpfD4CIrg9lqdd2sVuTk6Q/6dAhxeRAEQYAfVBF1wB6tvLwC7d3LuwR4YrIsKwGsmLFbWAGDkEtVPlO/p9pBMkE2xUKYnvlSbwzG+s6Q3xWK9qMAQ4CS2F3D8ym6c3rQHL+YesLdFYCx2ys79vG+/qEUYBDXOnz9L/ttpQZ4vfATiA6WnvrFciJv9qNC5xVi5qnYOAytmMULnNQv+KmsA9E7lhLxITskC1BTLpH3Kibj8Z6ZYphcVCALqgcKfMyVR+Izy6YK2gTWm20t91Zku+D3nzvcZBBPkliqPwMpc00wJTEWrnoOMQesZBlhn9syUU8tcFyPJFnTFjMR0t/dxUx2KZr2k23Iyzs8UrxzmYX0zRjnn4tXzJNNkZxbpHUL9Hgj5NXNmITRyz4LJLKyey2SG/ApMKjkSC61S0uKnET74a5QXtGGLJ/gjTK/qdsZKXZUzAFD+b0T5/4haDjnQj0auOpgGqXNpfpUAATrCV2LRHUy9HoQ4k0sgUhYiPM67eTmLCr+N4ftIFgS8zPwRoM99L/Wq8UpC73PfSp+rW8Erc1XKACAS1Ba4Hm+ndkMedS1GSbyHhnh9ZVphSQXVkKl0ee9hSHsIIm5fUjGzEuvXdE6XsZ/gSo9ymRXE+ZWLEfAujIArobhqflTbpvQsxx/vxAmI97eds6AZKmMA6IrqeKncRT1tHHBdLaRC9mX0c1PAPDprTRBIIkpG8nGc/boSepUmyf3x6AgsYVJAd8B83iO4jQ5U6E/xgu2FMazx+McHzOucaKy8oSo7VyphADASWy0eI7+k0b0+4IY3nwA/b/dOLuAaasIaAaXexIKiT5FslyZJ/XFnCNzGwt3PEsDlp51l91zWCDTCrf8APkKOuPrbaJnshufpeWu8sqYf9MKMtISvj0nOgw5Z+f+Xju2NrvzTqvF8y8G9+Y76NLkL5a+eG1f+2cG/i2KcYA3m2ZHxkrNCQPs47esoP+StoK9v6IysYAim3NJ7ABiVHUOncVEwiA9l5EnmnfZi3umPQx/5nVARYAtfjS18+9O2TsPV/5pQ+Sw1X7H8EWVyOtEHr2ErIRsr/CoKAqzHeg3rsdRgXj9UnlGOxzAd+8VQ+UuDr1IbADSyHWlktwDU2DTAyqCMJ+nApuDS/HMGZXuRGSCgQU5YRfI+FjTpvuHNMiDhRbaPwJ9ZI3CGzJHverCs9sGzysHgbDMM6FugH6oRsJTB2RQGZ3pOTCmv0hoAjUV/v6PWNgq05v5L49rdR/6B1s4wbOHqn4Li1xHB5sM89lv2CDyAIXA0O2husWfFOWgFgYYn4GbSvqCV9AZp/sGiwG3LuiiwlAYA7tkx8UL5OauHdzVoMK2Q9CMpW0EpkDSsXt4Q//JMXpYPBMKSszEKAqw0v4LFTVNx3/qhWaPgFMojPAFhH8UesW5hvOzJNFPpDrkq5SLA+kI5O2DlvzBZ7e/nUYfS/4zIh7r7Uf7HolAedOU/IkzBPdC60jpL6k6nbPwKGgGmQH+jfSJMLgySUQaSiU4JkrnumCqdBwA37bsbASe6Qyab3IsB/J2+zz8bcNMslVHJ9iiRL2FIanx+v4qKAOcO8M4dhZL5dVFFqArfjTgB30feIIMFNQK0XVWm+iiVAcAe081R/nexKnv1ACtJw/se4BH+AqyZfizFp8g69WVyFi/Godwu1fvRT8yqfWWtmVxaGyMnc/773KoJXyR5GxEDr4bn8MIGx/Icffgb2Mr4QJEwHY3X0nRw8bGyRjxOfoOwm44msNGzOg3nAyh/j+1vVAGtkGUE8j4UhW4ZXaeV9J6mcAjMpcM7Fg/cdwvHeYUYxgjQswOuQOQQp6gfihbJdtFFMq8MVRIiwB3hivL/JhlDVP60ZU71c+XfUb3mkUkjRfaeKBej/L8DPVf+eYBuQ2MdreOkrqlzGxacajMEtK/UPpN0VFdw16YNXRMcY50wVAoDgJHbkQi/bycAZJ2HhnwiI46vZ03Hy+8MAaaNXkWY6Lvw0GiH41cFENC61jrXuq+AuIUUUftM7TsDZX7fhs4JlL3W2QLjYl8s1tqUCT7d7x/cARPw9aWemXJ0sREuL/e0nYOpoy8j4YTySumSjYLAAgJxHckCQT2q1q8AEeidKl+kjo4KkLWF8LUtbeehAHlrmaVCGwDx4TI2XjOJ0vS6liXOL+EPotmyj0cmyw/wVikRJ2J8fYFcROP/cKt5PF15EcDP/PXaBNYGTA90G1p5oW8qWbIVd5JcR0LdJhjadXf0rOwYXSxLQ2OsVX4KPQVQX0s+g6DhKf9I7sHN+F5X/q02w/zSJTtFFrDv2JV/fqAHTknbQkyb0LYROKuVY0/7UO1L2Y9zT4DCv66hgwJkrTWWCusBYA5mJyz3XyJmaIE+5gDq9sxheRSy1tpgbqlw+X8Al//FEAxuuig3EJzQaAioW/dw3LpXjJbIn+WPAP39hvT3Gsth4/ypj0qxl/5+N/r720dNFejDQnoA6Mgn0hh03i405f8MEa32duUfXmunAzkR5X85nLnyD696QuFovLYRbSuhMOR89CGgfar2rfx6JjBMelQXqU4KjK+W2CmkAVCP5UKkm9yShPklWsroYb8yBYnID7rsKPFyRmz7Ope/Z2dHxUsuEwLaVhpthsGdX6EgoH2r9rHwE9qc++SGTgoFqpb5KFwDxzrfnxdUI0UFddEwD/HVxEFViegi0fqayXaig8LizLkpAgL0M5fXnpUPF3mRVxFwbpfHxu6dy9rNl3V6lOkBeCquyZpOmuUXygCg4jfCRXcvAAQVrIWO4nM9M+RTaVaMl9UdArrSnxMhryaUyFu7K8lzVxqBSH7ESXAH+A6BsFpB7zT5LMrrk2FxJXMZCG7FQPAfgfE1IjuFmQJAyUYo/28gSVDKHwXzE7YQfWZEhP1B7ghoPH9Wdetx0K78c0e/ZARpQ9qWtE2VTLJCi5P0ufS9gQmxjuoo1VWB8TUiO4VhlPjQRxBT9ysjSmLzYHa0TF4bnS9P25B3qoMRiI+Xl8Q9Scew2eBnlfjNgSVEUH+IjughrHsNUvJ3PvOTTy2JXz6f7qnvs2pyX2QxC5jixkf4W5c1SK+LmvTz4johthnZbMr9Tckb4kFbsJn59eeoV94cnSd/y5ySE2gJAUJ4r01Ex3tIPKmlDDklYtviRwln/NWcyHVFphAGQPwJeWE8Vv6MpGt2JW26mRcB3k7M+WgUQr8CQADlvwnK/+ew8uIA2MmaBQYa8kcU/a9qteTdeIilUQ9ijD6RJWE63RfJ2CSE7qb1umyGYbAz9F7DpxB9SZfY/B0jYE+MgIe7LMezp4QAa8K25UXQLXjjUioyjWKejZbyblwg/0yjsCzLKMRLW5+WLPrbP0sg2i0b4A5F+XuM/3aByyh9Y33IHRS/cUYkQij2ATq7m2uR/AJlf0sonicdiWEUTGEl9B68F7sDVJkD6szB6NmxSPO8ITTcLHnACPgw78WlWdLooOxrajPkgA7y5ZoleAOgcT60hoIM5mIq4ms958jhwTBUcUbwEK2Fh+g2YNiyZFA8T8d2Ha78G5DrZt0LXQT56JA3hM/dmTp4Bx3MPnxfrQh8t8Hjnxjh7cIIL7Q96W2IUK6kesKjHvIUklTwsw9TAdeHxNNgXoI2AOJjZQ2OXnwApl80mHHD33dzHvTOnAe92JAHJ91AQI/yxe1/Ew5odUWX4ULnyy8ZZeo2p6sZaer8fWGvRoCUA5iqOAQhduMTdJ/TMtBMvTAdsBdemOdbzuMJM0MAXbEquuJXEAgpNPwT6IrN0RXzMhO8y4KDfhkDPAlqblTjBKiz5a9d4u7ZU0CgcVDI/1HUO1IozraISB4m0tllLMa7nIAnc2yZyYY6sfY3Rv0fFNcwBmLZJBsquZZ6QzRb9vUzP3LFfERi8Uny0rierMlaZ8REOT/A8A36RNhgDQAqc0cqUy26UHisMyp7CyOyn+bchpzcCAhgIH6dOvnQCI+LcvunNPDTce//sigMp8En0wS74eo4jbLelEZ5VmXQwX+DI78/bEXf6Q5EAI/Tm6iTH3OXmbMgrphB484MGnV9UnBXKMp1ADAEcVmFvbe/52Ywi4norM4g2I92WH4FgADK/yyU/0kBsNIpCzfA/+cwKH/TaQFlyEeHvR0dtgZ0KawXB/7Pxgg4uQz1UQYZCBJ0Oort1IBkeSCaINtE02VJQDwlrIRiJQ3E5bmkYw9G+cPcbz3Yz8AqsvzF6PG4gip/1sXJLEYEW7NC+J1VV/7ahhSDBAswUWz4KEaFurQtapssFNMlZrbRV/82IBE3JzpHkIOV4DwAzBO+ijnCP1B5qwZRgQRWicZgvZ0ljwbBT8WZaOwK0Xn/4Npuk6r5PnP8JzG//2CTdJV+3Hj/zwaEdxYMiJhV3/uGvuq7YJh2zG58srwiXoYXOZzAVYt5/7cO7f0PzgPAim6NoBSG8ocRRmsfc+Xf8XuYakZdRMYWzG9otaRacLaFzUYxvJNR7rtCe/mzFbuz0hWjBCswo4TZnZVikivStpksdDQh70T7I6B9tvbd/e8Zf1+1oduM2RhIPigDADfae1gdvOtAFk1/zcJFqQrHL2ME9GQ/PEPfg40XGLPSKvklum6EUNGbMyrUffx+tYGAYqbYKYZkC27udARRXqBtVNvqCM/9do4INPpunVYK40K3JTouDG4SLoIxAFj4N46XXV1/oVx/i3rkiFCYqTofHOurimD7guDwC+aFt9JFo75PvPMaU+wSDMGSUn7ReUm55ty+0VZzJerEhkeg0YcHc36D6jjVdcNzm//dYAwAWZgsotk4fwiGpVjHx3wwbqT/DvvUb+aKAPP+b6M+TsiVaCfEdL1IJB/Ehb0now89iMevFBBQLBNMwRYP4XMpFJlpEdpWtc1mSsQLbwkB7cO1LydxKItLN27oupb4zzoR2NhfuEU2xDLSAzb09DHzi209Z7KtJ6RtJOaYWDHANrEXUx+6KDSY4B7DYhHLH1nk824/KGZYdFK7mRz4VJOrWAXymtQKzaYgPRt+a4wXPY3RL2ME2DZ8BvVxijEby8nPR/FuEkJo7yA8AAy3PwcyQSh/+Li7Nk8+s7ym/K8dAkmkv7p8Fw6CVv4Yr1+JVpftXfln31YUY8VaMc+eWlcU1iGQ2Xe1DXdVimdOBYFGn353KoV1X8jEhs7rvqQuSzD3ADD635qX+R7kCMEYWcrK0dcStem+LnH17CkgEGBAj8FSzdMDSFiwdtXgB/47ewRws79bD+aC0hrZU+uMAn2bBxDrDLrUcxFd9tUYZaprQlikqdPMr8ULoN5Ns8tc6fKCnIf05nxoDdCZnOXK36wtDiBM565Hy4bishvAW/Ijkt/D37au/IdCk9cdxV7rgOkAjRoa5KVtWNtykMxVjCnt27WPD0TsWkP3mbJjqniZ390H6Xc3RWAl8Qdrz8vpK3/6NysEkpO9osTFS/8Z5HVTNF52xXr/S5DcVYgprQOtC0S+KVCxNT7AV7RNB8pfpdhq9PGhBOPavaEDzerAzABgK8QquGNmmEk+kDDvqHzEj/gdCIrZr3FJ2MxXmtEfhTBW+3ejZ+Xt0fTwV6OPIkapHmldaJ1o3QQq2CvZ+BVkKNhA8cqMLe3jta+HAM3F/lIdqLrQihMzA4CtEMfiunuFleD96bLK/MuMJG7vf8+/2yBACM+X8WYG6frHSryQ7WgfiC6WpTboONWRENA60brROhopjeV9bdPati15cNp9CGhfr31+EHioDlRdaHSZGADxcbI2FfApI5kHk/1breYneQ0Gxep33CsXQTuYQBnLcWAL0ak958jHGT0EMXJYzpf/XYmA1k1SR9TVyrvBfBvXaNvBMFRlRhp9fhABglQXqk60qA8TA6A+Vo5H2DUtBB5Mk07jKPbqzh9833/njwCLpfaF6t75Ux6VYp2V/h+hjZw5aip/GAwCWldaZzAUSvCX5djs3Wjjy3/7XyMEtM/Xvt+I/GCyazZ04uD7mf8Gg3yvZPQ/RmZD1XzfP+7C7zFieF++CDi14RCgY5xAffyZZy8Z7rnVPUb+R9JZhL7n3AqeoOmywOqjwbh6VyL1N4yTzdjBsGDlLf9mhUDviazpieW9VvT70Z3P2ReTCH/9dL97mX/N3QNQ75GpSGWu/OFhbq0uH88cYSfQEgJsiv00CcNS/rFMd+XfUvUFmUjrjs59emDMvaTR1gNjq5rsNHTA3ACkn9jQjbmykqsHID5F1omXMvoP4IxmH9nl2s5GJcYRqptzipoGxBg7asIcHzLR/2UOognFRZij5OUjRUCpL9HRHRmQZEsbZ8M/EBBPlWUlGE+RniUyFi/AmZKbQZKrB6C+jNF/AMqfln6fPJ5EEKtsow9JcJS/rtwORvmzzO/q2gQ5JiSMnJfOEUjqkjrtvITUc+rR1kHuVkhd0iIU2KcL7KO/ohsTHZkjZrl5ABjlrcsc7+MhGAC4BfdkDu4XOeLspEZAgFDQOzHa/tUIjy1u/yJaJHt7TAgL6LOjmQSXGic/hMIe2VFpr2Q63519+3F7mGWVWqM1op9+nlX5LZerXoBYJkfnyn9aztNFwtw8APWaTAtB+YPVda78u2gxKWcNaDuoSvYgyn9fV/4pV3IAxSUBYKhbreMA2ElYCKzthwKLCR8NnXCdCfH+RNULoLoypysXA4C5//Wwdo/OSabRyCyBD12E6FcACDD39jqMwjcHwIqy8DwHQb0bRTEvEH6cjZQR0LrVOta6Trnozoqj7SfvQGe5PVfKCDR0w5KUi227ONWVqjPbzthBhlwMgPrSxKKZ0AF/qWbB1XyBxg5PtVAvrGMEGAF9suPMKWfkpfuYHwSVMqgBFqd1rHUdCmshvQOhYGLFh+oG1RFW9PvRndDQmf1uZfOVdyHbi7mV9ZO5f5Hx2VJqWvq/ce9u4iO8pjjlkqBxNOcfIZZ5G2wmEC/95az4P7hZOn9eHgTYGfBtGt5BAUgU45V4jRufAdQELOCRmYhR9ghfNzDmaGGyFmCmPJklH5l7AAjFpS53a+UvgHmaK/8sm1J7Zdfrcho5zJU/PDzIKvGQtoi1B6Sn7giBRp2HsB4garwLHcnhmdJFIIkQiK5It9SOShvf0J0dZW41U6YdcMOa+jvMrNEqQ5mk07Pbx8vrODUMTP2yRoB2sSlWtu6BztwAbSKrzvu/wUdfTVAq6eOGF+ouxFvNWMQ6cUk2R/k8ZMyHkweBeLrU4oVyN9uBtzEGZB7t4sVqlGTFR7YdcF88blvlD3IE3TjelX9WTaj9cutxclhLtm2vBbZ4uU505d8CUCVNkqwHoA0EIF6t8U4EwIqzoLpCdUYASKyBEaJnWmR2ZdYJxwdKD3OrISy2+RlbPG7JDEEvuC0EWBMyGbfT+9vKlE3i3zEx9aVsivZSC4NAXxv4nTW/+k7ou2HNh9PvQ6ChM35mjYfqUNWlWfGRmQEgk2Q/mJ6UFeOtlsso71OtpvV02SNAHHS1aMdkT2lUCjFrQo5yr9CoGFXiYTLaoy0gLH2t6TWm8W6YMuHEVyIQiO6Y1NClKxlL8VtmBgBv03Ep8tlZUZHcyPzJrzvL7LnSRoA2wTtlv/KaXSmXYOHr3K9fjoBoW9A2YQ2Fvhv6jljz4fT7EEh0BzrEGo8sdWkmBgCLvLYHtB2MgYs5XtFH/8aVMID8VNmN3y8dcC//H3NrPXJK/mSdYsgINNpEboewjIDFS9kzpe+IX4Eg0NAh6GDTa4eGTk2diWwMgDiABRSx/F90nvw+dcS8wI4RYAvGIR1nTikjw6uT8zxtKyW2vZiMEdA2oW0jYzJNiw/hHWnKZIUSJDoEXWItMrumMlmUmLq7KT5ZJsW98iiAZbZwoYXKqLO9aytW+d7fQlpPkgMC8XGyWjxG/g2piTmQG4nEb4j2tT2N3tqiH4k/v2+IAI0i4nAqnTLczpCN+Yw6N4jODyRcsSEQoZBmu+gWcV3uhZ9MBswtytkb9cgrorNkdovpW0qWukD13mTlv6Xy1979e678W6r//BKNkX0gZqn8BaPw067886vyolHStqFtxJjviSyR1XfFr0AQUF2iOsWYnZ6Gbk2VjVQNAI7cXIOXKNN9iy1I34tQ01tI50lyRIAXyNr9fzcv8k9yFNlJFRCBRhu525L1AN4VS/GDpN3QKb2WzKluVR2bJg+pGgCyaqL8TUd5zJVchptXYzn7FQgCuFU3hJU3WbLDtr8zLOk77eIgEEBbeVPjnSkOaCXnVHWK6hZjMSc2dGxqbKRqAGC5HpkaZ50VVK9FcnpnWT1XZgjESeAfy2mh+2Wm2J/1nRnAXnCqCPS1Fcv1Qz3MY4YQLCtVWIteWEO3sE7T7kpbx6ZmAMQnyK7sYH2FHTRQjuU6PdLRlAcnPgQB9lgfPORmjjd0ROdz/zkCXnBSyVoAY4+R9TtT8CrMhP1Et6BjMim81ULRsYmubTV9k3SpGQD1mhzahFbmj3lxZ2ZOxAm0hUD8CXkhGbZuK1OaiWN2pMyRK9Ms0suqAALaZrTt2F1bN94dOw6c8hAEQtAxaeraVAyAxuK/A4agle+NO4nodWe+JJ1aUwRWkT2apskwgb6w0SwxXbyToXhedEYIaJsx7+yN352MoC10sQ0dY6pnaJcHpLUYMBUDgIUJ76FWx1vWLDFmffRvWQEj0OaUM0sD4HlZLN8dgTW/7QiMjkBf23l+9ETZPTV+d7ITrOAlB6Brxjd0btdIpmIAMF9l7f7/C+aH7dxM11VRzgKwVs0MABbMXBddJPPKiaxLlTUC2na0DWVNZ6TyLd+dkXjy+yDQp2tM15qlpXO7NgBYkLA5kLzBsmHwopzvJ7tZ1sDwtBvHm04a/mn2d2ncl2VPxSmUGYFaTb5lKN8kPyLYEP0RSCcnSKJzRnic1+03NHRvV/S6NgDqPeaj/6dlgnyjKxQ8c1YI7JFVwU3LjeSfBM38adN0nsARGA2Bx+Rn7G7652hJMn5m9w5lLFihi+/TOU9bypCG7u3KAIgPl7FssTLd4oWL7ktYZAstK8JpD48A55ubdV4E7bjCF/8NXy9+t3UEtA1pW2o9R7opLd+hdCUpV2mqc1T3WEqluld1cDc8dGUAEJTw7RBfrxsGusy7uDZWvtBlGZ49IwRYLLN7RkU3LRbX7WVNE3kCR6AFBCzbkuU71AI0lU7S0D2LDUFYr6GDO2ahKwMgNt77j2V+VXRGcsJcxwB4xmwQYH7qVeyj1hgA+V+x/JGY7vflT9gplhGBpC3Rpkxk4x1K3iUT4k50NARU96gOGi1N1s+61cEdGwBJkIpY3pK1gKOVT2jGr4323J8ZItBj6P4X+bGh5E66hAjg7rVrU4bvUgmrMlWRzHUQOribgFEdGwCyiuwPkpbx3R8iNONtqdamF5YaAvW63ZnqtR65OTVBvCBHAAQs25Tlu+SVPzoCDR300OipMn3a09DFHRHp2ADA9WEa+Y+tf5d0JLFnygUB5i43zYXQUCJLifv3q6G3/Y4j0AUCfW1qaRcldJzV8F3qmOcqZbTWRd3o4o4MgPhU2YAK3sWwkpfIGNP9uYaiF4a0jQEQy12E61xQGJSc0UIgkLQp2pYRszbvkpGwhSPbp4uWGPK9S0Mnt81CRwaALJX9oNRZ3rZZHDbD9dGZ8tSwT/ymOQLxKcnOkBdYMMKiGHf/WwBfAZqGbesFjXeqAigXT8SGLrrekPNaQye3zUJHSpwFMQe2TSnFDNYulxRFKWdRdTP3v9Tq8otygupSWSNg2rYM3ylr3ItA31ondaqT2zYAGpboroaVMltmeIQ3Q/ybk+41MwAWcfjPnc0Z9BSOQAcI9LWtRR3k7D6L3TvVPe9VKKFPJ802FHXXTrxEbRsADVeD2ep/LK1L+WDw+BUqAnUxMwD+yAEuloE5Qq0S5ysFBBptyyQegOE7lQJy5S9CdZLqJkNJezqZBmjbAEBKy9X/vbLM4/4bNrKWSFutWmY17IMtMeiJHIEOEbBqY1bvVIcwVTNbn27qtRK+E93clgFARKp1EW6KlYAcynFTdL48YUbfCbeKgMmqZUK2Wu7HbRUbT1dgBAzbmMk7VeCqyp31RDeho3InvJLglIaOXnmnybe2DADW/e9DeWOalJnZYw4/+F5mhXvBqSAQT0/ax8tSKazdQuruAWgXMk/fJgJ2bexljXerTYY9eZ4IGOuoMQ0d3bLIbRkA3QQcaJmjkRMulkVy3ciP/UkQCCyQyfDR1QlVHcsRuwegY+w8Y2sI2LWxsUS30HfLr5AR6NNRZuuQ2tXRLRsAxBteCxf8nobY/5hFOPMM6TvpVhCIk2miVlKmnaZXJsqjaRfq5TkCAxDoa2M287x279YACPzHyAg0dJTduRHo6ERXj8zigCctGwDEG96DnHbuf5ErB3DuP8JEIEINW1yxPM4Z3ZbRuCykdpo5I5C0MdpazmT7yFm9WybCFpcouwEsddWYhq5uCcCWDYB6LG9uqcRsEj0vE+SGbIr2UlNFIOKEaovLFwBaoF5NmnZtzca4rmYtdy51n656vvMCusvZjq5u2QDAqtmrO7a6yB3LjVjez3VRgmfNDwGTTiquy5P5ieiUqoyAWVuzMq6rXNkdyN7QVT/sIGsqWdrR1S0ZAPHxsgmcTUqFuw4KYQ/sVR1k8ywWCNSNpgBqMt9CXKdZQQSs2prVu1XBKu5WZONpgEkNnd1UjJYMAGb+7Ub/wtrXCXJjU0k8QSgImHgAEN4NgFBaQPn5sGprVu9W+Ws0bQn7dJbdqaQt6uyWDAC2FpjN/xPd6AZcKgvTrh8vLxsECFlq0knRkK065WyA9FKDRcCqrVm9W8FWRMCMqc5S3WXFYqs6u6kBEB/Onu5YplgJAoOWKyqtxC4yXRMDAMDcAChyqykW71ZtzerdKlbtBMKtqe5CZye6uwkWTQ0A1nTvxP7/1ZuUk9XjRTLeNLRiVnKVuVyrTsqqUy5zXbpswyNg1das3q3hUfC7oyPQp7tsTo9Una26u8nV1ADA7WQ5/3+ru/+b1GBgj1mwadVJWXXKgdWAs5MDAiZtzfDdygHS8pFo6K5brSRrRXc3NQBodGbz/8RV/pEVeE63YwRsvEV13ybacY15xvYQsGtrNu9We+h46n4IsBvAbjtgC7p7VAMgPkXWQ5Zt+smT79e6HXj5CloqajYur9jo/IFSVZ0L0xICdm3N5t1qCRRPNCwCvaaD2G0aOnxY1vTmqAaALE1i/2PEmFyPRefJwyaUnWjHCMQiz3ScuZuMdlMP3XDteYuIgFFbM3u3ilhHgfDc0GGPGbETNXT4iORHNQCYQ2i6iGDEkrt8QGN393+XGBpl/68JXY+SZgJ7JYnatTWbd6uSlZye0Ja6rJkOH9UAYP5/x/RgaK+kms//twdYKKkjIw+AUfyBUGB3PnJFwGahq927lSu4ZSNmqcua6fARDYB4KvH3RLYyqoxFbGK42Yi2k+0CgVrdDYAu4POsxUDAxAAwfLeKUSuhctmny6zWb2zV0OXDojOiAUDq1/OxOv7Xt/8NW10FuFkTEzclri6TTrkANeIspoyAWVszerdShq9yxRlvB1Qdrrp82GtkA8DQ/e/b/4atq2LcdA9AMerJuewGARtj0+7d6gYrzwsCltsBIT7iVP6IBgBxjEfMlHmN1nwBYOYYZ0WgZjYFsEZWInm5jsAgBGzamt27NUh8/9k2ApH8uO08KWUYTZcPawCwajEi/v8OKdFvt5gno3PkoXYzefpAEIhtpgCwsF8WCALORskRMGtrRu9WyaszF/EaOu3JXIgNJoIuT3T64Pv8HtYAkBNlE56tPUz6PG7dngcRp5ERAj1mHoBNM5LIi3UEBiNg09bs3q3B8vvvzhCw0m1rN3T6EK6HNwDEzv3PtgUrkIaA4zc6QGCRmQGwFqtd1++AY8/iCLSMQKONrdVyhjQT2r1baUpR2bKMdduwU/rDGgD12M4AkLr8qrItpAyCXyDPIgYLpQ2uWF5lQNVJVgkBuzZWl753q0pol0tWQ902kk4f1gBgjmtYayGH2nhe5snvcqDjJDJCgLbDdBO1aHFFYuOatZDVadogYNfG5jXeLRu5nWr3CPTptue7L6j9EkbS6UMMgPgkWZPiN2ufRAo5IvltdDHRi/0qNgKRmCx2qdt1zsWuL+e+ZQTM2pjRO9UyMJ6wKQKJbkPHNU2YTYLNGrp9QOlDDACctxr9D4Mh/yuO3f2fP+oZUIzlvgxKbVokc2w+BdAUJU/QDQJmbczoneoGK887FAFDHRc1dPsApoYaACJbDkiR4w+Y8QWAOeKdFSkCOf0+q7JHLTe2a7uj8uUPy4OAURsze6fKU3NBSGKs44bo9iEGAIsFhiTKCbkY5/8dOdFyMtki8Idsix+x9I3jE2TjEZ/6A0egCwQabcuqfVm9U10g5lmHINCn43SdVO7XcLp9iAGAi2uL3DnrI3h/dIHZFjIjkUtKtmbkAVA4e2SPkqLqYlkjYNm2LN8pa9xLRL+h4+63EGk43T7EAIAxEw8AJpGP/i1aRQY0iXr1D4p9KoOimxZZr8vuTRN5AkegAwQM29ZTjXeqA649S2gIGOq6Ibp9gAEQT5MNAWsdC8BgxF1cFsBnR9NkHQBWrnsAsqvTSpds2LZM3qVKV3aGwhvqunUaOn6FdAMMAHZwD7EQVqTM/su92ZNwCnkhgJVrZdC9KD4+CWWdl6hOpwIINNrUiyxENXyXLMStAk07XTdIxw80AIzc/0mNL7LZOlaF1mYhY81qJ4AKW/NpAIs6LzVNwzZl+i6VulKNhLPVdQMG+QMMgHrNzAMwO7rIKHqcURsoPdnYzAMgtOM9So+vC5grAqZtyvBdyhXkihBr6LrZFuIO1vEDDAD2mg6wDnJk0M4lkqOQlSI1UR5G3oUWMkd12TueLuMtaDvN8iGgbUnblJFkC6XvXTIi72QzQsBE5w3W8SsMAOaZItYAmGwBhLYJGBlVrBcLAtH05EAgm3qNZHVMj329IhyBVBDQtqRtyua6t/Eu2VB3qpkgYKbz0PGJrm9ItcIAkJMJoGLUyGHCRlFkUrVe6HIEaGhmq5cJuXnIcj78ryPQDQKWbcnyHeoGM887OgJmOk91vOr6xrXSAOg1XDkduQGwvELK9JfFS/cYyvPG+ETZyJC+ky4BAo029EYrUYzfISuxy0/XUuf10/UrDYB4pVWQM/rPy+PyaM40nVweCCyTH0KmngepYWho2/7AMPf9liPQDgLahlb2k+3k7D5tHa/sjd0X4yUEh0CfzjM5Gpip/qEeAI65nGQE0v3RLOk1ou1kM0SAsJf/pLGZRXi0dN1mCKsXnSMCpm2IdyeaIf/KUVwnlRMCDZ1nEhK4v67vb9musApywiAhwwtmcnRsnjJWmRbnSl9jKP+WBHDZxpC+ky4wAo22Y7UzSog8eHWB4XPWmyBgqPtW6PoVBgDbA1bcbMJ3qo9h4C+pFuiFhYVAPTEAYium6j1yjBVtp1tsBIzbToxf9NpiI+jcj4aAle7rr+tXGADMNU0ajdnMntVkdmZle8HmCETnyd9g4rdWjOCBONiPCLZCv7h0tc1o2zGU4DeNd8eQBSedKQJWuq+frk8MgPhwGYugNiumI5YA+lVqBIxdmWOZ8zqx1AC7cKkj0Ggz2i+aXBgf7v43QT5Hona6b6OGzm+sbl1DXozYK70BOWIgi90AyBNuE1o103UAOpd6aPwJeaGJ7E60cAhoW9E2Y8p4bPvOmMpeFeJ2uq8mfTp/hdI3mf+nnhfJBb7KteztPTpLHkNGq9MBFd5V66vI1LLj7PKlg0CjrayaTmkdlfK7aKYPjDpCrkiZ+nTfIiOWE53fN+rvNyeQMzNzcHWZLRDLWdZKk2PhialLE/pHMK+7bqUrwYVvioC2EW0rTRNmmADvg+m7kqFoXnQ/BBq6b06/W/l9bej8PgPAaAcAqn92fhI7JVME7F2aEzgJ6zhTDJx48Ag02sgEU0aXufvfFP88iVvpwIbOTwwAQrWZTAHEdosg8qxipwUC0bnyIH9MAl8srwAs7uPik2XS8t/+1xHoj4C2DW0j/e8ZfL+P1f96kqZfFUDASgcu1/mJAYDL6aUWWNci9wBY4G5Fk7key6BAKvZqca9caCW/KEH5QQAAQABJREFU0w0bgUbbWM2SSwwQd/9bVkDOtK104HKd3zcFILJeznL3kav7QhcT3I2I1nrk25DG+DS93hFPk7ebcuDEg0Og0SbeYcxYL9Oi+o74VRUE7HRgovOXGwDrmOBtFQjBRFgnym6AR+ngzKOb4Ym4MD5OTEd63hrCQUDbgrYJa45wB8/y1f/WtZAzfTsdmOh8WwNA5B85w+3kjBFghfVZxiwo+cn1sXJKAHw4CwEg0GgLk61Z4ejfs615cPq5I2ClA/sMgHi6jEfkcbmLrQSXylwTuk7UDAEWA94D8Z+ZMdAgjCFyIou+XmHNh9O3RUDbgLYFWy6gHstPOPnPMlaGOQSVZMBOB45T3V+TeWLj/hdZGJ0vNuchV7KlhSM0HW4II51V47pcGh8oPeEg45zkiYDWvbYBaFoG/UlEZvFfCJ6xPOF3WiDQ0IELTcBA99fo/qwMAB/9m9S6PVHmOX/G4VPqCbC9Ytm1Pln+x5YJp26FQFL3tAEr+v3o/oZ34pZ+v/1rtRCw0YXo/hodsY0BEMl/qlXHLm1/BALxAgh8nMIK8L368+bfy4+A1rnWfQiSwoeP/kOoCCserHQhur/GpiwbAyD2+X+r9hYE3QnEBIjZFWB/sfZKvh2faHQapr38leNA61rrHMGXL4K2xOAhmSnXWTLgtI0RsNKF6H4zDwBbXtwDYNzuLMlH06Ue1WSGJQ/9aK8fx/IdXw/QD5GSfk3m/alrxFs/BBGZ+z+HD/aIX1VFwEwXJh4AMfIA1N0AqGqDXyH38/Itvv9rxW/bL7v5egDbCsiDeqOOd8uDVgs0npAJcnkL6TxJmRGw04Xr1OpWawBqPgVQ5jbdimzRRbKYkJQXtJI2jzSN9QD750HLaeSPAPP++4cy76/S0/bPxxO2JH8knGJQCBjpQtX9ZmsAmHzzKYCgWqERM8/Ll6H8rBH1wWR1PcAVKIpQRoiD+fPfHSKgdap1S/YQ5v1Viv8SgeWrHYrj2UqEgJku1DUAWKFrmmBptfDBRFgnOhICeAHmMQf6uZGeG9xfFUVxfTxVtjKg7SQzQEDrUuuUos33+y8XD0/E/zL6f275b/9bYQSMdKHq/hrLT6xeiv9WuMpd9P4ITGAaIJY/9r9l/H3NuCY/9qODjWshBfJah1qXFGUz0Bleht/JHLlo+Ed+t4II2OhCdL/uAljFBPBIFpvQdaLBIcBIaBlegCNgzPqkwJXYxPJCosT9JD5B1l15078VCQGtO61DjMsXBsR3nZHXEdEs6Q2IJ2fFEgErXYju1/kwNwAsK99pJwgQCe0utuJ9JSg4YtmE0eON7BufGBRfzkxTBLTOtO5Q/ps0TZxjAqYivhidI3fnSNJJhY6AlQGA7rczAGJf/Rp6u8ybv9piIrNF8s+86Tahtx2GyS3xqbJBk3T+OBAEtK60zmBnu0BYWs7GP2qL5JPLf/hfRyBBwE4XJgaAzRqAuhsA3vwHIpAsCIzl4wPvBvFr23ip3M5K8pcHwY0zMSICWkdaVyTYdsRERg9w/X9c27gReScbKgJ2upA1AFZTAHZWT6jNwPkCAY5EnYUX4MYAwXg57ts7UDDBKZYAsTJhSetG6wji4RlqtGlc/1ebAONEw0bAThcaTgGMdQ9A2K3SjruoV46Gus0RmaOLvT4K5ha2lb1x9GT+NG8EtE60bqAbRIjfQfIvJOz1MYPu+U9HoA8BO11oaAAs9l0A3v6HRyA6V+bgLp0+/FPzuxOJ3X0jCuf95pw4AwkCWhdaJ/wIcrEmO1z+JzpLZnt1OQLDImCnCw3XAIxzD8CwjcFv9iEwXs4PLDZA/5pZBYVzRe80+UJ8rFkcjf78VPK7Yp/UAXUBAKsECsJ9xPs/L1DenK0QELDThYZrAOwWPoRQ5c5DEwSCjA0wiGdGdkfHq/niwEGw5PIzWewH9loHuRDsjEhMxL8jtC13lt1zVQIBO11oOAWwxD0AlWjcXQipsQE0ZGoXRWSfNZbXMvd8D/vOD8iemFNQBBRrxRwP0WtDRgQeP0sbvjNkHp23ABCw04WGBsDf3QAIoOmFz8LMxADQOO4hX2uy73yWTwlkW0UrXP5gDaWQQvsOJ/gNtRnBrmMZjl+/Z4WAnS5MDAAbsV8QzKlcNvI71ZYQwMUbsyDwYBL/uaUMhomSKYFViWh4omxvyEYpSSumMdgG7vJfjv1D0SI5SNvu8hv+1xEYEQFDXahxAGzOo15bVh8REH/gCPRDgP3T8+lM38WtZ/rdDvNrJK/BG3AH3oCvxafIOmEyWRyuFMMESzAlPsRrCsD5vKgu+3jAnwLUVCgs2unCJXYGwBI3AEJpf0XggwBBj2AEfABewzkwaGTgcFrIR+Jl8jAj18MZBvLTr3YQUMwS7MBQsSRvETDURX8HsY31wXZk9bQVR8BOFxoaAGPcAKh4s29bfIyAH6JZixRLfW28AV9lxfqvOZku6AVrbVdGhhkUqwQzsIPM2hmSSrVoLJTpLPq7IdVCvbDyI2CnCxMDwOZY3l43AMrfstOXkOmAM5lZLVpI1e04me43uLK/E58kW6SPSjlKVGwSjMAKiUI7yKcZyNfLDPlss0T+3BEYgoCdLlxsNwXQ4wbAkIbgN1pCgJHWB0l4X0uJw0lUg+/3cT79ffVpcq17BFZWjGKRYAI2ihFPtF8q0vVnXagK777or0i1FgqvdrrQcAogJj6WX45ABwjgZl0Q9cg+ZH26g+zWWdATsi8egbvrJ8oPGfXuaM2QFX2VPcEALBQTPopN0a5nObtiH12oWjTGnd9AELDThUvGAIHNLoDYPQCBNL9CskFs9cdYJPZe5th/hAA9hRQilrfC/1sZ/d6C5ruYeHHXRefL84WUpUWm4+NkNRkj+zBUPhxvyJQWs4WarM6ivw9E58nDoTLofBUAAdWFNqav4RqAyA2AAjTNoFlk1PVTXK+HwmQRdgaMhuUUFOJ34jHyL+bAL2UB3G66Cn60DEV6prKoTIlsyKiywv+UIskwDK8an+JIvFEhHl09DLt+K1gE7HThYvcABNsqnLFWEMAI+BanwS3lcJ7LSF9MT8BKQddA638YBflhmSZzeiO5vLZMLivqCDM+Xjapj5FD8HIchIgbl8aiweBE+X+EtveNlVXn3xyBDhEw9ADYGQB2Vk+HteTZQkWAUdh3GGEubYwstU2X4doY9/JpcY+cxhTBQyjRn7OK8BdME9zMNEGQax9w76+Ne3/3eix7oCD3pD42RYayXb3I9EG2pF5eNsFcHiME7HQhawBi1gAYmOZ0Eh4J0Ki9lZEsHfIs1gQsRVFeiXyhHg3bKfSbolA3RZcehYKtYxD8YYVBMEF+xWlzz3VacDf54um8wwtk534Kf2vKq8FrWa9liHYQBqe2Mb8cgVQQUF1o8s6g+8eg/G3iAIjvAkil9XghKxDAJXsdnoD9UZQaJ2DVFQ/K9UW3yG1Lh7Etck5DAccYBE9w72F+P1SLWZAWJYvSHpLZMjuaJb3diB8fyLTKJP4xmmewsEk9kk1Qgpvye5N4gbyIv5FJ5wXhnK+lyPle2ti1OdN1cuVHwGZHHLp/DCOJZ01eYDu3R/mbU4UlxBPwA7aXvYsV5tcBw7gKQIE+lhfrhy97sBZi5TVJlmAc/JsbukVNP/NQ4vMxFJb/Xr51bSLPJpJ1IsaDfl9Df+uHtBvwt8+jQoL+xXO/Ktdi3P4H0rZuqIrALmeOCBjpQtX9Ywi5MZdOIfeLF8qnAHJHvRoEo7PlJywMfBvKUDvs8dWQelgpVXG/ZMCT6irxATC08WMRkO2L2//HbeTxpI5AywgkutDCskb313AZzm2Z0zQTGlk9aYrgZYWLAB32LziV7a0Ytybz4+Ei45y1gcBCOud3MPJ35d8GaJ60TQSMdKHqfp1PtDEA3APQZivx5O0iwKlstxIx8M3km9duXk9feQQWMCjbG0PyZ5VHwgHIFgE7XYgBYOUBqPkiwGxblZeuCDAdcAejuF34+hdHxBFoEYHZeI92Y+T/yxbTezJHoHMErHRh4gHQNQAWl53VYyGt0zREgFHcvVEtOY73ekM2nHQREIjkRrxG2+I9uqcI7DqPJUDAShfqGgAzD4DRvEcJmouL0AECeAKerc3g0BaRk8je1da4Dsh7lvARIPCinMY2v3dwzsR/w2fXOSwNAla6MPEA9LoHoDQNyQVpigBu3XPo6PckoW6P88sRUASeZJpoL9rGGbQNgz1RXgmVRsDKA4Dur7Hj12YKQPcYT/V1AJVu+EbC69xutFS2gfxtRiw42VAQiImkGMk2umskFJacj+og0NCBE00kRvfXCCO6EOKLTBgQebkRXSdbcQSiC+Sf0QQC54icW3EoKis+cSLOi1aX3XH7/6OyILjg1ghY6cBFqvuXH5yiXgAN65n3pcLfmzdRp+cIKAK8AMv4M5UzBO4gKtY3+K4R8PwqPwLzGPV/qOZhfctf06FLWJNXGE06JZ5/jQOgV/Kj72uO/0fuAcgRbSc1AgIa352539fx+L4Rkvjt8iBwr9a1x/QvT4UWXBIrD8AAA+ApCxDrPgVgAbvTHIRAcoytyLu47eGpB2FTwp8bcPraoRwa9coSyuYiFQwB2uIrjFhOdH4yBYD7868WBwJhiVsJb4S5kw0Jgfh42aY+Ro6m/b8fvlYLiTfnJTMENqCvO4m1HydxUNItfL+E0yKuYTrIah1UZoJ6weEjYKUDVecrOokBwDzAHKO9L1buj/BbhnOYCQLx4TJW1pQDeAGOYRHYjmz/8qu6CEyhHUzhSOWLeqfJ5cRGv0SDRlUXDpfcAAGTQbDqfJU1MQA44zP5YSD8S7VDji6WpQa0nWSFEGCh30a4245A3x+O2BtW9VzbClV5O6K+gJHYsRiEx+IV+A1egS/JM/Id75fagdDTtotAfKysSn+kR3nnfzV0fp8BEMtsow6xh9HYJKR/JH8EnGIVEGCud5d6xGg/lv3o5PvaexUEdxk7RWA72sp29EunYzSeTyEXs2BwfqeFeT5HYEQEVpHJPGMwbnCpzuda3iHOMWBhOUmdBnADYDka/rdrBOLpzOoulIPoyI/Gwt7K3fxdQ1rFAl5E+5mJ4J/qnSpfqS2Tz2vsiCoC4TJnhIBuAbS7Ep3fZ33Mk7/DB4vyTS5fB2ACe/mIElVrMnO558UL5Ak6768i4Vblk9IlyhmBNZNFg2Nldu+Jckl8grwqZ/pOrrwIWOm+Ogekq87vcz805rpMomH5VsDytu68JItPkfUYpV3EHO5DuPmPg+5aedF2OpVBYBU8SYfGNXmAdQLXxSfJayojuQuaCQKGWwD/sXx9y8r5h8acQCaSjlIoHbalG2QUzvxR6Aioq585/k/Gy+QvjNKOgd+xofPs/BUeAboseVdcl9/jbfoO7c9qFFd4IKsuAH2Wje7rp+tXGACMnpI5AYNK8RfIAPQik4wPlB7c/YfFC+VR5vg/iywTiyyP815IBOi/5X20vz/jffoihsCGhZTCmbZEwET39df1KwwAULAyAF7GS6RWtV+OQFMEWJn9zniS3EcjvpgY2i9smsETOALZIjAWS+Ao+rC/4BE4namBNbMl56WXAQEdxCDHJCNZVuj6FQYAQTBmGzEzjlnbjYxoO9mCIIDi356511tZ3Hc9LG9WELadzeogMJ5RzKlMDTxGW53G9NS46ojukraNwMtlY/KYTFn21/UrDADG4CusgraF6TbDGKO5kG759vyZI4Br9ZUo/qtR/HdCbJfMCToBR6A7BNamrZ7DTpQHmKZ6R3dFee7SIlA3XDvST9evNAB65GFDsE3mQgzlddJNEKDzXD+ZWxV5gKT7N0nujx2B0BCYzDTV9zFeb4hPlpeFxpzzY4yA3SFAwuTDCl2/0gA4Cw9ALM9ZwOJbAS1QD5Mmin8Co/5P65yqzq3C5ZgwOXWuHIGWEHh73Cv3064/49MCLeFViUREJ7XaAfCcqK5vXCsMAOavYqYB7l/+INe/VmDkKqQTa4aAukzZZ/0Iyv9/aIt+NG8zwPx5URAYhzdgOtMCagi8rShMO5/ZIUBMCRuvNzo+0fUN0VYYAPqbRvqn7EQeuWTA8OhaI8NT+iccirEGK6gvVZepr+wvfXVXWcCX0cZ/wLTA9UwLTKoyEJWXPbJZyDxYxw8wAGp1GwOAxrClKoHKN4oKAsCK6d3jcXIvVumHKyi+i1xNBN5J8Kr7aPsfrab41ZaayKXrMNB5pQUKg3X8AAMAhkw8ANCtsWlmewtAnKYNAvFxshqj/gtYMf1zONAtMX45AtVBgCku2v6X8Qb8lNgBL62O4C6p9MpOoMCYx+QaoOMHLrAymgJQGFgUsTN/bjKBxInmigAjHz1y9TLegE1zJVx+Yiyf4BxESRbzPtdY1Dufrib5jvtPF/nO1/u1xr0GJBN5/3TNhUZUnMiU3OrkSb7ze8X9xvdV+OtXegi8kdgB97E24PhoplyaXrFeUqgIcAbATlban/d6gAEwhA8s0v8A3DoG4N1cmyF7GNB1kjkhEB8uY+tryqdpdKdAUiNh+dUeAqrg/85HQyA/ghJ/lO+PcI7no7JY/spb+1w0PdtTPVnJvgq0JsoyDlyK2N4WyyYYD5tgNGwCL+rWnMTH6xYQ2r4i+VG0VA6Lzpcn2s7rGQqDADr2VzCrXoC8r7no2HX7Ex3OALiFBLv1T5TT94XRBFmTDmxZTvScTI4IMMLZkhX+l6EwtsmRbBFJLVfyuhviUeboHkHRPsrnEVkij6Ecng9ZqMRAmI9h0INBoMYBRgGdjBoH+vGIn80r7xnw+ng0g3fFr9IhwFq3VVnz9CyCrWog3C8xAKb0pztwCoAnuGbvZ/+1hQEwHufltrDwm/4M+vdiI4BCqFGvJ9CuPotCsGj0oQO4FAbvAZ/bUPa3MT94O0r+6dCZHok/DPglPHuw8RmQDCNwAoaMTvvsgLxT+K79zHoDEvmPtTD8vsUo8Z3RIvlwdBEnt/tVHgTGyesQxqQfVN0+GMghBgBuxT/RAG0u5kYg7AaADfqpU9WjUtn7/C0K1nr1SxHQYFuR/JpR3m38vU2W8j3wUX1aFccc9wLK+l3j80UtNz5BNsdbMCUxCPo8j+vrfb9kf0aKW/MOHYA34A+OR2kQMOsLVbcPRnGIAUCCIYkGZ8rqN52ALgQ8P6vyvdz8ENAtTtTnTChOyI9qkJSegqtfJQq/ztzfRPm9T3OtrKfo3CTUs4Z7/pLepd1shpE0hXUFU1hXoB6CDfR+Ra+XMxi7E0w+Hp3D6Zd+FR4B6lN1nNU1RLfTLw289DhLVqX+l7tDng1MmcmvfzNH4edqZwJtPoXG02U8o/7LobZvPhSDpDIH4+cqTt26EgV3T5AcFoQpPASvSjwEddmTHkmj6K1WENZTZRPFcQXt6YiGFyXVsr2wfBCgDiM8OjogsFhkH0c1eUF0drL+YIXAwyp55p90rmDzFaly/AJDm+DyeiRHkk4qJQTY2/+ieAzR/CRZy5FSqYUp5u+84LMSpT9T7ioM1wVilJGwbk3cD+PqIP7uwYdlE5W6/hzVmRLo85pUSvAyCKvGLAuh/2wkywMMrrcYTHu4KQA8cHIHitjEAIBBnSNxA2BwTQX+m8b9Whq3Kv8qrfT+F8ro6lqPXClny+1oI14dv7JCADf4fMr+ln7iT8gLOSbqfbS5g0C9KjtLNkPe32AIHQkW384KZy83IwRqdu5/1enDSTWsBc1igWETD1dA2veY+7OcI0lbnEqUR4e0Hx3TrQhbBeX/FC/TV5if3p1tqy/qmSnH4lbTOX5X/jm29ugC+Sfu8PNq58i2jIq3APwzID8nRxasSE3A6Lys90Q5l+m2YftvK8ac7ugIsCVWB7cm10g6nX5r6EWHvimNTLfyWFwP4arww4EskO+AJm3lFNrK6WQdti11UGSIWVS538gc2hfkMflZNIvNen4FhwCVFMk02ZmO9iAa44Ew+ILgmEyXoRswQt/PotLn0i3WS8sCgfrUJKbHK7Iou1mZbO1/FV6jhwanG7bT1heJxQoaEXDtwRny+I1Fvx7zXErfr0ARYPSxSn2BfI0GdEigLKbB1kLehW/VeuWC6Dx5OI0CvYx8END2SfyJvTFOPw7FKflQNaHyBzr3d9C5/92EuhNtCQFiYKxPKO5/t5Q4/URPs65uXfpqHcgMuIZ1ISUJI7lzQMo8f0R2rpI8xSwqLeb712Wl/89Kq/wj3Msip0XL5CU9M+QoV/7Fa6kakAileB3exN1RkDsgwfV8hnSAxZNsCMdbI5SuC3jdkCd+IyQEzNz/+MXuHE75KzjDGgD6gDlOXwegQPg1AAE6Gl2IpKvcdxnwoBw/dDR1SPSMbIzFfEaRI/KVozrSkQJD4NcYAvswhfNqPAK6eG5ZOiUHUkosL0SuX/Ju7hcIR87GIATqhgsAR9PlIxoA2MpmBgDWii8EHNSAQvhJB/MmOhr1DL0sBH5S4kFHhTeg+PdASWyDsvh2dDHx+fwqHQIs1ryfRZuHMMX4CipdIxEGfa5CmxUwnnfzaqZuT24znyfPAQGUsJ0HYBRdjq4d/tK43cxZPMPTYbcKDp8rtbtLcb+uWZUQqamhlmFBKP+j6GA+DwmL9pCFZEtRApcyv3++u/izgDf8MnVell1HH6cTPBpu1wyf49Y4pF1/tTaBqauMT4ZsjRtPRXyU1YiP8ixIjDVAYxnGx1ojBZAa0QPQyHCvAcNKciyTE683ou1k+yEQHyg9vdPkQpS/jpjKofxjuZZOfwvm94905d+vsiv2lT7uSdrAaRy681I8QDpytlqklSrytO0jWKB7GQshy/G+poqOQWFjZDuoWih/FfbekZS/PhzRANCHdPpm0wD1Hnmj8uCXHQJ0IOPjybjHRY614yJVyncxD7xLbabs79EmU8W10IXpiXtM/ZzNlrpJGALqDSj8DiTe2Q+wUHcW7/Aqha6cEjCPl2lPKzGa6fBRDQAe3m7FOG4L3cfrlxECifJfID9gLchbjVhIk+zjdIjvZY5/ew3ak2bBXlZ5EMBlvghD4EtRj2yCG/3LSEZIgUJf+8TPyff1XS60FAVn3lKXNdPhoxoAOC1+Dva8CybXqziYaEjsYhNOKka0ofxvROzdCy76M4zopuLi3YwR/5UFl8XZzwmB6Cz5b7L9s564bnXHS3GvSN6MJ+DHrOHRcxT8yhmBhg6zCmwXN3T4iFKPagBEZ8pT5Pz9iLkzflB3L0DGCA8tvp/ynzL0aWHuLGEB6wUsJH05I7pzcfEuLgznzmgwCOhJjhiOO+A9OgymijwtsAuu4J+zGM0ksFswFWrAiLEO+31Dh48o+agGgOai4fxkxNwZP8B1ckDGJLz4fggkOz8WyA+5NaXf7WJ9ZSsUHfbmPefIcb6Pv1hVFyK3tKUYI+ASjMlNdXU9PBZ1WuD1rES/JT5VNggR57LyZKnDWtHdTQ0AEtxkWDlb4LrazJB+ZUg3tn2q23+3ggr9BAv83sICvwPpsP9SUBmc7UARUGOSaYGPMqX0Blj8TaBsNmPr1fFS9wQ0Aymt5w3dZTaN3YrubmoAyDwWAsaGh034NEBa7XHEchLlX0tG/oVU/li6346WypYs8DPzVo0Irj8oFQJMKd3NboEdGNkdjmBzCyjcFngCfsRU3+oF5L1YLFvqLtXZqrubXE0NgCQqWiS3NCkns8e43XwaIDN08W/SETBf/iOMvF0zJJNV0U8yIts3ie52QRK0Kis6Xq4jsAIBdgvU2Vv9tWhMMi1wMQ/opgp1bcfCwO/Hx8qqheK6YMya6i50disRTZsaAIo5nazlyOrVuFI2LVjdF4LdRPn3zfkXL66/zvVzDjwjsusKAbYzWToEWGA1l2mBI1gn8HaEK9oiwd3jcXIVfYAHC8qgZTZ01qszKLqlIlvV2S0ZABydYbkOQO1rjwnQUrW3nogXfzx7hH9EjqIp/6fpcN+fzPX7kdGtV7inzAwB1pz8kEWCW0PgtsyIZFPwO4kY+A1GqrxSfqWKgLXOalFnt2QANMKlzk4VoDYKY47XpwHawKtZUpR/DRfgFbz2RTt06YfJXP8M+W4zGf25I5AnAiwSfCKaLbsznXY6dAuzUwDNf1B9mlyUJ1ZVoGWss2a3GuK8JQNAKwwr0c4LEMlrOOXqlVVoOHnIiNU/Ezr75EErJRrzWXT1ESL5vS26QP6ZUplejCOQKgLRLOll++kncb++hYKfTLXwDAvDCDi690T5XIYkKlV0oqvQWVZCt6OrWzYAarbrABRLnwZIoUXROI/mhT8uhaLyKuJu5vpfzaKrS/Mi6HQcgW4QYF3KT3nHVAHc3E05eebFwD6NvmFqnjRLTMtUV7Wjq1s2AGSJ/IIKW2ZVabjWfBqgS/B5wffGOtQjfQtxwevlbLnahYhscwrBsDPpCDQQYF3Av2i7b0SxTudWIaYEeN9msCX4UK/E7hAw1lXLGrq6JSEwVFu/6lPlx8wbv7n1HOmmhNlXeJCXzjBF+W/NvNRt1F8R9v9ygJacRF3rVIVfjkChEUCpTolr8h3mUV9YAEGW8u69iXfvlwXgNTgW6WdfjiH1qBljRO5lgbROQbV0te4BoDjmtq5uqdSsErkXoCNkiQH+IhrlDwqi/J+hA3qbK/+OqtozBYgA01e3MI2luwTs1lG1jstY+opZ8QmycetZPOUKBIx1VLs6ui0DAEeW7rm2mwbwdQAr2lmrX5K9/j2iIX5f1Goew3QPovy3Q/n/2JAHJ+0IpI4ARsCTtOu3oFz/N/XC0y9wPTwW1+lW4fSLLneJ1K/l/P+yho5uGeS2DADmYv9Dybe0XHraCWN5Le60yWkXW9by4gOlh+1+VzLyN1uR2jK2kdzIsb1voJN8pOU8ntARKBACGLcxgYM+0wgj3Bs461uzW+jrgfMYFHuJbkJHGTJ1S0NHt8xCWwaAlkrjtZ0GqPliwFZrt76xXEjavVtNb5WOtQlnRuPlnRzbO8+KB6frCOSFAN6Ar9GP7g+9RXnR7IQOBst7iGh3Sid5K5nHWDd1opvbNgBkrFxL5ZpZryiLgyrZuNoUmhf3GOaDjmozW97Jn6fRvo9Y/qdqfPW8iTs9R8AKAYyA6zm98k3Qf8aKh1bo0t9+jpHt21pJW/U0xrqpt6Gb26qGtg0A4l8/BYVb26KSbuKtWGm5W7pFlqs0FvC8lsZ4btBSRfLPqFd2oiP8XtB8OnOOQEYIcHrlrzCANRT3ExmRSKPYGtvarvDzWEaHsqGTtho9VaZPb23o5raItG0AaOm4hma1RSXlxCy0+HjKRZamOE74WoMFPFci0CoBC/UEsdOnEK7y9wHz6Kw5ApkjgAH8JzwBO0LowcyJdU5gTQYU18cnyZqdF1HunNY6qVOd3JEB0HA1WLps3xmfLJPK3aQ6k44Tvi4h58s7y51Lrr9GPbJrq7Gqc+HIiTgChgjgCfgrRwvvDAu/NmSjGelN47p8h50BnemMZqUX+HlDF73TUIR6J+5/5bejyozOkH+T1/Lkq556rxxjCHiQpHFDHQljlttQmuHyOPuhd43OkseaJfTnjkCVENCjhYkcuCfuVd2yG+q1tyyQk0Nlzoqvhi7qsaIP3dsaOrltFjoyAJRKuwEH2uasSQZcHoeyOGVCk2SVeYx77jW4oc4LWOBHaDO7eljfgGvIWTNFgIWwC9kNsw/v8TdNGRmFOLxNZ43R60dJUqlHqoNUF1kK3Y0u7tgAIN7wNQhtthsA2mvhv/h/lsCHQhu33OrM0V0FP+NC4WkQHw9yjO9uHJLy90H3/acj4Aj0QwAjYBmxAj7E+3x2v9shfR3LGqMrfPDVqJI+HbSWYQX1NnRxRyx0bAAkx7JGthHbeEmOxSLFAKv2RcCOrxJnfJNAUbg/GsuCPz/GN9DqcbZCRICtsSez+v5/QuQNnl5Zr8n5gfKWG1uqe1QH5UZwOELo4G761o4NAOWF+dxLh+Mpx3uvkpNkrxzpBUeKef+PYAG9PzjGlKFY/kgbmdLp/FSQMjlTjkBOCPScg7td5Is5kWuLDNsXD2Nr4D5tZSpb4j7d8ypLsbrVwV0ZAMRt+wHCa1wAswsLrLJbAnHDbUkHodH+wrsiuYd9/nu0G5oyPEGcI0fADoHaBPkY77hu6w3uou/9WvyJQpxwmAl2Aeiepxo6uGP5ujIAootlKW6qb3dMPY2MMQdsnCibplFUkcpg3n8c2Ou8/2oB8n13tISz0M+XpwPkzVlyBAqDAGsC6rVn5WAYDvEkwXXjsfJNdYUXBtCUGE10DronpeI6KkZ1r+rgjjI3MnVlAGgZtV7zaYCobj0P000NdJi3/px8mqybdZg9y2yzcQ++jXmpoEOcZgmAl+0IpImAdvK8U/tR5l1plptSWXvJ1Op5YRs6x9TwSUP3piJAfVoSwOINKTWo9ouJ5TmCy7yYgBrPtp+5eDlw/W+F9XcPnI8JjPtnmZPaEbf/A4Hx5ew4AoVHID5F1omXJfFXQjP8FxPN8PX0v/cVHuQWBNCIiHEvO5oiWb2F5Fkluas2Q7bvtvCuPQDKANap7WJArYhe272Y3VZEq/k1EhfK/2ukD035L6MdHODKv9Wa9HSOQHsIJMGComTR89/ay5l56lWJEngFYchXzZxSCARU19gq/9R0bioGgCxOFqkstKwblOIxqhwteciF9oJk28l2udBqgwjK/6PENf9ZG1k8qSPgCLSJgMbSwMumO5/+02bWrJO/migk07ImYl1+YwBmHYV2YUPndg1HKgpTz3FnIcjVXXPTXQGTZaFYxmPujvsWcuN6eikrTz/XQtJck8DT2Sh/Wy9QrhI7MUfADgG8bA9iBOzNNtvn7LgYShkdcCrTk5OHPinRnT4dYyqj6lrVuWmgmooBoIzU7GMCSADbMtKokxHLwM32ZWvX0zDMzarNlFOGue+3HAFHICMEMAJ+SwjY91E8+iCYazWiBF4UDDcZMBKCjklT16ZmANAgb6UpPpoB5u0UOUUXyLWToShpCfijL/vegfH7aw4wOYSVpCF1QoFB5Ow4AtkgEM2QH/DinZ5N6R2Wyg6gsgYIauiWKR0ik042dGyia9MpLd05cxTBl1Piq+Ni6pEc13HmQDPGx8navOgXBMbe48z7v4t9yosC48vZcQQqgwCBgj6DsD8NSWBGyZ9HWZbuoLYQdEvaOjY1D0DSABcnZ9HPt2yMAHQwFmho22S6gqQ+Rs6lgPW7KiTdzM/gfnwb8/5Pplusl+YIOALtIKCBglgPoKHAQ9oZ8NK6yKfakSP0tKpTVLcY8zmfxX+XpMlDqgZAYzFgqgx2IGwPFuhZHeQLMgsNb08a3gcDYq7OyP9AViP/OSCenBVHoLII4BL+j76TALAkFBAYIBzPscGbh8JPt3ygU86kjJ5uy+kmP17gS9Ja/Lecj1QNAC201pPEpu9dTsDo7zuZM9/FiHZqZNlyMoZK/1JqBaZQEPyc4dv9UgDSi3AEUkSAd/IuBgrHp1hkt0XpscFB9V2dCsTuq53J+65O86eUr7ehW1Mqrq+Y1A2A6CyZTdHXpsplB4WhqM7pIFtYWRbKR1heF9Ixv79mzvF/wgLJuXEEHAFFgEWBX6TfuyIgNHZjLcBBAfHTESvsvgpBl1zb0K0dyTBSptQNACWE++e8kQjmeH97vAD750gvVVK6iAa302dSLbS7wuYTbvkDzDku664Yz+0IOAJZIYCBfjhl/ymr8tstlwBtMzV0brv5QknPFKyewbCDNT9Z6dRsDIBzkrMB7rQGjcZ3hrrRrfnokL668zbsMG/q2ZhjPAoL9LHUC/YCHQFHIDUEMNAXcgy3DnxSCRSTAmMb1HvlpBTKyb2IZAo2ljNyJzyU4J2sufr10Nvd38nEAFC2mI86v3v2uixB3ecL5LAuS8k9O4tn1sV4CSasproVmWO8PHcgnKAj4Ai0jUB0njxM//vhtjNmlIHR68fiU2WDjIrPrlidghX7o+az1KWZGQCsBNB1ALOzq53WSkZ5fQZLzvLUptYY7Zeq3pNsoZnY75bl18dri+QoSwactiPgCLSHAOsBrqHv+2Z7uTJLPaG+tFjRQgOagp3d0KWZVE5mBkA0S3qxXC7MhOv2Ct2gvpATqwty0fAm427/aCDs6gl/H0h760kgsjkbjkCpEWDVuE4j/isEIdEFH42Pl5eEwEtLPERyAunMp2BVh6oubYnnDhJlZgAkvERJ0ALzuSgCZZxQFBcU0ab0sJ9VOqjL1LOg/P8X17/5Wo7UBfMCHYEKIMCanf/ifj86EFFXJaDZpwLhZVQ2GIStj/ckhEHjPObSM42rk6kBwMKF+axk/+qoaOfxkLObcUF9Jg9S3dDAQt4Gi09j/odw3SZzglgAEwIWzoMjUEgE6IN1KvaaEJhnQPGh+GR5RQi8jMYDg7BP89x8ClZ1p+rQ0Xjt9lmmBoAyB4GZ/FnYLaPd5kexHoaCDWlP/RCR4p4kgiGsml/PRDU5KEvXk7mEzoAjUBEEorGJF+C/AYg7hh0B0wPgY0QW1EChA9atlNbXwobuzJSPzA0AXMhPYsl8MVMpWit8DJGpzmwtaf6pNOQvVPfKn/JQirgNj4/Olr8OfeJ3HAFHoGgIRGfIv3mngzgkTT2cxAXYIlQM497E6znWmj/Vmao7s+YjcwNABaiNlRn8WZC1ME3Lj2Q/5nfMgzoMxycVfvpw9w3u3UXcq28a0HWSjoAjkBECuJK/RVTRn2RUfDvF1ois99l2MuSVlkHYdtDSMxWsrwUNnZk5H7kYANGZ8hSLKkLwAujB9SGEdRxQsY1zC94w4KbNjzojhWOw0oHJL0fAESgTAszBH8Gb/VwAMu2Lsn1dAHwMYIFBWBC6QXWl6swBzGX0IxcDQHmv1fEChND4ItkZL4D1wQ4DqpMK1y0n5hd8fJ2Rwt3mjDgDjoAjkDoCnBo4h7U9p6RecAcF0tdM7yBbZlnQCW+j8N0yI9BqwejIRFe2mr7LdLkZAHpkJdHtvtAlv6lkh48z4wNtj3ZcLkhjYeI7l/82/PtMbYycakjfSTsCjkDWCJyDJzaWX2VNpmn5sexNxNNXNU2XQwICxdXQCWflQKopCdWRqiubJkwpQW4GgPKLgpkZhBdAZDOZFMaiGKL+6eIcvO62Fwx8Oi+3k62kTt0RqC4COr3H52gQqBujENVr8jFjHvrIL5Bj+bKlOS86+lcdmeOVqwGAgpmL6+eiHOUbkRR8fNZ6W6DG/Odl/H8jMpnfg/sIN1mKs7vzg8wpOQLFRIDV5fcy332FNffa97Ht7gWWfLD+6uXogjMseVhOW3Wj6sjlv/P4m6sBoALVehMLJ9PgBi0CN459919X90+L6dNPVkti7K+WfsHtlciLeKzv+W8PM0/tCBQZAUaaGuxmibEM4wlye5gVDyhc1kXKpdAfb8VDP7rzG7qx363sv+au/KLz5Wl8UCGcEaDo7sTmRHX/5H5heIyj8akrzvSChys5OOSXpkw4cUfAEcgVAcIEz6YfNvf60f8cQ184JlfhlxM7Mel/d1v+0/Kv6kTVjXnzkLsBoALWlsp5/Hk2b2GHo0cDPEPdQMM9y/Tec3Iw5a+fKY3mhS+oRUHEvG7OqadwBByBVBFgxKmxR6zPankJg7B9UxWshcJY9T+ZaZAgFv7B7rMNndgC5+kmMTEA1NJhv3kowSDGYwRcygdPeD6X0sLi05O6TC8EPoNtf383ZcKJOwKOgAkCutocH3iui86GExRF/Inh7md1r9H/6iE7E7Ki0U65qgstRv/Ko4kBkIAznsWAsTzaDlAZpt1NTpQjMyx/YNHTkj2n1ltg5sgiOXcgY/7LEXAEKoaAemP/bSpzJDuyIPr1ufFwIgGRRPbIjd5ohFQHqi40uswMgGi6LCEoxTQjuYeQJTzl2axInTTkQQY3sEDNj5pk9D8jukgWZyCeF+kIOAIFQYAdAQsYgf6vNbtsCczFC4ChsXEoEf8Uc9WBqgut8DczABLhz5Hr+HuzlfAD6HJkMAdBZHr2stJjvcEr+bPbANr5/3hSlsnX8yfrFB0BRyA4BJ6Rr8HTXyz5YkByIOGBN8qaBw6EU1knZk2nxfJvZgpWdaDZZWoAqNRUvM6FWwelWF4Be7I45LDlP7L4i6CHZFFuO2WC+eeZc3q+nTye1hFwBMqJQHSxLKVPOM1YurH0jZkew9vo299kLOdy8vWG7lv+2+SvvQEwQ/7AgrhvmEg/DFF4mUmAoJcM86jrW7j+8bbJQV0X1F0B81j5EcTBTN2J4bkdAUcgNQRmyFWU9bvUyuugIBYkZtY3ap+ufXsHbGWSRXUe26//kEnhbRRqbgAor7VYPsmfEIIDKTtrECDoYv2S+nWC7EKZk1Ivt40CMUK+Ep0dxhbMNtj2pI6AI5AhAgxMYhTwjAxJtFL0yxmlZ3Jce6NPX6MVJnJIM7+h83IgNTqJIAwALKF/MTQ+c3RWc336FuajPpQ2ReL+W7v/F1Ph56ctl5fnCDgCJUBgdbkaKZ6wlAS/uMZHSfVq9OVvSbXQLgpTXac6r4siUssahAGQSDM+UUxzUpOsy4JYKXpemotSiHY1Dgv7gC7Z6io7o391OwXR8LoSxDM7Ao5A6ghE02UZngDT6IDQf3d8uIxNS7j4OHkRfXlIg545bPsLhp9gDAAa3yIq/6S0Kj6Fctai4Xw1hXL6ilgg7+LLmqmV135BvbUecxdf+1x7DkfAEcgPgXoy/bkoP4JDKK0ja8lbh9zt8EY8NunDLfvdAZyrjlNdN+Cm4Y9gDADFgNHplWwLuNUQj8Gk386cVCoLU1j0kbprazCzo/1m9H8V8b8fGy2NP3MEHIFqI6DRAekrvmOJAgOvdPrcaUy5xknQNUtxVtJGtyU6buUd829BGQCKRtSbRGkKJkANivvzTAW8uJuawohYn4b45m7K6DYvi07O6rYMz+8IOALlR6BWMz+s7R3xSd15S5NV/yIXBFRbixu6LSCWLEMBjwADFuiDzJWfPsJji9trY5FeGx8rq3ZB/P3ktTnxqo/pH+oZ4F3w71kdAUegIgiwS+iPiHqLobjjOCa44/VS2lez6v9a+H+BoQwDSKtOU9024GYAP4LzACSYrC5n8/eBAPBZzsLr66t1vnfe2v3PqtNg9r8uB9T/OgKOQLgIoLAutOSOPrPjaYD6qvJleH+dJf+DaD8gfTpt0G37n0EaACyS0HMCDgMepqPCuHghDsWVr4dItHURe3pzMmzbVqZ0E8+Rc0yt+XSl8dIcAUcgewTmyPchMjt7QiNS2K2TgGyEWj+SAc+HRiw1/wex6jLVafmTbk4xSANA2cYNdQeud7XkgrmwSi9sO1BFT7L630wGLKhvs/I0GEPKDAgn7Ag4Ai0jEM2SXhTpF1rOkH7CiEnT97ZTLOsGdqSj+3w7ebJOqzpMdVnWdDotP1gDQAWqLZZT+PNEp8JlkG8VjICrsTI3bLVsGkBqW1papdk/Xa1Xvt3/t393BBwBR6AlBJbIpaRb0FLaDBLRd76t1WLjT8gLSa+BjMa2mieHdE80dFgOpDojEbQBwHG183C9H92ZaJnl2oiGNquVYBU0yrXgIpPQli1Kd1d0njzcYlpP5gg4Ao7ACgSiC+QZRtSWp9XtxIK+puF7tS+Ox6D8Y3nhCuYD+KK6S3VYAKyMyELQBoByzer16/lzzYgSWDyIZOf6mi1Ecxorb4I9s9X/uPAus4DHaToCjkA5EGD78JWGkoyR1eSNzejX12C7XyQ7NkuX8/NrGrorZ7LtkQveAFBxoqVyLH+ebU+0bFMzr3408QH+32hUON5y79GeZ/xsifSYvrwZi+fFOwKOQOYIrC4/gcYzmdMZgQB96Kgx/DXOPwOdo0bIbnX72YbOsqLfMt1iGAAXyD9xp4QUJjgBmKmAr7DK/7XDoY3rjHY5euMdLl+K934YnSlzUyzPi3IEHIGKIaCr1y2nAej3R1xDhfJ/HX2w6dkFwzUH1VVMn/xzuGeh3SuEAZCANjOJUX1TYACOi2sECTpB1h3C1zTZhnstLxYckr/LGzRCd/93iaFndwQcgSRanOU0wIvZebXl4HqIT5H1UP4a7Gfc4GfGv28i6srFxjy0TL4wBoBuZWNI/SEkC21U+1KMgCvjA3G4D7ws3f9PE3jixoHs+C9HwBFwBDpAYIL8jFx2/W5toBdA+9p4WTK9+ZIOpMkyy1zVUaqrsiSSZtmFMQBU6Ogc+Qfgth2MJ03ARihrj/qkJHrhisdYpyO6rlYkyugLre9Kdd1lVLwX6wg4AhVCgL5kGdufdbRtctGXDlgHUJ9MaDOR3U2YGYWo6ibVUaMkCe5RoQwARY/TlK5BwX0zNCSp/BOID/Ae5YszqNdmVeobrHis+ep/K+idriNQSgRQFJbTADvH0/FpctHHvo/pzeNDA1l1kuqm0Phqxg96q3gXiz8mYhX+Ec4nB8b9AsI+7sBBFltgMX/3/7d3LlBWVecd/87lpSBqpT6iqRDJ0qq0MV1J1XHp0sSFqcYXIjGpNiQY8AFGyAiisSX1gTwcLIgUIolZmjRRHnmYrEpjtFAGDTa6UsBCBBkbjcYyBWGGx8yc0/935qIzw525d+495579+J+17sx57LP39/32Ofv7zn5mJNvvcnPk1IzSZrIkQAIOEoir3YfFX7fHZaEejP5VSPcNlKvr8H9gFjL0kOYbqPr/BL7+d/cQxshL1tUAKEUFDc/lBuy2GUZ1UBTKSjykX8xKLniiz2SVNtMlARJwk4BODYyPLp1pL5MtzMmXUK6uROKmGf82tUU2Gn/NSCsdABUc1S1r8UCYuMb9cIh3hcqYxYYM1Q473EiABEggUQJZTgqEGoAxUOaURBVKIDK1QWqLEogqkyisdQCUVm6nfAv/Xs6EnJmJtsogWW2maJSKBEjAagKD5T8g/x+t1iFZ4V/O26BkY61ibFY7AMESaUHbi64b3VxFZiYn9RJ67O4xWUDKRgIkYCcBlC0hBrjxA6M9+5rV9qgNsjM326W22gFQFdD2shltMLU2Z0JSsqP9/7mk4mI8JEACJNCVADo5/3vXcz4eq81R22O77tY7AJoBaINZhH/aQcTrLRfSAfD6AaDyJJA2gYAOABCvzNuctGmnHr8TDoBSCvbJWPyz3iNTXcrcmmWwvFjmvbyNBEiABIoTmCUbECi7WQGLS5h2iM15W5N2OlWJ3x0HAOsuB6GMQhuVn23gkaxBGx1n/6vKa8NESMBPAqj6RkujrPFSe9gWtTEBbI0r+jvjAGiGBA/JJjyg41zJnN7ogbY5tv/3BhjDkgAJlEUAQ/K87AegtkVtTFnQDL3JKQdAGQdz5SmMzawzlHd6YkV0ANKDy5hJgAQ+IBD65wCoTVHb8gEDR3accwA0X3IDZRrm4l/tSB6VokYjxv+/WkpAhiEBEiCBiggcGU/DvrOiOGy6GbYktik2yVyirE46AGgLbw36xjNHWbUyU4l5VijY8/EY3UJXeI4ESIAEEiSQL2t0UiAftrfVlqhNcVFZJx0AzajgAXkX7eLXYtfqiRpKeejQNsX2/1JAMQwJkEAiBFDm+NAPoEVtiNqSRKAZGImzDoCyDmZJPWZrMm7pyMSfg5DTISfOlBGSAAl0T8CDfgBwciarDekegv1XnHYANHswW9MjGLfypP1Z1a0GEcb/v9btVV4gARIggaQJDJZXEOX+pKM1JT61GZjsZ6Ep8qQlh/MOgILLtcp4/FufFsSM4/0ftE/5OfdBxuCZPAn4SiDfJv47R/Vfn7cZjqr3oVpeOADBPNkb9JPLoXbDh6o7shfIRkc0oRokQAJ2EXCx5rFBbYXaDLuyojxpvXAAFE2+U+Bl2N1VHioz74oityamMJMypSIBEuhKANXkrjkAu9Dp7zKXO/11zUNvHABVHB06NmIWq9HYdWZIBzLQqZmpuj6gPCYBEjCTgGNlT6vaBrURZtJORyqvHABFiNmcfomMvikdnBnEGvn1wGZAmEmSAAkUIhC5UwOgNkFtQyE1XT7nnQOgmYmMXoqq85lOZOx+d15CJ/KDSpCALwSOkC1QNbRdXbUFahNs16Mc+THU0c8N7VdBOFV+CM9vjMUEfp+bI39msfwUnQRIwGIC4R3yOsQfbqsKmOP/qdxsuQ6GECbBv83LGgDNZs1wzO/8Zeyuszjb2f5vceZRdBJwgIDNHQHXqQ3w1fjrs+etA6DKYyzrPszzfCV2t+mxbRtcVq86rNiWP5SXBFwngOpzWx2AbVr2qw1wPY960s9rB0DBBDPlPUwXfCl2G3sCZeI1ZB5rAEzMGMpEAp4QyOWsdAAatczXst+TbOpWTe8dACWD6YI344H4G+zu7paUiRdydABMzBbKRAIeEbCtBmC3lvVa5nuUR92qSgcgjwYPxK+DUD6Pw73d0jLtQiifME0kykMCJOARgUjOtkjbvVrGa1lvkcypiurtKIDuqEbT5JIolJ/iev/uwph0Hr1Yl6Ijy0Tf27JMyhPKQgKuE4hmyMCwSRbDgFxvia4HMMvfFZjo51lL5K2KmHQACmCOauVqHR6CS30LXDbx1KvIyNFYvWqricJRJhIgAXcIRFPlNHT+WwaNRliilc7yNwZj/VdaIm/VxGQTQAHU+qCgnWgsLtkyycVZGBHwn3gxryqgDk+RAAmQQCIEojvkWhh/XVnVFuMfallO4184+1kDUJhLfBYGdTwe9sU9BDHuEhyBublBMj2/XKdx8lEgEiAB+whE46VfeJTMgcH4uk3Sw/hPQJv/EptkrqasdACK0IbHOxlGta5IMNMur8GDfx0e/LdNE4zykAAJ2EUAH0IfxYeQNomea5PkMG5T0Cw6zyaZqy0rmwCKENcHCO1Hf18kmGmXz8cL+xu8uBeZJhjlIQESsIcA+kNdrGUJJLbL+KPMpvEv/pzRASjOSBcPuhe1ALNLCGpSkOPx4v4bajDuguys6TEpZygLCRhOQMsMGP970Blae80fa7i4ncTTslrL7E4neVCQAA1DQSyFT7bdIbMAbGrhqwafDeTnQYv8XTDPvtkODaZK0UjASQLRdBkStckTWB5HJ0ezalPj32eOTLNK6AyFpQPQS/h5r/gfe3mbCcEb0C9gNPoFvGyCMJSBBEjAPAJoNvxr1Bw+DclONk+6niXSplp++ffMqOtVNgF0JVLkWB8weE1TigQz8fJQvNhr0SRws4nCUSYSIIFsCcD434IyYg2ksM/4a4c/Vvv3+gFiDUCvkbXfgJdFhwguwpF1ThSqyX6Qi2Q8XpimMtXnbSRAAo4QQK3moDCQJTAGX7JQJR3nfzOH+pWXc3QAyuMW3wUn4G/hBDyOA1tmDOyo7VZUmakT8KuOJ7lPAiTgDwEY/8+go5+Okx9uodatMP5jYfy/b6HsRohMB6DCbMALpNMG/xDRWLF2QFd1URvwnVwfqQ0elP/reo3HJEACbhKI7pQ/CdtkLgzAVy3V8AA+YK7DBwyn960gA+kAVADv4K35BYT0QTz84DnL/r+LB2ESxs1q5x9uJEACDhOIp/MVWQAVj7dUzb1Y2OdqLuxTee7RAaicYRxD9A25IMrJMzgYnFCUWUTz06BVbsFwwbeySJxpkgAJpEcgmiwnRX3lUaRwRXqppB7z7nhJ34dkdeopeZCAdR3YTM2TAA8k2qMuhnyNpspYglxXoIDYhL4NN6FpgM5hCcAYhARMJ6DvcvxO492GrDYb/0YtY7WsNZ25LfKxkE84p/Ci6VKZv0C0pyQcdbWj0/UEvoYONpurnTDTIwESSIZAvjz6NmI7P5kYM4tlG8qjS1keJcufDkCyPOPYMJPWsVGr/AQHVs2fXQDFfnS0uVfex9SaS6SlwHWeIgESMJCArt4nR8pUdFC+B+INMFDE3oi0LugrVwYz5b3e3MSwxQnQASjOqKwQ0Qw5LGyW78GAjikrAmy+Ph8AABA8SURBVLNu+i943zfC+/61WWJRGhIgga4E8NWvs/k9hvN/0fWabcdwYJ7KDZQvY3nzfbbJboO8dABSzCVtewtr5X4Yz+kpJlOtqEO8jPNzoXyTEwhVCznTIYHSCcQT+uTkPnx03Ia7rO/fBSdmZm6u3A0jhaKUWxoE6ACkQbVLnHgxx8F4/jNO2zhhUBdtZDsemgkYMriq6wUekwAJZEMAQ/tGwkouRurDspEg0VRb4cTchA+NpYnGysgOIUAH4BAk6ZyAE3AxnIBliP2odFKobqwobH6ACYTuxgRC26ubMlMjARI4SAAT+gzDhD73oyC3cRrfg2p0/L8Lxn80jP8vO57kfjoE6ACkw7VgrJgw6MwolJ/j4tCCAew7eQDVdEty/VHt+IC8a5/4lJgE7CQQ3SXHhwfQHBfIeGhg5SykBcg3YIKfyzDBz8YC13gqBQJ0AFKA2lOU+uJGLfIzhPl0T+Esu9YER2B+rhWjBR6WnZbJTnFJwBoC0e1ydNhXpsLwazv/IGsELy7o+qCfXM4PieKgkgxBByBJmiXGhRm5DsdLrKtvXV/iLbYE24mCabYMlH9Cr91mW4SmnCRgOgGMKhqIN+rrcLSnQtajTZe3N/KhOfFJfDyMxwyke3tzH8NWToAOQOUMy44Bw3Um4oWuQwT9yo7EzBvfgSNwP4qsJXAEDpgpIqUiAfMJwPD3h+HXpcfvhrQnmC9xryRsgQGajA7FC3t1FwMnRoAOQGIoy4sI/QJq0C9AF+E5sbwYjL5rOxwB/XZ5Ao5AaLSkFI4EDCIAw5+D4b8Bhn8GxBpmkGhJifI22vuvRXt/fVIRMp7eE6AD0Htmid8R9wtolacw2vWCxCM3I8JN6Nmr8wdw6U4z8oNSGEwgv8T4fRDxDIPFLF+0AOum9JUxbO8vH2FSd9IBSIpkhfHA4++LmQNnwVBOqTAqk29fD/3u4hAfk7OIsmVFID9U+AGk71IH4U44MRS6DjP7TUONYGunCzzIhAAdgEywd58oCoEx6BSzFGvxHdF9KOuvPI+mgbswtfCL1mtCBUigQgLoC3QOqvrV8F9UYVTm3h7JHhibcXD+nzJXSP8kowNgYJ5H35AzopysgGinGShekiL9DDUCdSgUXkgyUsZFAjYQgLN/Ib6ItcbvchvkrUDGzUEoo7CM76YK4uCtKRCgA5AC1CSijCbJkdFh8jjiujqJ+AyPYwNqBBaim+ATcAaaDJeV4pFA2QRg9Aehe5927rsVkYwoOyJ7blwZ7JOxwQKsKcrNOAJ0AIzLks4CYY7vm9EkMBdnB3a+4uTRLuj6eK5NHg3qZIuTGlIpLwlEU+TUsI/cggJ3LAA4MR14kYxshq61GOK3qEg4Xs6QAB2ADOGXmjTaCE/DF8OTCP+pUu+xPFyEERGrUCvwCL6XfsEhhJbnpqfix0P5muRSvLsT0adnJDD4Ut6+jHf3evTx2exp1lujti8PpDUZ0p2g0XjpFx4t/4A28zsRpk934Rw8/wYe0kfRZ/g7mCms0UH9qJJjBDDT5zFY9/OrqM26Bap9zDH1elKnDX0aHsztlG8FS6Slp4C8ZgYBOgBm5EPJUqBJ4DwULE/gBp8KFuWzF3r/C5oHHkHzwCslA2NAEqgSAVTzfxLV/BNRqH4RSR5epWRNSUYd9RtQ5b/WFIEoR3ECdACKMzIuBJoEBodYfAeZN9Y44aohUCT1cfPALlnGL41qAGca3RHQmjm06I/OV/PXdBfO5fNxvx0sToQq/90u6+mibnQALM5V1AZcg5dvMVQYYrEalYj+DvRfkgtkMQqftyuJiPeSQG8IwAk/EU74BBSg43Gfa3P0l4piB/SfgK/+5aXewHBmEaADYFZ+9FoaLYjw9fFd3KidjHzd2qD4GtQKLEfL40r0FXjLVxDUOz0CaNs/Cd/7V+N9uwapnI+fT31xuoLVTrpfoePdFYtdx3QA7MqvgtLiKziQWqwYFsgsBPBhiFFBDvmTwCEv4cFejuJ5RfCgbOspMK+RQE8EojvlFGmTUXio1OifjZ/vZeYudESehoHJupy5vmvcLCbg+8NscdYdKnp0u3wk6icLcEULK27tBF6NnQHUDuBr5TVCIYFiBFCrdjpMmzav6Xt0VrHwHl1fHrTIpOBh+YNHOjutKh0AB7MXs41didoAXWP7JAfVq0Sl11CoL8dIghUcSVAJRvfuzffgH4UCUY3+6e5pWJFGb+Gr/1bM0vmTimLhzcYRoANgXJYkI5BOJRwOkJlop7sZMTKfD8X6RuwMaL+B2XGTAaszD2Xk7BlkdiBT5Wx05Lsmb/Q/5qyy5SsWob/Dotx+mc6pfMuHaPKdNAwm504CskXTpCYK5duIys21xRNghCjeQkG3Mqf9BhrQmfBptPpyc45AdC16hQyV80N85cMx1jU2WEPWfS5vCnLytWCW1HcfhFdsJ0AHwPYcLEH+aIb0lz0yDc0CdyP4gBJu8TmILlryIqo867FoS73sRe0AFzKx8nnQWjBMx3M2FpmqwbOvY/TPwe9IK5WpntD78ezfj8XIZ2EK7gPVS5YpZUGADkAW1DNKE8sM/3nUB/MGRHJBRiLYmCw+GGUDqozrUUOwDt+Q9RhZ8LqNirguM3rsfxx1NzXIsHNRsKnB19X2kG3cSiIQyOqgDeP6H5L/Lik8A1lPgA6A9VnYewUwgdAXYNB0yODQ3t/NO0Dgj/itw8vTXktwuLyMr6V9JFM9AqjVOgy1M5+Kv+7bjf25SP246kngVEoNeJanYUKfHzmlFZUpSoAOQFFEbgaIC9BmmYy27+nQcLCbWlZNqxak9Ju4liCAU9AC54CTESUKPz8Jz7notFeDQku/7v8Kv36JJuJfZLvRF2ImFhqfRwfWv8xXjekA+JnvH2iN2oATwkDuQ7vfV3CS1aUfkKl45004BOsQy2ZA3Yr/8Q9fWe9UHLPDEejzCPWG6w9V+fr/NBRS+nV/Mn7ckiEQok/Ed3ORfJPPYzJAbY2FDoCtOZew3Ch4z4LBqkO0FyUcNaPrTKAZh7EzgEJ4W+wcBDjWX6M0uL64Ubx4zjFoeopg3PFTIw/n8xQwiY0+/g/sjItHCRN4HoX+FBj+VxOOl9FZSIAOgIWZlqbImAXtKgwbnAOD9PE002HcBQno8MM38dsKZ2wrFjlqrzmIMJ0x9m1ZbQ3P0ODYwAfthh3V9sNR0Bw08Pol36eg9jyZHoFIXsewvjvwDP04vUQYs20E6ADYlmNVkBf9A/pLs0xC/4B7kJzvawtUgXjJSexAyF34NeG35+B/OAt63AQnIT6HWoUmGOCD15vQUe7D/T75/RzCNMb7Isdg0FcogxDHIPSiPyL+r/u5DvuBHIGv9fYwUft5FB56fDD8wf/6vAzBj5sZBHahnf9e1Kss4LA+MzLEJCnoAJiUG4bJgo5Xx4T9UF0YyW0QjR0FDcsfikMCPRDYjSam+bkWqUOH1MYewvGSxwToAHic+aWqHjsCfaQWD8skfGXqlx43EiABEwmg5gc1Qguw3sVcGn4TM8gsmegAmJUfRksTTZchYSscgUgm0hEwOqsonG8E1PAH8kiuLwz/TNGmIm4kUJQAHYCiiBigKwHMKPinoXYoErkV17QdmBsJkEA2BJrwxb8wh467mMHvf7MRganaSoAOgK05Z4DcqBE4NmyBIxDEjgCHbxmQJxTBGwLN6KS7MNcPhn+mvOeN1lQ0UQJ0ABLF6WdkUa0chx7itXAEJoAAF1vx8zGg1tUh8D4M/2KM9JgbzI2npK5OqkzFSQJ0AJzM1myUyo//vhFVkjpqYFg2UjBVEnCSwHYU1vPR9+YxW+aDcDIXHFOKDoBjGWqCOvG668NkFByByZBHp3HlRgIkUB4BXXRqnmyXFcHTmKWBGwkkSIAOQIIwGdWhBFArcA6qLKfgyij8OAPcoYh4hgS6ElBDvwJNanX42n+x60Uek0BSBOgAJEWS8fRIAGu1Dwvb5DY8cDciICcV6pEWL3pKYDdqzR7L9ZH5wYP45udGAikToAOQMmBG35lANAmdBAeI9hO4Ge2ZXG+gMx4e+UhA5+kXWST70b6/QN73EQF1zoYAHYBsuDNVEMB8AhdgPoFxeAhH45DDCPlU+ESgGU7wMozfX4rx+6t9Upy6mkOADoA5eeGtJPlagS9gJrNxgHC2tyCouA8EXsJMmkvxtf8jfu37kN1m60gHwOz88U461AqcEfZBrUAkN0D5Y70DQIVdJPAenNsnMD+/fu1vclFB6mQnAToAduab81JH46Ufegt8PkITAZa2/RwU5ggC53PdKQXb0MflXwNU8aNV/5lgibQ4pR2VcYIAHQAnstFtJaLb5SPSX67BcELtK3A+fpgIjRsJGEcAE2LKGgzfWyYHZHnwsPzBOAkpEAl0IEAHoAMM7ppPILpLjse3lE4ydC2kvQA/1gyYn20uS6hj9lejIH0adVYrggfkXZeVpW5uEaAD4FZ+eqWNLkYUOwNBXDNwIZTv6xUAKpsVgVYk/AL6qSyLjT4X48kqH5huhQToAFQIkLebQUCXKEbDwFVxM0Egn4VUdAbMyBpXpGhFX5Tn4ur9UH7MpXddyVa/9aAD4Hf+O6k9+gwcjT4DnwkjuQQP+EgoOcxJRalU2gS2o6lpVS6QZ9Gm/yu06e9MO0HGTwLVJEAHoJq0mVYmBKIpcirqA0aiduASfMVdiN7ZR2QiCBM1m0Ake/BsvICv/GelVVYFdbLFbIEpHQlURoAOQGX8eLdlBPLDC89Dd+2RKOgvgfifxI/vgWX5mJC4+MCXV+AYPothJaswXG8th+slRJbRWEGABZ8V2UQh0yKQ70j4WTgE58EhqEE6f4kf+w+kBTzbeLXz3m9h8Oth8NeiA99zATvwZZsjTD1TAnQAMsXPxE0jENXKIMj0adQJ1GD2tho0GZyL42NMk5PylESgEfm4Dr3165GP9bhjfTBXmkq6k4FIwAMCdAA8yGSqWD4B1BEHMhV9CERq0KmwBi+M1hKcjh/fnfKxpnGnVue/hj/16LSnxr5eZssWZJKe50YCJFCAAAuxAlB4igR6IhBNk6MkjJsKRsApGIGmgzMRfgR+Q3q6j9cSI7ADMW1AVf5GGPsNuo8hoL8NZsmuxFJgRCTgAQE6AB5kMlWsDoHoDjkB35vqCIzAMscjUPU8Asdnoq6Aow7KyYL2Xvkb0RSzAcvmtht67Adz5J1youM9JEACnQnQAejMg0ckkCiBuAnhThkqbWhGiGRoGMgwJDAUzsFQOAa6fyJ+vq5toHPnvw0u22HkG7DfkMM+uDRgguct8qA0oIBiFT7AcCOBNAjg/eJGAiSQFYH8sMSPIv12h0CdBHUQAjkZ53Q5ZG1W0N9h+Nm07YOwWlWvv/dQXf8mvJyG2Lirkdf99+X3HHYHEtxIICMCdAAyAs9kSaA3BKIZMhAGcwi+jIfAiA5BH4T2/3AOUKsQH8NpOArfywNwvT/iPvgb0GFfz3U9VjEOdPjt77Cv5z88jhAukP0w5rtQZ7EDX+vtBl7/4xhp70BNxw4s47wjmCHNuJcbCZCAwQT+H4OVfu7wkvt6AAAAAElFTkSuQmCC";
2594
+
2595
+ var img$9 = "data:image/png;base64,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";
2596
+
2597
+ var img$8 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAgKADAAQAAAABAAAAgAAAAABIjgR3AAAFPElEQVR4Ae2dzWtdVRTFn5o40EFTraQgFIoOI04cVOdVQZxIoP4DrSSx1o515h9QCgWtrW3UGPsxcKTYjgt+xagdONNBKCRiCEgQCYXWtcFb8l5vYnLevefsc8/vwOJ+vHfP2XutdfZ536/Xo8EADMAADMAADMAADMAADMAADMAADMAADMAADHSfgYe6n2IjGY6ql2eEEWG9kR7pJAsGXlOUC8KGcPc/rGg7J4wLtI4yMKa85oVK9Lrtqm6f7Gj+Raf1mLJfFOpEHzx3R/ebKpqtjiW/G/ErM2CCjpggRHxMgPj3lgoqQcZm+EqxV7N5mC0myNAERxsSvzKOmWA6Qx6KDPkBZb0mVOI1tcUEmdjpqRbEr0yECTIwgb3SVwnW1pblwLERXo1gADMWJnBqggORDIAJnBrAwlrGBI7ViRDa6xENYJVgJkJODLFLBr7Q/dt6EFjXLybYpUBt332PBvgOE7RNs+/+MYFvfaJEhwmi0Ox7EDPB90Ld2t3WOR4TOPNEChO86YyD4sOxzwX+ILQ16+v6xQTObIcJnAmSIhxMkIJ1Z2OaCez7AXVlu61zLAfOTLAXEzhTJEE4KUxwPEGeDLkNA2aCH4W2Sn9dv5hgG0FS3IQJUrDubEwzwU6/QlY3q0POUQmcmWCYbxOFGMCuwQSYABM480DPKsFPQuisDrmOSuDMBSlM8JYzDooP53ExELsSYAJntjMT/CyElPXQazABJuhhAkyACZx5oGfLwS9CaGkPuY5K4MwF+xKY4IQzDooPx0xwUwiZ0aHXYAJntsMEzgRJEY57E1iA7wlfC38KoeWH63xxt6PlYFKC/4HonTX9tiY4gvCdFX5zNX5bOvc1+7n4/cKXwiN9t3DQRQZeVlJ/Cd9WyZkB3hFerE6w7TwDfSZ4UOk+1/mUSXCQgVM68ZKdtB9KXBXsJUtaWQwsKd0JM4A9SKCVycC7tgTQymXgeSpAueJb5stUgLIN0MMAZRtgEQOUbYBv7DHA78LBsnkoMvslZT1hFWCxyPRJ+pgoWDcD3ICL4hg4qYyvVVk/rJ1fhc3vGrHfXT7ue0fQjPCCcBsTdH4S1IpvBrB2SPhNYPZ3k4PaD4TY28FVu6WdWeFv4R9hTHhUoOXPgM380/mnkX8G9rT7fSFmla2d+flTmV8GJv4HiJ+fcE1EjPhNsJhpHyb+WYGyn6mAw4Rt4n8YWXy+HDqMYg1ea+KfQ/wGGc2oK8TPSKymQzXxzwsx13zKftMqBvZn4n+E+IHsZX6ZvbN6AfEzVzEwfBP/YmTx+aHIQLGavgzxm2Y0o/5M/Fkh5gM+Zr4Tg5j4HyO+EzUih2Hif4L4kVl3MhziOxEiRRgm/qcCa34K9hOPaZ+emossPv8dmFj0angT/zPEr+goa4v4Zendl62JPy/EXPMp+30SpDsw8T9H/HQCpBzZxL+E+CklSDd2CvFn0qXLyJsZGNHBZSHmmo/4mxVIuG/iX0H8hAokHBrxE5LvYegzCoKy70GJBDEcRvwErDsa0n4jKdbsn3aUN6GIgScRv2wfvBLJAMx8pz6zv8lpu/wjvlPxLaynWzTAHfWN+May42bf5FkTmq4CiO9Y9MHQ3mjYAIg/yHAGx9cbMoGJP5VBvoQ4wMATOh72v30Rf4DU3A6HMQHi56b2FvGGmADxtyAz19O7MQHi56ry/8Rtf6N3Vdju6aH93Z69kETrMAMm8IKwIVRmWNH+nDAu0AphYFR5PivYm0c0GIABGIABGIABGIABGIABGIABGIABGIABGIABGMiMgX8BIPxPwjb9HfIAAAAASUVORK5CYII=";
2598
+
2599
+ var img$7 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjYtMDMtMTNUMTY6NTE6NDUrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTAzLTEzVDE2OjUxOjQ1KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU2M2VkMzE4LTY4YzgtNDBkOC1hODQzLWVhZDY2ZWEzYTEyOSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmE3NzQzN2ExLTY5M2MtY2Y0Yi1hZTRkLTZmMTg3MzgxMzNmMCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI1M2M1ZmRhLTlkYzctNGQ0MC04Y2E3LThmMTQ2MmU4OWMxNSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjUzYzVmZGEtOWRjNy00ZDQwLThjYTctOGYxNDYyZTg5YzE1IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDQ5N2Y5YmYtMWZiMi00MWJlLTg5ZGItZGFiMDZmMjEwODE4IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTYzZWQzMTgtNjhjOC00MGQ4LWE4NDMtZWFkNjZlYTNhMTI5IiBzdEV2dDp3aGVuPSIyMDI2LTAzLTEzVDE2OjUxOjQ1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4gFIalAAAEcUlEQVR4nO2SwW4aVxhG72SmBQQWDxCrbljZXqHhBbKoVLHAGBt5AxssIVyVtxnLHUUqm2RTpXHTLCJLXvAC0WRnexNcqzwAslESm2GmiworoY4sN4Z/7nzfkf6duf7gHCMMQ0VweSA9gMjCAMBhAOAwAHAYADgMABwGAA4DAIcBgMMAwGEA4DAAcBgAOAwAHAYADgMAhwGAwwDAYQDgMABwGAA4DAAcBgAOAwCHAYDDAMCxpAdI4Pu+dXx8vOJ5nq2UUrZteysrK8eWZfnS2+ZOGIYwd3Z29l2pVHqVTCY/KKXCTy+ZTH4olUqvTk9Pv5feOc8THzCvc123tbCwcD4tfvoymcyF4zjtIAgM6c0M4B5uNBpZW1tbv90mfvrK5fLLy8vLb6X3M4CvlF+tVp/fVf7k1tbW/ox7BOIDoiofJQLxAVGWjxCB+ICoy/80gqurq2+kvx8DEJAf5wjEB+giP64RiA/QSX4cIxAfoJv8yZXL5ZdxiEB8gI7y4xSB+ABd5cclAvEBOsuPQwTiA3SXr3sE4gPiIF/nCMQHxEW+rhGID4iTfB0jEB8QN/m6RSA+II7yJ7e+vv5H1CMQHxBX+bpEID5AUn6tVntWq9WeIUcgPkBSvu/7pu/7JnIE4gMk5U/+L3IE4gOk5aNHID4gCvKRIxAfEBX5qBFQvmAElUplXzoCygePgPLBI6B88AgoHzwCygePgPLBI6B88AgoHzwCyo94BBsbGy9mGQHlg0dA+eARUL5mEYxGIyuSAaDK1z0CygePgPLBI6B88AgoHzwCyo9BBJubm7//3wgoHzwCygePgPLBI6B88AgoHzwCygePgPLBI6B8gAiq1erzL0VA+eARUH4ETjICyo/ISUVwPaDdbjuUjxFBu912Pgug2+0+NgwjoHz5m0cEhmEE3W73cRiGSg2Hw3Qul3tH+dG5eUSQy+XeDYfDtHJdt0X50bt5ROC6bks1m80nlB/Nm3UEzWbziSoUCm8oP7o3ywgKhcIblclkLig/2jerCDKZzIXK5/NvKT/6N4sI8vn8W9VoNDqUr8fddwTb29u/qt3d3Z8pX5+7zwj29vZ+UoPBILu4uPg35etz9xHB0tLSX+fn5wsqDEN1cHDwI+XrdV8bweHh4Q9hGKrrB1utlnvXR+r1+lPKl42gXq8/vau3nZ2dXyZvXD8WBIHhOE47nU4Pb3sgm80OOp1OQ/oH4P17nU6nkc1mB7d5S6fTQ8dx2kEQGP8JYHK9Xu9RsVh8nUgkPk4/kEql3lcqlf1+v/9Q+kvzPr9+v/+wUqnsp1Kp99PeEonEx2Kx+LrX6z2a/pwRhqG6Cd/3raOjo1XP82zTNMe2bXvLy8snpmmOb/wAiQTj8dg8OTlZ9jzPHo/Hpm3b3urq6pFlWf5Nf//FAAgGD6QHEFkYADgMABwGAA4DAIcBgMMAwGEA4DAAcBgAOAwAHAYADgMAhwGAwwDAYQDgMABwGAA4DAAcBgAOAwCHAYDDAMBhAOAwAHAYADj/ANHMVplSsKGCAAAAAElFTkSuQmCC";
2600
+
2601
+ var img$6 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA0OTdmOWJmLTFmYjItNDFiZS04OWRiLWRhYjA2ZjIxMDgxOCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjYxMjIwYjI1LWNmZTgtNGM0NC1hOWM5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";
2602
+
2603
+ var img$5 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6MTArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjUtMTItMjdUMTM6MTE6MTkrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTEyLTI3VDEzOjExOjE5KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmMyMTU3YzU0LTZhMjEtNDkyZC1hNzczLWM1M2IzZDJmMjg3MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQxNzA1Y2Y5LTI0MTAtNzc0Yy1hNTg1LWE3OTdkNjRhZjQxMyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQ1MzliMGNhLWNiN2EtNDM4OC05MTRkLTg1MjZlNmNlMDY3NyIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDUzOWIwY2EtY2I3YS00Mzg4LTkxNGQtODUyNmU2Y2UwNjc3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2EzMTEwYjAtNTU5OS00YjE2LWJiZWUtZmNlNzdmMGMyZjQ3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzIxNTdjNTQtNmEyMS00OTJkLWE3NzMtYzUzYjNkMmYyODcxIiBzdEV2dDp3aGVuPSIyMDI1LTEyLTI3VDEzOjExOjE5KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Im3Hl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";
2604
+
2605
+ var img$4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6MTArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6MTArMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmNhMzExMGIwLTU1OTktNGIxNi1iYmVlLWZjZTc3ZjBjMmY0NyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZiM2RiMmI0LWVlYTQtODE0YS04ZTRlLWU1YzM0NTNkYzAxOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQ1MzliMGNhLWNiN2EtNDM4OC05MTRkLTg1MjZlNmNlMDY3NyIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDUzOWIwY2EtY2I3YS00Mzg4LTkxNGQtODUyNmU2Y2UwNjc3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2EzMTEwYjAtNTU5OS00YjE2LWJiZWUtZmNlNzdmMGMyZjQ3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz64vXmkAAAGMUlEQVR4nO2dTUwUZxjH3wGWhCCVdbayBkOi7cUmyLKAgcajdGu8mGYVEBSRL2X7edZDk3rpCcHdLd1+t1ZoJ7GXpuHjqqEf1rI9cJE2IYHwscMua9tsyOK8PVQbipGiOzPP+87z/JNfwol55vn/MpuF2VmFc84oeJMHPQAFNiQA8pAAyEMCIA8JgDwkAPKQAMhDAiAPCYA8JMA2ks1mXfF4vGp+fr4cehazQwJskRs3brxSW1t7e8eOHX/6fL6pvXv3znm93sW2trZrS0tLZdDzmRLOObGJVCpV2tLScp0xxh+Hqqq6pmlB6FlzBXwA0VhZWdlVXV19Z6vyH6IoihGNRi9Az0wCAJTvFAnABxCFpynfCRKADyACuZQvuwTgA4jA0aNHv8ulfJklAB8Amlgs1m1G+RsliEQifdDnRQJsA8MwFLfbnTRTANkkAB8AkpmZmefMLl82CVD/JTAej1dZ9bs550ooFIpEo9E+q45hRlAL4HK5slYfQ3gJoC9BkMzOzlYwi14CNiPqywH4ANB4vd4FzBKADwDN8PBws10CMMZ4OBwOQZ8zCbCJ48ePf4NVAvABRGB1dXXnoUOHfsAoAfgAooBVAvDFiwRGCcCXLhqrq6s76+rqfsQiAfjCRQRCgqtXr75KAghEKpUqra2t/cnpEoAvWmQwSAC+ZNFxugTgC5aBVCpVWlNTc9uJEoAvVxaSyaTbiRKAL1YmICQYHBx8jQQQiGQy6fb7/T87RQLwhcqIkyQAX6asJJNJd66fJRBBAvBFyowZHyiBlgB8ibIjuwTgC3QCKysru3w+3y8ySgC+PKcAIcHAwMDrJIBA6LquyiYB+NKchq7ralVV1ZQsEoAvzInIJAH4spyKLBKAL8rJ6LquHjx4MC6yBOBLcjqJRMJjtwRXrlx5gwQQiEQi4amsrPxVRAnAl4MFUSUAXwwmRJTgkQEvXbr0TiAQGPV4PAk7ByVgJPj3B03Tgrt3716CHpawVwLGOWcjIyNN0AMS1tPf3//mIwIsLCx4VVXVoYcjYCTId7lcFycmJl5iFBQZGxt7ubS0NF1fX/89Y4yxI0eOTDABzCTsZXR0NMA5Z4wu/zipqKiYvXfvXkl+JpN5l1HQJZ1O7ywuLv4rnzH2NvQwFJgUFRVlFPbPJYGCMHv27FlA/aRQCvJHxWKP3++/QwIgTkNDwyTbt2/f70yAtyUEzNvAPL/ff4dR0CUWi/WUlJT8kXf48OGb0MNQ7E1/f/9bgUBgjDHG2NraWuGBAwemmQCXJcJ6Nv8ziHHO2a1bt14sKCjIQg9H2Fv+f24ImZycrN+/f/9v0EMS1rDlDSEPSafTz1y+fPnisWPHvqW7g5zDtm4JI6zHMAzl/Pnz74lSPglgc/m9vb1DIpVPAiAvnwSwqfyenp73RSyfBLCh/O7u7pid5dOHQwXBMAylq6vrA5HLJwGQl08CWFR+Z2fnhzKUTwJYUP65c+c+kqV8EsBE7t+/n9fR0fGxTOWTACaWf/bs2U/sLJ8eFCkIMpdPAphQfnt7+6eylk8C5Fj+mTNnPpO5fBIgh/JPnz79uezlkwDIyycBnqL8tra2L5xSPgnwBKyvr+e3trZes7N8+to4QVhfX88/derUl04rnwRAXj4JsI3yW1parju1fBLgf8pvbm4ednL5JMAW5Tc1NY04vXwSQJDyw+FwCOp8wRcuEtlstuDkyZNfYSmfBNhU/okTJ77GVD4JgLx8EuABoVAojLF8EoBzNj4+3oi1fBKAc1ufkRSJRPqgz5cE2MDc3Fw55vI557ifEzg1NeWz4ziRSCTU19cXteNYTxrUAmQymSKrjyFy+Ywx3C8Bd+/efZ5ZdMlXFMUQ9bK/EfABIDEMQ3G73Ums5aMXgHPOhoaGerGWTwI8oLGxcdys8qPR6AXo8yEBnpDl5eVnc/1GTxnLJwFMkkDW8kkAEySQuXwSIEcJZC+fBHgMuq6rwWBQ26p8VVV1TdOC0LOSABaiaVqwpqbmdmFh4drD4svKyhZbW1uvLS4ulkHPZwYK55xRtk42m3VNT0+/4PF49PLy8nnoecwMCYA8qP8ZRCEB0IcEQB4SAHlIAOQhAZCHBEAeEgB5SADk+RuHo3dOeiRkRQAAAABJRU5ErkJggg==";
2606
+
2607
+ var img$3 = "data:image/png;base64,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";
2608
+
2609
+ var img$2 = "data:image/png;base64,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";
2610
+
2611
+ var img$1 = "data:image/png;base64,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";
2612
+
2613
+ var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAOw4AADsOAFxK8o4AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzt3XuQXGd95vHn190jGY9sXUYCzIyme6YHSbtDuGQc2yGbje14XSELWxAgNjH2unaDbeyE29rZLCQh3EIWKw6FDcYYFhYTO2LZCkslhAoXQXY3yNgyLEZEY09Pd49GYGHGus3Ikqb7/PYPyYWNNbpMzzlvd7/fT5Wr+APm95Tnpc8z7zn9HgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgPZloQMAp1IqlZ6fc7/UzC70RJvMfFiyPkkrjv9XZiWfcbdJy2mnS9sSaWutVnssZG50B9YfuhUFAG1pU39/33y+5yqZXy3Z+Yv6IaYHlNg9Pc2j9+7cvXtmiSOii7H+EAMKANrKSP/IgPc0bpbrTZLOXoqf6dJcznV3LmlsfmR6evdS/Ex0J9YfYkIBQFsYGxvr2fv4zI1m/n7JVpz6f7Eoh8x0qwqFD05MTBxJaQY6EOsPMaIAILihoaGN+cS3uPSSLOa59D3lc1dMTk4+ksU8tDfWH2KVCx0AcRsuFl+bS5IHs/rwlSSTXmrN5MFysfiarGaiPbH+ELN86ACIV7lUutakz0p2VoDxyyV73erVq36yd9++BwPMR2CsP8SOAoAgyqXS9XJ9UrKQu1A5k165ZuXqJ/bu3/edgDmQMdYfQAFAAMPF4mtN9mm1yy0o0+VrVq/6/t59+3aGjoL0sf6AY3gIEJkqD5RHlG9ul3Ru6CzP5LNNs1+q1Wp8CHcx1h/wM+3RgBGF0dHRZZZvfkFt9+ErSbYi77p3bGysJ3QSpIP1BzwTBQCZeXJu7h1ZPm29CC/b99Mn3ho6BNLB+gOeiVsAyMSGgYH+Rr4wblJv6Cwn57MNaUO9Xv9x6CRYOqw/4NnYAUAmmoXCLe3/4StJtiKv3M2hU2Bpsf6AZ2MHAKnb1N/fN1/omdISna2eNpfmljXmi7zApTuw/oATYwcAqZvP91ylDvnwlSSTehuFwpWhc2BpsP6AE6MAIH3mV4eOcMbcrgkdAUuE9QecELcAkKpisXheQbZbnbfWPMnZedVqdU/oIFg81h+wMHYAkKq8dIk678NXkiznfnHoEGgN6w9YGAUAqTKzC0NnWCxLdFHoDGgN6w9YGAUAqfJEm0JnWCw3bQydAa1h/QELowAgVWYaCZ1h8fyFoROgNaw/YGEUAKTKpFWhM7Sgk7NDrD/gZCgASJVLK0JnWDw7J3QCtIb1ByyMAoC0LQsdoAXLQwdAy1h/wAIoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAgAAQIQoAAAARIgCAABAhCgAAABEiAIAAECEKAAAAESIAoDUjIyMnBs6Q4uOhA6Alh0NHaAVGzduPCd0BnQvCgBS40d8MHSG1vjB0AnQso7+HTaffHJ96AzoXhQApMZyjctDZ2iFyzr64gFJ0mzoAK1IlPs3oTOge1EAkJa8y/5j6BCtsA7/6xGSTAdCR2iFmf+upHzoHOhOFACkojxYuknSvwydozXsAHQ87+wdAMleNFIs3hA6BboTBQBLbnhw+DKZNofO0Trv6L8eIck7ewdAklx22/Dg4K+HzoHuQwHAUsqXB0tvMUu+LKkndJhWmVQLnQEtq4UOsASWmeW+XC4O/Z64HYAlVAgdAJ1tdN3oisNnHS5ZrnH58Xv+Hb7t/zOJazx0BrTGchp3D51iSSyT/PZysXSDmT7lzfxXzzp8Vm3H4zs6/BYHQuqIAlAqlZ6fc7/UzC70RJvMfFiyPkkr1AV/aXayw5qTJLkscJKlZzkKQKdL3Metu9bmqLtuU66pw2fPqVwshc4Tu3lJs5LPuNuk5bTTpW2JtLVWqz0WOtyptO3/Mzb19/fN53uukvnVkp0fOg/iU5APj9fr1dA5sHgj69eXPZefCJ0DETI9oMTu6WkevXfn7t0zoeOcSNsVgJH+kQHvadws15sknR06D6J1uFKv9UpKQgdBS/LlYmlO0vLQQRAnl+ZyrrtzSWPzI9PTu0Pnebq2eQhwbGysZ7hU+sOk0Ngp11vFxR9B2Q5x8e8GTUk/DB0C8TKp101va+QL4+XB0h+MjY21zW3rtigAQ0NDG/f/dOYBc33QpN7QeQAp2Ro6AZaGy/hdIjiTemX6r3t/OvOd4eHhDaHzSG1QAIaLxdfmkuRBl14SOgvwNN8IHQBLxCkAaB8mvdSayYPlYvE1obMELQDlUulak/5ashUhcwDP5I3CWWf9n9ApsDR6ntPzLckboXMAT3OOZP9juFQKespjsAJQLpWul+vTknXEVxERk9z94+PjHAPcJcbHxw+6bHvoHMDPyZvrzvLg0O+HChCkAAwXi6+V66MhZgOnlrD932VM9rXQGYATMv/Lcqn06hCjMy8A5YHyiMn+mzjSEu0qKXw+dAQsLfPmfaEzAAvIy/2eUqm0KevBmRaA0dHRZZZvfkHSuVnOBU6fba/sqvwgdAosrYmpqR0ufS90DuDEbEXedW/WXxHMtAA8OTf3Dp72R1tz/2zoCEhHTn5P6AzASbxs30+feGuWAzM7CXDDwEB/I18Y53v+aGPzKuQHKpXKT0IHwdIbGhp6Xi5JpnnwGO3LZxvShnq9/uMspmW2A9AsFG7h4o925qavcPHvXtVqdY9k/xA6B7AwW5FX7uaspmVSADb19/cdP9sfaFvm/pehMyBd7sltoTMAJ+fXb+rv78tiUiYFYD7fc5U42x/tbVulXufEuC43OTX1dUn/FDoHsBCTehuFwpVZzMrmFoD51ZnMARbN3xs6AbJhbn8eOgNwUm7XZDEm9YcAi8XieQXZ7ixmAYvh0vcm67VfPPYfEQErF0sPSvrF0EGABXiSs/OOPbeSntR3APJmF4uLP9qYmd4jLv4xcXYB0OYs535x2kNSLwAmXZT2DGDx7OuVWu2LoVMgWxNT1S9I+lboHMBCLEn/2pl6AfBEmR9vCJymozklwV7EgaDcPLlR0nzoIMCJuGlj2jPS3wEwjaQ9A1gMd/3Fo/X6P4fOgTAmpqZ+KPmHQ+cATsxfmPaELG4BrEp7BrAIUyuOPPmB0CEQ1pPz838qqRY4BnAiqV87078FIK1IewZwhlym67+/Z89c6CAI60c/+tEhl/+eeAgUbcfOSXtC5q8DBkIz04cqtdpXQudAe5is1/9OMk4IRHSyuAUwm/YM4HS5dP/Kvr4/Dp0D7WV9vfqH4oRAtBU/mPaELG4B7E17BnCaZqyQf/327dt58hvP8E2pkeTsd8TnFdrHvrQHpH8LwDWR+gzg1Jouv6ZSqewKHQTtqVqt1i2xayUlobMAkj2a9oT0C0BO46nPAE7FdNNkvf7l0DHQ3iZ2Vb9kcs6GQHDm6V87s7gFsC3tGcDJuOvdlVrtrtA50Bkm6vWPmYmXQyEw+3baE9IvAGbfEF+xQSiuuyananyY44xM1Grvlvz20DkQLW/m0z+qOvUCUK1W98j0YNpzgGdxbalM1W4KHQOdqVKvv12mz4fOgSjdn/abAKWszgFI7J5M5gDHmfTp9VO1N0pqhs6CjtWs1Gq/I9fHQwdBXEyeyTUzkwLQ0zx6r0ucuoZMuOtPJ+q1//BNqRE6CzpeszJVezPPBCArLs0VGo0tWczKZzHkpwcPPtm3ctU6Ga8GRqqabrppsl77i9BB0F2e2Lfvm32rVj4u2SskWeg86F4mu/3RXVP/K4tZmR0FnEsam9kFQIpmXP7vJms1tmuRiol6/WPm9mqTngidBV3rYNN8c1bDMtkBkKSZAwcOrl65qmmmy7KaiUiYHijIL5+o1x8IHQXd7Yn9+x5ZvbbvPiW6QNJg6DzoNv6uar3+1aymZfoyoNXr+m6T9N0sZ6KruUwfWl+rvXy8Xq+GDoM4VCqVXavWrrlE8s3iK85YOg+tWrv2I1kOzPxe1vDw8AZrJg9KSv1Vh+hqdZlu4K1+CGm4WPxNk90pdgPQmgNq5scq05VMj87P7BbAU/bu3TuzZtXKnZK9TryOGGfuqLs+dLhx9IqpXbv+OXQYxG3v/v2Prj9r+d2Nnp68pAsV4DMVHa9piV1ZmZ5M/eS/nxfsadby4NB1Mud4VpyJb5knN01MTe0IHQT4ecMDwy9ULrnDTJeHzoKO4Sa7bqJe/WSI4UG/znK8BHxMtGac3EMyva9Sq30xdBDgVIaLxd8y2R9JelnoLGhrTbm9uTJVvTtUgODfZy2XSq+W67PimQA8i/1fKflApV7/+9BJgDNkx58PeKekl4cOg7ZzwBK7emJX9UshQwQvANKxrTPLJ1tEY4a8YdJXXLqtUq9vDZ0GaFW5WLzEpHe49BuSFULnQXAPqZm/IusH/k6kLQqAJF0sFaYGSzeZ6X1iNyBGP3TXZz1vn8niJRhA1gYGBtYsz/W8TqZrJP+V0HmQuUNmunV5b++f7dix42joMFIbFYCnFIvF8/KyWyRdZ1Jv6DxIizck+46ZvqYk2TIxNfXD0ImArIwMDo662RWSXSb5L7Ez0L2OnYBrdyXmt9ZqtcdC53m6tisAT9nU3983X1j2Bpe/0aQL1MZZcVqOSP6wpG+6tPU5h1b8447Hd8yGDgWEtnHjxnPmDx/+VVPuUkkXS/4iScsDx0JrXNL9Jv/c4Wbzvunp6bY8ProjLqrlcvm5ajYvsUQXuWmTpCGT1rm0QtKy0Pkid9SkWZf2mXTQZbOSHzSpmrjGLafxgvv4eL1el5SEDgt0gPyGwcFiM5fb4NImS7RRppKkc03qdekck1bx+dcWnvr8e1xS1Vw7Padtyue3ViqVn4QOBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgPZmoQOcjlKp9Pyc+6VmdqEn2mTmw5L1SVohqSd0vsgdlTQnaa9Mc3LNybVfUs3MH0mknbkkGZ/YtasmqRk0KdAZ8uWB8pDnGxty0iZ32yCpJNNKmXrl6pW0WlKvpGVho0ZvXtKs5DPuNmk57XRpWyJtrdVqj4UOdyptWwA29ff3zed7rpL51ZKdHzoPWnZU0g9c9k25bc0ty/3jxMTEgdChgNBGRkbO1dHmryXml5h0saRRcWHvfKYHlNg9Pc2j9+7cvXsmdJwTabsCMNI/MuA9jZvlepOks0PnQVq84bLtJvu6N+2vJ6cnHw6dCMjK0NDQi63pV8p0qUnnS8qHzoR0uDSXc92dSxqbH5me3h06z9O1TQEYGxvr2fv4zI1m/n7JVoTOg8z90F2fTXL6752wdQacqYGBgTXLcz2vk+kayX8ldB5k7pCZblWh8MGJiYkjocNIbVIAhoaGNuYT3+LSS0JnQWjekOwf3JPbJqemvh46DdCq4cHhy8ySt0t+uWSF0HkQlkvfUz53xeTk5COhswQvAMPF4mtN+gx/9eMEtpnbn01MVf9WkocOA5wBG1k/9Kok5+806cLQYdB2Dkr+7yv1+t+EDBG0AAyXSjeY6w5x/wsnYdL/k9sHJqaqXxBFAO3NyqXSb0t6l1y/EDoM2lpTbjdWpqqfCBUgWAEol0rXy/XxUPPRgUz/W838jZVdlR+EjgL8vKGhoY25JLlDsstCZ0EHcXtLZap6e4jRQQrAsW1/2yL+8seZm5f8w72HD7/n+3v2zIUOA4yuG11x+OxDfyr5W8S5JDhzTZleV6nVvpj14MwLwPGW/CD3/NES1y43f/Nkvf53oaMgXsODw680a94p2UDoLOhoB72ZG5ucnnw0y6GZFoDR0dFlR2bnvsPT/lgiLtltq9au+S/bt2+fDx0G8RgdHV325Ozcn5v0NrXBw9ToCt9dtbbvwiw/yzLdgj+nt/cWSVdlORNdzSS9/PChQ69Yt3Ll12f2798bOhC63/Dw8GDzyNG/Nen14uKPpXPe4UOHD+zdv++fshqY2eLdMDDQ38gXxu3Y+dXAUttriV07sav6pdBB0L3KpdKr5fq0pFWhs6Ab+WxD2lCv13+cxbRcFkMkqVko3MLFHyla7Tn/4kix+I7QQdCdRorFm+T6n+Lij9TYirxyN2c2LYshm/r7++YLPVPibH9kwEzvnajV3h06B7qGlYtD75P8XaGDoPu5NLesMV/M4gVCmewAzOd7rhIXf2TEXX9SHix9+mKJY1fRqnx5sHQnF39kxaTeRqFwZRazsrkFYH51JnOAp5iu3VUq/ZU4awKLly+XSvfJdH3oIIiM2zVZjEn9FkCxWDyvINudxSzgWUyfqNRqfIDjTFm5WLxLsjeFDoIoeZKz86rV6p40h6S+A5CXLhEXf4Tium6kVHpP6BjoLOXi0Pu5+CMgy7lfnPaQ1AuAmfEmLATlrj8ZKRZvDJ0DnaE8OPT7kr8zdA7EzRJdlPaM1AuAJ9qU9gzgVFx2+8jg0KtC50B7K5dKr5b5h0PnANzSv3ZmsAOgkbRnAKchJ/PPDA0NFUMHQXvaWCwOHT/kJ7PzUYCFeerXzvQLAIdmoE24tCbf9M+Pjo4uC50F7WVsbKynIfsr8XmF9pH6Wkz/FoDEW//QNtx0weHZ2feHzoH2sv/xmQ9J+uXQOYCfsXPSnsBWFyJkNw8Xi78ZOgXaw8jg0Kvc9NbQOYCsZXELYDbtGcAZMnP7+Oi6UXanIveCF7zgbDe/XXxVGW3HD6Y9IYtbALyiFe3HtP5I79wfhY6BsJ7Ts/y9kngwFO1oX9oD0i8ArkraM4DFcNfbX1gs/ovQORDGyODgqORvCZ0DODF7NO0J6d8CyGln2jOARVqWyD4qtn9jZJ7L3SmpJ3QQ4ETMNZ72jCxuAWxLewbQgkuGi8XXhA6BbJVLpd+W61dD5wAWZt9Oe0L6BcDsG5I87TnA4tkfi12AmJgkXu+LdubNvL6V9pDUC0C1Wt0j04NpzwEWy6SX8rXAeIysH3qVXL8QOgdwEven/SZAKatzABK7J5M5wCKZjG8ERMJz/p9DZwBOxuSZXDMzKQA9zaP3ujSXxSxgkS4qF4uXhA6BdA0PDl8m6eWhcwALcWmu0GhsyWJWJgVg5+7dMznX3VnMAhbLpHeEzoB0mSVvD50BOBmTfXzn7t0zWczK7CjgXNLYzC4A2plLv1Eul58bOgfSUSqVni/55aFzACdxsGm+OathmRWAR6and8v1vqzmAWfOCj7ffEPoFEhH3v0qyQqhcwAL8/fUarXHspqW6cuAVq/ru03Sd7OcCZwJM10TOgPS4bI3hs4AnMRDq9au/UiWAzP/7nN5oDyifHO7pHOzng2cDm/mXjw5Pflw6BxYOuX15Rcp1+R3ijbls0kud361Wk399L+ny/x1wJXpyoTk10pqZj0bOB2Wb74+dAYssVzCrR20q6YluauyvvhLAQqAJFXq9b+R240hZgOnZr8eOgGWlrlfFjoDcAJushsmdlW/FGJ40ONPy6XStXK/mwdz0F68YT09fRMTEwdCJ0HrhoeHV1ozmZGUD50FeJqmTDdVarW7QgUIsgPwlEqt9hmZvV7SwZA5gGeyQjI//69Cp8DSyDX8X4uLP9rLAUvst0Je/KXABUCSKrXaF72ZGxPfDkAbMeUuDZ0BSyMx54RHtJOH1MyPhdr2f7rgBUCSJqcnH121tu9Cyf5A8tnQeQBJF4cOgKVh/C7RHg5KfvOqtX0XHXsYPry2ewVqsVg8Ly+7RdJ1JvWGzoNoHa7UayvEt1U6Xb5cLB2StCx0EMTp2Am4dldifmuWh/ycjrYrAE/Z1N/fN19Y9gaXv9GkC9TGWdGd8p6UH5mamgydA4t3/NyRR0PnQHRc0v0m/9zhZvO+6enpJ0IHOpG2ffr++MsQ7pB0R7lcfq6azUss0UVu2iRpyKR1Lq0QzR4paZptlEQB6GCeb2w0/nZAeo6aNOvS45Kq5trpOW1TPr+1Uqn8JHS4U2nbAvB0x/9Fbjn+D9rIi5/3vN5Dy5eXEuUuM/PflexFoTMtFT9WAP4+dA4sXk7a6KFDLCXTw57oUzklXzv7yJHa9/fs4QVrWLSOKABoX8c/gHYc/+eOkWLxBpfdpi7Ymcm5NoTOgNa424Yu2QA44qa3Tx772lgSOgy6Q1t8CwBdozlRr39U8ldIOho6TKtcKoXOgJaVQgdYAkckf8VkrXanuPhjCVEAsOQq9fo3JPtPoXO0znhhVaezzn/pmJveVqnXt4bOge5DAUAqKvXqnTp2W6CD+TmhE6BVHf47ND08Wat9InQMdCcKANLSNNOnQodohUudffGAJOvs32GiT4ptf6SEAoDUeDP/1dAZWmGd/tcjpGNfFe5YpuRroTOge1EAkJrC2YV66Ayt6fC/HiF1+C7O8ifPmQqdAd2LAoDUjI+Pd/pbHpeHDoCWdfTXUXc8voN3oyA1FAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAEAACBCFAAAACJEAQAAIEIUAAAAIkQBAAAgQhQAAAAiRAFA2o6GDtCCI6EDoGWsP2ABFACkyqTZ0BkWzw+GToDWsP6AhVEAkCqX9obO0IJ9oQOgNaw/YGEUAKTKXZXQGRbPHg2dAK1h/QELowAgVZbTztAZFstc46EzoDWsP2BhFACkyqVtoTMsnn07dAK0hvUHLIwCgFS52Tckeegci+DNvL4VOgRaw/oDFkYBQKqq1eoemR4MnWMR7q9Wq3tCh0BrWH/AwigASF9i94SOcKZM3nGZsQDWH3BCFACkrqd59F6X5kLnOF0uzRUajS2hc2BpsP6AE6MAIHU7d++eybnuDp3jdJns4zt3754JnQNLg/UHnBgFAJnIJY3NHfJX2MGm+ebQIbC0WH/As+VDB0AcZg4cOLh65aqmmS4LneXk/F3Vev2roVNgabH+gGdjBwCZWb2u7zZJ3w2d4yQeWrV27UdCh0A6WH/AM1noAIhLeaA8onxzu6RzQ2d5Jp9Ncrnzq9Uqp691MdYf8DPsACBTlenKhOTXSmqGzvI0TUtyV/Hh2/1Yf8DP8AwAMrd3//6da1aufkymV4XOIslNdv3EVPW+0EGQDdYfcAwFAEHs3b9v+5rVq+qSv1KyUDtRTZlurNRrHfMVMSwN1h9AAUBAe/ft+96a1asflvRvJS3PePwBS+zKylTt3oznok2w/hA7HgJEcMMDwy+0fLJF0ssyGvmQmvkrjt0PRuxYf4gVDwEiuMnpyUfX12sXuOttkg6mOOqQmd5z1oreX+bDF09h/SFW7ACgrRSLxfPyslskXWdS71L8zGMnwNldifmttVrtsaX4mehOrD/EhAKAtrSpv79vvrDsDS5/o0kX6MzXqku63+SfO9xs3jc9Pf1ECjHRpVh/iAEFAG2vXC4/V83mJZboIjd57bs/AAAAc0lEQVRtkjRk0jqXVkiSSbMuPS6paq6dntM25fNbK5XKT8ImRzdg/QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGTv/wOu+ePVoRgqvwAAAABJRU5ErkJggg==";
2614
+
2580
2615
  /**
2581
2616
  * Gets the MIME type for preview rendering
2582
2617
  */
@@ -2686,7 +2721,7 @@ const FilePreviewModal = ({ file, isOpen, onClose, }) => {
2686
2721
  const fileName = file instanceof File ? file.name : file.split('/').pop() || 'file';
2687
2722
  const canPreview = canPreviewInWeb(file);
2688
2723
  console.log('Modal rendering - fileName:', fileName, 'canPreview:', canPreview, 'previewUrl:', previewUrl, 'previewType:', previewType);
2689
- const modalContent = (jsxRuntimeExports.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black bg-opacity-75", onClick: onClose, style: { position: 'fixed', zIndex: 9999 }, children: jsxRuntimeExports.jsxs("div", { className: "relative bg-white rounded-lg shadow-xl max-w-7xl max-h-[90vh] w-full m-4 flex flex-col", onClick: (e) => e.stopPropagation(), children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900 truncate flex-1 mr-4", children: fileName }), jsxRuntimeExports.jsx("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 rounded p-1", "aria-label": "Close preview", children: jsxRuntimeExports.jsx("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-auto p-4 bg-gray-50", children: !canPreview ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsxs("div", { className: "text-center", children: [jsxRuntimeExports.jsx("svg", { className: "mx-auto h-12 w-12 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z" }) }), jsxRuntimeExports.jsx("p", { className: "mt-4 text-sm text-gray-500", children: "Preview not available for this file type" })] }) })) : previewType === 'image' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("img", { src: previewUrl, alt: fileName, className: "max-w-full max-h-full object-contain" }) })) : previewType === 'pdf' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "h-full min-h-[600px]", children: jsxRuntimeExports.jsx("iframe", { src: previewUrl, className: "w-full h-full border-0", title: fileName }) })) : previewType === 'text' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "bg-white rounded border border-gray-200 p-4 h-full min-h-[400px]", children: jsxRuntimeExports.jsx("pre", { className: "whitespace-pre-wrap break-words text-sm text-gray-800 font-mono overflow-auto h-full", children: jsxRuntimeExports.jsx(TextFilePreview, { url: previewUrl }) }) })) : (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("div", { className: "text-center", children: jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500", children: "Loading preview..." }) }) })) })] }) }));
2724
+ const modalContent = (jsxRuntimeExports.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black bg-opacity-75", onClick: onClose, style: { position: 'fixed', zIndex: 9999 }, children: jsxRuntimeExports.jsxs("div", { className: "relative bg-white rounded-lg shadow-xl max-w-7xl max-h-[90vh] w-full m-4 flex flex-col", onClick: (e) => e.stopPropagation(), children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900 truncate flex-1 mr-4", children: fileName }), jsxRuntimeExports.jsx("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 rounded p-1", "aria-label": "Close preview", children: jsxRuntimeExports.jsx("img", { src: img$c, alt: "Close Preview", className: "w-6 h-6" }) })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-auto p-4 bg-gray-50", children: !canPreview ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsxs("div", { className: "text-center", children: [jsxRuntimeExports.jsx("img", { src: img$b, alt: "Preview not available", className: "w-24 h-24 mx-auto mb-4" }), jsxRuntimeExports.jsx("p", { className: "mt-4 text-sm text-gray-500", children: "Preview not available for this file type" })] }) })) : previewType === 'image' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("img", { src: previewUrl, alt: fileName, className: "max-w-full max-h-full object-contain" }) })) : previewType === 'pdf' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "h-full min-h-[600px]", children: jsxRuntimeExports.jsx("iframe", { src: previewUrl, className: "w-full h-full border-0", title: fileName }) })) : previewType === 'text' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "bg-white rounded border border-gray-200 p-4 h-full min-h-[400px]", children: jsxRuntimeExports.jsx("pre", { className: "whitespace-pre-wrap break-words text-sm text-gray-800 font-mono overflow-auto h-full", children: jsxRuntimeExports.jsx(TextFilePreview, { url: previewUrl }) }) })) : (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("div", { className: "text-center", children: jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500", children: "Loading preview..." }) }) })) })] }) }));
2690
2725
  // Render modal using portal to ensure it's at the document body level
2691
2726
  if (typeof document !== 'undefined' && document.body) {
2692
2727
  console.log('Rendering modal via portal to document.body');
@@ -2846,10 +2881,6 @@ const deserializeValue = (value) => {
2846
2881
  return value;
2847
2882
  };
2848
2883
 
2849
- var img$1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjYtMDEtMDJUMTY6NTA6MDQrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjljMDI0ZTVhLWJiMWItNDBiMi05NThmLTg5YjExMTE5NGI4MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjMzZDZiMTBiLTQzNjYtYTc0Ny1iOTZlLWI4ZTBhZjQxMTkzOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI1M2M1ZmRhLTlkYzctNGQ0MC04Y2E3LThmMTQ2MmU4OWMxNSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjUzYzVmZGEtOWRjNy00ZDQwLThjYTctOGYxNDYyZTg5YzE1IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDQ5N2Y5YmYtMWZiMi00MWJlLTg5ZGItZGFiMDZmMjEwODE4IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OWMwMjRlNWEtYmIxYi00MGIyLTk1OGYtODliMTExMTk0YjgxIiBzdEV2dDp3aGVuPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7pSLHQ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";
2850
-
2851
- var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAkCAYAAACe0YppAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAJAAAAAAh0JciAAACrUlEQVRYCcWXPW8TQRCG31kbpNBChGiiRJQ0tFDggPgBtKGhJgEJUGxDFCmJUBKwDUoV2jRxS2NEhZCgAPELKBAhIPFRpKIwUXIe3vFHFJzbs2zWupHWu7e7M8/OenbuVkDReUzoLjbZvGDP/ysiWJQSlpLsiN7HOBp4rco6oBC+Svicz2QWERYULSjh605Q3dvHnk/B138sg1EV1DrjtPVAC9j1eS6NPD5x8lko3rgKch3FfmvbOY2w1a3n89xxlWdsMuvP3UqDPhO2xPLF9NueL3Tbct0dIZ4jJdTh8iH4Irf9H/hQwLZ4edSCs7ltz/Tc4CvWNhka2IwbXDKYZLMDt4Brep61CUFE8Jt26iwj9KbcKGDW7GrDfnGi+csf8zwqoh7MY1nFjhLYBpziKTl3UIDRDthqp5gJ5zENZsrMCXlscQE3DoMO2sJ8wURFr08GBRtAythgZeWIRAVsSDtZBdvqI5QeHamBE7c6yqPKJND/G0sZvIqXmQpmfI57wVrEGI/CFINhIOGCp3lml/mS+B5nwAuWx/iqs5hnDr8ap9ijT7noF+5JPNR0vWAblAqWWVkJLqkFV2rgxK1mVG8ySC4Oss/NqC5j2qfrBdf5RSERrg8c1cBNvYOHsoYfcXAveISvNHpcZIrLxSkm9rXO8SvngZquF2yDTPolVlaCS2rBlRo4cav56fscgvNJ+8wYqDEt3k6aEzfmBVtU82P/Wq+oZiq/pfdQkqf4Fgfw9XnBFtXM1XeZq73nmGPK68871yfUFuMF2yBz9RorK8ElteDiHY2blYI4/ks7xuUCxofNJ2OizfiZZVTW2GGfKJNMkc9cFlUu5k/QRQiOYx9TfHFcMrtkvhWdw2l2fmDnWFCY39i2XWucrOAXb1A5ruKjf26wkfeEXrE71V+iV9IhdJQEvwAAAABJRU5ErkJggg==";
2852
-
2853
2884
  const FileInputWidget = ({ config }) => {
2854
2885
  const { value, error, touched, isEnabled, onChange, onBlur, config: widgetConfig, } = useBaseWidget({ config });
2855
2886
  const { translate, translateConfig } = useWidgetTranslation();
@@ -3044,7 +3075,7 @@ const FileInputWidget = ({ config }) => {
3044
3075
  const fileName = file instanceof File ? file.name : file.split('/').pop() || file;
3045
3076
  const canPreview = canPreviewInWeb(file);
3046
3077
  console.log('Single file:', fileName, 'canPreview:', canPreview);
3047
- const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img, alt: "File icon", style: {
3078
+ const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img$e, alt: "File icon", style: {
3048
3079
  width: '15px',
3049
3080
  height: '18px',
3050
3081
  aspectRatio: '5/6',
@@ -3066,7 +3097,7 @@ const FileInputWidget = ({ config }) => {
3066
3097
  return (jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-2", children: files.map((file, index) => {
3067
3098
  const fileName = file instanceof File ? file.name : file.split('/').pop() || file;
3068
3099
  const canPreview = canPreviewInWeb(file);
3069
- const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img, alt: "File icon", style: {
3100
+ const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img$e, alt: "File icon", style: {
3070
3101
  width: '15px',
3071
3102
  height: '18px',
3072
3103
  aspectRatio: '5/6',
@@ -3108,7 +3139,7 @@ const FileInputWidget = ({ config }) => {
3108
3139
  fontWeight: 400,
3109
3140
  lineHeight: '24px',
3110
3141
  textAlign: 'left'
3111
- }, children: translate('common.uploadFile') || 'Upload File' }), jsxRuntimeExports.jsx("img", { src: img$1, alt: "Upload", style: {
3142
+ }, children: translate('common.uploadFile') || 'Upload File' }), jsxRuntimeExports.jsx("img", { src: img$d, alt: "Upload", style: {
3112
3143
  width: '18px',
3113
3144
  height: '18px',
3114
3145
  aspectRatio: '1/1',
@@ -3219,6 +3250,60 @@ const namespaceSectionConfig = (section, namespace) => {
3219
3250
  return namespaced;
3220
3251
  };
3221
3252
 
3253
+ const collectWidgets = (panels) => {
3254
+ let widgets = [];
3255
+ panels.forEach((panel) => {
3256
+ if (panel.widgets) {
3257
+ widgets = [...widgets, ...panel.widgets];
3258
+ }
3259
+ if (panel.panels) {
3260
+ widgets = [...widgets, ...collectWidgets(panel.panels)];
3261
+ }
3262
+ });
3263
+ return widgets;
3264
+ };
3265
+ const sectionValidate = (section, currentSchemaData, dispatch) => {
3266
+ const allWidgets = collectWidgets(section.panels);
3267
+ let isValid = true;
3268
+ for (const widget of allWidgets) {
3269
+ const isVisible = shouldShowWidget(widget['widget-data-options'], currentSchemaData);
3270
+ if (!isVisible)
3271
+ continue;
3272
+ const widgetId = widget['widget-id'];
3273
+ const value = getWidgetValue(currentSchemaData, widget['widget-data-path'], widgetId);
3274
+ const errors = validateWidget(value, widget['widget-data-validation'], widget['widget-required']);
3275
+ if (errors.length > 0) {
3276
+ isValid = false;
3277
+ dispatch(setTouched({ widgetId, touched: true }));
3278
+ dispatch(setError({ widgetId, errors }));
3279
+ }
3280
+ else {
3281
+ dispatch(setTouched({ widgetId, touched: false }));
3282
+ dispatch(setError({ widgetId, errors: [] }));
3283
+ }
3284
+ }
3285
+ // Supporting Documents
3286
+ section['section-supporting-documents']?.forEach((doc, index) => {
3287
+ const widgetId = `supporting-doc-${section['section-id']}-${index}`;
3288
+ if (doc['document-required']) {
3289
+ const file = getValueByPath(currentSchemaData, doc['document-data-path']);
3290
+ if (!file) {
3291
+ isValid = false;
3292
+ dispatch(setTouched({ widgetId, touched: true }));
3293
+ dispatch(setError({
3294
+ widgetId,
3295
+ errors: ['This document is required'],
3296
+ }));
3297
+ }
3298
+ else {
3299
+ dispatch(setTouched({ widgetId, touched: false }));
3300
+ dispatch(setError({ widgetId, errors: [] }));
3301
+ }
3302
+ }
3303
+ });
3304
+ return isValid;
3305
+ };
3306
+
3222
3307
  /**
3223
3308
  * Renders a section with its panels
3224
3309
  *
@@ -3227,7 +3312,7 @@ const namespaceSectionConfig = (section, namespace) => {
3227
3312
  * - Panels wrap when they exceed available width
3228
3313
  * - Sections can sit side-by-side if there's space
3229
3314
  */
3230
- const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, gridColumnSpan, onSectionSave, hideEditButton = false, mode = 'RegistryView', namespace, changeRequestType, showChangeRequestLabel = true, }) => {
3315
+ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, gridColumnSpan, onSectionSave, hideEditButton = false, mode = 'RegistryView', namespace, changeRequestType, showChangeRequestLabel = true, dbSectionId, sectionRegisterId, onSectionDirtyChange, sectionIndex, sectionCount, expandedSectionIndex, onExpandSection, onSectionSaveSuccess, onPreviousSection, isDraft, }) => {
3231
3316
  const { translateConfig, translate } = useWidgetTranslation();
3232
3317
  const { schemaData: contextSchemaData, dataSourceRequestHandler: contextDataSourceRequestHandler } = useWidgetContext();
3233
3318
  const store = reactRedux.useStore();
@@ -3286,11 +3371,12 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3286
3371
  // Try to get from schemaData first, then from Redux store
3287
3372
  // Merge both sources to ensure we get the data
3288
3373
  const dataSource = { ...storeValues, ...currentSchemaData };
3374
+ const recordPath = Object.keys(dataSource)[0];
3289
3375
  const result = {
3290
- createdBy: getValueByPath(dataSource, 'createdBy') || getValueByPath(dataSource, 'created_by'),
3291
- createdDate: getValueByPath(dataSource, 'createdDate') || getValueByPath(dataSource, 'created_date'),
3292
- approvedBy: getValueByPath(dataSource, 'approvedBy') || getValueByPath(dataSource, 'approved_by'),
3293
- approvedDate: getValueByPath(dataSource, 'approvedDate') || getValueByPath(dataSource, 'approved_date'),
3376
+ createdBy: getValueByPath(dataSource, `${recordPath}.created_by`),
3377
+ createdDate: getValueByPath(dataSource, `${recordPath}.created_at`),
3378
+ approvedBy: getValueByPath(dataSource, `${recordPath}.last_approved_by`),
3379
+ approvedDate: getValueByPath(dataSource, `${recordPath}.last_approved_at`),
3294
3380
  };
3295
3381
  return result;
3296
3382
  }, [mode, currentSchemaData, storeValues]);
@@ -3299,6 +3385,21 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3299
3385
  const sectionId = sectionToRender['section-id'];
3300
3386
  const gridId = `section-panels-${sectionId}`;
3301
3387
  const sectionClassId = `section-${sectionId}`;
3388
+ // IntakeForm mode: accordion expand/collapse state (supports toggle)
3389
+ const [standaloneExpanded, setStandaloneExpanded] = React.useState(true); // For sectionIndex undefined (standalone use)
3390
+ const isExpandedFromContainer = typeof sectionIndex === 'number' && expandedSectionIndex === sectionIndex;
3391
+ const isExpandedStandalone = sectionIndex === undefined && standaloneExpanded;
3392
+ const isExpanded = mode === 'IntakeForm' && (isExpandedFromContainer || isExpandedStandalone);
3393
+ const handleAccordionToggle = React.useCallback(() => {
3394
+ if (mode !== 'IntakeForm')
3395
+ return;
3396
+ if (typeof sectionIndex === 'number' && onExpandSection) {
3397
+ onExpandSection(sectionIndex);
3398
+ }
3399
+ else if (sectionIndex === undefined) {
3400
+ setStandaloneExpanded(prev => !prev);
3401
+ }
3402
+ }, [mode, sectionIndex, onExpandSection]);
3302
3403
  // Recursively count all vertical panels, especially those nested inside horizontal panels
3303
3404
  // Typically: horizontal panels at first level contain vertical panels at second level
3304
3405
  // Accounts for panel-column-span: a panel with column-span 3 counts as 3 columns
@@ -3433,13 +3534,15 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3433
3534
  });
3434
3535
  };
3435
3536
  // Create section with widgets readonly/editable based on edit mode
3537
+ // IntakeForm: editable when isDraft is true or undefined; readonly when isDraft is false. Edit Details never shown.
3538
+ // RegistryView/CRView: use isEditMode (edit overlay flow)
3539
+ const widgetsEditable = mode === 'IntakeForm' ? (isDraft !== false) : isEditMode;
3436
3540
  const editableSection = React.useMemo(() => {
3437
- // Always apply readonly/editable state based on edit mode
3438
3541
  return {
3439
3542
  ...sectionToRender,
3440
- panels: makePanelsEditable(sectionToRender.panels, isEditMode),
3543
+ panels: makePanelsEditable(sectionToRender.panels, widgetsEditable),
3441
3544
  };
3442
- }, [sectionToRender, isEditMode]);
3545
+ }, [sectionToRender, widgetsEditable]);
3443
3546
  // Handle edit button click
3444
3547
  const handleEdit = () => {
3445
3548
  // Capture height BEFORE entering edit mode to preserve space
@@ -3450,8 +3553,9 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3450
3553
  setIsEditMode(true);
3451
3554
  };
3452
3555
  // Render the edit section (absolutely positioned duplicate via portal)
3556
+ // IntakeForm never uses this overlay - content is shown inline in accordion
3453
3557
  const renderEditSection = () => {
3454
- if (!isEditMode || !editSectionPosition)
3558
+ if (mode === 'IntakeForm' || !isEditMode || !editSectionPosition)
3455
3559
  return null;
3456
3560
  const editGridId = `${gridId}-edit`;
3457
3561
  return reactDom.createPortal(jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: `
@@ -3509,79 +3613,164 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3509
3613
  }, children: [sectionToRender['section-title'] && (jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold mb-4", style: { fontFamily: 'Roboto, sans-serif', marginTop: '35px' }, children: translateConfig(sectionToRender['section-title']) })), jsxRuntimeExports.jsxs("div", { id: editGridId, className: "section-panels", children: [editableSection.panels.map((panel, index) => {
3510
3614
  const isLastPanel = index === editableSection.panels.length - 1;
3511
3615
  return (jsxRuntimeExports.jsx("div", { className: `panel-wrapper ${isLastPanel ? 'last-panel-wrapper' : ''}`, children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange, isEditMode: true }) }, panel['panel-id'] || `section-panel-${index}`));
3512
- }), hasSupportingDocuments && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "supporting-documents-container", children: [jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setIsDocumentsExpanded(!isDocumentsExpanded), className: "supporting-documents-title-button w-full flex items-center text-left", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold", style: { fontFamily: 'Roboto, sans-serif', fontSize: '16px' }, children: translate('common.supportedDocuments') || 'Supported Documents' }), jsxRuntimeExports.jsx("svg", { className: `w-5 h-5 text-[#ED7C22] transition-transform ml-2 ${isDocumentsExpanded ? 'rotate-180' : ''}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), isDocumentsExpanded && (jsxRuntimeExports.jsx("div", { className: "supporting-documents-grid mt-4", children: supportingDocuments.map((doc, index) => {
3616
+ }), hasSupportingDocuments && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "supporting-documents-container", children: [jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setIsDocumentsExpanded(!isDocumentsExpanded), className: "supporting-documents-title-button w-full flex items-center text-left", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold", style: { fontFamily: 'Roboto, sans-serif', fontSize: '16px' }, children: translate('common.supportedDocuments') || 'Supported Documents' }), jsxRuntimeExports.jsx("img", { src: isDocumentsExpanded ? img$7 : img$6, alt: "Toggle Documents", className: "w-4 h-2.25 transition-transform ml-2" })] }), isDocumentsExpanded && (jsxRuntimeExports.jsx("div", { className: "supporting-documents-grid mt-4", children: supportingDocuments.map((doc, index) => {
3513
3617
  const docConfig = createDocumentWidgetConfig(doc, sectionId, index);
3514
3618
  return (jsxRuntimeExports.jsx("div", { className: "supporting-document-item", children: jsxRuntimeExports.jsx(FileInputWidget, { config: docConfig }) }, `${sectionId}-doc-${index}`));
3515
- }) }))] })] })), jsxRuntimeExports.jsx("hr", { className: "w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none', marginTop: hasSupportingDocuments ? '20px' : 0, marginBottom: '20px' } }), jsxRuntimeExports.jsx("div", { className: "edit-controls-container", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("div", { className: "edit-controls-buttons", children: [jsxRuntimeExports.jsx("button", { onClick: handleCancel, className: "bg-white hover:bg-gray-50 text-gray-900 text-sm font-medium px-6 py-2 transition-colors border border-gray-300", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.cancel') || 'Cancel' }), jsxRuntimeExports.jsx("button", { onClick: handleSave, className: "bg-gray-900 hover:bg-gray-800 text-white text-sm font-medium px-6 py-2 transition-colors", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.save') || 'Save' })] }) })] })] })] }), document.body);
3619
+ }) }))] })] })), jsxRuntimeExports.jsx("hr", { className: "w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none', marginTop: hasSupportingDocuments ? '20px' : 0, marginBottom: '20px' } }), jsxRuntimeExports.jsx("div", { className: "edit-controls-container", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("div", { className: "edit-controls-buttons", children: [jsxRuntimeExports.jsx("button", { onClick: handleCancel, className: "bg-white hover:bg-gray-50 text-gray-900 text-sm font-medium px-6 py-2 transition-colors border border-gray-300", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.cancel') || 'Cancel' }), jsxRuntimeExports.jsx("button", { onClick: handleSave, disabled: !isDirty, className: "bg-gray-900 hover:bg-gray-800 text-white text-sm font-medium px-6 py-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.save') || 'Save' })] }) })] })] })] }), document.body);
3516
3620
  };
3517
- const collectWidgets = (panels) => {
3518
- let widgets = [];
3519
- panels.forEach(panel => {
3520
- if (panel.widgets) {
3521
- widgets = [...widgets, ...panel.widgets];
3522
- }
3523
- if (panel.panels) {
3524
- widgets = [...widgets, ...collectWidgets(panel.panels)];
3525
- }
3526
- });
3527
- return widgets;
3528
- };
3529
- const trackSectionChages = (widgets, sourceData, useNamespacedPaths = false) => {
3621
+ const trackSectionChages = (widgets, sourceData, pathPrefix) => {
3622
+ if (!widgets || widgets.length === 0)
3623
+ return [];
3530
3624
  const snapshot = {};
3531
3625
  let hasTable = false;
3532
- const recordId = Object.keys(sourceData)[0];
3626
+ if (!sectionRegisterId)
3627
+ return [];
3628
+ const resolvePath = (path) => (pathPrefix ? `${pathPrefix}.${path}` : path);
3533
3629
  widgets.forEach(widget => {
3534
- const originalDataPath = widget['widget-data-path'];
3535
- if (!originalDataPath)
3630
+ const widgetPath = widget['widget-data-path'];
3631
+ if (!widgetPath)
3536
3632
  return;
3537
- if (widget['widget-type'] === 'table' || widget['widget-type'] === 'simple-table') {
3633
+ if (widget['widget-type'] === 'table' ||
3634
+ widget['widget-type'] === 'simple-table' ||
3635
+ widget['widget'] === 'table') {
3538
3636
  hasTable = true;
3539
3637
  }
3540
- // If namespace was used and we're reading from store, use namespaced paths
3541
- useNamespacedPaths && namespace && originalDataPath
3542
- ? (typeof originalDataPath === 'string'
3543
- ? `${namespace}.${originalDataPath}`
3544
- : Object.fromEntries(Object.entries(originalDataPath).map(([key, path]) => [key, `${namespace}.${path}`])))
3545
- : originalDataPath;
3546
- // Always store snapshot using original paths (for change tracking)
3547
- // Handle multi-path (object) or single path (string)
3548
- if (typeof originalDataPath === 'object') {
3549
- // Multi-path: store each path separately using original paths
3550
- Object.entries(originalDataPath).forEach(([key, path]) => {
3551
- if (typeof path === 'string') {
3552
- // Read from source using namespaced path if needed
3553
- const readPath = useNamespacedPaths && namespace ? `${namespace}.${path}` : path;
3554
- snapshot[path] = getValueByPath(sourceData, readPath);
3638
+ if (typeof widgetPath === 'object') {
3639
+ Object.values(widgetPath).forEach((path) => {
3640
+ if (typeof path === 'string' && path.length > 0) {
3641
+ snapshot[path] = getValueByPath(sourceData, resolvePath(path));
3555
3642
  }
3556
3643
  });
3557
3644
  }
3558
- else if (typeof originalDataPath === 'string') {
3559
- // Read from source using namespaced path if needed
3560
- const readPath = useNamespacedPaths && namespace ? `${namespace}.${originalDataPath}` : originalDataPath;
3561
- snapshot[originalDataPath] = getValueByPath(sourceData, readPath);
3645
+ else if (typeof widgetPath === 'string') {
3646
+ snapshot[widgetPath] = getValueByPath(sourceData, resolvePath(widgetPath));
3562
3647
  }
3563
3648
  });
3564
- if (hasTable === false) {
3649
+ if (!hasTable) {
3565
3650
  const cleanedSnapshot = {};
3566
- Object.entries(snapshot).forEach(([key, value]) => {
3567
- const removedFirstLevelPath = key.includes('.')
3568
- ? key.split('.').slice(1).join('.')
3569
- : key;
3570
- cleanedSnapshot[removedFirstLevelPath] = value;
3651
+ Object.entries(snapshot).forEach(([fullPath, value]) => {
3652
+ const fieldPath = fullPath.includes('.')
3653
+ ? fullPath.split('.').slice(1).join('.')
3654
+ : fullPath;
3655
+ cleanedSnapshot[fieldPath] = value;
3571
3656
  });
3657
+ const sectionData = pathPrefix
3658
+ ? getValueByPath(sourceData, resolvePath(sectionRegisterId))
3659
+ : sourceData[sectionRegisterId];
3572
3660
  return [
3573
- { ...sourceData[recordId],
3661
+ {
3662
+ ...sectionData,
3574
3663
  ...cleanedSnapshot,
3575
- edit_action: "UPDATE"
3576
- }
3664
+ edit_action: "UPDATE",
3665
+ },
3577
3666
  ];
3578
3667
  }
3579
- const recordEntry = Object.entries(snapshot).find(([key, value]) => key.endsWith('.records') && Array.isArray(value));
3580
- return recordEntry ? recordEntry[1] : snapshot;
3668
+ const tableEntry = Object.entries(snapshot).find(([key, value]) => key.endsWith('.records') && Array.isArray(value));
3669
+ return tableEntry ? tableEntry[1] : [];
3581
3670
  };
3582
3671
  // Get original section (without namespace) for building snapshots
3583
3672
  // This ensures we use the original data paths when saving
3584
3673
  const originalSection = section;
3674
+ /** Build a full section snapshot (records + files) for dirty comparison. Works with or without sectionRegisterId (e.g. IntakeForm). */
3675
+ const buildSectionSnapshot = React.useCallback((sourceData, pathPrefix) => {
3676
+ const sectionWidgets = collectWidgets(originalSection.panels);
3677
+ const resolvePath = (path) => (pathPrefix ? `${pathPrefix}.${path}` : path);
3678
+ let records;
3679
+ const recordsFromTrack = trackSectionChages(sectionWidgets, sourceData, pathPrefix);
3680
+ if (recordsFromTrack.length > 0) {
3681
+ records = recordsFromTrack;
3682
+ }
3683
+ else {
3684
+ // IntakeForm / no sectionRegisterId: build comparable snapshot from widget values
3685
+ const snapshot = {};
3686
+ sectionWidgets.forEach((widget) => {
3687
+ const widgetPath = widget['widget-data-path'];
3688
+ if (!widgetPath)
3689
+ return;
3690
+ if (typeof widgetPath === 'object') {
3691
+ Object.values(widgetPath).forEach((path) => {
3692
+ if (typeof path === 'string' && path.length > 0) {
3693
+ snapshot[path] = getValueByPath(sourceData, resolvePath(path));
3694
+ }
3695
+ });
3696
+ }
3697
+ else if (typeof widgetPath === 'string') {
3698
+ snapshot[widgetPath] = getValueByPath(sourceData, resolvePath(widgetPath));
3699
+ }
3700
+ });
3701
+ records = [{ ...snapshot }];
3702
+ }
3703
+ const files = [];
3704
+ if (hasSupportingDocuments) {
3705
+ const originalSupportingDocuments = originalSection['section-supporting-documents'] || [];
3706
+ originalSupportingDocuments.forEach((doc) => {
3707
+ const originalDataPath = doc['document-data-path'];
3708
+ const storeDataPath = pathPrefix && originalDataPath
3709
+ ? `${pathPrefix}.${originalDataPath}`
3710
+ : originalDataPath;
3711
+ files.push(getValueByPath(sourceData, storeDataPath));
3712
+ });
3713
+ }
3714
+ return { records, files };
3715
+ }, [originalSection, hasSupportingDocuments]);
3716
+ // Capture baseline when entering edit mode (used for isDirty comparison)
3717
+ const baselineSnapshotRef = React.useRef(null);
3718
+ // IntakeForm only: increment when baseline is updated after save - forces badge to update (refs don't trigger re-renders)
3719
+ const [intakeFormBaselineTrigger, setIntakeFormBaselineTrigger] = React.useState(0);
3720
+ // IntakeForm: treat as edit mode for dirty tracking when isDraft. RegistryView: use isEditMode.
3721
+ const effectiveEditModeForDirty = mode === 'IntakeForm' ? (isDraft !== false) : isEditMode;
3722
+ // Compute isDirty: compare current store state to baseline (only when in edit mode)
3723
+ const isDirty = React.useMemo(() => {
3724
+ if (!effectiveEditModeForDirty)
3725
+ return false;
3726
+ const baseline = baselineSnapshotRef.current;
3727
+ if (!baseline)
3728
+ return false;
3729
+ const currentSnapshot = buildSectionSnapshot(storeValues, namespace);
3730
+ return JSON.stringify(baseline) !== JSON.stringify(currentSnapshot);
3731
+ }, [effectiveEditModeForDirty, storeValues, namespace, buildSectionSnapshot, intakeFormBaselineTrigger]);
3732
+ // Set baseline when entering edit mode; clear when leaving (baseline captured only on entry)
3733
+ React.useEffect(() => {
3734
+ if (effectiveEditModeForDirty) {
3735
+ const oldSchemaData = schemaData || contextSchemaData || {};
3736
+ if (namespace) {
3737
+ const namespacedSchema = getValueByPath(oldSchemaData, namespace);
3738
+ baselineSnapshotRef.current = namespacedSchema
3739
+ ? buildSectionSnapshot(namespacedSchema)
3740
+ : buildSectionSnapshot(oldSchemaData);
3741
+ }
3742
+ else {
3743
+ baselineSnapshotRef.current = buildSectionSnapshot(oldSchemaData);
3744
+ }
3745
+ }
3746
+ else {
3747
+ baselineSnapshotRef.current = null;
3748
+ onSectionDirtyChange?.(sectionId, false);
3749
+ }
3750
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- baseline must be captured only when effectiveEditModeForDirty toggles
3751
+ }, [effectiveEditModeForDirty]);
3752
+ // Notify parent when isDirty changes (only while in edit mode)
3753
+ React.useEffect(() => {
3754
+ if (effectiveEditModeForDirty && onSectionDirtyChange) {
3755
+ onSectionDirtyChange(sectionId, isDirty);
3756
+ }
3757
+ }, [effectiveEditModeForDirty, isDirty, sectionId, onSectionDirtyChange]);
3758
+ // IntakeForm only: section status badge (Saved / Modified and not saved / no badge when pristine)
3759
+ const intakeFormSectionStatus = React.useMemo(() => {
3760
+ if (mode !== 'IntakeForm')
3761
+ return null;
3762
+ const hasValue = (v) => v !== undefined && v !== null && (typeof v !== 'string' || v.trim().length > 0);
3763
+ const currentSnapshot = buildSectionSnapshot(storeValues, namespace);
3764
+ const record = currentSnapshot.records?.[0];
3765
+ const hasData = record &&
3766
+ typeof record === 'object' &&
3767
+ Object.values(record).some((v) => hasValue(v));
3768
+ if (isDirty)
3769
+ return 'modified';
3770
+ if (hasData)
3771
+ return 'saved';
3772
+ return null;
3773
+ }, [mode, isDirty, storeValues, namespace, buildSectionSnapshot]);
3585
3774
  // Handle save button click
3586
3775
  const handleSave = async () => {
3587
3776
  if (!store || !onSectionSave) {
@@ -3594,10 +3783,14 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3594
3783
  const sectionWidgets = collectWidgets(originalSection.panels);
3595
3784
  const currentState = store.getState().widget;
3596
3785
  const currentSchemaData = currentState.values || {};
3786
+ const isSectionValid = sectionValidate(originalSection, currentSchemaData, dispatch);
3787
+ if (!isSectionValid) {
3788
+ return;
3789
+ }
3597
3790
  // schema data before section change
3598
3791
  const oldSchemaData = schemaData || contextSchemaData;
3599
- // schema data after section change
3600
- const newSchemaData = trackSectionChages(sectionWidgets, currentSchemaData);
3792
+ // schema data after section change (use namespace when store has namespaced paths)
3793
+ const newSchemaData = trackSectionChages(sectionWidgets, currentSchemaData, namespace);
3601
3794
  // Include supporting documents in the snapshot if they exist
3602
3795
  const sectionFiles = [];
3603
3796
  if (hasSupportingDocuments) {
@@ -3615,7 +3808,8 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3615
3808
  if (JSON.stringify(oldSchemaData) !== JSON.stringify(newSchemaData)) {
3616
3809
  try {
3617
3810
  const sectionchanges = {
3618
- section_id: originalSection['section-id'],
3811
+ section_id: dbSectionId,
3812
+ section_register_id: sectionRegisterId,
3619
3813
  records: [...newSchemaData],
3620
3814
  files: [...sectionFiles]
3621
3815
  };
@@ -3627,6 +3821,51 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3627
3821
  }
3628
3822
  setIsEditMode(false);
3629
3823
  };
3824
+ // IntakeForm: save section then collapse current and expand next (or stay on final section)
3825
+ const handleIntakeFormSave = React.useCallback(async () => {
3826
+ if (!store || !onSectionSave || sectionIndex === undefined)
3827
+ return;
3828
+ const sectionWidgets = collectWidgets(originalSection.panels);
3829
+ const currentState = store.getState().widget;
3830
+ const currentSchemaData = currentState.values || {};
3831
+ const isSectionValid = sectionValidate(originalSection, currentSchemaData, dispatch);
3832
+ if (!isSectionValid)
3833
+ return;
3834
+ const oldSchemaData = schemaData || contextSchemaData;
3835
+ const newSchemaData = trackSectionChages(sectionWidgets, currentSchemaData, namespace);
3836
+ const sectionFiles = [];
3837
+ if (hasSupportingDocuments) {
3838
+ const originalSupportingDocuments = originalSection['section-supporting-documents'] || [];
3839
+ originalSupportingDocuments.forEach((doc) => {
3840
+ const originalDataPath = doc['document-data-path'];
3841
+ const storeDataPath = namespace && originalDataPath
3842
+ ? `${namespace}.${originalDataPath}`
3843
+ : originalDataPath;
3844
+ sectionFiles.push(getValueByPath(currentSchemaData, storeDataPath));
3845
+ });
3846
+ }
3847
+ if (JSON.stringify(oldSchemaData) !== JSON.stringify(newSchemaData)) {
3848
+ try {
3849
+ await onSectionSave({
3850
+ section_id: dbSectionId,
3851
+ section_register_id: sectionRegisterId,
3852
+ records: [...newSchemaData],
3853
+ files: [...sectionFiles],
3854
+ });
3855
+ }
3856
+ catch (error) {
3857
+ console.error('Section Changes Save failed', error);
3858
+ return;
3859
+ }
3860
+ }
3861
+ // IntakeForm only: update baseline so section is no longer dirty; trigger re-render so badge updates to "Saved"
3862
+ if (mode === 'IntakeForm') {
3863
+ baselineSnapshotRef.current = buildSectionSnapshot(currentSchemaData, namespace);
3864
+ setIntakeFormBaselineTrigger((prev) => prev + 1);
3865
+ }
3866
+ onSectionDirtyChange?.(sectionId, false);
3867
+ onSectionSaveSuccess?.(sectionIndex);
3868
+ }, [store, onSectionSave, onSectionSaveSuccess, sectionIndex, originalSection, schemaData, contextSchemaData, namespace, hasSupportingDocuments, dbSectionId, sectionRegisterId, dispatch, buildSectionSnapshot, sectionId, onSectionDirtyChange, mode]);
3630
3869
  // Handle cancel button click
3631
3870
  const handleCancel = () => {
3632
3871
  // Revert values in store to original schema data
@@ -3845,12 +4084,57 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3845
4084
  align-items: center;
3846
4085
  gap: 0.5rem;
3847
4086
  }
3848
- ` }), jsxRuntimeExports.jsxs("div", { ref: sectionRef, className: `section ${sectionClassId} px-4 sm:px-6 lg:px-8 border-2 border-white `, "data-section-id": sectionId, "data-has-table": hasTableWidget ? 'true' : 'false', "data-has-explicit-span": hasExplicitTableSpan ? 'true' : 'false', "data-edit-mode": isEditMode ? 'true' : 'false', "data-column-span": columnSpan, "data-change-request-type": changeRequestType, style: {
4087
+
4088
+ /* IntakeForm accordion */
4089
+ .${sectionClassId}.intake-form-accordion-item {
4090
+ border-color: #E5E7EB;
4091
+ transition: box-shadow 0.2s ease, border-color 0.2s ease;
4092
+ }
4093
+ .${sectionClassId}.intake-form-accordion-item:hover {
4094
+ border-color: #D1D5DB;
4095
+ }
4096
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-header {
4097
+ transition: opacity 0.2s ease, background-color 0.2s ease;
4098
+ }
4099
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-header:hover {
4100
+ opacity: 0.85;
4101
+ }
4102
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-header:focus-visible {
4103
+ outline: 2px solid #F2BA1A;
4104
+ outline-offset: 2px;
4105
+ }
4106
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-content {
4107
+ padding-top: 8px;
4108
+ padding-bottom: 4px;
4109
+ }
4110
+ .${sectionClassId}.intake-form-accordion-item .intake-form-edit-controls {
4111
+ justify-content: flex-end;
4112
+ width: 100%;
4113
+ }
4114
+ .${sectionClassId}.intake-form-accordion-item .intake-form-prev-btn {
4115
+ color: rgba(0, 0, 0, 0.5) !important;
4116
+ }
4117
+ .${sectionClassId}.intake-form-accordion-item .intake-form-prev-btn:disabled {
4118
+ color: rgba(0, 0, 0, 0.3) !important;
4119
+ }
4120
+ .${sectionClassId}.intake-form-accordion-item .intake-form-prev-btn:hover:not(:disabled) {
4121
+ background-color: #F3F4F6;
4122
+ border-color: #FD8C3E;
4123
+ }
4124
+ .${sectionClassId}.intake-form-accordion-item .intake-form-save-btn:hover:not(:disabled) {
4125
+ background-color: #E5E7EB;
4126
+ }
4127
+ ` }), jsxRuntimeExports.jsx("div", { ref: sectionRef, className: `section ${sectionClassId} px-4 sm:px-6 lg:px-8 border-2 border-white ${mode === 'IntakeForm' ? 'intake-form-accordion-item' : ''}`, "data-section-id": sectionId, "data-has-table": hasTableWidget ? 'true' : 'false', "data-has-explicit-span": hasExplicitTableSpan ? 'true' : 'false', "data-edit-mode": isEditMode ? 'true' : 'false', "data-section-dirty": isEditMode && isDirty ? 'true' : 'false', "data-column-span": columnSpan, "data-change-request-type": changeRequestType, "data-intake-form-expanded": mode === 'IntakeForm' ? (isExpanded ? 'true' : 'false') : undefined, style: {
3849
4128
  gridColumn: `span ${columnSpan}`,
3850
4129
  width: '100%',
3851
4130
  borderRadius: '10px',
3852
- backgroundColor: changeRequestType === 'old' ? '#F9F9F9' : '#FFFFFF', // Faded background for old change requests
3853
- opacity: changeRequestType === 'old' ? 0.95 : 1, // Slight opacity reduction for old sections
4131
+ // IntakeForm expanded: edit-mode colors. Others: normal or faded for old CR
4132
+ ...(mode === 'IntakeForm' && isExpanded
4133
+ ? { backgroundColor: '#F3E6BC', border: '1px dashed #ED7C22' }
4134
+ : {
4135
+ backgroundColor: changeRequestType === 'old' ? '#F9F9F9' : '#FFFFFF',
4136
+ opacity: changeRequestType === 'old' ? 0.95 : 1,
4137
+ }),
3854
4138
  ...(isEditMode && sectionHeight ? {
3855
4139
  height: `${sectionHeight}px`,
3856
4140
  minHeight: `${sectionHeight}px`
@@ -3859,81 +4143,225 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3859
4143
  minHeight: 'auto',
3860
4144
  height: 'auto'
3861
4145
  }),
3862
- }, children: [sectionToRender['section-title'] && (jsxRuntimeExports.jsxs("div", { style: {
3863
- marginTop: '35px',
3864
- marginBottom: '16px',
3865
- display: 'flex',
3866
- alignItems: 'center',
3867
- gap: '12px',
3868
- flexWrap: 'wrap',
3869
- }, children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", style: { margin: 0 }, children: translateConfig(sectionToRender['section-title']) }), mode === 'CRView' && changeRequestType && showChangeRequestLabel && (jsxRuntimeExports.jsx("span", { style: {
3870
- display: 'inline-flex',
3871
- alignItems: 'center',
3872
- padding: '4px 12px',
3873
- borderRadius: '4px',
3874
- fontSize: '12px',
3875
- fontWeight: 600,
3876
- textTransform: 'uppercase',
3877
- letterSpacing: '0.5px',
3878
- backgroundColor: changeRequestType === 'new' ? '#28a745' : '#ffcccc', // Green for new, faded red for old
3879
- color: changeRequestType === 'new' ? '#FFFFFF' : '#cc0000',
3880
- whiteSpace: 'nowrap',
3881
- boxShadow: changeRequestType === 'new' ? '0 2px 4px rgba(40, 167, 69, 0.3)' : 'none',
3882
- }, children: changeRequestType === 'new' ? 'New' : 'Old' }))] })), jsxRuntimeExports.jsxs("div", { id: gridId, className: "section-panels", style: mode === 'RegistryView' && hideEditButton ? { paddingBottom: '40px' } : {}, children: [editableSection.panels.map((panel, index) => (jsxRuntimeExports.jsx("div", { className: "panel-wrapper", children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange }) }, panel['panel-id'] || `section-panel-${index}`))), mode === 'CRView' && crViewData && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: '20px', marginBottom: '0px' } }), jsxRuntimeExports.jsxs("div", { className: "cr-view-container", style: {
3883
- marginTop: '20px',
3884
- paddingBottom: '30px',
4146
+ }, children: mode === 'IntakeForm' ? (
4147
+ /* IntakeForm: accordion layout - header always visible, content only when expanded */
4148
+ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs("button", { type: "button", id: `intake-form-accordion-header-${sectionId}`, className: "intake-form-accordion-header", onClick: handleAccordionToggle, "aria-expanded": isExpanded, "aria-controls": isExpanded ? `intake-form-accordion-content-${sectionId}` : undefined, style: {
4149
+ width: '100%',
4150
+ display: 'flex',
4151
+ alignItems: 'flex-start',
4152
+ justifyContent: 'space-between',
4153
+ padding: '16px 0',
4154
+ marginTop: '16px',
4155
+ marginBottom: 0,
4156
+ background: 'none',
4157
+ border: 'none',
4158
+ cursor: 'pointer',
4159
+ textAlign: 'left',
4160
+ fontFamily: 'Roboto, sans-serif',
4161
+ }, children: [jsxRuntimeExports.jsxs("div", { style: { flex: 1, display: 'flex', alignItems: 'center', gap: '12px', minWidth: 0 }, children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", style: { margin: 0 }, children: sectionToRender['section-title']
4162
+ ? translateConfig(sectionToRender['section-title'])
4163
+ : `Section ${(sectionIndex ?? 0) + 1}` }), intakeFormSectionStatus === 'saved' && (jsxRuntimeExports.jsx("span", { style: {
4164
+ display: 'inline-block',
4165
+ padding: '4px 10px',
4166
+ borderRadius: '9999px',
4167
+ fontSize: '12px',
4168
+ fontWeight: 500,
4169
+ backgroundColor: '#D1FAE5',
4170
+ color: '#047857',
4171
+ }, children: translate('common.sectionSaved') || 'Saved' })), intakeFormSectionStatus === 'modified' && (jsxRuntimeExports.jsx("span", { style: {
4172
+ display: 'inline-block',
4173
+ padding: '4px 10px',
4174
+ borderRadius: '9999px',
4175
+ fontSize: '12px',
4176
+ fontWeight: 500,
4177
+ backgroundColor: '#FEE2E2',
4178
+ color: '#B91C1C',
4179
+ }, children: translate('common.sectionModified') || 'Modified and not saved' }))] }), jsxRuntimeExports.jsx("img", { src: isExpanded ? img$7 : img$6, alt: isExpanded ? 'Collapse' : 'Expand', className: "w-5 h-5 transition-transform", style: { flexShrink: 0, marginLeft: '12px' }, "aria-hidden": true })] }), isExpanded && (jsxRuntimeExports.jsx("div", { id: `intake-form-accordion-content-${sectionId}`, className: "intake-form-accordion-content", role: "region", "aria-labelledby": `intake-form-accordion-header-${sectionId}`, children: jsxRuntimeExports.jsxs("div", { id: gridId, className: "section-panels", style: { paddingTop: '8px' }, children: [editableSection.panels.map((panel, index) => (jsxRuntimeExports.jsx("div", { className: "panel-wrapper", children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange }) }, panel['panel-id'] || `section-panel-${index}`))), hasSupportingDocuments && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#E5E7EB', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "supporting-documents-container", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold", style: { fontFamily: 'Roboto, sans-serif', fontSize: '16px' }, children: translate('common.supportedDocuments') || 'Supported Documents' }), jsxRuntimeExports.jsx("div", { className: "supporting-documents-grid mt-4", children: supportingDocuments.map((doc, docIndex) => {
4180
+ const docConfig = createDocumentWidgetConfig(doc, sectionId, docIndex);
4181
+ return (jsxRuntimeExports.jsx("div", { className: "supporting-document-item", children: jsxRuntimeExports.jsx(FileInputWidget, { config: docConfig }) }, `${sectionId}-doc-${docIndex}`));
4182
+ }) })] })] })), jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#E5E7EB', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "intake-form-edit-controls", style: {
3885
4183
  display: 'flex',
3886
- justifyContent: 'space-between',
4184
+ justifyContent: 'flex-end',
3887
4185
  alignItems: 'center',
4186
+ gap: '12px',
4187
+ marginBottom: '20px',
3888
4188
  width: '100%',
3889
- }, children: [jsxRuntimeExports.jsxs("div", { className: "created-by-section", style: {
3890
- display: 'flex',
4189
+ }, children: [jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => onPreviousSection?.(sectionIndex), disabled: sectionIndex === 0, className: "intake-form-prev-btn", style: {
4190
+ fontFamily: 'Roboto, sans-serif',
4191
+ fontSize: '14px',
4192
+ fontWeight: 400,
4193
+ padding: '8px 24px',
4194
+ borderRadius: '10px',
4195
+ border: '1px solid #FD8C3E',
4196
+ background: '#F3F4F6',
4197
+ color: sectionIndex === 0 ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.5)',
4198
+ cursor: sectionIndex === 0 ? 'not-allowed' : 'pointer',
4199
+ display: 'inline-flex',
3891
4200
  alignItems: 'center',
3892
- gap: '6px',
3893
- flex: 1,
3894
- }, children: [jsxRuntimeExports.jsx("span", { style: {
3895
- fontFamily: 'Roboto, sans-serif',
3896
- fontSize: '14px',
3897
- color: '#000000',
3898
- fontWeight: 'normal',
3899
- }, children: "Created by" }), jsxRuntimeExports.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M8 8C9.47276 8 10.6667 6.80609 10.6667 5.33333C10.6667 3.86058 9.47276 2.66667 8 2.66667C6.52724 2.66667 5.33333 3.86058 5.33333 5.33333C5.33333 6.80609 6.52724 8 8 8Z", fill: "#ED7C22" }), jsxRuntimeExports.jsx("path", { d: "M8 9.33333C5.42267 9.33333 3.33333 11.4227 3.33333 14H12.6667C12.6667 11.4227 10.5773 9.33333 8 9.33333Z", fill: "#ED7C22" })] }), crViewData?.createdBy && (jsxRuntimeExports.jsx("span", { style: {
3900
- fontFamily: 'Roboto, sans-serif',
3901
- fontSize: '14px',
3902
- color: '#000000',
3903
- fontWeight: 'normal',
3904
- }, children: crViewData.createdBy })), jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginLeft: '6px' }, children: jsxRuntimeExports.jsx("path", { d: "M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6.66667H12.6667V13.3333Z", fill: "#ED7C22" }) }), crViewData?.createdDate && (jsxRuntimeExports.jsx("span", { style: {
3905
- fontFamily: 'Roboto, sans-serif',
3906
- fontSize: '14px',
3907
- color: '#000000',
3908
- fontWeight: 'normal',
3909
- }, children: crViewData.createdDate }))] }), jsxRuntimeExports.jsxs("div", { className: "approved-by-section", style: {
3910
- display: 'flex',
4201
+ gap: '8px',
4202
+ }, children: [jsxRuntimeExports.jsx("img", { src: img$5, alt: "", "aria-hidden": true, style: { width: '14px', height: '14px', opacity: sectionIndex === 0 ? 0.5 : 0.5 } }), translate('common.previous') || 'Prev'] }), jsxRuntimeExports.jsxs("button", { type: "button", onClick: handleIntakeFormSave, disabled: isDraft === false, className: "intake-form-save-btn", style: {
4203
+ fontFamily: 'Roboto, sans-serif',
4204
+ fontSize: '14px',
4205
+ fontWeight: 400,
4206
+ padding: '8px 24px',
4207
+ borderRadius: '10px',
4208
+ border: '1px solid #FD8C3E',
4209
+ background: isDraft === false ? '#9CA3AF' : '#F3F4F6',
4210
+ color: isDraft === false ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.5)',
4211
+ cursor: isDraft === false ? 'not-allowed' : 'pointer',
4212
+ display: 'inline-flex',
3911
4213
  alignItems: 'center',
3912
- gap: '6px',
3913
- flex: 1,
3914
- justifyContent: 'flex-end',
3915
- }, children: [jsxRuntimeExports.jsx("span", { style: {
3916
- fontFamily: 'Roboto, sans-serif',
3917
- fontSize: '14px',
3918
- color: '#000000',
3919
- fontWeight: 'normal',
3920
- }, children: "Approved by" }), jsxRuntimeExports.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M8 8C9.47276 8 10.6667 6.80609 10.6667 5.33333C10.6667 3.86058 9.47276 2.66667 8 2.66667C6.52724 2.66667 5.33333 3.86058 5.33333 5.33333C5.33333 6.80609 6.52724 8 8 8Z", fill: "#ED7C22" }), jsxRuntimeExports.jsx("path", { d: "M8 9.33333C5.42267 9.33333 3.33333 11.4227 3.33333 14H12.6667C12.6667 11.4227 10.5773 9.33333 8 9.33333Z", fill: "#ED7C22" })] }), crViewData?.approvedBy && (jsxRuntimeExports.jsx("span", { style: {
3921
- fontFamily: 'Roboto, sans-serif',
3922
- fontSize: '14px',
3923
- color: '#000000',
3924
- fontWeight: 'normal',
3925
- }, children: crViewData.approvedBy })), jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginLeft: '6px' }, children: jsxRuntimeExports.jsx("path", { d: "M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6.66667H12.6667V13.3333Z", fill: "#ED7C22" }) }), crViewData?.approvedDate && (jsxRuntimeExports.jsx("span", { style: {
3926
- fontFamily: 'Roboto, sans-serif',
3927
- fontSize: '14px',
3928
- color: '#000000',
3929
- fontWeight: 'normal',
3930
- }, children: crViewData.approvedDate }))] })] })] })), mode === 'RegistryView' && !hideEditButton && (jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: !isEditMode ? '20px' : 0, marginBottom: '14px' } })), mode === 'RegistryView' && !isEditMode && !hideEditButton && (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("button", { onClick: handleEdit, className: "font-normal inline-flex items-center gap-2 bg-transparent border-0 p-0 cursor-pointer hover:opacity-80", style: {
3931
- fontFamily: 'Roboto, sans-serif',
3932
- fontSize: '16px',
3933
- color: 'rgba(0, 0, 0, 0.50)'
3934
- }, children: ["Edit Details", jsxRuntimeExports.jsx("span", { children: "\u2192" })] }) }))] })] })] }));
4214
+ gap: '8px',
4215
+ }, children: [translate('common.save') || 'Save', jsxRuntimeExports.jsx("img", { src: img$4, alt: "", "aria-hidden": true, style: { width: '14px', height: '14px' } })] })] })] }) }))] })) : (
4216
+ /* RegistryView / CRView: standard layout */
4217
+ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [sectionToRender['section-title'] && (jsxRuntimeExports.jsxs("div", { style: {
4218
+ marginTop: '35px',
4219
+ marginBottom: '16px',
4220
+ display: 'flex',
4221
+ alignItems: 'center',
4222
+ gap: '12px',
4223
+ flexWrap: 'wrap',
4224
+ }, children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", style: { margin: 0 }, children: translateConfig(sectionToRender['section-title']) }), mode === 'CRView' && changeRequestType && showChangeRequestLabel && (jsxRuntimeExports.jsx("span", { style: {
4225
+ display: 'inline-flex',
4226
+ alignItems: 'center',
4227
+ padding: '4px 12px',
4228
+ borderRadius: '4px',
4229
+ fontSize: '12px',
4230
+ fontWeight: 600,
4231
+ textTransform: 'uppercase',
4232
+ letterSpacing: '0.5px',
4233
+ backgroundColor: changeRequestType === 'new' ? '#28a745' : '#ffcccc', // Green for new, faded red for old
4234
+ color: changeRequestType === 'new' ? '#FFFFFF' : '#cc0000',
4235
+ whiteSpace: 'nowrap',
4236
+ boxShadow: changeRequestType === 'new' ? '0 2px 4px rgba(40, 167, 69, 0.3)' : 'none',
4237
+ }, children: changeRequestType === 'new' ? 'New' : 'Old' }))] })), jsxRuntimeExports.jsxs("div", { id: gridId, className: "section-panels", style: mode === 'RegistryView' && hideEditButton ? { paddingBottom: '40px' } : {}, children: [editableSection.panels.map((panel, index) => (jsxRuntimeExports.jsx("div", { className: "panel-wrapper", children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange }) }, panel['panel-id'] || `section-panel-${index}`))), mode === 'CRView' && crViewData && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: '20px', marginBottom: '0px' } }), jsxRuntimeExports.jsxs("div", { className: "cr-view-container", style: {
4238
+ marginTop: '20px',
4239
+ paddingBottom: '30px',
4240
+ display: 'flex',
4241
+ justifyContent: 'space-between',
4242
+ alignItems: 'center',
4243
+ width: '100%',
4244
+ }, children: [jsxRuntimeExports.jsxs("div", { className: "created-by-section", style: {
4245
+ display: 'flex',
4246
+ alignItems: 'center',
4247
+ gap: '6px',
4248
+ flex: 1,
4249
+ }, children: [jsxRuntimeExports.jsx("span", { style: {
4250
+ fontFamily: 'Roboto, sans-serif',
4251
+ fontSize: '14px',
4252
+ color: '#000000',
4253
+ fontWeight: 'normal',
4254
+ }, children: "Created by" }), jsxRuntimeExports.jsx("img", { src: img$a, alt: "Person", width: "16", height: "16", style: { filter: 'brightness(0) saturate(100%) invert(56%) sepia(45%) saturate(5139%) hue-rotate(348deg) brightness(96%) contrast(92%)' } }), crViewData?.createdBy && (jsxRuntimeExports.jsx("span", { style: {
4255
+ fontFamily: 'Roboto, sans-serif',
4256
+ fontSize: '14px',
4257
+ color: '#000000',
4258
+ fontWeight: 'normal',
4259
+ }, children: crViewData.createdBy })), jsxRuntimeExports.jsx("img", { src: img$9, alt: "Calendar", width: "16", height: "16", style: { marginLeft: '6px' } }), crViewData?.createdDate && (jsxRuntimeExports.jsx("span", { style: {
4260
+ fontFamily: 'Roboto, sans-serif',
4261
+ fontSize: '14px',
4262
+ color: '#000000',
4263
+ fontWeight: 'normal',
4264
+ }, children: crViewData.createdDate }))] }), jsxRuntimeExports.jsxs("div", { className: "approved-by-section", style: {
4265
+ display: 'flex',
4266
+ alignItems: 'center',
4267
+ gap: '6px',
4268
+ flex: 1,
4269
+ justifyContent: 'flex-end',
4270
+ }, children: [jsxRuntimeExports.jsx("span", { style: {
4271
+ fontFamily: 'Roboto, sans-serif',
4272
+ fontSize: '14px',
4273
+ color: '#000000',
4274
+ fontWeight: 'normal',
4275
+ }, children: "Approved by" }), jsxRuntimeExports.jsx("img", { src: img$a, alt: "Person", width: "16", height: "16", style: { filter: 'brightness(0) saturate(100%) invert(56%) sepia(45%) saturate(5139%) hue-rotate(348deg) brightness(96%) contrast(92%)' } }), crViewData?.approvedBy && (jsxRuntimeExports.jsx("span", { style: {
4276
+ fontFamily: 'Roboto, sans-serif',
4277
+ fontSize: '14px',
4278
+ color: '#000000',
4279
+ fontWeight: 'normal',
4280
+ }, children: crViewData.approvedBy })), jsxRuntimeExports.jsx("img", { src: img$9, alt: "Calendar", width: "16", height: "16", style: { marginLeft: '6px' } }), crViewData?.approvedDate && (jsxRuntimeExports.jsx("span", { style: {
4281
+ fontFamily: 'Roboto, sans-serif',
4282
+ fontSize: '14px',
4283
+ color: '#000000',
4284
+ fontWeight: 'normal',
4285
+ }, children: crViewData.approvedDate }))] })] })] })), mode === 'RegistryView' && !hideEditButton && (jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: !isEditMode ? '20px' : 0, marginBottom: '14px' } })), mode === 'RegistryView' && !isEditMode && !hideEditButton && (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("button", { onClick: handleEdit, className: "font-normal inline-flex items-center gap-2 bg-transparent border-0 p-0 cursor-pointer hover:opacity-80", style: {
4286
+ fontFamily: 'Roboto, sans-serif',
4287
+ fontSize: '16px',
4288
+ color: 'rgba(0, 0, 0, 0.50)'
4289
+ }, children: ["Edit Details", jsxRuntimeExports.jsx("img", { src: img$8, alt: "right-arrow", className: "w-3.5 h-3.5 brightness-0 opacity-50" })] }) }))] })] })) })] }));
3935
4290
  };
3936
4291
 
4292
+ /**
4293
+ * Build SectionChanges from section config and current store values.
4294
+ * Works for intake forms (no sectionRegisterId) and edit flows (with sectionRegisterId).
4295
+ */
4296
+ function buildSectionChanges(section, storeValues, namespace, options) {
4297
+ const sectionWidgets = collectWidgets(section.panels);
4298
+ const resolvePath = (path) => (namespace ? `${namespace}.${path}` : path);
4299
+ const snapshot = {};
4300
+ let hasTable = false;
4301
+ sectionWidgets.forEach((widget) => {
4302
+ const widgetPath = widget['widget-data-path'];
4303
+ if (!widgetPath)
4304
+ return;
4305
+ const widgetType = widget['widget-type'];
4306
+ if (widgetType === 'table' ||
4307
+ widgetType === 'simple-table' ||
4308
+ widget.widget === 'table') {
4309
+ hasTable = true;
4310
+ }
4311
+ if (typeof widgetPath === 'object') {
4312
+ Object.values(widgetPath).forEach((path) => {
4313
+ if (typeof path === 'string' && path.length > 0) {
4314
+ snapshot[path] = getValueByPath(storeValues, resolvePath(path));
4315
+ }
4316
+ });
4317
+ }
4318
+ else if (typeof widgetPath === 'string') {
4319
+ snapshot[widgetPath] = getValueByPath(storeValues, resolvePath(widgetPath));
4320
+ }
4321
+ });
4322
+ let records;
4323
+ if (!hasTable) {
4324
+ const cleanedSnapshot = {};
4325
+ Object.entries(snapshot).forEach(([fullPath, value]) => {
4326
+ const fieldPath = fullPath.includes('.')
4327
+ ? fullPath.split('.').slice(1).join('.')
4328
+ : fullPath;
4329
+ cleanedSnapshot[fieldPath] = value;
4330
+ });
4331
+ const { sectionRegisterId } = {};
4332
+ const sectionData = sectionRegisterId && namespace
4333
+ ? getValueByPath(storeValues, `${namespace}.${sectionRegisterId}`) || {}
4334
+ : (sectionRegisterId
4335
+ ? storeValues[sectionRegisterId]
4336
+ : {}) || {};
4337
+ records = [
4338
+ {
4339
+ ...sectionData,
4340
+ ...cleanedSnapshot,
4341
+ ...(sectionRegisterId ? { edit_action: 'UPDATE' } : {}),
4342
+ },
4343
+ ];
4344
+ }
4345
+ else {
4346
+ const tableEntry = Object.entries(snapshot).find(([key, value]) => key.endsWith('.records') && Array.isArray(value));
4347
+ records = tableEntry ? tableEntry[1] : [];
4348
+ }
4349
+ const files = [];
4350
+ const supportingDocs = section['section-supporting-documents'] || [];
4351
+ supportingDocs.forEach((doc) => {
4352
+ const path = doc['document-data-path'];
4353
+ if (path) {
4354
+ files.push(getValueByPath(storeValues, resolvePath(path)));
4355
+ }
4356
+ });
4357
+ return {
4358
+ section_id: options?.dbSectionId ?? section['section-id'],
4359
+ section_register_id: options?.sectionRegisterId,
4360
+ records,
4361
+ files: files.length > 0 ? files : undefined,
4362
+ };
4363
+ }
4364
+
3937
4365
  /**
3938
4366
  * Recursively check if a panel contains a table widget
3939
4367
  */
@@ -4015,10 +4443,121 @@ const countVerticalPanels = (panels) => {
4015
4443
  * - All sections align to the same grid, ensuring right-side alignment
4016
4444
  * - Handles nested structure: multiple horizontal panels, each with multiple vertical panels
4017
4445
  */
4018
- const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, className = '', onSectionSave, hideEditButton = false, mode = 'RegistryView', namespace, }) => {
4446
+ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, className = '', onSectionSave, hideEditButton = false, mode = 'RegistryView', isDraft, namespace, onSectionDirtyChange, onFormReady, }) => {
4447
+ const store = reactRedux.useStore();
4448
+ const dispatch = reactRedux.useDispatch();
4449
+ reactRedux.useSelector((state) => state.widget?.values || {});
4019
4450
  // Get dataSourceRequestHandler from context if not provided as prop
4020
- const { dataSourceRequestHandler: contextDataSourceRequestHandler } = useWidgetContext();
4451
+ const { dataSourceRequestHandler: contextDataSourceRequestHandler, schemaData: contextSchemaData } = useWidgetContext();
4021
4452
  const dataSourceRequestHandler = propDataSourceRequestHandler || contextDataSourceRequestHandler;
4453
+ // IntakeForm mode: accordion state - which section is expanded (null = none; first expanded by default)
4454
+ const [expandedSectionIndex, setExpandedSectionIndex] = React.useState(0);
4455
+ const safeSections = sections ?? [];
4456
+ const prevSectionsLengthRef = React.useRef(safeSections.length);
4457
+ // Track dirty (unsaved changes) per section for form handle validation
4458
+ const sectionDirtyMapRef = React.useRef({});
4459
+ const handleSectionDirtyChange = React.useCallback((sectionId, isDirty) => {
4460
+ sectionDirtyMapRef.current = { ...sectionDirtyMapRef.current, [sectionId]: isDirty };
4461
+ onSectionDirtyChange?.(sectionId, isDirty);
4462
+ }, [onSectionDirtyChange]);
4463
+ // Toggle: click expanded section to collapse; click collapsed section to expand
4464
+ const handleExpandSection = React.useCallback((index) => {
4465
+ setExpandedSectionIndex(prev => (prev === index ? null : index));
4466
+ }, []);
4467
+ // IntakeForm mode: called after section save - collapse current, expand next
4468
+ const handleSectionSaveSuccess = React.useCallback((index) => {
4469
+ if (index + 1 < safeSections.length) {
4470
+ setExpandedSectionIndex(index + 1);
4471
+ }
4472
+ // Last section: stay expanded (no action)
4473
+ }, [safeSections.length]);
4474
+ // IntakeForm mode: called when Previous clicked - collapse current, expand previous
4475
+ const handlePreviousSection = React.useCallback((index) => {
4476
+ if (index > 0) {
4477
+ setExpandedSectionIndex(index - 1);
4478
+ }
4479
+ }, []);
4480
+ // Reset/init expanded section when sections change or first load (e.g. async form load)
4481
+ React.useEffect(() => {
4482
+ if (mode !== 'IntakeForm')
4483
+ return;
4484
+ const currentLength = safeSections.length;
4485
+ const prevLength = prevSectionsLengthRef.current;
4486
+ // Clamp when sections shrink or invalid index
4487
+ if (currentLength > 0 && expandedSectionIndex !== null && expandedSectionIndex >= currentLength) {
4488
+ setExpandedSectionIndex(0);
4489
+ }
4490
+ // When sections first load (0 -> N), ensure first section is expanded
4491
+ if (prevLength === 0 && currentLength > 0) {
4492
+ setExpandedSectionIndex(0);
4493
+ }
4494
+ prevSectionsLengthRef.current = currentLength;
4495
+ }, [mode, safeSections.length, expandedSectionIndex]);
4496
+ const UNSAVED_CHANGES_ERROR = 'Unsaved changes detected. Please save all sections before submitting.';
4497
+ // Form handle for onFormReady - allows host to validate and get all section data from its own Submit button
4498
+ const formHandle = React.useMemo(() => {
4499
+ const getValues = () => store.getState().widget?.values || {};
4500
+ const getNamespace = (section, index) => namespace
4501
+ ? typeof namespace === 'string'
4502
+ ? namespace
4503
+ : namespace(section['section-id'], index)
4504
+ : undefined;
4505
+ const checkNoUnsavedChanges = () => {
4506
+ const hasDirty = Object.values(sectionDirtyMapRef.current).some(Boolean);
4507
+ if (hasDirty) {
4508
+ throw new Error(UNSAVED_CHANGES_ERROR);
4509
+ }
4510
+ };
4511
+ return {
4512
+ validate: async () => {
4513
+ checkNoUnsavedChanges();
4514
+ const values = getValues();
4515
+ let allValid = true;
4516
+ for (let i = 0; i < safeSections.length; i++) {
4517
+ const section = safeSections[i];
4518
+ const ns = getNamespace(section, i);
4519
+ const sectionToValidate = ns ? namespaceSectionConfig(section, ns) : section;
4520
+ const valid = sectionValidate(sectionToValidate, values, dispatch);
4521
+ if (!valid)
4522
+ allValid = false;
4523
+ }
4524
+ return allValid;
4525
+ },
4526
+ getFormData: () => getValues(),
4527
+ validateAndGetData: async () => {
4528
+ checkNoUnsavedChanges();
4529
+ const values = getValues();
4530
+ const results = [];
4531
+ for (let i = 0; i < safeSections.length; i++) {
4532
+ const section = safeSections[i];
4533
+ const ns = getNamespace(section, i);
4534
+ const sectionToValidate = ns ? namespaceSectionConfig(section, ns) : section;
4535
+ const valid = sectionValidate(sectionToValidate, values, dispatch);
4536
+ if (!valid) {
4537
+ throw new Error('Validation failed');
4538
+ }
4539
+ results.push(buildSectionChanges(section, values, ns));
4540
+ }
4541
+ return results;
4542
+ },
4543
+ getStructuredData: () => {
4544
+ const values = getValues();
4545
+ const results = [];
4546
+ for (let i = 0; i < safeSections.length; i++) {
4547
+ const section = safeSections[i];
4548
+ const ns = getNamespace(section, i);
4549
+ results.push(buildSectionChanges(section, values, ns));
4550
+ }
4551
+ return results;
4552
+ },
4553
+ };
4554
+ }, [store, dispatch, safeSections, namespace]);
4555
+ // Call onFormReady when form is ready (sections loaded)
4556
+ React.useEffect(() => {
4557
+ if (onFormReady && safeSections.length > 0) {
4558
+ onFormReady(formHandle);
4559
+ }
4560
+ }, [onFormReady, formHandle, safeSections.length]);
4022
4561
  // Warn if dataSourceRequestHandler is missing
4023
4562
  React.useEffect(() => {
4024
4563
  if (!dataSourceRequestHandler) {
@@ -4030,7 +4569,7 @@ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceR
4030
4569
  // Find the maximum number of vertical panels across all sections
4031
4570
  // This determines the grid size (minimum 3 columns)
4032
4571
  // Also account for table widgets and their explicit column spans
4033
- const maxVerticalPanels = Math.max(...sections.map(section => {
4572
+ const maxVerticalPanels = Math.max(...safeSections.map(section => {
4034
4573
  const panelCount = countVerticalPanels(section.panels);
4035
4574
  const tableWidgetSpan = getTableWidgetColumnSpan(section.panels);
4036
4575
  // Use explicit table widget span if specified, otherwise use default logic
@@ -4068,14 +4607,38 @@ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceR
4068
4607
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
4069
4608
  }
4070
4609
  }
4071
- ` }), jsxRuntimeExports.jsx("div", { id: containerId, className: `sections-container ${className}`, children: sections.map((section, index) => {
4610
+
4611
+ /* IntakeForm mode: vertical accordion list instead of grid */
4612
+ #${containerId}.sections-container-intake-form {
4613
+ display: flex;
4614
+ flex-direction: column;
4615
+ gap: 0.75rem;
4616
+ grid-template-columns: unset;
4617
+ }
4618
+ #${containerId}.sections-container-intake-form > .section {
4619
+ grid-column: unset;
4620
+ width: 100%;
4621
+ }
4622
+ ` }), jsxRuntimeExports.jsx("div", { id: containerId, className: `sections-container ${className}${mode === 'IntakeForm' ? ' sections-container-intake-form' : ''}`, children: safeSections.map((section, index) => {
4072
4623
  // Determine namespace for this section
4073
4624
  const sectionNamespace = namespace
4074
4625
  ? (typeof namespace === 'string' ? namespace : namespace(section['section-id'], index))
4075
4626
  : undefined;
4627
+ // IntakeForm mode: pass accordion state and handlers
4628
+ const intakeFormProps = mode === 'IntakeForm'
4629
+ ? {
4630
+ sectionIndex: index,
4631
+ sectionCount: safeSections.length,
4632
+ expandedSectionIndex,
4633
+ onExpandSection: handleExpandSection,
4634
+ onSectionSaveSuccess: handleSectionSaveSuccess,
4635
+ onPreviousSection: handlePreviousSection,
4636
+ isDraft,
4637
+ }
4638
+ : {};
4076
4639
  // Check if section has explicit column span
4077
4640
  if (section['section-column-span']) {
4078
- return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: section['section-column-span'], onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace }, section['section-id']));
4641
+ return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: section['section-column-span'], onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace, onSectionDirtyChange: handleSectionDirtyChange, ...intakeFormProps }, section['section-id']));
4079
4642
  }
4080
4643
  const verticalPanelsCount = countVerticalPanels(section.panels);
4081
4644
  const tableWidgetColumnSpan = getTableWidgetColumnSpan(section.panels);
@@ -4086,7 +4649,7 @@ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceR
4086
4649
  const columnSpan = tableWidgetColumnSpan !== null
4087
4650
  ? tableWidgetColumnSpan
4088
4651
  : (containsTable ? Math.max(verticalPanelsCount, 2) : verticalPanelsCount);
4089
- return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: columnSpan, onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace }, section['section-id']));
4652
+ return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: columnSpan, onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace, onSectionDirtyChange: handleSectionDirtyChange, ...intakeFormProps }, section['section-id']));
4090
4653
  }) })] }));
4091
4654
  };
4092
4655
 
@@ -4526,19 +5089,7 @@ const JSONEditorPanel = ({ section, onChange, onReset, context = 'section', }) =
4526
5089
  }, onMouseLeave: (e) => {
4527
5090
  e.currentTarget.style.background = 'white';
4528
5091
  e.currentTarget.style.borderColor = '#ddd';
4529
- }, title: "Reset to original JSON", children: [jsxRuntimeExports.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }), jsxRuntimeExports.jsx("path", { d: "M21 3v5h-5" }), jsxRuntimeExports.jsx("path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }), jsxRuntimeExports.jsx("path", { d: "M3 21v-5h5" })] }), "Reset"] }), jsxRuntimeExports.jsxs("button", { onClick: () => setShowPreview(true), style: {
4530
- padding: '6px 12px',
4531
- border: '1px solid #ddd',
4532
- borderRadius: '10px',
4533
- background: '#f3f3f3',
4534
- color: '#666',
4535
- cursor: 'pointer',
4536
- display: 'flex',
4537
- alignItems: 'center',
4538
- gap: '6px',
4539
- fontSize: '12px',
4540
- fontWeight: 500,
4541
- }, title: "Preview Section", children: [jsxRuntimeExports.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), jsxRuntimeExports.jsx("circle", { cx: "12", cy: "12", r: "3" })] }), "Preview"] }), jsxRuntimeExports.jsx("span", { style: {
5092
+ }, title: "Reset to original JSON", children: [jsxRuntimeExports.jsx("img", { src: img$3, alt: "Reset", className: "w-3.5 h-3.5 grayscale opacity-70" }), "Reset"] }), jsxRuntimeExports.jsxs("button", { onClick: () => setShowPreview(true), className: "flex items-center gap-2 px-6 py-1.5 bg-[#4A90E2] hover:bg-[#357ABD] text-[#000000] font-bold rounded-full transition-all shadow-sm", title: "Preview Section", children: [jsxRuntimeExports.jsx("span", { className: "text-[14px]", children: "Preview" }), jsxRuntimeExports.jsx("img", { src: img$2, alt: "Preview", className: "w-3 h-3.5" })] }), jsxRuntimeExports.jsx("span", { style: {
4542
5093
  fontSize: '12px',
4543
5094
  color: !rawJsonView ? '#007bff' : '#6c757d',
4544
5095
  fontWeight: !rawJsonView ? 600 : 400,
@@ -5378,7 +5929,7 @@ const VisualBuilderPanel = ({ section, selectedNode, onSelectNode, onSectionChan
5378
5929
  justifyContent: 'center',
5379
5930
  width: '32px',
5380
5931
  height: '32px',
5381
- }, title: isMaximized ? 'Minimize' : 'Maximize', children: isMaximized ? (jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntimeExports.jsx("path", { d: "M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" }) })) : (jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntimeExports.jsx("path", { d: "M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3" }) })) }))] })] }), jsxRuntimeExports.jsxs("div", { style: {
5932
+ }, title: isMaximized ? 'Minimize' : 'Maximize', children: isMaximized ? (jsxRuntimeExports.jsx("img", { src: img, alt: "Minimize", width: "16", height: "16" })) : (jsxRuntimeExports.jsx("img", { src: img$1, alt: "Maximize", width: "16", height: "16" })) }))] })] }), jsxRuntimeExports.jsxs("div", { style: {
5382
5933
  flex: 1,
5383
5934
  display: 'flex',
5384
5935
  overflow: 'hidden',
@@ -8186,10 +8737,11 @@ const ProfileWidget = ({ config }) => {
8186
8737
  flex-shrink: 0;
8187
8738
  }
8188
8739
 
8189
- .${widgetClassId} .profile-avatar-placeholder svg {
8190
- width: ${imageSize * 0.6}px;
8191
- height: ${imageSize * 0.6}px;
8192
- color: #9ca3af;
8740
+ .${widgetClassId} .profile-avatar-placeholder img {
8741
+ width: 100%;
8742
+ height: 100%;
8743
+ border-radius: 8px;
8744
+ object-fit: cover;
8193
8745
  }
8194
8746
 
8195
8747
  .${widgetClassId} .profile-info {
@@ -8235,7 +8787,7 @@ const ProfileWidget = ({ config }) => {
8235
8787
  if (placeholder) {
8236
8788
  placeholder.style.display = 'flex';
8237
8789
  }
8238
- } })) : null, jsxRuntimeExports.jsx("div", { className: "profile-avatar-placeholder", style: { display: imageUrl ? 'none' : 'flex' }, children: jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21c-2.796 0-5.307-.576-7.499-1.882z" }) }) })] }), jsxRuntimeExports.jsxs("div", { className: "profile-info", children: [displayName && (jsxRuntimeExports.jsx("div", { className: "profile-name", children: displayName })), idValue && (jsxRuntimeExports.jsxs("div", { className: "profile-id", children: [showIdLabel && (jsxRuntimeExports.jsx("span", { className: "profile-id-label", children: "ID :" })), jsxRuntimeExports.jsx("span", { className: "profile-id-value", children: idValue })] }))] })] })] }));
8790
+ } })) : null, jsxRuntimeExports.jsx("div", { className: "profile-avatar-placeholder", style: { display: imageUrl ? 'none' : 'flex' }, children: jsxRuntimeExports.jsx("img", { src: img$f, alt: "Profile Placeholder" }) })] }), jsxRuntimeExports.jsxs("div", { className: "profile-info", children: [displayName && (jsxRuntimeExports.jsx("div", { className: "profile-name", children: displayName })), idValue && (jsxRuntimeExports.jsxs("div", { className: "profile-id", children: [showIdLabel && (jsxRuntimeExports.jsx("span", { className: "profile-id-label", children: "ID :" })), jsxRuntimeExports.jsx("span", { className: "profile-id-value", children: idValue })] }))] })] })] }));
8239
8791
  };
8240
8792
 
8241
8793
  const TextAreaWidget = ({ config }) => {