Windows CE changes (from <Someone>)

The changes did not apply to the main trunk as easily as I wouuld have
hoped, so I attempted a number of manual applications. I hope <Someone>
can tell me if there is a problem.

Changelist:
- bugfix: help text windows close immediately after open (unhandled WM_KEYDOWN in mhtext.c)
- bugfix: action button uses hero coordinates instead of cursor position
- pocketpc: bugfix: menu window closes on up/down keys from first/last position
- smartphone: do not translate input when command helper is hidden (fixes Motorola Q keyboard bug)
- smartphone: new keypad layouts
- smartphone: wizard mode command layout
- smartphone: option to feed arbitrary text as a command to nethack core
- wrap/unwrap text option for text windows
- hardware keyboard detection
- hide keypad when hardware keyboard is present
- backport message window highlighting from winnt port
- new icon with recommended image sizes
This commit is contained in:
nethack.allison
2009-10-10 14:39:53 +00:00
parent 1ad1e07d7a
commit 142f13de3f
18 changed files with 844 additions and 81 deletions
-1
View File
@@ -15,7 +15,6 @@ copy ..\..\win\win32\mnsel.uu ..\..\wince\mnsel.uu
copy ..\..\win\win32\mnselcnt.uu ..\..\wince\mnselcnt.uu copy ..\..\win\win32\mnselcnt.uu ..\..\wince\mnselcnt.uu
copy ..\..\win\win32\mnunsel.uu ..\..\wince\mnunsel.uu copy ..\..\win\win32\mnunsel.uu ..\..\wince\mnunsel.uu
copy ..\..\win\win32\petmark.uu ..\..\wince\petmark.uu copy ..\..\win\win32\petmark.uu ..\..\wince\petmark.uu
copy ..\..\sys\winnt\nhico.uu ..\..\wince\nhico.uu
copy ..\..\sys\wince\menubar.uu ..\..\wince\menubar.uu copy ..\..\sys\wince\menubar.uu ..\..\wince\menubar.uu
copy ..\..\sys\wince\keypad.uu ..\..\wince\keypad.uu copy ..\..\sys\wince\keypad.uu ..\..\wince\keypad.uu
REM REM
+53 -2
View File
@@ -155,6 +155,8 @@ static PNHCmdSet nhcmdset_default = 0;
#define NH_LAYOUT_ITEM_HANDLING 3 #define NH_LAYOUT_ITEM_HANDLING 3
#define NH_LAYOUT_CONTROLS 4 #define NH_LAYOUT_CONTROLS 4
#define NH_LAYOUT_ADV_MOVEMENT 5 #define NH_LAYOUT_ADV_MOVEMENT 5
#define NH_LAYOUT_ITEM_LOOKUP 6
#define NH_LAYOUT_WIZARD 7
/* template menu layout */ /* template menu layout */
NHCmdPadCell cells_layout_menu[NH_CMDPAD_CELLNUM] = NHCmdPadCell cells_layout_menu[NH_CMDPAD_CELLNUM] =
@@ -218,7 +220,7 @@ NHCmdPadCell cells_layout_item_handling[NH_CMDPAD_CELLNUM] =
{ -1, "D", "D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "D", "D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "i", "i", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "i", "i", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "[", "[", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "A", "A", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "A", "A", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "I", "I", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "I", "I", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 } { -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 }
@@ -232,7 +234,7 @@ NHCmdPadCell cells_layout_general[NH_CMDPAD_CELLNUM] =
{ -1, "l", "l", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "l", "l", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "s", "s", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "s", "s", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "E", "E", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "E", "E", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x04", "^D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "\x01", "^A", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "c", "c", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "c", "c", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "o", "o", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "o", "o", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "p", "p", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "p", "p", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
@@ -268,12 +270,48 @@ NHCmdPadCell cells_layout_adv_movement[NH_CMDPAD_CELLNUM] =
{ -1, "_", "_", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "_", "_", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x14", "^T", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "\x14", "^T", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "j", "j", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "j", "j", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "<", "<", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, ">", ">", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "^", "^", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 }
};
/* item lookup layout */
NHCmdPadCell cells_layout_lookup[NH_CMDPAD_CELLNUM] =
{
{ -1, ";", ";", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "^", "^", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "]", "]", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, ")", ")", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "=", "=", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "*", "*", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "(", "(", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\"", "\"", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "$", "$", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "+", "+", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 }
};
#ifdef WIZARD
/* wizard mode layout */
NHCmdPadCell cells_layout_wizard[NH_CMDPAD_CELLNUM] =
{
{ -1, "\x05", "^e", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x06", "^f", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x07", "^g", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x09", "^i", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x0f", "^o", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x16", "^v", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x17", "^w", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "\x14", "^T", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "#", "#", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "", "", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 },
{ -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 } { -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 }
}; };
#endif
#else /* !WIN_CE_SMARTPHONE */ #else /* !WIN_CE_SMARTPHONE */
@@ -512,6 +550,19 @@ void register_command_window_class()
plt = nhcmdlayout_create("Advanced Movement", NH_CMDPAD_ROWS, NH_CMDPAD_COLS); plt = nhcmdlayout_create("Advanced Movement", NH_CMDPAD_ROWS, NH_CMDPAD_COLS);
nhcmdlayout_init(plt, cells_layout_adv_movement); nhcmdlayout_init(plt, cells_layout_adv_movement);
nhcmdset_add(nhcmdset_current, plt); nhcmdset_add(nhcmdset_current, plt);
plt = nhcmdlayout_create("Item Lookup", NH_CMDPAD_ROWS, NH_CMDPAD_COLS);
nhcmdlayout_init(plt, cells_layout_lookup);
nhcmdset_add(nhcmdset_current, plt);
#ifdef WIZARD
if( wizard ) {
plt = nhcmdlayout_create("Wizard Mode", NH_CMDPAD_ROWS, NH_CMDPAD_COLS);
nhcmdlayout_init(plt, cells_layout_wizard);
nhcmdset_add(nhcmdset_current, plt);
}
#endif
#else /* ! WIN_CE_SMARTPHONE */ #else /* ! WIN_CE_SMARTPHONE */
plt = nhcmdlayout_create("lowercase", NH_CMDPAD_ROWS, NH_CMDPAD_COLS); plt = nhcmdlayout_create("lowercase", NH_CMDPAD_ROWS, NH_CMDPAD_COLS);
nhcmdlayout_init(plt, cells_layout_mod1); nhcmdlayout_init(plt, cells_layout_mod1);
+3 -3
View File
@@ -130,7 +130,7 @@ LRESULT CALLBACK GetlinDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lP
TRUE ); TRUE );
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
NHSPhoneDialogSetup(hWnd, TRUE, FALSE); NHSPhoneDialogSetup(hWnd, IDC_SPHONE_DIALOGBAR, TRUE, FALSE);
#endif #endif
/* set focus to the edit control */ /* set focus to the edit control */
@@ -242,7 +242,7 @@ LRESULT CALLBACK ExtCmdDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lP
} }
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
NHSPhoneDialogSetup(hWnd, FALSE, FALSE); NHSPhoneDialogSetup(hWnd, IDC_SPHONE_DIALOGBAR, FALSE, FALSE);
GetClientRect(hWnd, &dlg_rt); GetClientRect(hWnd, &dlg_rt);
MoveWindow(GetDlgItem(hWnd, IDC_EXTCMD_LIST), MoveWindow(GetDlgItem(hWnd, IDC_EXTCMD_LIST),
@@ -364,7 +364,7 @@ BOOL CALLBACK PlayerSelectorDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPAR
plselInitDialog(hWnd); plselInitDialog(hWnd);
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
NHSPhoneDialogSetup(hWnd, FALSE, FALSE); NHSPhoneDialogSetup(hWnd, IDC_SPHONE_DIALOGBAR, FALSE, FALSE);
#endif #endif
/* set focus on the role checkbox (random) field */ /* set focus on the role checkbox (random) field */
SetFocus(GetDlgItem(hWnd, IDC_PLSEL_ROLE_RANDOM)); SetFocus(GetDlgItem(hWnd, IDC_PLSEL_ROLE_RANDOM));
+37 -12
View File
@@ -200,8 +200,6 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
(GetNHApp()->bCmdPad? MF_CHECKED : MF_UNCHECKED) (GetNHApp()->bCmdPad? MF_CHECKED : MF_UNCHECKED)
); );
/* create command pad (keyboard emulator) */
GetNHApp()->hCmdWnd = mswin_init_command_window();
} break; } break;
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/
@@ -397,13 +395,21 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
} }
return 0; return 0;
case VK_RETURN: case VK_RETURN: {
NHEVENT_MS( CLICK_1, u.ux, u.uy); int x, y;
if( WIN_MAP!=WIN_ERR ) {
mswin_map_get_cursor(mswin_hwnd_from_winid(WIN_MAP), &x, &y);
} else {
x = u.ux;
y = u.uy;
}
NHEVENT_MS(CLICK_1, x, y);
}
return 0; return 0;
} }
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
if( NHSPhoneTranslateKbdMessage(wParam, lParam, TRUE) ) return 0; if( GetNHApp()->bCmdPad && NHSPhoneTranslateKbdMessage(wParam, lParam, TRUE) ) return 0;
#endif #endif
return 1; /* end of WM_KEYDOWN */ return 1; /* end of WM_KEYDOWN */
@@ -411,13 +417,20 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
case WM_KEYUP: case WM_KEYUP:
if( NHSPhoneTranslateKbdMessage(wParam, lParam, FALSE) ) return 0; if( GetNHApp()->bCmdPad && NHSPhoneTranslateKbdMessage(wParam, lParam, FALSE) ) return 0;
return 1; /* end of WM_KEYUP */ return 1; /* end of WM_KEYUP */
#endif #endif
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/
#if !defined(WIN_CE_SMARTPHONE)
case WM_CHAR: case WM_CHAR:
#if defined(WIN_CE_SMARTPHONE)
/* if smartphone cmdpad is up then translation happens - disable WM_CHAR processing
to avoid double input */
if( GetNHApp()->bCmdPad ) {
return 1;
}
#endif
if( wParam=='\n' || wParam=='\r' || wParam==C('M') ) return 0; /* we already processed VK_RETURN */ if( wParam=='\n' || wParam=='\r' || wParam==C('M') ) return 0; /* we already processed VK_RETURN */
/* all characters go to nethack except Ctrl-P that scrolls message window up */ /* all characters go to nethack except Ctrl-P that scrolls message window up */
@@ -427,7 +440,6 @@ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
NHEVENT_KBD( (lParam & 1<<29)? M(tolower(wParam)) : wParam ); NHEVENT_KBD( (lParam & 1<<29)? M(tolower(wParam)) : wParam );
} }
return 0; return 0;
#endif
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/
@@ -865,6 +877,21 @@ LRESULT onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
DialogBox(GetNHApp()->hApp, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); DialogBox(GetNHApp()->hApp, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break; break;
case IDM_CMD_DLG: {
char input[BUFSZ];
char* p;
boolean ctrl = FALSE;
mswin_getlin("Enter command", input);
for(p=input; *p; p++) {
if( *p == '^' ) {
ctrl = TRUE;
continue;
}
NHEVENT_KBD(ctrl? C(*p) : *p);
ctrl = FALSE;
}
} break;
case IDM_EXIT: case IDM_EXIT:
done2(); done2();
break; break;
@@ -1109,10 +1136,8 @@ void mswin_select_map_mode(int mode)
** first, check if WIN_MAP has been inialized. ** first, check if WIN_MAP has been inialized.
** If not - attempt to retrieve it by type, then check it again ** If not - attempt to retrieve it by type, then check it again
*/ */
if( map_id==WIN_ERR ) if( WIN_MAP!=WIN_ERR )
map_id = mswin_winid_from_type(NHW_MAP); mswin_map_mode(mswin_hwnd_from_winid(WIN_MAP), mode);
if( map_id!=WIN_ERR )
mswin_map_mode(mswin_hwnd_from_winid(map_id), mode);
} }
static struct t_menu2mapmode { static struct t_menu2mapmode {
+11
View File
@@ -299,6 +299,17 @@ int mswin_map_mode(HWND hWnd, int mode)
return oldMode; return oldMode;
} }
/* retrieve cursor position */
void mswin_map_get_cursor(HWND hWnd, int* x, int* y)
{
PNHMapWindow data;
data = (PNHMapWindow)GetWindowLong(hWnd, GWL_USERDATA);
if( !data ) panic("mswin_map_get_cursor: no window data");
if( x ) *x = data->xCur;
if( y ) *y = data->yCur;
}
/* register window class for map window */ /* register window class for map window */
void register_map_window_class() void register_map_window_class()
{ {
+1
View File
@@ -14,6 +14,7 @@
HWND mswin_init_map_window (void); HWND mswin_init_map_window (void);
void mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw); void mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw);
int mswin_map_mode(HWND hWnd, int mode); int mswin_map_mode(HWND hWnd, int mode);
void mswin_map_get_cursor(HWND hWnd, int* x, int* y);
#define ROGUE_LEVEL_MAP_MODE MAP_MODE_ASCII12x16 #define ROGUE_LEVEL_MAP_MODE MAP_MODE_ASCII12x16
+5 -1
View File
@@ -271,7 +271,7 @@ LRESULT CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
/* special initialization for SmartPhone dialogs */ /* special initialization for SmartPhone dialogs */
NHSPhoneDialogSetup(hWnd, FALSE, GetNHApp()->bFullScreen); NHSPhoneDialogSetup(hWnd, IDC_SPHONE_DIALOGBAR, FALSE, GetNHApp()->bFullScreen);
#endif #endif
} break; } break;
@@ -1441,6 +1441,10 @@ LRESULT CALLBACK NHMenuListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
bUpdateFocusItem = TRUE; bUpdateFocusItem = TRUE;
} break; } break;
/* tell Windows not to process arrow keys */
case WM_GETDLGCODE:
return DLGC_WANTARROWS;
#else /* defined(WIN_CE_SMARTPHONE) */ #else /* defined(WIN_CE_SMARTPHONE) */
case WM_KEYDOWN: case WM_KEYDOWN:
if( wParam==VK_TACTION ) { if( wParam==VK_TACTION ) {
+25 -16
View File
@@ -46,6 +46,7 @@ static void onMSNH_VScroll(HWND hWnd, WPARAM wParam, LPARAM lParam);
#ifndef MSG_WRAP_TEXT #ifndef MSG_WRAP_TEXT
static void onMSNH_HScroll(HWND hWnd, WPARAM wParam, LPARAM lParam); static void onMSNH_HScroll(HWND hWnd, WPARAM wParam, LPARAM lParam);
#endif #endif
static COLORREF setMsgTextColor(HDC hdc, int gray);
static void onPaint(HWND hWnd); static void onPaint(HWND hWnd);
static void onCreate(HWND hWnd, WPARAM wParam, LPARAM lParam); static void onCreate(HWND hWnd, WPARAM wParam, LPARAM lParam);
@@ -457,6 +458,24 @@ void onMSNH_HScroll(HWND hWnd, WPARAM wParam, LPARAM lParam)
} }
#endif // MSG_WRAP_TEXT #endif // MSG_WRAP_TEXT
COLORREF setMsgTextColor(HDC hdc, int gray)
{
COLORREF fg, color1, color2;
if (gray) {
color1 = mswin_get_color(NHW_MESSAGE, MSWIN_COLOR_BG);
color2 = mswin_get_color(NHW_MESSAGE, MSWIN_COLOR_FG);
/* Make a "gray" color by taking the average of the individual R,G,B
components of two colors. Thanks to Jonathan del Strother */
fg = RGB((GetRValue(color1)+GetRValue(color2))/2,
(GetGValue(color1)+GetGValue(color2))/2,
(GetBValue(color1)+GetBValue(color2))/2);
} else {
fg = mswin_get_color(NHW_MESSAGE, MSWIN_COLOR_FG);
}
return SetTextColor(hdc, fg);
}
void onPaint(HWND hWnd) void onPaint(HWND hWnd)
{ {
PAINTSTRUCT ps; PAINTSTRUCT ps;
@@ -473,7 +492,7 @@ void onPaint(HWND hWnd)
hdc = BeginPaint(hWnd, &ps); hdc = BeginPaint(hWnd, &ps);
OldBg = SetBkColor(hdc, mswin_get_color(NHW_MESSAGE, MSWIN_COLOR_BG)); OldBg = SetBkColor(hdc, mswin_get_color(NHW_MESSAGE, MSWIN_COLOR_BG));
OldFg = SetTextColor(hdc, mswin_get_color(NHW_MESSAGE, MSWIN_COLOR_FG)); OldFg = setMsgTextColor(hdc, 0);
data = (PNHMessageWindow)GetWindowLong(hWnd, GWL_USERDATA); data = (PNHMessageWindow)GetWindowLong(hWnd, GWL_USERDATA);
@@ -504,6 +523,7 @@ void onPaint(HWND hWnd)
oldFont = SelectObject(hdc, mswin_get_font(NHW_MESSAGE, data->window_text[i].attr, hdc, FALSE)); oldFont = SelectObject(hdc, mswin_get_font(NHW_MESSAGE, data->window_text[i].attr, hdc, FALSE));
setMsgTextColor(hdc, i < (MSG_LINES - data->lines_last_turn));
#ifdef MSG_WRAP_TEXT #ifdef MSG_WRAP_TEXT
DrawText(hdc, wbuf, wlen, &draw_rt, DT_NOPREFIX | DT_WORDBREAK | DT_CALCRECT); DrawText(hdc, wbuf, wlen, &draw_rt, DT_NOPREFIX | DT_WORDBREAK | DT_CALCRECT);
draw_rt.top = y - (draw_rt.bottom - draw_rt.top); draw_rt.top = y - (draw_rt.bottom - draw_rt.top);
@@ -518,21 +538,6 @@ void onPaint(HWND hWnd)
} else { } else {
y -= data->yChar; y -= data->yChar;
} }
/* highligh the last line */
if( i==MSG_LINES-1 ) {
draw_rt.left = client_rt.left;
draw_rt.right = draw_rt.left + 2*data->xChar;
DrawText(hdc, TEXT("> "), 2, &draw_rt, DT_NOPREFIX );
y -= 2;
draw_rt.left = client_rt.left;
draw_rt.right = client_rt.right;
draw_rt.top -= 2;
draw_rt.bottom = client_rt.bottom;
DrawEdge(hdc, &draw_rt, EDGE_SUNKEN, BF_TOP );
DrawEdge(hdc, &draw_rt, EDGE_SUNKEN, BF_BOTTOM );
}
} }
} }
@@ -569,6 +574,10 @@ void onCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
/* Free the device context. */ /* Free the device context. */
SelectObject(hdc, saveFont); SelectObject(hdc, saveFont);
ReleaseDC (hWnd, hdc); ReleaseDC (hWnd, hdc);
/* create command pad (keyboard emulator) */
if( !GetNHApp()->hCmdWnd )
GetNHApp()->hCmdWnd = mswin_init_command_window();
} }
void mswin_message_window_size (HWND hWnd, LPSIZE sz) void mswin_message_window_size (HWND hWnd, LPSIZE sz)
+84 -24
View File
@@ -21,6 +21,7 @@ LRESULT CALLBACK TextWndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK NHTextControlWndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK NHTextControlWndProc(HWND, UINT, WPARAM, LPARAM);
static void onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam); static void onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam);
static void LayoutText(HWND hwnd); static void LayoutText(HWND hwnd);
static void ToggleWrapStatus(HWND hDlg, BOOL bWrap);
HWND mswin_init_text_window () { HWND mswin_init_text_window () {
HWND ret; HWND ret;
@@ -51,11 +52,7 @@ void mswin_display_text_window (HWND hWnd)
data = (PNHTextWindow)GetWindowLong(hWnd, GWL_USERDATA); data = (PNHTextWindow)GetWindowLong(hWnd, GWL_USERDATA);
if( data ) { if( data ) {
HWND control; ToggleWrapStatus(hWnd, mswin_get_text_wrap(data->window_text));
control = GetDlgItem(hWnd, IDC_TEXT_CONTROL);
SendMessage(control, EM_FMTLINES, 1, 0 );
mswin_render_text(data->window_text, GetDlgItem(hWnd, IDC_TEXT_CONTROL));
data->done = 0; data->done = 0;
mswin_popup_display(hWnd, &data->done); mswin_popup_display(hWnd, &data->done);
mswin_popup_destroy(hWnd); mswin_popup_destroy(hWnd);
@@ -84,22 +81,12 @@ LRESULT CALLBACK TextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
/* special initialization for SmartPhone dialogs */ /* special initialization for SmartPhone dialogs */
NHSPhoneDialogSetup(hWnd, FALSE, GetNHApp()->bFullScreen); NHSPhoneDialogSetup(hWnd, IDC_SPHONE_TEXTDIALOGBAR, FALSE, GetNHApp()->bFullScreen);
#endif #endif
/* subclass edit control */ /* subclass edit control */
editControlWndProc = (WNDPROC)GetWindowLong(control, GWL_WNDPROC); editControlWndProc = (WNDPROC)GetWindowLong(control, GWL_WNDPROC);
SetWindowLong(control, GWL_WNDPROC, (LONG)NHTextControlWndProc); SetWindowLong(control, GWL_WNDPROC, (LONG)NHTextControlWndProc);
if( !program_state.gameover && GetNHApp()->bWrapText ) {
DWORD styles;
styles = GetWindowLong(control, GWL_STYLE);
if( styles ) {
SetWindowLong(control, GWL_STYLE, styles & (~WS_HSCROLL));
SetWindowPos(control, NULL, 0, 0, 0, 0,
SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE );
}
}
SetFocus(control); SetFocus(control);
return FALSE; return FALSE;
@@ -116,8 +103,11 @@ LRESULT CALLBACK TextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar
{ {
case IDOK: case IDOK:
case IDCANCEL: case IDCANCEL:
data->done = 1; data->done = 1;
return TRUE; return TRUE;
case IDC_TEXT_TOGGLE_WRAP:
ToggleWrapStatus(hWnd, !mswin_get_text_wrap(data->window_text));
return TRUE;
} }
break; break;
@@ -159,16 +149,80 @@ void onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
} }
} }
void ToggleWrapStatus(HWND hDlg, BOOL bWrap)
{
DWORD styles;
PNHTextWindow data;
HWND control;
TCHAR wbuf[BUFSZ];
data = (PNHTextWindow)GetWindowLong(hDlg, GWL_USERDATA);
control = GetDlgItem(hDlg, IDC_TEXT_CONTROL);
if( !control ) {
panic("cannot get text view window");
}
/* set horizontal scrollbar status */
styles = GetWindowLong(control, GWL_STYLE);
if( styles ) {
SetWindowLong(control, GWL_STYLE, (bWrap? (styles & (~WS_HSCROLL)) : (styles | WS_HSCROLL)));
SetWindowPos(control, NULL, 0, 0, 0, 0,
SWP_FRAMECHANGED | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE );
}
/* set text wrap mode */
mswin_set_text_wrap(data->window_text, bWrap);
mswin_render_text(data->window_text, control);
/* change button status */
ZeroMemory( wbuf, sizeof(wbuf) );
if( !LoadString(
GetNHApp()->hApp,
(bWrap? IDS_TEXT_UNWRAP : IDS_TEXT_WRAP),
wbuf,
BUFSZ) ) {
panic("cannot load text window strings");
}
#if defined(WIN_CE_SMARTPHONE)
{
TBBUTTONINFO tbbi;
ZeroMemory( &tbbi, sizeof(tbbi) );
tbbi.cbSize = sizeof(tbbi);
tbbi.dwMask = TBIF_TEXT;
tbbi.pszText = wbuf;
if( !SendMessage(
SHFindMenuBar(hDlg),
TB_SETBUTTONINFO,
IDC_TEXT_TOGGLE_WRAP,
(LPARAM)&tbbi) ) {
error( "Cannot update IDC_TEXT_TOGGLE_WRAP menu item." );
}
}
#else
SendDlgItemMessage(
hDlg,
IDC_TEXT_TOGGLE_WRAP,
WM_SETTEXT,
(WPARAM)0,
(LPARAM)wbuf
);
#endif
}
void LayoutText(HWND hWnd) void LayoutText(HWND hWnd)
{ {
HWND btn_ok; HWND btn_ok, btn_wrap;
HWND text; HWND text;
RECT clrt, rt; RECT clrt, rt;
POINT pt_elem, pt_ok; POINT pt_elem, pt_ok, pt_wrap;
SIZE sz_elem, sz_ok; SIZE sz_elem, sz_ok, sz_wrap;
text = GetDlgItem(hWnd, IDC_TEXT_CONTROL); text = GetDlgItem(hWnd, IDC_TEXT_CONTROL);
btn_ok = GetDlgItem(hWnd, IDOK); btn_ok = GetDlgItem(hWnd, IDOK);
btn_wrap = GetDlgItem(hWnd, IDC_TEXT_TOGGLE_WRAP);
/* get window coordinates */ /* get window coordinates */
GetClientRect(hWnd, &clrt ); GetClientRect(hWnd, &clrt );
@@ -176,12 +230,18 @@ void LayoutText(HWND hWnd)
/* set window placements */ /* set window placements */
if( IsWindow(btn_ok) ) { if( IsWindow(btn_ok) ) {
GetWindowRect(btn_ok, &rt); GetWindowRect(btn_ok, &rt);
sz_ok.cx = clrt.right - clrt.left; sz_ok.cx = (clrt.right - clrt.left)/2;
sz_ok.cy = rt.bottom-rt.top; sz_ok.cy = rt.bottom-rt.top;
pt_ok.x = clrt.left; pt_ok.x = clrt.left;
pt_ok.y = clrt.bottom - sz_ok.cy; pt_ok.y = clrt.bottom - sz_ok.cy;
MoveWindow(btn_ok, pt_ok.x, pt_ok.y, sz_ok.cx, sz_ok.cy, TRUE ); MoveWindow(btn_ok, pt_ok.x, pt_ok.y, sz_ok.cx, sz_ok.cy, TRUE );
sz_wrap.cx = (clrt.right - clrt.left)/2;
sz_wrap.cy = rt.bottom-rt.top;
pt_wrap.x = clrt.left + sz_ok.cx;
pt_wrap.y = clrt.bottom - sz_ok.cy;
MoveWindow(btn_wrap, pt_wrap.x, pt_wrap.y, sz_wrap.cx, sz_wrap.cy, TRUE );
pt_elem.x = clrt.left; pt_elem.x = clrt.left;
pt_elem.y = clrt.top; pt_elem.y = clrt.top;
sz_elem.cx = clrt.right - clrt.left; sz_elem.cx = clrt.right - clrt.left;
@@ -200,7 +260,7 @@ void LayoutText(HWND hWnd)
LRESULT CALLBACK NHTextControlWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK NHTextControlWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ {
switch(message) { switch(message) {
case WM_KEYUP: case WM_KEYDOWN:
switch( wParam ) { switch( wParam ) {
case VK_SPACE: case VK_SPACE:
case VK_RETURN: case VK_RETURN:
@@ -228,7 +288,7 @@ LRESULT CALLBACK NHTextControlWndProc(HWND hWnd, UINT message, WPARAM wParam, LP
PostMessage(hWnd, WM_HSCROLL, MAKEWPARAM(SB_LINERIGHT, 0), (LPARAM)NULL); PostMessage(hWnd, WM_HSCROLL, MAKEWPARAM(SB_LINERIGHT, 0), (LPARAM)NULL);
return 0; return 0;
} }
break; /* case WM_KEYUP: */ break; /* case WM_KEYDOWN: */
} }
if( editControlWndProc ) if( editControlWndProc )
+13 -1
View File
@@ -96,7 +96,9 @@ void mswin_add_text(PNHTextBuffer pb, int attr, const char* text)
/* if there are 3 (or more) consecutive spaces inside the string /* if there are 3 (or more) consecutive spaces inside the string
consider it formatted */ consider it formatted */
new_line->formatted = (strstr(new_line->text, " ")!=NULL); new_line->formatted =
(strstr(new_line->text, " ")!=NULL)
|| (new_line->beg_padding>8);
} else { } else {
new_line->end_padding = 0; new_line->end_padding = 0;
new_line->text[0] = 0; new_line->text[0] = 0;
@@ -105,6 +107,16 @@ void mswin_add_text(PNHTextBuffer pb, int attr, const char* text)
pb->n_used++; pb->n_used++;
} }
/*----------------------------------------------------------------*/ /*----------------------------------------------------------------*/
void mswin_set_text_wrap(PNHTextBuffer pb, BOOL wrap_text)
{
pb->b_wrap_text = wrap_text;
}
/*----------------------------------------------------------------*/
BOOL mswin_get_text_wrap(PNHTextBuffer pb)
{
return pb->b_wrap_text;
}
/*----------------------------------------------------------------*/
static TCHAR* nh_append( TCHAR* s, int* size, const char* ap ) static TCHAR* nh_append( TCHAR* s, int* size, const char* ap )
{ {
int tlen, tnewlen; int tlen, tnewlen;
+2
View File
@@ -12,6 +12,8 @@ typedef struct mswin_nethack_text_buffer* PNHTextBuffer;
PNHTextBuffer mswin_init_text_buffer(BOOL wrap_text); PNHTextBuffer mswin_init_text_buffer(BOOL wrap_text);
void mswin_free_text_buffer(PNHTextBuffer pb); void mswin_free_text_buffer(PNHTextBuffer pb);
void mswin_add_text(PNHTextBuffer pb, int attr, const char* text); void mswin_add_text(PNHTextBuffer pb, int attr, const char* text);
void mswin_set_text_wrap(PNHTextBuffer pb, BOOL wrap_text);
BOOL mswin_get_text_wrap(PNHTextBuffer pb);
void mswin_render_text(PNHTextBuffer pb, HWND edit_control); void mswin_render_text(PNHTextBuffer pb, HWND edit_control);
#endif /* MSWINTextBuffer_h */ #endif /* MSWINTextBuffer_h */
+21 -2
View File
@@ -1891,7 +1891,7 @@ void mswin_set_fullscreen(BOOL is_fullscreen)
} }
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit, BOOL is_fullscreen) void NHSPhoneDialogSetup(HWND hDlg, UINT nToolBarId, BOOL is_edit, BOOL is_fullscreen)
{ {
SHMENUBARINFO mbi; SHMENUBARINFO mbi;
HWND hOK, hCancel; HWND hOK, hCancel;
@@ -1901,7 +1901,7 @@ void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit, BOOL is_fullscreen)
ZeroMemory(&mbi, sizeof(SHMENUBARINFO)); ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(mbi); mbi.cbSize = sizeof(mbi);
mbi.hwndParent = hDlg; mbi.hwndParent = hDlg;
mbi.nToolBarId = IDC_SPHONE_DIALOGBAR; mbi.nToolBarId = nToolBarId;
mbi.hInstRes = GetNHApp()->hApp; mbi.hInstRes = GetNHApp()->hApp;
if(!SHCreateMenuBar(&mbi)) { if(!SHCreateMenuBar(&mbi)) {
error("cannot create dialog menu"); error("cannot create dialog menu");
@@ -1961,6 +1961,25 @@ void mswin_write_reg(void)
{ {
} }
/* check HKCU\Software\\Microsoft\\Shell\HasKeyboard for keyboard presence,
if the key is not there assume older device and no keyboard */
BOOL mswin_has_keyboard(void)
{
DWORD dwHasKB = 0;
#if defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE)
HKEY hKey;
DWORD dwType;
DWORD dwSize = sizeof(dwHasKB);
if( RegOpenKeyEx(HKEY_CURRENT_USER , _T("Software\\Microsoft\\Shell"), 0, 0, &hKey)==ERROR_SUCCESS) {
if( RegQueryValueEx(hKey, _T("HasKeyboard"), NULL, &dwType, (LPBYTE)&dwHasKB, &dwSize)!=ERROR_SUCCESS) {
dwHasKB = 0;
}
RegCloseKey(hKey);
}
#endif
return (dwHasKB==1);
}
#ifdef _DEBUG #ifdef _DEBUG
#include <stdarg.h> #include <stdarg.h>
+555
View File
@@ -0,0 +1,555 @@
begin 700 nethack.ico
M```!``8`("``````"`"H"```9@```!`0``````@`:`4```X)```L+``````(
M`!@-``!V#@``0$``````"``H%@``CAL``%I:``````@`N"@``+8Q```6%@``
M```(`)`&``!N6@``*````"````!``````0`(````````!```````````````
M`0````$``````````(```(````"`@`"`````@`"``("```#`P,``P-S``/#*
MI@`$!`0`"`@(``P,#``1$1$`%A86`!P<'``B(B(`*2DI`%5550!-34T`0D)"
M`#DY.0"`?/\`4%#_`),`U@#_[,P`QM;O`-;GYP"0J:T````S````9@```)D`
M``#,```S````,S,``#-F```SF0``,\P``#/_``!F````9C,``&9F``!FF0``
M9LP``&;_``"9````F3,``)EF``"9F0``F<P``)G_``#,````S#,``,QF``#,
MF0``S,P``,S_``#_9@``_YD``/_,`#,````S`#,`,P!F`#,`F0`S`,P`,P#_
M`#,S```S,S,`,S-F`#,SF0`S,\P`,S/_`#-F```S9C,`,V9F`#-FF0`S9LP`
M,V;_`#.9```SF3,`,YEF`#.9F0`SF<P`,YG_`#/,```SS#,`,\QF`#/,F0`S
MS,P`,\S_`#/_,P`S_V8`,_^9`#/_S``S__\`9@```&8`,P!F`&8`9@"9`&8`
MS`!F`/\`9C,``&8S,P!F,V8`9C.9`&8SS`!F,_\`9F8``&9F,P!F9F8`9F:9
M`&9FS`!FF0``9IDS`&:99@!FF9D`9IG,`&:9_P!FS```9LPS`&;,F0!FS,P`
M9LS_`&;_``!F_S,`9O^9`&;_S`#,`/\`_P#,`)F9``"9,YD`F0"9`)D`S`"9
M````F3,S`)D`9@"9,\P`F0#_`)EF``"99C,`F3-F`)EFF0"99LP`F3/_`)F9
M,P"9F68`F9F9`)F9S`"9F?\`F<P``)G,,P!FS&8`F<R9`)G,S`"9S/\`F?\`
M`)G_,P"9S&8`F?^9`)G_S`"9__\`S````)D`,P#,`&8`S`"9`,P`S`"9,P``
MS#,S`,PS9@#,,YD`S#/,`,PS_P#,9@``S&8S`)EF9@#,9ID`S&;,`)EF_P#,
MF0``S)DS`,R99@#,F9D`S)G,`,R9_P#,S```S,PS`,S,9@#,S)D`S,S,`,S,
M_P#,_P``S/\S`)G_9@#,_YD`S/_,`,S__P#,`#,`_P!F`/\`F0#,,P``_S,S
M`/\S9@#_,YD`_S/,`/\S_P#_9@``_V8S`,QF9@#_9ID`_V;,`,QF_P#_F0``
M_YDS`/^99@#_F9D`_YG,`/^9_P#_S```_\PS`/_,9@#_S)D`_\S,`/_,_P#_
M_S,`S/]F`/__F0#__\P`9F;_`&;_9@!F__\`_V9F`/]F_P#__V8`(0"E`%]?
M7P!W=W<`AH:&`):6E@#+R\L`LK*R`-?7UP#=W=T`X^/C`.KJZ@#Q\?$`^/CX
M`/#[_P"DH*``@("`````_P``_P```/__`/\```#_`/\`__\``/___P`*"@H*
M"O3R"@H*"@H*\_#R"@H*"@H*"@KT"@H*"@H*"@H*"@KS;1+T"@H*"O'PO`<'
M\@H*"@KSO/'T"@H*"@H*"@H*"@KL1.L*"O/Q\&\'!Y/WO`H*]`>\\O,*"@H*
M"@H*"@H*"O3J1._R\`=&1P<'(&_OO`H'!_.\"@H*"@H*"@H*"@H*"O!$[+R3
M("!'!Y,@($6\O`?S\/(*"@H*"@H*"@H*"@H*"N\''"`@($<'DR`@'T6\\/#Q
M"@H*"@H*"@H*"@H*"@KR!QP?("`@1P?O("`?'T7PO`H*"@H*"@H*"@H*"@H*
M"@<''Q\@("!&[.M%Z1\?`6[Q]`H*"@H*"@H*"@H*"@KR[VX!'^GL[`<'!P=M
M'Q\!`;SQ"@H*"@H*"@H*"@H*"O$'10%%!P<';_>2;D4?'P$!!_`*"@H*"@H*
M"@H*"@H*\`<!`0?W12!&Z^QNZNKJ1`&3O`H*"@H*"@H*"@H*"@KP!P%N!T0@
M$NR2[/?WD@?L`9.\"@H*"@H*"@H*"@H*"O$'`0?W'V[W!_"\[^P?D@=$D[P*
M"@H*"@H*"@H*"@H*\0>\!^N\!P?Q\_(';0?W!^R\!PH*"@H*"@H*"@H*"@KQ
MO+P';;SO!_+T\KSK\.\'[`<'"@H*"@H*"@H*"@H*"O*\`0?MZ6[W\/'P]^L?
M[`=$DP<*"@H*"@H*"@H*"@H*\O`![`=$(._O[^WO[!^2[`&3!PH*"@H*"@H*
M"@H*"@KR\`$!!_=%(&[W]^UN;0=$`9/O"@H*"@H*"@H*"@H*"O/Q`0%%!^]M
M1>WMZNL'$@$!'.\'!_(*"@H*"@H*"@H*\_$!`1_I'`<'[P<'[T4?`0$<[_$'
M[[P*"@H*"@H*"@KS\0$!'R`@(&^2]T8@'Q\!`>WW\`?O!_(*"@H*"@H*"O/Q
M`0$?("`@1@<'("`?'P$![9+P!^^2[_,*"@H*"@H*\_`!`1\?("!&!P<@(!\!
M`0%N[?`'[Y+L[PH*"@H*"@KS\._O!P?O[P<'\/"\O+P'!^V2O`?ODNP'"@H*
M"@H*"@?M[._R\+SP\?+R\O"\O`?O[^R\!^_M[.\*"@H*"@KQ1$1N"@H*"@H*
M"@KQ\_/Q!^\'[^V2!_`'[`H*"@H*"FU$ZO,*"@H*"@H*"@?S\_`'[Y*\[/(*
M"@KS"@H*"@KL1$0'"@H*"@H*"@H*\_/S\`?O[._Q[PH*"@H*"@H*[T1$'`H*
M"@H*"@H*"@H*\_/P!_<'"O0*"@H*"@H*"@KL'.P*"@H*"@H*"@H*"@KP!_`'
M]PH*"@H*"@H*"@H*"@H'\@H*"@H*"@H*"@H*"@KRO`?O"@H*"@H*"@H*"@H*
M"@H*"@H*"@H*"@H*"@H*"@H*\_#S"@H*"@H*"@H*^?C_?_#P/#_XP!@_^``(
M?_P``'_^``#__``!__P``/_X``#_^```__@``/_X``#_^```__@``/_X``#_
M^```__@``/_X``#_^```'_@```_X```'^````_@```/X```#^````_#_``/P
M_P`[X?\`/\/_@7_'_X/_Y__#____\?\H````$````"`````!``@````````!
M```````````````!`````0``````````@```@````("``(````"``(``@(``
M`,#`P`#`W,``\,JF``0$!``("`@`#`P,`!$1$0`6%A8`'!P<`"(B(@`I*2D`
M5555`$U-30!"0D(`.3DY`(!\_P!04/\`DP#6`/_LS`#&UN\`UN?G`)"IK0``
M`#,```!F````F0```,P``#,````S,P``,V8``#.9```SS```,_\``&8```!F
M,P``9F8``&:9``!FS```9O\``)D```"9,P``F68``)F9``"9S```F?\``,P`
M``#,,P``S&8``,R9``#,S```S/\``/]F``#_F0``_\P`,P```#,`,P`S`&8`
M,P"9`#,`S``S`/\`,S,``#,S,P`S,V8`,S.9`#,SS``S,_\`,V8``#-F,P`S
M9F8`,V:9`#-FS``S9O\`,YD``#.9,P`SF68`,YF9`#.9S``SF?\`,\P``#/,
M,P`SS&8`,\R9`#/,S``SS/\`,_\S`#/_9@`S_YD`,__,`#/__P!F````9@`S
M`&8`9@!F`)D`9@#,`&8`_P!F,P``9C,S`&8S9@!F,YD`9C/,`&8S_P!F9@``
M9F8S`&9F9@!F9ID`9F;,`&:9``!FF3,`9IEF`&:9F0!FF<P`9IG_`&;,``!F
MS#,`9LR9`&;,S`!FS/\`9O\``&;_,P!F_YD`9O_,`,P`_P#_`,P`F9D``)DS
MF0"9`)D`F0#,`)D```"9,S,`F0!F`)DSS`"9`/\`F68``)EF,P"9,V8`F6:9
M`)EFS`"9,_\`F9DS`)F99@"9F9D`F9G,`)F9_P"9S```F<PS`&;,9@"9S)D`
MF<S,`)G,_P"9_P``F?\S`)G,9@"9_YD`F?_,`)G__P#,````F0`S`,P`9@#,
M`)D`S`#,`)DS``#,,S,`S#-F`,PSF0#,,\P`S#/_`,QF``#,9C,`F69F`,QF
MF0#,9LP`F6;_`,R9``#,F3,`S)EF`,R9F0#,F<P`S)G_`,S,``#,S#,`S,QF
M`,S,F0#,S,P`S,S_`,S_``#,_S,`F?]F`,S_F0#,_\P`S/__`,P`,P#_`&8`
M_P"9`,PS``#_,S,`_S-F`/\SF0#_,\P`_S/_`/]F``#_9C,`S&9F`/]FF0#_
M9LP`S&;_`/^9``#_F3,`_YEF`/^9F0#_F<P`_YG_`/_,``#_S#,`_\QF`/_,
MF0#_S,P`_\S_`/__,P#,_V8`__^9`/__S`!F9O\`9O]F`&;__P#_9F8`_V;_
M`/__9@`A`*4`7U]?`'=W=P"&AH8`EI:6`,O+RP"RLK(`U]?7`-W=W0#CX^,`
MZNKJ`/'Q\0#X^/@`\/O_`*2@H`"`@(````#_``#_````__\`_P```/\`_P#_
M_P``____````[QP``/'P\@``\O0```````=$\/!O[I.\\[SR````````[.]&
M1@<@;^[P`````````+Q%($;MZ1^3\@```````/0''^SWDO@?`;P```````#R
MD^Q%;NSX^$3N````````\N[W[._S]Y+K[@```````//N]^SW\??MZP<`````
M``#SD^QN[.WM;43O````````\^\![.WL[.H![P<'`````/23'R!&[R`?`?>\
M[_````#T[VX<D[R3DQR2O/?O````[>N\\O+T\O`'![SOD@``!T0<`````/'R
M[Y+W`````.MN``````#S\._S\@````#T`````````//P]`````#,9P``P`<`
M`.`/``#@#P``P`\``,`/``#`#P``P`\``,`/``#``P``P`$``,`!``#``0``
MCP<``)\'``"_CP``*````"P```!8`````0`(``````"0!P``````````````
M`0````$``````````(```(````"`@`"`````@`"``("```#`P,``P-S``/#*
MI@`$!`0`"`@(``P,#``1$1$`%A86`!P<'``B(B(`*2DI`%5550!-34T`0D)"
M`#DY.0"`?/\`4%#_`),`U@#_[,P`QM;O`-;GYP"0J:T````S````9@```)D`
M``#,```S````,S,``#-F```SF0``,\P``#/_``!F````9C,``&9F``!FF0``
M9LP``&;_``"9````F3,``)EF``"9F0``F<P``)G_``#,````S#,``,QF``#,
MF0``S,P``,S_``#_9@``_YD``/_,`#,````S`#,`,P!F`#,`F0`S`,P`,P#_
M`#,S```S,S,`,S-F`#,SF0`S,\P`,S/_`#-F```S9C,`,V9F`#-FF0`S9LP`
M,V;_`#.9```SF3,`,YEF`#.9F0`SF<P`,YG_`#/,```SS#,`,\QF`#/,F0`S
MS,P`,\S_`#/_,P`S_V8`,_^9`#/_S``S__\`9@```&8`,P!F`&8`9@"9`&8`
MS`!F`/\`9C,``&8S,P!F,V8`9C.9`&8SS`!F,_\`9F8``&9F,P!F9F8`9F:9
M`&9FS`!FF0``9IDS`&:99@!FF9D`9IG,`&:9_P!FS```9LPS`&;,F0!FS,P`
M9LS_`&;_``!F_S,`9O^9`&;_S`#,`/\`_P#,`)F9``"9,YD`F0"9`)D`S`"9
M````F3,S`)D`9@"9,\P`F0#_`)EF``"99C,`F3-F`)EFF0"99LP`F3/_`)F9
M,P"9F68`F9F9`)F9S`"9F?\`F<P``)G,,P!FS&8`F<R9`)G,S`"9S/\`F?\`
M`)G_,P"9S&8`F?^9`)G_S`"9__\`S````)D`,P#,`&8`S`"9`,P`S`"9,P``
MS#,S`,PS9@#,,YD`S#/,`,PS_P#,9@``S&8S`)EF9@#,9ID`S&;,`)EF_P#,
MF0``S)DS`,R99@#,F9D`S)G,`,R9_P#,S```S,PS`,S,9@#,S)D`S,S,`,S,
M_P#,_P``S/\S`)G_9@#,_YD`S/_,`,S__P#,`#,`_P!F`/\`F0#,,P``_S,S
M`/\S9@#_,YD`_S/,`/\S_P#_9@``_V8S`,QF9@#_9ID`_V;,`,QF_P#_F0``
M_YDS`/^99@#_F9D`_YG,`/^9_P#_S```_\PS`/_,9@#_S)D`_\S,`/_,_P#_
M_S,`S/]F`/__F0#__\P`9F;_`&;_9@!F__\`_V9F`/]F_P#__V8`(0"E`%]?
M7P!W=W<`AH:&`):6E@#+R\L`LK*R`-?7UP#=W=T`X^/C`.KJZ@#Q\?$`^/CX
M`/#[_P"DH*``@("`````_P``_P```/__`/\```#_`/\`__\``/___P``````
M````]/+T````````````\O#R````````````````````````````````````
M`/3Q$^\`````````\_#PO`<'\0``````````\_'R]```````````````````
M\^M$1/```````/'P\+P'!P?O!_,``````/('!_3S````````````````````
MO$I$;?0``/3Q\O"3DP>\;^_W[_$```#S!P?S\O(`````````````````````
M[T1$[0#T\/'N1OD6![P@(&_O[_$```<'\?.\````````````````````````
M^$1$!_#PDR`@^18'[B`@($8'!_*\![SS\/````````````````````````#S
M;6T'O),@("#Y%@<'("`@'T7PO`<'\_&\```````````````````````````'
M[P>3("`@(/F3!P<@("`?'T7N\+SQ]```````````````````````````\P<'
MDQ\@("`@^9,'!R`@(!\?'T6\\0?T```````````````````````````'[^\?
M'R`@("#YD^_O("`@'Q\?`47Q\/0`````````````````````````\N\'11\?
M("`@($9N;6U$1>D?'Q\!`1SQ\?0````````````````````````'[^\!'Q\@
MZ6UM]P<'!P<'ZQ\?'P$!1?"\]`````````````````````````<';@$?'T4'
M!P>\[^\'!P?L'Q\?`0$!![ST````````````````````````[^X!`1_M!P<'
M;OD6[^\@("`?'Q\!`0&3!_,```````````````````````#OO`$!10<'$B`@
M(&YM^$7JZNKJZA,!`1P'\@```````````````````````.^\`0'O!^OI($7K
M[.WLZP<'O+P'[T0!DP?R````````````````````````!^X!10<'1"!%[>V2
M]_?O[/=%'P<'$@&3!_(````````````````````````'!P'W!_=%Z0?W!_#P
MO`?O[44![P=M`1P'\0````````````````````````>\\.\'Z[SO[^_P\O+Q
MO._K[[SO!^R\O._Q````````````````````````![SP!P=MO._WO/'S]//P
M[^SO\>\'[>\'[_$````````````````````````'O.\'!^N3'.\'\?/T\O#O
M[.V3]P?M'`?O\0```````````````````````+SN`6X'[T4@!Y*\\?'PO)*2
M'Q_O!^H!D^_P````````````````````````O+P!10<'$B!&!_<'!^_M[_<?
M'P<'$P&3[_````````````````````````#PO`$!'`?O1"!&!_`'!P<'[Q\2
M!^U$`1SW\````````````````````````/#P`0$?!P?W1"#Y;Y+O($9%$^_W
M1`$!'/>\````````````````````````\/`!`1]%!P<';41N[_=%$NL'[T0!
M`0$<D@?O[[ST``````````````````#Q\0$!'Q_ID[P'!^^2D@<'!^YN'P$!
M`9.2!_`'[^_R`````````````````/'Q`0$?'Q\@1FX'![R\[N]NZ1\?`0$!
M[9('\+P'[_#R````````````````\?$!`1\?'R`@(/EO!P<@("`@'Q\!`0'M
M[>_P!P?O[_+R``````````````#Q\`$!'Q\?("`@^6\'O"`@("`?'P$!`>WM
M[_`'!^^2D@<``````````````/+P`0$?'Q\@("#Y;P>\("`@(!\?`0$!;NSO
M\`?O[Y+L[/$`````````````\;QN;FYN;FYN;V^3!_"3;VYN;I,<[6[L[`>\
M!^_ODNSM!P````````````#Q\;P'!P?O[^_O[P<'O/#Q\O"\!^_ODNWL![P'
M[_>2[.SQ``````````````?WDO?N\;P'!P>\\/'Q\?"\O+R\!^_O[^SOO`?O
M]^WL^+P```````````#O%$1$[P````````````#T]/3SO`<'!_?P[Q+O!^SM
M[>SX]P``````````O!)#1.T``````````````/'P]/3R\+P'[_?SDOB2]```
M`/#M`````````/)M%41N]```````````````\;ST]/+P!^_ODN_O^/``````
M`/0`````````^!5$;?$`````````````````\/3T\O`'[_?M[`<'D@``````
M`````````!Q$1$H'````````````````````]/3R\`?O]^ST`.^2````````
M``````#O$D-$'`````````````````````#P\_'P!^^2\@```/#Q````````
M`````.T'[/@``````````````````````/#O\;P'[^\`````````````````
M`````)+M\P```````````````````````/('O`?O!P``````````````````
M`````````````````````````````````/3Q\`?O````````````````````
M``````````````````````````````````#T\O#S````````````````_C_C
M___P``#\/X#_#_```/P?`#X/\```_@P`'`_P``#_"``,'_```/^````?\```
M_X```#_P``#_P```?_```/^```!_\```_X```'_P``#_````/_```/\````_
M\```_P```#_P``#_````/_```/\````_\```_P```#_P``#_````/_```/\`
M```_\```_P```#_P``#_````/_```/\````_\```_P```#_P``#_````/_``
M`/\````_\```_P```#_P``#_`````_```/\````!\```_P````#P``#_````
M`'```/\`````<```_P`````P``#_`````#```/\`````,```_P`````P``#^
M#_P``#```/P?_``',```^!_\``^P``#X/_X`#_```/!__P!/\```X/__`.?P
M``#A__\!__```/'__X'_\```____P?_P``#____P__```"@```!`````@```
M``$`"````````!````````````````$````!``````````"```"`````@(``
M@````(``@`"`@```P,#``,#<P`#PRJ8`!`0$``@("``,#`P`$1$1`!86%@`<
M'!P`(B(B`"DI*0!5554`34U-`$)"0@`Y.3D`@'S_`%!0_P"3`-8`_^S,`,;6
M[P#6Y^<`D*FM````,P```&8```"9````S```,P```#,S```S9@``,YD``#/,
M```S_P``9@```&8S``!F9@``9ID``&;,``!F_P``F0```)DS``"99@``F9D`
M`)G,``"9_P``S````,PS``#,9@``S)D``,S,``#,_P``_V8``/^9``#_S``S
M````,P`S`#,`9@`S`)D`,P#,`#,`_P`S,P``,S,S`#,S9@`S,YD`,S/,`#,S
M_P`S9@``,V8S`#-F9@`S9ID`,V;,`#-F_P`SF0``,YDS`#.99@`SF9D`,YG,
M`#.9_P`SS```,\PS`#/,9@`SS)D`,\S,`#/,_P`S_S,`,_]F`#/_F0`S_\P`
M,___`&8```!F`#,`9@!F`&8`F0!F`,P`9@#_`&8S``!F,S,`9C-F`&8SF0!F
M,\P`9C/_`&9F``!F9C,`9F9F`&9FF0!F9LP`9ID``&:9,P!FF68`9IF9`&:9
MS`!FF?\`9LP``&;,,P!FS)D`9LS,`&;,_P!F_P``9O\S`&;_F0!F_\P`S`#_
M`/\`S`"9F0``F3.9`)D`F0"9`,P`F0```)DS,P"9`&8`F3/,`)D`_P"99@``
MF68S`)DS9@"99ID`F6;,`)DS_P"9F3,`F9EF`)F9F0"9F<P`F9G_`)G,``"9
MS#,`9LQF`)G,F0"9S,P`F<S_`)G_``"9_S,`F<QF`)G_F0"9_\P`F?__`,P`
M``"9`#,`S`!F`,P`F0#,`,P`F3,``,PS,P#,,V8`S#.9`,PSS`#,,_\`S&8`
M`,QF,P"99F8`S&:9`,QFS`"99O\`S)D``,R9,P#,F68`S)F9`,R9S`#,F?\`
MS,P``,S,,P#,S&8`S,R9`,S,S`#,S/\`S/\``,S_,P"9_V8`S/^9`,S_S`#,
M__\`S``S`/\`9@#_`)D`S#,``/\S,P#_,V8`_S.9`/\SS`#_,_\`_V8``/]F
M,P#,9F8`_V:9`/]FS`#,9O\`_YD``/^9,P#_F68`_YF9`/^9S`#_F?\`_\P`
M`/_,,P#_S&8`_\R9`/_,S`#_S/\`__\S`,S_9@#__YD`___,`&9F_P!F_V8`
M9O__`/]F9@#_9O\`__]F`"$`I0!?7U\`=W=W`(:&A@"6EI8`R\O+`+*RL@#7
MU]<`W=W=`./CXP#JZNH`\?'Q`/CX^`#P^_\`I*"@`("`@````/\``/\```#_
M_P#_````_P#_`/__``#___\`````````````````````````````````````
M`/'P\P``````````````````````````````````````````````````````
M``#RO&T`````````````````\+R\O`?P\@``````````````````]/0`]```
M```````````````````````````'\A,3[P````````````#S!_#PO`<'!P>\
M]`````````````#S\;P'\O0`````````````````````````````!VU$0VWQ
M``````````#Q\/'PO+P'!P?O[^_P``````````#TO`<'O/3S````````````
M``````````````````#O2D05^/0``````/3P\O+Q!Y.\!P>3[^_W]P?T````
M``#T\.\'!_3R\0```````````````````````````````.Q$1$0<`````/+P
M\O+PDT<7O`<';T:3]_?O!_,`````\^\'!_3SO/,`````````````````````
M``````````#S;D1#$NX``/+P\?+N;R#Y%P<'!V\@(&_W[^\'\@``]`<'!_+S
M\0<```````````````````````````````````?J1$/K\O*\\/&31B`@^1<'
M!P=O("`@1ASO!P?R``<'!_#T\KSP````````````````````````````````
M````'$1#1`<'O/!O("`@(/D7!P<';R`@("#IDP<'O+SO![ST\O`']```````
M``````````````````````````````!N1.\'O/!O("`@("#Y%P<'!V\@("`@
M'Q^3\;R\!P?S\_`'\P``````````````````````````````````````\?<'
M!P=O("`@("`@^1<'!P=O("`@(!\?Z6^\\/"\\_&\\@``````````````````
M`````````````````````/#O!P=N'R`@("`@(/D7!P<';R`@("`?'Q\!;O#Q
M\`>\\0```````````````````````````````````````/+O!P>3'Q\@("`@
M("#Y%P?O[V\@("`@'Q\?`0$<\?&\\```````````````````````````````
M```````````'[P>3'Q\?("`@("`@^1<'[^]O("`@(!\?'P$!`1SR\KP`````
M``````````````````````````````````#Q[^\'`1\?'R`@("`@(/D7!^_O
M;B`@("`?'Q\!`0%%O/+P\P``````````````````````````````````````
M!^\''`$?'Q\@("`@("!%$A(3$Q-$1$7I'Q\?`0$!`6[Q\?``````````````
M````````````````````````\>_O!P$!'Q\?("#I1!/K]^\'!P<'!^_W%!\?
M'P$!`0$![O"\`````````````````````````````````````+SO[^\!`1\?
M'^GMO`<'!P<'!P<'!P<'!Q0?'Q\!`0$!`1SPO/,`````````````````````
M```````````````'[P?M`0$?'^F\!P<'!_`'')+O[^\'!P<3'Q\?`0$!`0%N
M\+SR````````````````````````````````````!^^\10$!'^F\!P<'O!P@
M^1?O[_=N("`@(!\?'P$!`0$!1;P'\0``````````````````````````````
M``````?OO`$!`1_N!P?OZT8@(/D7[^_W;NE$1$1$1$1$1`$!`0&\!_$`````
M```````````````````````````````'[[P!`0%N!P<';>D@("!%$A(3$NKM
M]_?O[^_O[^Q$`0$!O`?Q````````````````````````````````````!P>\
M`0$!\`<'[$4@("`3[/CL^&WKD@<'!P<'!P?O$P$!`>X'\0``````````````
M``````````````````````<'O`$!;@<'[T0@("`4DNR2DO?O[VWO!^MN;@<'
M!VT!`0'N!_`````````````````````````````````````'![P!`0<'!Y)%
M("#K[Y*2[^_O]P<';0<2'Q]N!P?W1`%%!P?P````````````````````````
M````````````!P<'`0&\!P?K'Q]%O/?OO+SP\+P'O._L$Q\?1;P'[Q0!10<'
M\`````````````````````````````````````<'O.X'\`<'$@<'!P?OO/#Q
M\?'P\`<'ZQ+O[P>\!P<2[NX'[_``````````````````````````````````
M``"\![SP!_`'!^KPO`?O[_#Q\O/S\O`'[>T2\/#Q!P<'$KP'!^^\````````
M````````````````````````````O`>\\`?P!P?JO+R\]P?P\O/T]/+QO)*2
M$O#Q\;P'!^J\!P?OO````````````````````````````````````+R\O+P'
M\`<'$P<'!^\'\/+S]/3R\;R2[1*\[NZ\!P?J!P<'[[P`````````````````
M``````````````````#PO`<!`;P'!Q+I(&X']_#Q\O/R\?`']^T3Z1\?O`<'
M$P%%!^^\````````````````````````````````````\+P'`0'O!P?M12`@
MO.\'\/'Q\?"\[Y('$Q\?1;P'!Q,!10?O!P``````````````````````````
M`````````/"\!P$!;@<'!Q,@(&^\[^^\\+R\]^T'!Q(?'_@'!Y)$`44'[P<`
M``````````````````````````````````#P\+P!`0&\!P?L1"`@D[P'!P?W
MDO<'!P<2'P'K!P<2`0%%!_<'````````````````````````````````````
M\?"\`0$!1;P'!VWI("!&!_"\O+SO\?"\ZA\4[P>21`$!1>_W!P``````````
M`````````````````````````/'PO`$!`1^3!P?OZD4@(/E&[?<';R`@Z>D4
M]P?O%`$!`47O]P<```````````````````````````````````#Q\?`!`0$?
M'^X'!P?M$T;Y1N\'!V\@($03[P?O$@$!`0%%[Y+O[P>\]```````````````
M````````````````\?'P`0$!'Q\?[[P'!^_L$Q)M[/@2%.J2!P<'$@$!`0$!
M1>^2!_#O[.R2\0```````````````````````````/'Q\`$!`1\?'Q]OO`<'
M!P<'[_?W[P<'!P>\DQ\?`0$!`47OD@?Q\+P'[_<'````````````````````
M``````#Q\?$!`0$?'Q\?($:3![P'!P<'!P<'O+SO11\?'P$!`0%%[Y+O\/"\
M!P<'O+P`````````````````````````\?+Q`0$!'Q\?'R`@("!&D^\'![P'
MDT8@(!\?'Q\!`0$!1??M[[SPO`?O[P?S\@```````````````````````/'R
M\`$!`1\?'Q\@("`@(/E&!P<';R`@("`?'Q\?`0$!`47W[>_P\+P'[^_W[_/Q
M``````````````````````#Q\O`!`0$?'Q\?("`@("#Y1@<'O&\@("`@'Q\?
M'P$!`0%%]^WW\?`'!^_O]Y+OO/(`````````````````````\?*\`0$!'Q\?
M'R`@("`@^48'![QO("`@(!\?'Q\!`0$!1??LDO&\!P?O[_>2[>_O````````
M`````````````/'RO`$!`1\?'Q\@("`@(/D7!P>\;R`@("`?'Q\?`0$!`462
M[._PO`<'[^_W[>SLDO,```````````````````#Q\@<!`0$!`0$?'Q\?("`@
M1@<'\&X@'Q\?'P$!`0$!`0%$DNSO\+P'!^_ODNWL[.\'````````````````
M````\?$']^_O[^\'!^^2[^_O!^X'O/"\O`<'[P<'[KSPO.[O]^WL[_"\!P?O
M]Y+M[.SO!P```````````````````/#Q\/"\!P<'[^_O]^_O[P<'![R\\/'R
M\O'PO`<'[^_WDNWL[._PO`<'[_>2[>SL[_(```````````````````"\\+P'
M!P<'O`?O[^_O[^\'![R\\/#P\?&\O`<'!P?O[_>2[>WW\+P'[^_WDNWL[/?Q
M``````````````````#Q$D1$1$3L]`````````````````#T\O/S!P?O[^_O
M!P?O\+SL;?>\!^_O]Y+M[/CM!P````````````````#T;1%#1$3J]```````
M`````````````+ST]/3T\_'PO`?O[^_S!VWL]P?LZ^WW[Y+L[)(`````````
M````````["(10T1$\`````````````````````#W\O3T]//Q\+P'[^_W[_+O
M$NUM!P``````\NWL````````````````[T,B0T1$[P``````````````````
M````[?#T]/3R\?"\!^_ODI('!^T3\@``````````!P``````````````\401
M(D1$;@````````````````````````?P]/3T\O'P!P?O[Y+M]_`'[/<`````
M````````````````````]!)#0T1$2O0```````````````````````#RO/3T
M]/+Q\`<'[_>2[&WO\VWX`````````````````````````/A#0T-$1+P`````
M`````````````````````//T]//R\;P'!^_W[6WT\N_RZO,`````````````
M`````````.]#0T-$1!P```````````````````````````#T\_3S\O&\!P?O
M]_@`````O/3O`````````````````````._O0T-$1.P`````````````````
M`````````````/#R\_+PO`<'[Y('``````#R``````````````````````#M
M$A)$1&WT``````````````````````````````#P[_#R\+P'[^^2````````
M`/0`````````````````````\Y+Q\NWQ````````````````````````````
M``````?M!_"\!^_O]P````````````````````````````````#R[._Q````
M````````````````````````````````O.\'O`?O[^\`````````````````
M``````````````````````````````````````````````````````````#S
M\/"\!^_O````````````````````````````````````````````````````
M``````````````````````````#S]/+R!_(`````````````````````````
M``````````````````````````````````````````````````````#S\?#P
M`````````````````````````/____'______\?_P'_^7___@_\`'_@?__^!
M_@`/\!___\#X``/@'___X/```>`?___@8```P#____````!`/___^``````_
M___\`````'____P`````_____`````'____X`````_____@````#____\```
M``'____P`````?___^`````!____X`````#____@`````/___^``````____
MX`````#____@`````/___^``````____X`````#____@`````/___^``````
M____X`````#____@`````/___^``````____X`````#____@`````/___^``
M````____X`````#____@`````/___^``````____X`````#____@``````__
M_^```````___X``````!___@``````#__^```````'__X```````/__@````
M```?_^```````!__X```````#__@```````/_^````````__X```````#__@
M```````/_\`__@````__@'__````#_^`__\```^/_P'__P``'^_^`___```?
M__P#__\``!___`?__X``#__X#___@`>/__`?___`!]__\!___\`/[__P/___
MX`____A____P#_________@/_________@?_________A___*````%H```"T
M`````0`(``````!8(````````````````0````$``````````(```(````"`
M@`"`````@`"``("```#`P,``P-S``/#*I@`$!`0`"`@(``P,#``1$1$`%A86
M`!P<'``B(B(`*2DI`%5550!-34T`0D)"`#DY.0"`?/\`4%#_`),`U@#_[,P`
MQM;O`-;GYP"0J:T````S````9@```)D```#,```S````,S,``#-F```SF0``
M,\P``#/_``!F````9C,``&9F``!FF0``9LP``&;_``"9````F3,``)EF``"9
MF0``F<P``)G_``#,````S#,``,QF``#,F0``S,P``,S_``#_9@``_YD``/_,
M`#,````S`#,`,P!F`#,`F0`S`,P`,P#_`#,S```S,S,`,S-F`#,SF0`S,\P`
M,S/_`#-F```S9C,`,V9F`#-FF0`S9LP`,V;_`#.9```SF3,`,YEF`#.9F0`S
MF<P`,YG_`#/,```SS#,`,\QF`#/,F0`SS,P`,\S_`#/_,P`S_V8`,_^9`#/_
MS``S__\`9@```&8`,P!F`&8`9@"9`&8`S`!F`/\`9C,``&8S,P!F,V8`9C.9
M`&8SS`!F,_\`9F8``&9F,P!F9F8`9F:9`&9FS`!FF0``9IDS`&:99@!FF9D`
M9IG,`&:9_P!FS```9LPS`&;,F0!FS,P`9LS_`&;_``!F_S,`9O^9`&;_S`#,
M`/\`_P#,`)F9``"9,YD`F0"9`)D`S`"9````F3,S`)D`9@"9,\P`F0#_`)EF
M``"99C,`F3-F`)EFF0"99LP`F3/_`)F9,P"9F68`F9F9`)F9S`"9F?\`F<P`
M`)G,,P!FS&8`F<R9`)G,S`"9S/\`F?\``)G_,P"9S&8`F?^9`)G_S`"9__\`
MS````)D`,P#,`&8`S`"9`,P`S`"9,P``S#,S`,PS9@#,,YD`S#/,`,PS_P#,
M9@``S&8S`)EF9@#,9ID`S&;,`)EF_P#,F0``S)DS`,R99@#,F9D`S)G,`,R9
M_P#,S```S,PS`,S,9@#,S)D`S,S,`,S,_P#,_P``S/\S`)G_9@#,_YD`S/_,
M`,S__P#,`#,`_P!F`/\`F0#,,P``_S,S`/\S9@#_,YD`_S/,`/\S_P#_9@``
M_V8S`,QF9@#_9ID`_V;,`,QF_P#_F0``_YDS`/^99@#_F9D`_YG,`/^9_P#_
MS```_\PS`/_,9@#_S)D`_\S,`/_,_P#__S,`S/]F`/__F0#__\P`9F;_`&;_
M9@!F__\`_V9F`/]F_P#__V8`(0"E`%]?7P!W=W<`AH:&`):6E@#+R\L`LK*R
M`-?7UP#=W=T`X^/C`.KJZ@#Q\?$`^/CX`/#[_P"DH*``@("`````_P``_P``
M`/__`/\```#_`/\`__\``/___P``````````````````````````````````
M`````````````````````/+P\0``````````````````````````````````
M``````````````````````````````````````````````````#T\>SQ````
M`````````````````````/*\O+P'\/(`````````````````````````````
M````````````````````````````````````````````````````\?/O$I(`
M`````````````````````/,'O/"\O`<'![SQ````````````````````````
M`//S\_3S\P```````````````````````````````````````````/+P\1,5
M$>\```````````````````"\!_'P\+R\!P<'!^^\\P``````````````````
M`/3R\`<'!_3T````````````````````````````````````````````\/!M
M1$,B$_$```````````````#T!_#Q\?#PO+P'!P<'[^_OO```````````````
M``#T\0?O!P?R]/,```````````````````````````````````````````#T
M[T1$0R)#;?0`````````````\0?R\?'PO`>\!P<'[N_O[^_O[_,`````````
M````]/('[P<'\`#S\0``````````````````````````````````````````
M``#T;41$0T,B[0```````````+SP\O+Q\0=OD[P'!P?OD^_O[_?W[_``````
M``````#S!^\'![P`]/'P````````````````````````````````````````
M``````#S2D1$0R)$!P```````//P\?+R\O"31OF3O`<'!^\@;^_O]_?O[[ST
M````````]`?O!P<']/3R!_,`````````````````````````````````````
M``````````#O1$1#(D,3\@````#R\/'Q\O(';R#Y^9,'!P<'[R`@1I/W[^_O
M[P?S``````#Q[P<'!_/T\_'O````````````````````````````````````
M``````````````#L1$1#0Q'K````\KSP\?+R[T8@(/GYDP<'!P>3("`@(&_W
M[^_O![SS````\N\'!P?Q]//Q![P`````````````````````````````````
M`````````````````/1M1$1#(D/M`/*\\/#QO&\@("`@^?F3!P<'!Y,@("`@
M($8<[^\'![SS`/,'[P<'O/3S\O#O\P``````````````````````````````
M`````````````````````/!$1$0B$>KPO+SP\>Y&("`@("#Y^9,'!P<'DR`@
M("`@(!]O[P<'![SQ!^\'!P?T\_+P!P<`````````````````````````````
M`````````````````````````.]$1$-$[P>\O/`'1B`@("`@(/GYDP<'!P?O
M("`@("`@'Q]O![P'O+P'!P<'\_3R\;P']```````````````````````````
M`````````````````````````````&Y$1.\'![SP!^D@("`@("`@^?F3!P<'
M!Y,@("`@("`?'Q]O\[R\O/`'!_+T\O&\!_,`````````````````````````
M````````````````````````````````].KW!P<'O`?I("`@("`@("#Y^9,'
M!P<'[R`@("`@(!\?'Q]O![R\\+P']//Q\`?Q````````````````````````
M````````````````````````````````````!P<'![SOZ1\@("`@("`@(/GY
MDP<'[^^3("`@("`@'Q\?'Q]%!_#P\;R\\?`'\```````````````````````
M`````````````````````````````````````/`'!P<'!^D?'R`@("`@("`@
M^?F3!P?O[Y,@("`@("`?'Q\?'P%%!_#Q\0<'O/``````````````````````
M``````````````````````````````````````#R!^\'!P=%'Q\?("`@("`@
M("#Y^9,'!^_O'"`@("`@(!\?'Q\?`0%NO/'Q\N_P````````````````````
M``````````````````````````````````````````?O[P<';A\?'Q\@("`@
M("`@(/GYDP?O[^\<("`@("`@'Q\?'Q\!`0%N\/'R\;P`````````````````
M``````````````````````````````````````````#Q[^\'!Y,?'Q\?'R`@
M("`@("`@^?F3!^_O[Y(@("`@("`?'Q\?'P$!`0'M\?+R!P``````````````
M``````````````````````````````````````````````?O[P<'`1\?'Q\?
M("`@("`@("#Y^9,'[^_O[2`@("`@(!\?'Q\?`0$!`44'\O+Q\```````````
M``````````````````````````````````````````````#P[^_O!VX!'Q\?
M'Q\@("`@("`@("!&;FUM;6WJ147I("`@'Q\?'Q\!`0$!`6[R\?&\]```````
M``````````````````````````````````````````````````?O[^\'`0$?
M'Q\?'R`@("`@1403;>OL[.SL[.SL^&WJ$T0?'Q\?'P$!`0$!`>_Q\/#P````
M``````````````````````````````````````````````````#R[^_O!T4!
M`1\?'Q\?("`@;FWKDN_O[^_O[^_O[^_O[^_L1!\?'Q\?`0$!`0$!;O#PO/``
M``````````````````````````````````````````````````````?O[^_N
M`0$!'Q\?'Q\@1;R\[^\'!P<'!P<'!P<'!P<'!Y)$'Q\?'Q\!`0$!`0$!!_"\
MO/0`````````````````````````````````````````````````````!^_O
M[P<!`0$?'Q\?Z>_P!P<'!P<'O/#P!P<'!P>\\?"\]T0?'Q\?'P$!`0$!`0'O
M\+P'\@`````````````````````````````````````````````````````'
M[^\'[P$!`1\?'Q\'O`<'!P>\\.]O1I/O[^_O;B`@1F[M1!\?'Q\?`0$!`0$!
M`9+PO`?R````````````````````````````````````````````````````
M`._O[[QN`0$!'Q\?![P'!P<'\.]&(/GYD^_O[_?L("`@("`@'Q\?'Q\!`0$!
M`0$!;KR\!_(`````````````````````````````````````````````````
M````[^_O\$4!`0$?'P>\!P?O]_=&("`@^?F3[^_O]^P@("`@("`?'Q\?'P$!
M`0$!`0%%O`<'\@``````````````````````````````````````````````
M``````#O[^_P10$!`1]N\`<'!^T3("`@("#Y^9/L^.SW["#KZA(2ZNKJZNKJ
MZA,!`0$!`46\!P?Q````````````````````````````````````````````
M``````````?O!_!%`0$!1?`'!P?W$^D@("`@($43ZFWX;1(2(._O[^_O[^_O
M[^_O[1,!`0$!1;P'!_$`````````````````````````````````````````
M````````````!^\'O$4!`0'OO`<'[VU%("`@("`3^)+L;>IM^/CK[P<'!P<'
M!P<'!P?O;0$!`0%%O`<'\0``````````````````````````````````````
M```````````````'[P>\10$!`?`'!P?M$R`@("#I$^WL[)+O[P?O^.KO!P?O
MDN\'[KP'!^_L1`$!`44'!P?Q````````````````````````````````````
M``````````````````<'![Q%`0%N\`<'[VT?("`@(!+M[)+M[.SL[)('[Q+W
M!^_J'Q\?;KP'!_<3`0$!10<'!_$`````````````````````````````````
M````````````````````!P<'O$4!`0<'!P?W$R`@("#L]_?W[??O[^_W]P?P
M!Q+O[Q(?'Q]%\`<'[VT>`0%N!P<'\0``````````````````````````````
M```````````````````````'!P>\1`$!\0<'[^Q$("`@;KSO[Y+O![R\O`<'
M![SQ[VWO$Q\?'Q^\!P?O[$0!`6X'!^_P````````````````````````````
M``````````````````````````<'![QN143Q!P?OZT1%147N!P?W![SP\/#P
M\+R\O+R\Z_<2145%1>\'!P?W$T5%;@<'[_``````````````````````````
M````````````````````````````!P<'O+R\[_$'!^]M!P<'[_$'[P>\\/'Q
M\?'Q\+R\!^_W[!('!P<'[[P'!_<2O+R\!P?O\```````````````````````
M```````````````````````````````'!P>\\/#W\0<'[^KP\+SW\`?OO/#Q
M\O+S\O+Q\+SODN]M$KSP\/'O\`<'[Q*\O`<'[^_P````````````````````
M``````````````````````````````````<'O+SP\9+P!P?OZO"\O.^\[^^\
M\/+S\_3S\_+QO`?M[VT2\/#Q\0?P!P?O$[P'!P?O[_``````````````````
M````````````````````````````````````O`>\O/#Q[_`'!^]M\+R\[_#O
M[_#Q\O/T]/3S\O'P!^T'[!+P\/'Q![P'!^\2O`<'!^_OO```````````````
M``````````````````````````````````````"\![R\\/`'\`<'[VWO!P<'
M\`?W\/'R\_3T]//R\?`'[>_W$KR\O+P'O`<'[Q('!P<'[^^\````````````
M`````````````````````````````````````````+P'O`=%147Q!P?O[$5&
M1D:\!Y*\\/'R\_3S\O+PO._M]^\31D5%1>V\!P?O$T5%;P?O[[P`````````
M````````````````````````````````````````````O+R\!T0!`;P'!P>2
M$R`@(.V\[^_P\?+R\O+R\?"\[^_W[Q,?'Q\?[P<'!_<4`0%N!^_OO```````
M``````````````````````````````````````````````#PO/`'1`$![P<'
M!^_JZ2`@1O$']P?P\?'Q\?'PO`?W[0?O$Q\?'Q_P!P?O[$0!`6X'[_>\````
M`````````````````````````````````````````````````/"\\`=$`0%%
M\`<'[^Q$("`@;_`'[^_P\/#P\+P'DNT'!^\3'Q\?1;P'!^]M`0$!;N_O][P`
M````````````````````````````````````````````````````\+SP!T0!
M`0&\!P<']Q,@("`@[[P'!^\'!P?O]Y*2!P<'[Q,?'Q\2[P<']Q0!`0%N[^_W
M!P````````````````````````````````````````````````````#PO/"\
M1`$!`6[P!P?O[!,@("`@[_&\!_+P!^\'![P'!P?O$B`?1/CO!^_K1`$!`6[O
M[_<'`````````````````````````````````````````````````````/#P
M\+Q$`0$!`?>\!P?O^$0@("`@1N_Q\+R\O/`'[_'PO`?J(!_J[P<'DA,!`0$!
M;N_W]P<`````````````````````````````````````````````````````
M\?#QO$0!`0$!`;P'!P?OZT0@("`@^48<DO?O]Y-&;FYN;D7I$Y('!^_J`0$!
M`0%N[_>2!P``````````````````````````````````````````````````
M``#Q\/&\1`$!`0$?1?`'!P?O^!/I("#Y^6_O[P<''"`@("`@11*2!P?OZT0!
M`0$!`6[O]Y('\P``````````````````````````````````````````````
M`````/'P\;Q$`0$!`1\?[?$'!P?ODFT31OGY;^_O!P<<("`@11-M]P<'[^M$
M`0$!`0$!;N_WD@?O[^\'\0``````````````````````````````````````
M````````\?#Q\$0!`0$!'Q\?;O"\!P<'[^WJ$T1NDN\'!_A%1!/KDN\'!P?X
M1`$!`0$!`0%N[_>2!_$']^WL[0?T````````````````````````````````
M``````````#Q\?'P1`$!`0$?'Q\?10?P!P<'!^_W[>SK;>KJ;?CL]^\'!P>\
M!T0?`0$!`0$!`6[ODI('\?'PO.^2[9('````````````````````````````
M`````````````/'Q\O!%`0$!`1\?'Q\@'^WQO`<'!P<'[^_O[^_O[P<'!P>\
M\/<?'Q\!`0$!`0$!;O>2[0?Q\?"\!P?O[^\']```````````````````````
M````````````````\?'R\$4!`0$!'Q\?'R`@($;MO/"\!P<'!P<'!P<'!P?P
M\0=%'Q\?'P$!`0$!`0%N]Y+M!_#Q\+P'!P?O![R\]```````````````````
M``````````````````#Q\?+P10$!`0$?'Q\?("`@("`@19.\\/'Q\/#P\/&\
M[V[I("`?'Q\?`0$!`0$!`6[WDNT'O/#PO`<'[^_OO/+Q]```````````````
M`````````````````````/'R\O!%`0$!`1\?'Q\@("`@("`@(/GY;Y*2]^_M
M("`@("`@(!\?'Q\!`0$!`0$!;O?M[>\'\/"\!P?O[^_W\0#T````````````
M````````````````````````\?+R\$4!`0$!'Q\?'R`@("`@("`@^?EO!P<'
MO!P@("`@("`@'Q\?'P$!`0$!`0%N]^WM[_#PO+P'!^_O[_>2\//Q````````
M``````````````````````````#Q\O+P10$!`0$?'Q\?("`@("`@("#Y^6\'
M!P>\'"`@("`@("`?'Q\?`0$!`0$!`462[>SW\?"\O`<'[^_O]Y+MO/#R````
M`````````````````````````````/'R\KQ%`0$!`1\?'Q\@("`@("`@(/GY
M;P<'![P<("`@("`@(!\?'Q\!`0$!`0$!19+M[)+Q\+P'!P?O[_?WDNV2!^\`
M````````````````````````````````\?+RO$4!`0$!'Q\?'R`@("`@("`@
M^?EO!P<'O),@("`@("`@'Q\?'P$!`0$!`0%%DNWL]_'PO`<'!^_O]_>2[>R2
M][P```````````````````````````````#Q\O*\10$!`0$?'Q\?("`@("`@
M("#Y^6\'!P>\DR`@("`@("`?'Q\?`0$!`0$!`462[.SO\?"\!P<'[^_WDI+M
M[.SMD@```````````````````````````````/'R\0=%`0$!`1\?'Q\?("`@
M("`@(/GYDP<'O+SO("`@("`@(!\?'Q\!`0$!`0$!19+L[._Q\+P'!P?O[_>2
MDNWL[/?O````````````````````````````````\?+Q!T4>(T0C(R-$145$
M`45%145%1463!P>\\.]%145%145%145%145$1$1$1$1N[>SL[_#PO`<'[^_O
M]Y+M[>SL]P?P``````````````````````````````#P\O$'[^\'!P<'!P<'
M!^_W]_?O[^\'![P'![SP\+R\!P?O[^\'!P>\\/'P\+P'[_?M[.SO\/"\!P?O
M[^_WDNWM[.SM\;P``````````````````````````````/#Q\?#PO+P'!P<'
M[^_O[_?W[^_O[P<'!P<'O+SP\/'Q\O+Q\/"\!P<'[^_O]Y*2[>SL[._PO+P'
M!^_O[_>2[>SL[.SS\0````````````````````````````#T\/'Q\/"\O`<'
M!P<'[^_O]_?O[^_O!P<'![R\\/#Q\?+R\O'P\+P'!P?O[^_WDI+M[.SL[_"\
MO`<'[^_O]Y+M[.SL^//R```````````````````````````````'!P<'[^\'
M!P>\\?`'!^_O[^_O[^\'!P>\\/#Q\/#P\+P'!P<'!P<'!P<'[^_O]_?M[>WO
M![P'!P?O[_?WDNWL[.SX!_``````````````````````````````O!(4%41$
M1$1N\/0```````````````````````#T\_+S\_('[_>2DI*2[P<'!^\'\KR2
M;?B2!P<'!^_O]_>2[>SL^/CO!P```````````````````````````/+J$")#
M(D1$1`<```````````````````````````#S\/3T]/3T]//R\?"\!P?O[Y*\
M``?L$^R2!P<'DFUMZ_CK[.SX^)+O````````````````````````````^!`1
M(D-$1$0<`````````````````````````````/$']/3T]/3S\O+Q\+P'!^_O
M]_?P]._K$Y*2[^KX!P````#Q!_?X[.T``````````````````````````!Q$
M$")#(D1$;O0`````````````````````````````\/?T]/3T]//R\?'PO`<'
M[^_W]^_R\O=MZO@2\```````````]._L[0````````````````````````"\
M$Q`10T-$1$KT``````````````````````````````#P[/'T]/3T\_+Q\/"\
M!P?O[_>2D@?T!^SJZ_0```````````````?O````````````````````````
M`!(1(B)#1$1$\````````````````````````````````/+MO/3T]/3S\O'P
MO+P'!^_O]Y+MDKP'^.P3]P``````````````````````````````````````
M`/3K0Q!#0T1$1!P`````````````````````````````````].\']/3T]//R
M\?"\!P<'[^_WDNWM]_#T[^N2````````````````````````````````````
M````[1`10R)$1$3L````````````````````````````````````\+ST]/3T
M\_+Q\+P'!^_O[_>2[!+L[_*\%6T`````````````````````````````````
M``````=$$2)#1$1$;?(```````````````````````````````````#T\O3T
M]/3S\O'PO`<'[^_O]^T3[`#O[0?O%/$`````````````````````````````
M``````#P$A`10T-$1$J\````````````````````````````````````````
M]/3T]//R\?"\!P?O[_?WZNT`````]_#W[0``````````````````````````
M`````````.LB$2)#1$1$[P``````````````````````````````````````
M``#S]/3T\_+Q\+P'!^_O]^SL````````!_*2````````````````````````
M`````````/`'$B(B0T1$1/CU````````````````````````````````````
M`````/'P]//S\O'PO`<'[^_W^/0`````````\?/P````````````````````
M````````````[.\20R)$1$1N````````````````````````````````````
M````````\0>\\_+R\?"\!P?O[_>2````````````]```````````````````
M``````````````#W$FUM1$1$2O(`````````````````````````````````
M````````````!^\'\O'P\+P'!^_ODO``````````````````````````````
M``````````````````"2!_'Q'&WO````````````````````````````````
M``````````````#T]^WO\?"\O`<'[^_M\P``````````````````````````
M`````````````````````/22O/+R\0``````````````````````````````
M``````````````````#T[^_O\+P'!P?O[Y+T````````````````````````
M``````````````````````````"\[`?Q````````````````````````````
M``````````````````````#TO`<'O`<'!^_O]_0`````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````\O#Q\`?O[^_W\@``````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````//S]/*\[_<'````````````````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````#S]/3T\@<`````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````]/'P\/(`````````
M``````````````````````````#______X_______\#__P___@/______\#_
M_@__^`#__^!__\#__`?_\``__X!__\#__`/_P``?_P!__\#__`'_@``'_@)_
M_\#__@'_```#_@1__\#__P#\````_`!__\#__X!X````?`#__\#__\!P````
M.`#__\#__\`@````$`#__\#__^````````'__\#___````````'__\#___@`
M``````/__\#___@```````?__\#___P```````___\#___@``````!___\#_
M__```````#___\#___```````#___\#__^```````#___\#__^```````!__
M_\#__\````````___\#__\````````___\#__X````````___\#__X``````
M``?__\#__X````````?__\#__X````````?__\#__X````````?__\#__X``
M``````?__\#__X````````?__\#__X````````?__\#__X````````?__\#_
M_X````````?__\#__X````````?__\#__X````````?__\#__X````````?_
M_\#__X````````?__\#__X````````?__\#__X````````?__\#__X``````
M``?__\#__X````````?__\#__X````````?__\#__X````````?__\#__X``
M``````?__\#__X````````?__\#__X````````?__\#__X````````?__\#_
M_X````````?__\#__X````````?__\#__X````````?__\#__X````````/_
M_\#__X`````````__\#__X`````````'_\#__X`````````#_\#__X``````
M````_\#__X``````````?\#__X``````````/\#__X``````````O\#__X``
M````````'\#__X``````````#\#__X``````````#\#__X``````````!\#_
M_X``````````!\#__X``````````!\#__X```````````\#__X``````````
M`\#__X```````````\#__P```````````\#__X```````````\#__P`?__@`
M`````\#__@!___P``$```\#__@#___P````/`\#__`#___P````_P\#_^`'_
M__P```!_\\#_^`/___P```!__\#_X`?___P```!__\#_X`____X```!__\#_
MP`____X``!`__\#_@!____^``#P__\#_@#____^``'X__\#^`#____^``'\?
M_\#^`/____^``/^__\#^`/_____``/___\#_`?_____``/___\#_`______@
M`/___\#_P______P`/___\#________\`/___\#_________`/___\#_____
M____P/___\#_________\'___\`H````%@```"P````!``@``````!`"````
M```````````!`````0``````````@```@````("``(````"``(``@(```,#`
MP`#`W,``\,JF``0$!``("`@`#`P,`!$1$0`6%A8`'!P<`"(B(@`I*2D`5555
M`$U-30!"0D(`.3DY`(!\_P!04/\`DP#6`/_LS`#&UN\`UN?G`)"IK0```#,`
M``!F````F0```,P``#,````S,P``,V8``#.9```SS```,_\``&8```!F,P``
M9F8``&:9``!FS```9O\``)D```"9,P``F68``)F9``"9S```F?\``,P```#,
M,P``S&8``,R9``#,S```S/\``/]F``#_F0``_\P`,P```#,`,P`S`&8`,P"9
M`#,`S``S`/\`,S,``#,S,P`S,V8`,S.9`#,SS``S,_\`,V8``#-F,P`S9F8`
M,V:9`#-FS``S9O\`,YD``#.9,P`SF68`,YF9`#.9S``SF?\`,\P``#/,,P`S
MS&8`,\R9`#/,S``SS/\`,_\S`#/_9@`S_YD`,__,`#/__P!F````9@`S`&8`
M9@!F`)D`9@#,`&8`_P!F,P``9C,S`&8S9@!F,YD`9C/,`&8S_P!F9@``9F8S
M`&9F9@!F9ID`9F;,`&:9``!FF3,`9IEF`&:9F0!FF<P`9IG_`&;,``!FS#,`
M9LR9`&;,S`!FS/\`9O\``&;_,P!F_YD`9O_,`,P`_P#_`,P`F9D``)DSF0"9
M`)D`F0#,`)D```"9,S,`F0!F`)DSS`"9`/\`F68``)EF,P"9,V8`F6:9`)EF
MS`"9,_\`F9DS`)F99@"9F9D`F9G,`)F9_P"9S```F<PS`&;,9@"9S)D`F<S,
M`)G,_P"9_P``F?\S`)G,9@"9_YD`F?_,`)G__P#,````F0`S`,P`9@#,`)D`
MS`#,`)DS``#,,S,`S#-F`,PSF0#,,\P`S#/_`,QF``#,9C,`F69F`,QFF0#,
M9LP`F6;_`,R9``#,F3,`S)EF`,R9F0#,F<P`S)G_`,S,``#,S#,`S,QF`,S,
MF0#,S,P`S,S_`,S_``#,_S,`F?]F`,S_F0#,_\P`S/__`,P`,P#_`&8`_P"9
M`,PS``#_,S,`_S-F`/\SF0#_,\P`_S/_`/]F``#_9C,`S&9F`/]FF0#_9LP`
MS&;_`/^9``#_F3,`_YEF`/^9F0#_F<P`_YG_`/_,``#_S#,`_\QF`/_,F0#_
MS,P`_\S_`/__,P#,_V8`__^9`/__S`!F9O\`9O]F`&;__P#_9F8`_V;_`/__
M9@`A`*4`7U]?`'=W=P"&AH8`EI:6`,O+RP"RLK(`U]?7`-W=W0#CX^,`ZNKJ
M`/'Q\0#X^/@`\/O_`*2@H`"`@(````#_``#_````__\`_P```/\`_P#__P``
M____``````#Q\P```//P\@````#S]`````````````!*Z@``\NZ\!^_S`/('
M\P````````````#N1.WPD_GN;V\'\P?R\0``````````````[>]O(/D';R!%
MO/'P````````````````!VX?(/D';R`?1?#T``````````````#T!Q\?16[X
MZT0?`0?S``````````````#P[Q_L!QR2;D4?`6[Q``````````````"\'&[M
MZ47KZ^SLZD6\``````````````#P'.\2;O?P!^M%[$6\``````````````#P
M\`?M]_#T\>R\[^\'``````````````#QD^]M[0?QO/AN[VX'````````````
M``#Q'&[M1??W]^MM^$4'``````````````#R'`'M[$7W;FV21$7O\?,`````
M``````#R'`$?;O?O!^Q%`47O\`?P``````````#S'`$?("`';R`?`47WO._O
M\0````````#S[45%1D;NDT9%16Z2O._M[P````````#N[^\'[P?P\?"\!^_M
MO._M[P```````/-$$O,`````\O3R!_<'[^\'[0```````!)$[@``````\O3R
M!_>2D@``````````DD3M`````````/3Q!^WR!_,`````````[Y(`````````
M`/('!P<`````````````````````````````\KP``````````/.//`#S`CP`
M\``\`/@`?`#X`'P`\`!\`/``?`#P`'P`\`!\`/``?`#P`'P`\`!\`/``'`#P
C``P`\``$`/``!`#P``0`X>`$`./@/`#'\!P`S_#\`/_\_```
`
end
+5
View File
@@ -12,6 +12,7 @@
#define IDI_WINHACK 107 #define IDI_WINHACK 107
#define IDC_WINHACK 109 #define IDC_WINHACK 109
#define IDC_SPHONE_DIALOGBAR 111 #define IDC_SPHONE_DIALOGBAR 111
#define IDC_SPHONE_TEXTDIALOGBAR 112
#define IDR_MAINFRAME 128 #define IDR_MAINFRAME 128
#define IDB_TILES 129 #define IDB_TILES 129
#define IDD_TEXT 130 #define IDD_TEXT 130
@@ -110,6 +111,7 @@
#define IDC_ABOUT_VERSION 1327 #define IDC_ABOUT_VERSION 1327
#define IDC_TEXT_CONTROL 1331 #define IDC_TEXT_CONTROL 1331
#define IDC_ABOUT_COPYRIGHT 1332 #define IDC_ABOUT_COPYRIGHT 1332
#define IDC_TEXT_TOGGLE_WRAP 1333
#define IDM_SAVE 32771 #define IDM_SAVE 32771
#define IDM_HELP_LONG 32772 #define IDM_HELP_LONG 32772
#define IDM_HELP_COMMANDS 32773 #define IDM_HELP_COMMANDS 32773
@@ -147,6 +149,9 @@
#define IDM_HELP_MENU 32828 #define IDM_HELP_MENU 32828
#define IDM_VIEW_OPTIONS 32829 #define IDM_VIEW_OPTIONS 32829
#define IDM_DIRECT_COMMAND 32830 #define IDM_DIRECT_COMMAND 32830
#define IDM_CMD_DLG 32832
#define IDS_TEXT_WRAP 32833
#define IDS_TEXT_UNWRAP 32834
// Next default values for new objects // Next default values for new objects
// //
+3 -1
View File
@@ -173,12 +173,14 @@ void mswin_popup_display(HWND popup, int* done_indicator);
void mswin_popup_destroy(HWND popup); void mswin_popup_destroy(HWND popup);
#if defined(WIN_CE_SMARTPHONE) #if defined(WIN_CE_SMARTPHONE)
void NHSPhoneDialogSetup(HWND hDlg, BOOL is_edit, BOOL is_fullscreen); void NHSPhoneDialogSetup(HWND hDlg, UINT nToolBarId, BOOL is_edit, BOOL is_fullscreen);
#endif #endif
void mswin_read_reg(void); void mswin_read_reg(void);
void mswin_destroy_reg(void); void mswin_destroy_reg(void);
void mswin_write_reg(void); void mswin_write_reg(void);
BOOL mswin_has_keyboard(void);
void mswin_set_fullscreen(BOOL is_fullscreen); void mswin_set_fullscreen(BOOL is_fullscreen);
#endif /* WINmswin_H */ #endif /* WINmswin_H */
+1 -5
View File
@@ -67,11 +67,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
_nethack_app.bNoHScroll = FALSE; _nethack_app.bNoHScroll = FALSE;
_nethack_app.bNoVScroll = FALSE; _nethack_app.bNoVScroll = FALSE;
#if defined(WIN_CE_PS2xx) || defined(WIN_CE_POCKETPC) || defined(WIN_CE_SMARTPHONE) _nethack_app.bCmdPad = !mswin_has_keyboard();
_nethack_app.bCmdPad = TRUE;
#else
_nethack_app.bCmdPad = FALSE;
#endif
_nethack_app.bWrapText = TRUE; _nethack_app.bWrapText = TRUE;
_nethack_app.bFullScreen = TRUE; _nethack_app.bFullScreen = TRUE;
+9 -6
View File
@@ -160,11 +160,12 @@ BEGIN
PUSHBUTTON "Quit",IDCANCEL,55,110,50,14 PUSHBUTTON "Quit",IDCANCEL,55,110,50,14
END END
IDD_NHTEXT DIALOG DISCARDABLE 0, 0, 83, 97 IDD_NHTEXT DIALOG DISCARDABLE 0, 0, 100, 97
STYLE WS_CHILD | WS_BORDER STYLE WS_CHILD | WS_BORDER
FONT 8, "System" FONT 8, "System"
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,15,80,50,14 DEFPUSHBUTTON "OK",IDOK,0,80,50,14
PUSHBUTTON "Wrap",IDC_TEXT_TOGGLE_WRAP,50,80,50,14
EDITTEXT IDC_TEXT_CONTROL,5,0,70,75,ES_MULTILINE | ES_READONLY | EDITTEXT IDC_TEXT_CONTROL,5,0,70,75,ES_MULTILINE | ES_READONLY |
WS_VSCROLL | WS_HSCROLL WS_VSCROLL | WS_HSCROLL
END END
@@ -283,8 +284,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,4,1,0 FILEVERSION 3,5,0,0
PRODUCTVERSION 3,4,1,0 PRODUCTVERSION 3,5,0,0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x9L FILEFLAGS 0x9L
@@ -304,10 +305,10 @@ BEGIN
VALUE "FileDescription", "nethackm\0" VALUE "FileDescription", "nethackm\0"
VALUE "FileVersion", "3, 5, 0, 0\0" VALUE "FileVersion", "3, 5, 0, 0\0"
VALUE "InternalName", "nethackm\0" VALUE "InternalName", "nethackm\0"
VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "LegalCopyright", "Copyright © 1985-2009\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "nethackm.exe\0" VALUE "OriginalFilename", "nethackm.exe\0"
VALUE "PrivateBuild", "050102\0" VALUE "PrivateBuild", "090914\0"
VALUE "ProductName", "NetHack\0" VALUE "ProductName", "NetHack\0"
VALUE "ProductVersion", "3, 5, 0, 0\0" VALUE "ProductVersion", "3, 5, 0, 0\0"
VALUE "SpecialBuild", "\0" VALUE "SpecialBuild", "\0"
@@ -345,6 +346,8 @@ STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDM_VIEW_KEYPAD "Show/Hide keypad." IDM_VIEW_KEYPAD "Show/Hide keypad."
IDS_CAP_VIEW "View" IDS_CAP_VIEW "View"
IDS_TEXT_WRAP "Wrap"
IDS_TEXT_UNWRAP "Unwrap"
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
+16 -7
View File
@@ -42,11 +42,11 @@ BEGIN
BEGIN BEGIN
MENUITEM "Options", IDM_VIEW_OPTIONS MENUITEM "Options", IDM_VIEW_OPTIONS
MENUITEM "Keypad", IDM_VIEW_KEYPAD MENUITEM "Keypad", IDM_VIEW_KEYPAD
MENUITEM SEPARATOR MENUITEM "Cmd", IDM_CMD_DLG
MENUITEM "Entire Map", IDM_MAP_FIT_TO_SCREEN MENUITEM SEPARATOR
MENUITEM "ASCII", IDM_MAP_ASCII8X8 MENUITEM "ASCII", IDM_MAP_ASCII8X8
MENUITEM "Use Tiles", IDM_MAP_TILES MENUITEM "Tiles", IDM_MAP_TILES
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Help", IDM_HELP_MENU MENUITEM "Help", IDM_HELP_MENU
MENUITEM "Save", IDM_SAVE MENUITEM "Save", IDM_SAVE
MENUITEM "Quit", IDM_EXIT MENUITEM "Quit", IDM_EXIT
@@ -59,7 +59,6 @@ BEGIN
MENUITEM "Cancel", IDCANCEL MENUITEM "Cancel", IDCANCEL
END END
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Accelerator // Accelerator
@@ -245,6 +244,14 @@ BEGIN
NOMENU, NOMENU,
END END
IDC_SPHONE_TEXTDIALOGBAR SHMENUBAR DISCARDABLE
BEGIN
IDC_SPHONE_DIALOGBAR, 2,
I_IMAGENONE, IDOK, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDOK, 0, NOMENU,
I_IMAGENONE, IDC_TEXT_TOGGLE_WRAP, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDS_TEXT_WRAP, 0,
NOMENU,
END
#ifndef _MAC #ifndef _MAC
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@@ -274,10 +281,10 @@ BEGIN
VALUE "FileDescription", "nethackm\0" VALUE "FileDescription", "nethackm\0"
VALUE "FileVersion", "3, 5, 0, 0\0" VALUE "FileVersion", "3, 5, 0, 0\0"
VALUE "InternalName", "nethackm\0" VALUE "InternalName", "nethackm\0"
VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "LegalCopyright", "Copyright © 1985-2010\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "nethackm.exe\0" VALUE "OriginalFilename", "nethackm.exe\0"
VALUE "PrivateBuild", "050309\0" VALUE "PrivateBuild", "090914\0"
VALUE "ProductName", "NetHack For Smartphone\0" VALUE "ProductName", "NetHack For Smartphone\0"
VALUE "ProductVersion", "3, 5, 0, 0\0" VALUE "ProductVersion", "3, 5, 0, 0\0"
VALUE "SpecialBuild", "\0" VALUE "SpecialBuild", "\0"
@@ -329,6 +336,8 @@ BEGIN
IDS_CAP_ENTIREMAP "Entire Map" IDS_CAP_ENTIREMAP "Entire Map"
IDS_CAP_NORMALMAP "Normal Map" IDS_CAP_NORMALMAP "Normal Map"
IDM_HELP_MENU "Help Menu" IDM_HELP_MENU "Help Menu"
IDS_TEXT_WRAP "Wrap"
IDS_TEXT_UNWRAP "Unwrap"
END END
#endif // English (U.S.) resources #endif // English (U.S.) resources