Merge branch 'v4.7.x' into master
authorArun Persaud <arun@nubati.net>
Sun, 5 Jan 2014 18:51:08 +0000 (10:51 -0800)
committerArun Persaud <arun@nubati.net>
Sun, 5 Jan 2014 18:51:08 +0000 (10:51 -0800)
Conflicts:
dialogs.c
gtk/xboard.c
gtk/xoptions.c
po/es.po
winboard/config.h
winboard/winboard.c

119 files changed:
Makefile.am
args.h
backend.c
backend.h
board.c
common.h
conf/chu [new file with mode: 0644]
conf/ics [new file with mode: 0644]
conf/judkins [new file with mode: 0644]
conf/judkins.fen [new file with mode: 0644]
conf/mini [new file with mode: 0644]
conf/mini.fen [new file with mode: 0644]
conf/sho [new file with mode: 0644]
conf/sho.fen [new file with mode: 0644]
conf/shogi [new file with mode: 0644]
conf/xiangqi [new file with mode: 0644]
conf/xq [new file with mode: 0644]
configure.ac
dialogs.c
draw.c
engine-intf.html
frontend.h
gamelist.c
gtk/xboard.c
gtk/xoptions.c
menus.c
moves.c
moves.h
nengineoutput.c
parser.c
pixmaps/ANALYZING_14.xpm [deleted file]
pixmaps/BLACK_14.xpm [deleted file]
pixmaps/CLEAR_14.xpm [deleted file]
pixmaps/PONDER_14.xpm [deleted file]
pixmaps/THINKING_14.xpm [deleted file]
pixmaps/UNKNOWN_14.xpm [deleted file]
pixmaps/WHITE_14.xpm [deleted file]
pixmaps/board32.png [new file with mode: 0644]
pixmaps/board32.xpm [deleted file]
pixmaps/board48.png [new file with mode: 0644]
pixmaps/board48.xpm [deleted file]
pixmaps/cross32.png [new file with mode: 0644]
pixmaps/cross32.xpm [deleted file]
pixmaps/cross48.png [new file with mode: 0644]
pixmaps/cross48.xpm [deleted file]
pixmaps/ini32.png [new file with mode: 0644]
pixmaps/ini32.xpm [deleted file]
pixmaps/ini48.png [new file with mode: 0644]
pixmaps/ini48.xpm [deleted file]
png/xqboard.png
po/LINGUAS
po/da.po
po/de.po
po/es.po
po/it.po
po/nl.po [new file with mode: 0644]
po/ru.po
po/tr.po
po/uk.po
po/vi.po
po/xboard.pot
po/zh_CN.po
po/zh_HK.po
po/zh_TW.po
sounds/roar.wav [new file with mode: 0644]
svg/BlackClaw.svg [new file with mode: 0644]
svg/BlackDolphin.svg [new file with mode: 0644]
svg/BlackHCrown.svg [new file with mode: 0644]
svg/BlackHSword.svg [new file with mode: 0644]
svg/BlackLeopard.svg [new file with mode: 0644]
svg/BlackLion.svg [new file with mode: 0644]
svg/BlackPromoBishop.svg [new file with mode: 0644]
svg/BlackPromoDragon.svg [new file with mode: 0644]
svg/BlackPromoHSword.svg [new file with mode: 0644]
svg/BlackPromoHorse.svg [new file with mode: 0644]
svg/BlackPromoRook.svg [new file with mode: 0644]
svg/BlackPromoSword.svg [new file with mode: 0644]
svg/BlackSword.svg [new file with mode: 0644]
svg/WhiteClaw.svg [new file with mode: 0644]
svg/WhiteDolphin.svg [new file with mode: 0644]
svg/WhiteHCrown.svg [new file with mode: 0644]
svg/WhiteHSword.svg [new file with mode: 0644]
svg/WhiteLeopard.svg [new file with mode: 0644]
svg/WhiteLion.svg [new file with mode: 0644]
svg/WhitePromoBishop.svg [new file with mode: 0644]
svg/WhitePromoDragon.svg [new file with mode: 0644]
svg/WhitePromoHSword.svg [new file with mode: 0644]
svg/WhitePromoHorse.svg [new file with mode: 0644]
svg/WhitePromoRook.svg [new file with mode: 0644]
svg/WhitePromoSword.svg [new file with mode: 0644]
svg/WhiteSword.svg [new file with mode: 0644]
usounds.c
usystem.c
winboard/bitmaps/ln33o.bmp [new file with mode: 0644]
winboard/bitmaps/ln33s.bmp [new file with mode: 0644]
winboard/bitmaps/ln33w.bmp [new file with mode: 0644]
winboard/bitmaps/ln49o.bmp [new file with mode: 0644]
winboard/bitmaps/ln49s.bmp [new file with mode: 0644]
winboard/bitmaps/ln49w.bmp [new file with mode: 0644]
winboard/bitmaps/ln72o.bmp [new file with mode: 0644]
winboard/bitmaps/ln72s.bmp [new file with mode: 0644]
winboard/bitmaps/ln72w.bmp [new file with mode: 0644]
winboard/config.h
winboard/defaults.h
winboard/resource.h
winboard/wclipbrd.c
winboard/wedittags.c
winboard/winboard.c
winboard/winboard.rc
winboard/woptions.c
winboard/wsettings.c
xaw/xboard.c
xaw/xengineoutput.c
xaw/xoptions.c
xboard.conf.in
xboard.texi
xboard2.h
zic2xpm.c [deleted file]
zic2xpm.man [deleted file]

index 61aa1d7..847084a 100644 (file)
@@ -57,7 +57,7 @@ xboard_SOURCES = backend.c backend.h backendz.h \
 ###
 
 SUBDIRS = po
-xboard_LDADD = -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@
+xboard_LDADD = -ldl -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@
 
 EXTRA_DIST = pixmaps themes png sounds winboard \
        xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man xboard.desktop xboard-config.desktop \
@@ -69,7 +69,8 @@ DISTCLEANFILES = stamp-h
 
 GITVERSION=$(shell sh -c 'git describe --dirty --always 2>/dev/null')
 AM_CPPFLAGS=-DINFODIR='"$(infodir)"' @X_CFLAGS@ @CAIRO_CFLAGS@ @FRONTEND_CFLAGS@  -DSYSCONFDIR='"$(sysconfdir)"' \
-           -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' $(headers)
+           -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' \
+            -DCONFIGURE_OPTIONS='"@CONFIGURE_OPTIONS@"' -DDATADIR='"$(datadir)/games/xboard"' $(headers)
 
 ACLOCAL_AMFLAGS = -I m4
 
@@ -84,24 +85,26 @@ sysconf_DATA = xboard.conf
 
 ### icon files
 
-icondir = $(datadir)/icons/hicolor/48x48/apps
+icondir = @ICONSDIR@
 dist_icon_DATA = xboard.png
-svgicondir = $(datadir)/icons/hicolor/scalable/apps
+svgicondir = @SVGICONSDIR@
 dist_svgicon_DATA = xboard.svg
 
 
 ### desktop files for KDE and gnome
 
-Applicationsdir = $(datadir)/applications
+Applicationsdir = @DESKTOPDIR@
 Applications_DATA = xboard.desktop xboard-fen-viewer.desktop  xboard-pgn-viewer.desktop  xboard-tourney.desktop  xboard-config.desktop
 
 ### mime file
-mimedir = $(datadir)/mime/packages
+mimedir = @MIMEDIR@
 mime_DATA = xboard.xml
 
+gamedatadir = @GAMEDATADIR@
+
 ### directory and files for svgs
 
-svgdir = $(datadir)/games/xboard/themes/default
+svgdir = $(gamedatadir)/themes/default
 dist_svg_DATA = svg/icon_white.svg         svg/icon_black.svg      \
            svg/BlackAdvisor.svg       svg/WhiteAdvisor.svg    \
            svg/BlackArchbishop.svg    svg/WhiteArchbishop.svg  \
@@ -129,12 +132,25 @@ dist_svg_DATA = svg/icon_white.svg         svg/icon_black.svg      \
            svg/BlackQueen.svg      svg/WhiteQueen.svg        \
            svg/BlackRook.svg       svg/WhiteRook.svg         \
            svg/BlackUnicorn.svg            svg/WhiteUnicorn.svg      \
+           svg/BlackSword.svg      svg/WhiteSword.svg        \
+           svg/BlackHSword.svg     svg/WhiteHSword.svg       \
+           svg/BlackLeopard.svg            svg/WhiteLeopard.svg      \
+           svg/BlackLion.svg       svg/WhiteLion.svg         \
+           svg/BlackPromoBishop.svg svg/WhitePromoBishop.svg  \
+           svg/BlackPromoRook.svg   svg/WhitePromoRook.svg    \
+           svg/BlackPromoHorse.svg  svg/WhitePromoHorse.svg   \
+           svg/BlackPromoDragon.svg svg/WhitePromoDragon.svg  \
+           svg/BlackPromoSword.svg  svg/WhitePromoSword.svg   \
+           svg/BlackPromoHSword.svg svg/WhitePromoHSword.svg  \
+           svg/BlackHCrown.svg     svg/WhiteHCrown.svg       \
+           svg/BlackDolphin.svg            svg/WhiteDolphin.svg      \
+           svg/BlackClaw.svg       svg/WhiteClaw.svg         \
            svg/eo_Analyzing.svg     svg/eo_Black.svg          \
            svg/eo_Clear.svg         svg/eo_Ponder.svg         \
            svg/eo_Thinking.svg      svg/eo_Unknown.svg        \
            svg/eo_White.svg
 
-shogidir = $(datadir)/games/xboard/themes/shogi
+shogidir = $(gamedatadir)/themes/shogi
 dist_shogi_DATA = \
            themes/shogi/WhiteGold.svg        themes/shogi/WhiteCrownedBishop.svg\
            themes/shogi/WhiteBishop.svg      themes/shogi/WhiteKing.svg\
@@ -151,7 +167,7 @@ dist_shogi_DATA = \
            themes/shogi/BlackRook.svg        themes/shogi/BlackCrownedRook.svg\
            themes/shogi/BlackAdvisor.svg     themes/shogi/BlackGoldSilver.svg
 
-xiangqidir = $(datadir)/games/xboard/themes/xiangqi
+xiangqidir = $(gamedatadir)/themes/xiangqi
 dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg  themes/xiangqi/WhiteAdvisor.svg \
            themes/xiangqi/BlackCanon.svg    themes/xiangqi/WhiteCanon.svg    \
            themes/xiangqi/BlackElephant.svg themes/xiangqi/WhiteElephant.svg \
@@ -160,22 +176,27 @@ dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg  themes/xiangqi/WhiteAdvisor
            themes/xiangqi/BlackPawn.svg            themes/xiangqi/WhitePawn.svg     \
            themes/xiangqi/BlackRook.svg            themes/xiangqi/WhiteRook.svg
 
+### directory and files for themes (and other) configuration files
+
+themesdir = $(datadir)/games/xboard/themes/conf
+dist_themes_DATA = conf/shogi conf/xq conf/chu conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen
+
 ### directory and files for pixmaps
 
-pixmapsdir = $(datadir)/games/xboard/pixmaps/textures
-dist_pixmaps_DATA = pixmaps/cross32.xpm pixmaps/cross48.xpm pixmaps/board32.xpm pixmaps/board48.xpm pixmaps/ini32.xpm pixmaps/ini48.xpm
+pixmapsdir = $(gamedatadir)/pixmaps/textures
+dist_pixmaps_DATA = pixmaps/cross32.png pixmaps/cross48.png pixmaps/board32.png pixmaps/board48.png pixmaps/ini32.png pixmaps/ini48.png
 
 ### directory and files for pngs
 
-pngdir = $(datadir)/games/xboard/themes/textures
+pngdir = $(gamedatadir)/themes/textures
 dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png png/xqboard.png
 
 ### directory and files for sound files
 
-soundsdir = $(datadir)/games/xboard/sounds
+soundsdir = $(gamedatadir)/sounds
 dist_sounds_DATA = \
   sounds/cymbal.wav     sounds/pop2.wav   sounds/slap.wav     sounds/ding1.wav      sounds/laser.wav \
-  sounds/woodthunk.wav  sounds/gong.wav   sounds/penalty.wav  sounds/honkhonk.wav   sounds/phone.wav
+  sounds/woodthunk.wav  sounds/gong.wav   sounds/penalty.wav  sounds/honkhonk.wav   sounds/phone.wav  sounds/roar.wav
 
 
 ### set correct dir in xboard.conf
@@ -210,12 +231,12 @@ if ENABLE_UPDATE_MIMEDB
                $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-fen-viewer.desktop;\
                $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-tourney.desktop;\
                $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-config.desktop;\
-               $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.xpm application-x-chess-pgn;\
-               $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.xpm application-x-xboard-trn;\
-               $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.xpm application-x-xboard-opt;\
-               $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.xpm application-x-chess-pgn;\
-               $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.xpm application-x-xboard-trn;\
-               $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.xpm application-x-xboard-opt;\
+               $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.png application-x-chess-pgn;\
+               $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.png application-x-xboard-trn;\
+               $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.png application-x-xboard-opt;\
+               $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.png application-x-chess-pgn;\
+               $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.png application-x-xboard-trn;\
+               $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.png application-x-xboard-opt;\
        fi
 endif
 
@@ -227,11 +248,11 @@ if ENABLE_UPDATE_MIMEDB
                $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-fen-viewer.desktop;\
                $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-tourney.desktop;\
                $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-config.desktop;\
-               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.xpm application-x-chess-pgn;\
-               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.xpm application-x-xboard-trn;\
-               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.xpm application-x-xboard-opt;\
-               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.xpm application-x-chess-pgn;\
-               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.xpm application-x-xboard-trn;\
-               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.xpm application-x-xboard-opt;\
+               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.png application-x-chess-pgn;\
+               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.png application-x-xboard-trn;\
+               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.png application-x-xboard-opt;\
+               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.png application-x-chess-pgn;\
+               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.png application-x-xboard-trn;\
+               $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.png application-x-xboard-opt;\
        fi
 endif
diff --git a/args.h b/args.h
index 660e271..d1463ec 100644 (file)
--- a/args.h
+++ b/args.h
@@ -60,7 +60,7 @@
 typedef enum {
   ArgString, ArgInt, ArgFloat, ArgBoolean, ArgTrue, ArgFalse, ArgNone,
   ArgColor, ArgAttribs, ArgFilename, ArgBoardSize, ArgFont, ArgCommSettings,
-  ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo,
+  ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo, ArgInstall, ArgMaster,
   ArgX, ArgY, ArgZ // [HGM] placement: for window-placement options stored relative to main window
 } ArgType;
 
@@ -102,7 +102,10 @@ typedef struct {
 IcsTextMenuEntry icsTextMenuEntry[ICS_TEXT_MENU_SIZE];
 
 int junk;
+unsigned int saveDate;
+unsigned int dateStamp;
 Boolean singleList;
+Boolean autoClose;
 char *homeDir;
 char *firstEngineLine;
 char *secondEngineLine;
@@ -149,6 +152,9 @@ ArgDescriptor argDescriptors[] = {
   { "loadGameFile", ArgFilename, (void *) &appData.loadGameFile, FALSE, INVALID },
   { "", ArgNone, NULL, FALSE, INVALID },
   /* keyword arguments */
+  { "saveDate", ArgInt, (void *) &saveDate, TRUE, 0 },
+  { "date", ArgInt, (void *) &dateStamp, FALSE, 0 },
+  { "autoClose", ArgTrue, (void *) &autoClose, FALSE, FALSE },
   JAWS_ARGS
   { "whitePieceColor", ArgColor, (void *) 0, TRUE, (ArgIniType) WHITE_PIECE_COLOR },
   { "wpc", ArgColor, (void *) 0, FALSE, INVALID },
@@ -468,6 +474,7 @@ ArgDescriptor argDescriptors[] = {
   { "soundSeek", ArgFilename, (void *) &appData.soundSeek, TRUE, (ArgIniType) "" },
   { "soundMove", ArgFilename, (void *) &appData.soundMove, TRUE, (ArgIniType) "" },
   { "soundBell", ArgFilename, (void *) &appData.soundBell, TRUE, (ArgIniType) SOUND_BELL },
+  { "soundRoar", ArgFilename, (void *) &appData.soundRoar, TRUE, (ArgIniType) "" },
   { "soundIcsWin", ArgFilename, (void *) &appData.soundIcsWin, TRUE, (ArgIniType) "" },
   { "soundIcsLoss", ArgFilename, (void *) &appData.soundIcsLoss, TRUE, (ArgIniType) "" },
   { "soundIcsDraw", ArgFilename, (void *) &appData.soundIcsDraw, TRUE, (ArgIniType) "" },
@@ -506,6 +513,8 @@ ArgDescriptor argDescriptors[] = {
   { "secondChessProgramNames", ArgString, (void *) &secondChessProgramNames,
     !XBOARD, (ArgIniType) SCP_NAMES },
   { "themeNames", ArgString, (void *) &appData.themeNames, !XBOARD, (ArgIniType) "native -upf false -ub false -ubt false -pid \"\"\n" },
+  { "addMasterOption", ArgMaster, NULL, FALSE, INVALID },
+  { "installEngine", ArgInstall, (void *) &firstChessProgramNames, FALSE, (ArgIniType) "" },
   { "initialMode", ArgString, (void *) &appData.initialMode, FALSE, (ArgIniType) "" },
   { "mode", ArgString, (void *) &appData.initialMode, FALSE, INVALID },
   { "variant", ArgString, (void *) &appData.variant, FALSE, (ArgIniType) "normal" },
@@ -597,6 +606,7 @@ ArgDescriptor argDescriptors[] = {
   { "useBorder", ArgBoolean, (void *) &appData.useBorder, TRUE, (ArgIniType) FALSE },
   { "ub", ArgBoolean, (void *) &appData.useBorder, FALSE, INVALID },
   { "border", ArgFilename, (void *) &appData.border, TRUE, (ArgIniType) "" },
+  { "finger", ArgFilename, (void *) &appData.finger, FALSE, (ArgIniType) "" },
 
   // [HGM] tournament options
   { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" },
@@ -687,6 +697,8 @@ ArgDescriptor argDescriptors[] = {
   { "topLevel", ArgBoolean, (void *) &appData.topLevel, XBOARD, (ArgIniType) TOPLEVEL },
   { "dialogColor", ArgString, (void *) &appData.dialogColor, XBOARD, (ArgIniType) "" },
   { "buttonColor", ArgString, (void *) &appData.buttonColor, XBOARD, (ArgIniType) "" },
+  { "firstDrawDepth", ArgInt, (void *) &appData.drawDepth[0], FALSE, (ArgIniType) 0 },
+  { "secondDrawDepth", ArgInt, (void *) &appData.drawDepth[1], FALSE, (ArgIniType) 0 },
 
 #if ZIPPY
   { "zippyTalk", ArgBoolean, (void *) &appData.zippyTalk, FALSE, (ArgIniType) ZIPPY_TALK },
@@ -822,6 +834,30 @@ ExitArgError(char *msg, char *badArg, Boolean quit)
   exit(2);
 }
 
+void
+AppendToSettingsFile (char *line)
+{
+  char buf[MSG_SIZ];
+  FILE *f;
+  int c;
+  if(f = fopen(SETTINGS_FILE, "r")) {
+    do {
+      int i = 0;
+      while((buf[i] = c = fgetc(f)) != '\n' && c != EOF) if(i < MSG_SIZ-1) i++;
+      buf[i] = NULLCHAR;
+      if(!strcmp(line, buf)) return; // line occurs
+    } while(c != EOF);
+    // line did not occur; add it
+    fclose(f);
+    if(f = fopen(SETTINGS_FILE, "a")) {
+      TimeMark now;
+      GetTimeMark(&now);
+      fprintf(f, "-date %10lu\n%s\n", now.sec, line);
+      fclose(f);
+    }
+  }
+}
+
 int
 ValidateInt(char *s)
 {
@@ -873,6 +909,12 @@ ParseSettingsFile(char *name, char **addr)
     }
   if (ok) {
     f = fopen(fullname, "r");
+#ifdef DATADIR
+    if(f == NULL && *fullname != '/') {         // when a relative name did not work
+       MySearchPath(DATADIR "/themes/conf", name, fullname); // also look in standard place
+       f = fopen(fullname, "r");
+    }
+#endif
     if (f != NULL) {
       if (addr != NULL) {
            ASSIGN(*addr, fullname);
@@ -1166,6 +1208,20 @@ ParseArgs(GetFunc get, void *cl)
       ParseCommPortSettings(argValue);
       break;
 
+    case ArgMaster:
+      AppendToSettingsFile(argValue);
+      break;
+
+    case ArgInstall:
+      q = *(char **) ad->argLoc;
+      if((saveDate == 0 || saveDate - dateStamp < 0) && !strstr(q, argValue) ) {
+        int l = strlen(q) + strlen(argValue);
+        *(char **) ad->argLoc = malloc(l+2);
+        snprintf(*(char **) ad->argLoc, l+2, "%s%s\n", q, argValue);
+        free(q);
+      }
+      break;
+
     case ArgNone:
       ExitArgError(_("Unrecognized argument %s"), argValue, TRUE);
       break;
@@ -1401,6 +1457,11 @@ InitAppData(char *lpCmdLine)
     appData.savePositionFile = strdup(buf);
   }
 
+  if(autoClose) { // was called for updating settingsfile only
+    if(saveSettingsOnExit) SaveSettings(settingsFileName);
+    exit(0);
+  }
+
   /* Finish initialization for fonts and sounds */
   CreateFonts();
 
@@ -1431,8 +1492,11 @@ SaveSettings(char* name)
   ArgDescriptor *ad;
   char dir[MSG_SIZ], buf[MSG_SIZ];
   int mps = appData.movesPerSession;
+  TimeMark now;
+
+  if (!MainWindowUp() && !autoClose) return;
 
-  if (!MainWindowUp()) return;
+  GetTimeMark(&now); saveDate = now.sec;
 
   GetCurrentDirectory(MSG_SIZ, dir);
   if(MySearchPath(installDir, name, buf)) {
@@ -1550,6 +1614,8 @@ SaveSettings(char* name)
     case ArgNone:
     case ArgBackupSettingsFile:
     case ArgSettingsFilename: ;
+    case ArgMaster: ;
+    case ArgInstall: ;
     }
   }
   fclose(f);
index c14f438..084c42c 100644 (file)
--- a/backend.c
+++ b/backend.c
 #ifdef WIN32
 #include <windows.h>
 
-int flock(int f, int code);
-#define LOCK_EX 2
-#define SLASH '\\'
+    int flock(int f, int code);
+#   define LOCK_EX 2
+#   define SLASH '\\'
+
+#   ifdef ARC_64BIT
+#       define EGBB_NAME "egbbdll64.dll"
+#   else
+#       define EGBB_NAME "egbbdll.dll"
+#   endif
 
 #else
 
-#include <sys/file.h>
-#define SLASH '/'
+#   include <sys/file.h>
+#   define SLASH '/'
+
+#   include <dlfcn.h>
+#   ifdef ARC_64BIT
+#       define EGBB_NAME "egbbso64.so"
+#   else
+#       define EGBB_NAME "egbbso.so"
+#   endif
+    // kludge to allow Windows code in back-end by converting it to corresponding Linux code 
+#   define CDECL
+#   define HMODULE void *
+#   define LoadLibrary(x) dlopen(x, RTLD_LAZY)
+#   define GetProcAddress dlsym
 
 #endif
 
@@ -225,7 +243,7 @@ void DisplayTwoMachinesTitle P(());
 static void ExcludeClick P((int index));
 void ToggleSecond P((void));
 void PauseEngine P((ChessProgramState *cps));
-static int NonStandardBoardSize P((void));
+static int NonStandardBoardSize P((VariantClass v, int w, int h, int s));
 
 #ifdef WIN32
        extern void ConsoleCreate();
@@ -269,11 +287,13 @@ char chatPartner[MAX_CHAT][MSG_SIZ]; /* [HGM] chat: list of chatting partners */
 extern int chatCount;
 int chattingPartner;
 char marker[BOARD_RANKS][BOARD_FILES]; /* [HGM] marks for target squares */
+char legal[BOARD_RANKS][BOARD_FILES];  /* [HGM] legal target squares */
 char lastMsg[MSG_SIZ];
 ChessSquare pieceSweep = EmptySquare;
 ChessSquare promoSweep = EmptySquare, defaultPromoChoice;
 int promoDefaultAltered;
 int keepInfo = 0; /* [HGM] to protect PGN tags in auto-step game analysis */
+static int initPing = -1;
 
 /* States for ics_getting_history */
 #define H_FALSE 0
@@ -388,6 +408,7 @@ PosFlags (index)
   case VariantShatranj:
   case VariantCourier:
   case VariantMakruk:
+  case VariantASEAN:
   case VariantGrand:
     flags &= ~F_ALL_CASTLE_OK;
     break;
@@ -557,6 +578,20 @@ ChessSquare makrukArray[2][BOARD_FILES] = { /* [HGM] (movGen knows about Shatran
         BlackKing, BlackMan, BlackKnight, BlackRook }
 };
 
+ChessSquare aseanArray[2][BOARD_FILES] = { /* [HGM] (movGen knows about Shatranj Q and P) */
+    { WhiteRook, WhiteKnight, WhiteMan, WhiteFerz,
+        WhiteKing, WhiteMan, WhiteKnight, WhiteRook },
+    { BlackRook, BlackKnight, BlackMan, BlackFerz,
+        BlackKing, BlackMan, BlackKnight, BlackRook }
+};
+
+ChessSquare  lionArray[2][BOARD_FILES] = {
+    { WhiteRook, WhiteLion, WhiteBishop, WhiteQueen,
+       WhiteKing, WhiteBishop, WhiteKnight, WhiteRook },
+    { BlackRook, BlackLion, BlackBishop, BlackQueen,
+       BlackKing, BlackBishop, BlackKnight, BlackRook }
+};
+
 
 #if (BOARD_FILES>=10)
 ChessSquare ShogiArray[2][BOARD_FILES] = {
@@ -601,6 +636,13 @@ ChessSquare GrandArray[2][BOARD_FILES] = {
         BlackMarshall, BlackAngel, BlackBishop, BlackKnight, EmptySquare }
 };
 
+ChessSquare ChuChessArray[2][BOARD_FILES] = {
+    { WhiteMan, WhiteKnight, WhiteBishop, WhiteCardinal, WhiteLion,
+        WhiteQueen, WhiteDragon, WhiteBishop, WhiteKnight, WhiteMan },
+    { BlackMan, BlackKnight, BlackBishop, BlackDragon, BlackQueen,
+        BlackLion, BlackCardinal, BlackBishop, BlackKnight, BlackMan }
+};
+
 #ifdef GOTHIC
 ChessSquare GothicArray[2][BOARD_FILES] = {
     { WhiteRook, WhiteKnight, WhiteBishop, WhiteQueen, WhiteMarshall,
@@ -637,8 +679,23 @@ ChessSquare CourierArray[2][BOARD_FILES] = {
     { BlackRook, BlackKnight, BlackAlfil, BlackBishop, BlackMan, BlackKing,
         BlackFerz, BlackWazir, BlackBishop, BlackAlfil, BlackKnight, BlackRook }
 };
+ChessSquare ChuArray[6][BOARD_FILES] = {
+    { WhiteLance, WhiteUnicorn, WhiteMan, WhiteFerz, WhiteWazir, WhiteKing,
+      WhiteAlfil, WhiteWazir, WhiteFerz, WhiteMan, WhiteUnicorn, WhiteLance },
+    { BlackLance, BlackUnicorn, BlackMan, BlackFerz, BlackWazir, BlackAlfil,
+      BlackKing, BlackWazir, BlackFerz, BlackMan, BlackUnicorn, BlackLance },
+    { WhiteCannon, EmptySquare, WhiteBishop, EmptySquare, WhiteNightrider, WhiteMarshall,
+      WhiteAngel, WhiteNightrider, EmptySquare, WhiteBishop, EmptySquare, WhiteCannon },
+    { BlackCannon, EmptySquare, BlackBishop, EmptySquare, BlackNightrider, BlackAngel,
+      BlackMarshall, BlackNightrider, EmptySquare, BlackBishop, EmptySquare, BlackCannon },
+    { WhiteFalcon, WhiteSilver, WhiteRook, WhiteCardinal, WhiteDragon, WhiteLion,
+      WhiteQueen, WhiteDragon, WhiteCardinal, WhiteRook, WhiteSilver, WhiteFalcon },
+    { BlackFalcon, BlackSilver, BlackRook, BlackCardinal, BlackDragon, BlackQueen,
+      BlackLion, BlackDragon, BlackCardinal, BlackRook, BlackSilver, BlackFalcon }
+};
 #else // !(BOARD_FILES>=12)
 #define CourierArray CapablancaArray
+#define ChuArray CapablancaArray
 #endif // !(BOARD_FILES>=12)
 
 
@@ -806,6 +863,7 @@ InitEngine (ChessProgramState *cps, int n)
     /* [HGM] debug */
     cps->debug = FALSE;
 
+    cps->drawDepth = appData.drawDepth[n];
     cps->supportsNPS = UNKNOWN;
     cps->memSize = FALSE;
     cps->maxCores = FALSE;
@@ -817,6 +875,7 @@ InitEngine (ChessProgramState *cps, int n)
     cps->scoreIsAbsolute = appData.scoreIsAbsolute[n]; /* [AS] */
     cps->isUCI = appData.isUCI[n]; /* [AS] */
     cps->hasOwnBookUCI = appData.hasOwnBookUCI[n]; /* [AS] */
+    cps->highlight = 0;
 
     if (appData.protocolVersion[n] > PROTOVER
        || appData.protocolVersion[n] < 1)
@@ -915,7 +974,7 @@ char *insert, *wbOptions; // point in ChessProgramNames were we should insert ne
 void
 Load (ChessProgramState *cps, int i)
 {
-    char *p, *q, buf[MSG_SIZ], command[MSG_SIZ], buf2[MSG_SIZ];
+    char *p, *q, buf[MSG_SIZ], command[MSG_SIZ], buf2[MSG_SIZ], buf3[MSG_SIZ], jar;
     if(engineLine && engineLine[0]) { // an engine was selected from the combo box
        snprintf(buf, MSG_SIZ, "-fcp %s", engineLine);
        SwapEngines(i); // kludge to parse -f* / -first* like it is -s* / -second*
@@ -939,11 +998,13 @@ Load (ChessProgramState *cps, int i)
        p[-1] = SLASH;
        if(SLASH == '/' && p - engineName > 1) *(p -= 2) = '.'; // for XBoard use ./exeName as command after split!
     } else { ASSIGN(appData.directory[i], "."); }
+    jar = (strstr(p, ".jar") == p + strlen(p) - 4);
     if(params[0]) {
        if(strchr(p, ' ') && !strchr(p, '"')) snprintf(buf2, MSG_SIZ, "\"%s\"", p), p = buf2; // quote if it contains spaces
        snprintf(command, MSG_SIZ, "%s %s", p, params);
        p = command;
     }
+    if(jar) { snprintf(buf3, MSG_SIZ, "java -jar %s", p); p = buf3; }
     ASSIGN(appData.chessProgram[i], p);
     appData.isUCI[i] = isUCI;
     appData.protocolVersion[i] = v1 ? 1 : PROTOVER;
@@ -1138,6 +1199,7 @@ InitBackEnd1 ()
       case VariantCapablanca: /* [HGM] should work */
       case VariantCourier:    /* [HGM] initial forced moves not implemented */
       case VariantShogi:      /* [HGM] could still mate with pawn drop */
+      case VariantChu:        /* [HGM] experimental */
       case VariantKnightmate: /* [HGM] should work */
       case VariantCylinder:   /* [HGM] untested */
       case VariantFalcon:     /* [HGM] untested */
@@ -1158,6 +1220,7 @@ InitBackEnd1 ()
       case Variant3Check:     /* should work except for win condition */
       case VariantShatranj:   /* should work except for all win conditions */
       case VariantMakruk:     /* should work except for draw countdown */
+      case VariantASEAN :     /* should work except for draw countdown */
       case VariantBerolina:   /* might work if TestLegality is off */
       case VariantCapaRandom: /* should work */
       case VariantJanus:      /* should work */
@@ -1166,6 +1229,8 @@ InitBackEnd1 ()
       case VariantSChess:     /* S-Chess, should work */
       case VariantGrand:      /* should work */
       case VariantSpartan:    /* should work */
+      case VariantLion:       /* should work */
+      case VariantChuChess:   /* should work */
        break;
       }
     }
@@ -1485,7 +1550,7 @@ MatchEvent (int mode)
                        NextTourneyGame(-1, &dummy);
                        ReserveGame(-1, 0);
                        if(nextGame <= appData.matchGames) {
-                           DisplayNote(_("You restarted an already completed tourney\nOne more cycle will now be added to it\nGames commence in 10 sec"));
+                           DisplayNote(_("You restarted an already completed tourney.\nOne more cycle will now be added to it.\nGames commence in 10 sec."));
                            matchMode = mode;
                            ScheduleDelayedEvent(NextMatchGame, 10000);
                            return;
@@ -1518,6 +1583,23 @@ InitBackEnd3 P((void))
     char buf[MSG_SIZ];
     int err, len;
 
+    if(!appData.icsActive && !appData.noChessProgram && !appData.matchMode &&                         // mode involves only first engine
+       !strcmp(appData.variant, "normal") &&                                                          // no explicit variant request
+        appData.NrRanks == -1 && appData.NrFiles == -1 && appData.holdingsSize == -1 &&               // no size overrides requested
+       !SupportedVariant(first.variants, VariantNormal, 8, 8, 0, first.protocolVersion, "") &&        // but 'normal' won't work with engine
+       !SupportedVariant(first.variants, VariantFischeRandom, 8, 8, 0, first.protocolVersion, "") ) { // nor will Chess960
+       char c, *q = first.variants, *p = strchr(q, ',');
+       if(p) *p = NULLCHAR;
+       if(StringToVariant(q) != VariantUnknown) { // the engine can play a recognized variant, however
+           int w, h, s;
+           if(sscanf(q, "%dx%d+%d_%c", &w, &h, &s, &c) == 4) // get size overrides the engine needs with it (if any)
+               appData.NrFiles = w, appData.NrRanks = h, appData.holdingsSize = s, q = strchr(q, '_') + 1;
+           ASSIGN(appData.variant, q); // fake user requested the first variant played by the engine
+           Reset(TRUE, FALSE);         // and re-initialize
+       }
+       if(p) *p = ',';
+    }
+
     InitChessProgram(&first, startedFromSetupPosition);
 
     if(!appData.noChessProgram) {  /* [HGM] tidy: redo program version to use name from myname feature */
@@ -1995,10 +2077,12 @@ StripHighlight (char *s)
     return retbuf;
 }
 
+char engineVariant[MSG_SIZ];
 char *variantNames[] = VARIANT_NAMES;
 char *
 VariantName (VariantClass v)
 {
+    if(v == VariantUnknown || *engineVariant) return engineVariant;
     return variantNames[v];
 }
 
@@ -2028,7 +2112,8 @@ StringToVariant (char *e)
        found = TRUE;
     } else
     for (i=0; i<sizeof(variantNames)/sizeof(char*); i++) {
-      if (StrCaseStr(e, variantNames[i])) {
+      if (p = StrCaseStr(e, variantNames[i])) {
+       if(p && i >= VariantShogi && isalpha(p[strlen(variantNames[i])])) continue;
        v = (VariantClass) i;
        found = TRUE;
        break;
@@ -3014,8 +3099,10 @@ read_from_ics (InputSourceRef isr, VOIDSTAR closure, char *data, int count, int
                        } else {
                            char tmp[MSG_SIZ];
                            if(gameMode == IcsObserving) // restore original ICS messages
+                             /* TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers */
                              snprintf(tmp, MSG_SIZ, "%s kibitzes: %s", star_match[0], parse);
                            else
+                           /* TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers */
                            snprintf(tmp, MSG_SIZ, _("your opponent kibitzes: %s"), parse);
                            SendToPlayer(tmp, strlen(tmp));
                        }
@@ -4745,7 +4832,7 @@ ParseBoard12 (char *string)
              default:
                break;
              case MT_CHECK:
-                if(gameInfo.variant != VariantShogi)
+                if(!IS_SHOGI(gameInfo.variant))
                     strcat(parseList[moveNum - 1], "+");
                break;
              case MT_CHECKMATE:
@@ -4975,6 +5062,11 @@ SendMoveToProgram (int moveNum, ChessProgramState *cps)
     char buf[MSG_SIZ];
 
     if(moveList[moveNum][1] == '@' && moveList[moveNum][0] == '@') {
+       if(gameInfo.variant == VariantLion || gameInfo.variant == VariantChuChess || gameInfo.variant == VariantChu) {
+           sprintf(buf, "%s@@@@\n", cps->useUsermove ? "usermove " : "");
+           SendToProgram(buf, cps);
+           return;
+       }
        // null move in variant where engine does not understand it (for analysis purposes)
        SendBoard(cps, moveNum + 1); // send position after move in stead.
        return;
@@ -5017,6 +5109,13 @@ SendMoveToProgram (int moveNum, ChessProgramState *cps)
        }
        else SendToProgram(moveList[moveNum], cps);
       } else
+      if(moveList[moveNum][4] == ';') { // [HGM] lion: move is double-step over intermediate square
+         snprintf(buf, MSG_SIZ, "%c%d%c%d,%c%d%c%d\n", moveList[moveNum][0], moveList[moveNum][1] - '0', // convert to two moves
+                                              moveList[moveNum][5], moveList[moveNum][6] - '0',
+                                              moveList[moveNum][5], moveList[moveNum][6] - '0',
+                                              moveList[moveNum][2], moveList[moveNum][3] - '0');
+         SendToProgram(buf, cps);
+      } else
       if(BOARD_HEIGHT > 10) { // [HGM] big: convert ranks to double-digit where needed
        if(moveList[moveNum][1] == '@' && (BOARD_HEIGHT < 16 || moveList[moveNum][0] <= 'Z')) { // drop move
          if(moveList[moveNum][0]== '@') snprintf(buf, MSG_SIZ, "@@@@\n"); else
@@ -5090,7 +5189,8 @@ SendMoveToICS (ChessMove moveType, int fromX, int fromY, int toX, int toY, char
         break;
       case WhitePromotion:
       case BlackPromotion:
-        if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
+        if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+           gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN)
          snprintf(user_move, MSG_SIZ, "%c%c%c%c=%c\n",
                 AAA + fromX, ONE + fromY, AAA + toX, ONE + toY,
                PieceToChar(WhiteFerz));
@@ -5154,7 +5254,7 @@ UploadGameEvent ()
        SendToICS(ics_prefix);
        SendToICS(buf);
        if(startedFromSetupPosition || backwardMostMove != 0) {
-         fen = PositionToFEN(backwardMostMove, NULL);
+         fen = PositionToFEN(backwardMostMove, NULL, 1);
          if(ics_type == ICS_ICC) { // on ICC we can simply send a complete FEN to set everything
            snprintf(buf, MSG_SIZ,"loadfen %s\n", fen);
            SendToICS(buf);
@@ -5196,6 +5296,8 @@ UploadGameEvent ()
     SendToICS(ics_type == ICS_ICC ? "tag result Game in progress\n" : "commit\n");
 }
 
+int killX = -1, killY = -1; // [HGM] lion: used for passing e.p. capture square to MakeMove
+
 void
 CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char move[7])
 {
@@ -5207,6 +5309,7 @@ CoordsToComputerAlgebraic (int rf, int ff, int rt, int ft, char promoChar, char
        if (promoChar == 'x' || promoChar == NULLCHAR) {
          sprintf(move, "%c%c%c%c\n",
                     AAA + ff, ONE + rf, AAA + ft, ONE + rt);
+         if(killX >= 0 && killY >= 0) sprintf(move+4, ";%c%c\n", AAA + killX, ONE + killY);
        } else {
            sprintf(move, "%c%c%c%c%c\n",
                     AAA + ff, ONE + rf, AAA + ft, ONE + rt, promoChar);
@@ -5227,27 +5330,43 @@ ProcessICSInitScript (FILE *f)
 }
 
 
-static int lastX, lastY, selectFlag, dragging;
+static int lastX, lastY, lastLeftX, lastLeftY, selectFlag;
+int dragging;
+static ClickType lastClickType;
+
+int
+Partner (ChessSquare *p)
+{ // change piece into promotion partner if one shogi-promotes to the other
+  int stride = gameInfo.variant == VariantChu ? 22 : 11;
+  ChessSquare partner;
+  partner = (*p/stride & 1 ? *p - stride : *p + stride);
+  if(PieceToChar(*p) != '+' && PieceToChar(partner) != '+') return 0;
+  *p = partner;
+  return 1;
+}
 
 void
 Sweep (int step)
 {
     ChessSquare king = WhiteKing, pawn = WhitePawn, last = promoSweep;
+    static int toggleFlag;
     if(gameInfo.variant == VariantKnightmate) king = WhiteUnicorn;
     if(gameInfo.variant == VariantSuicide || gameInfo.variant == VariantGiveaway) king = EmptySquare;
     if(promoSweep >= BlackPawn) king = WHITE_TO_BLACK king, pawn = WHITE_TO_BLACK pawn;
     if(gameInfo.variant == VariantSpartan && pawn == BlackPawn) pawn = BlackLance, king = EmptySquare;
-    if(fromY != BOARD_HEIGHT-2 && fromY != 1) pawn = EmptySquare;
+    if(fromY != BOARD_HEIGHT-2 && fromY != 1 && gameInfo.variant != VariantChuChess) pawn = EmptySquare;
+    if(!step) toggleFlag = Partner(&last); // piece has shogi-promotion
     do {
-       promoSweep -= step;
+       if(step && !(toggleFlag && Partner(&promoSweep))) promoSweep -= step;
        if(promoSweep == EmptySquare) promoSweep = BlackPawn; // wrap
        else if((int)promoSweep == -1) promoSweep = WhiteKing;
        else if(promoSweep == BlackPawn && step < 0) promoSweep = WhitePawn;
        else if(promoSweep == WhiteKing && step > 0) promoSweep = BlackKing;
        if(!step) step = -1;
     } while(PieceToChar(promoSweep) == '.' || PieceToChar(promoSweep) == '~' || promoSweep == pawn ||
-           appData.testLegality && (promoSweep == king ||
-           gameInfo.variant == VariantShogi && promoSweep != PROMOTED last && last != PROMOTED promoSweep && last != promoSweep));
+           !toggleFlag && PieceToChar(promoSweep) == '+' || // skip promoted versions of other
+           appData.testLegality && (promoSweep == king || gameInfo.variant != VariantChuChess &&
+            (promoSweep == WhiteLion || promoSweep == BlackLion)));
     if(toX >= 0) {
        int victim = boards[currentMove][toY][toX];
        boards[currentMove][toY][toX] = promoSweep;
@@ -5351,6 +5470,7 @@ ParseOneMove (char *move, int moveNum, ChessMove *moveType, int *fromX, int *fro
       case WhiteNonPromotion:
       case BlackNonPromotion:
       case NormalMove:
+      case FirstLeg:
       case WhiteCapturesEnPassant:
       case BlackCapturesEnPassant:
       case WhiteKingSideCastle:
@@ -5384,7 +5504,8 @@ ParseOneMove (char *move, int moveNum, ChessMove *moveType, int *fromX, int *fro
        if (appData.testLegality) {
          return (*moveType != IllegalMove);
        } else {
-         return !(*fromX == *toX && *fromY == *toY) && boards[moveNum][*fromY][*fromX] != EmptySquare &&
+         return !(*fromX == *toX && *fromY == *toY && killX < 0) && boards[moveNum][*fromY][*fromX] != EmptySquare &&
+                        // [HGM] lion: if this is a double move we are less critical
                        WhiteOnMove(moveNum) == (boards[moveNum][*fromY][*fromX] < BlackPawn);
        }
 
@@ -5842,7 +5963,7 @@ void
 InitPosition (int redraw)
 {
     ChessSquare (* pieces)[BOARD_FILES];
-    int i, j, pawnRow, overrule,
+    int i, j, pawnRow=1, pieceRows=1, overrule,
     oldx = gameInfo.boardWidth,
     oldy = gameInfo.boardHeight,
     oldh = gameInfo.holdingsWidth;
@@ -5899,9 +6020,13 @@ InitPosition (int redraw)
     case VariantMakruk:
       pieces = makrukArray;
       nrCastlingRights = 0;
-      startedFromSetupPosition = TRUE;
       SetCharTable(pieceToChar, "PN.R.M....SKpn.r.m....sk");
       break;
+    case VariantASEAN:
+      pieces = aseanArray;
+      nrCastlingRights = 0;
+      SetCharTable(pieceToChar, "PN.R.Q....BKpn.r.q....bk");
+      break;
     case VariantTwoKings:
       pieces = twoKingsArray;
       break;
@@ -5962,6 +6087,14 @@ InitPosition (int redraw)
       nrCastlingRights = 0;
       SetCharTable(pieceToChar, "PNBRLS...G.++++++Kpnbrls...g.++++++k");
       break;
+    case VariantChu:
+      pieces = ChuArray; pieceRows = 3;
+      gameInfo.boardWidth  = 12;
+      gameInfo.boardHeight = 12;
+      nrCastlingRights = 0;
+      SetCharTable(pieceToChar, "P.BRQSEXOGCATHD.VMLIFN+.++.++++++++++.+++++K"
+                                "p.brqsexogcathd.vmlifn+.++.++++++++++.+++++k");
+      break;
     case VariantCourier:
       pieces = CourierArray;
       gameInfo.boardWidth  = 12;
@@ -5976,6 +6109,16 @@ InitPosition (int redraw)
       pieces = SpartanArray;
       SetCharTable(pieceToChar, "PNBRQ................K......lwg.....c...h..k");
       break;
+    case VariantLion:
+      pieces = lionArray;
+      SetCharTable(pieceToChar, "PNBRQ................LKpnbrq................lk");
+      break;
+    case VariantChuChess:
+      pieces = ChuChessArray;
+      gameInfo.boardWidth = 10;
+      gameInfo.boardHeight = 10;
+      SetCharTable(pieceToChar, "PNBRQ.....M.+++......LKpnbrq.....m.+++......lk");
+      break;
     case VariantFairy:
       pieces = fairyArray;
       SetCharTable(pieceToChar, "PNBRQFEACWMOHIJGDVLSUKpnbrqfeacwmohijgdvlsuk");
@@ -6030,7 +6173,9 @@ InitPosition (int redraw)
 
     pawnRow = gameInfo.boardHeight - 7; /* seems to work in all common variants */
     if(pawnRow < 1) pawnRow = 1;
-    if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand) pawnRow = 2;
+    if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN ||
+       gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) pawnRow = 2;
+    if(gameInfo.variant == VariantChu) pawnRow = 3;
 
     /* User pieceToChar list overrules defaults */
     if(appData.pieceToCharTable != NULL)
@@ -6044,7 +6189,7 @@ InitPosition (int redraw)
             initialPosition[i][j] = s;
 
         if(j < BOARD_LEFT || j >= BOARD_RGHT || overrule) continue;
-        initialPosition[gameInfo.variant == VariantGrand][j] = pieces[0][j-gameInfo.holdingsWidth];
+        initialPosition[gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess][j] = pieces[0][j-gameInfo.holdingsWidth];
         initialPosition[pawnRow][j] = WhitePawn;
         initialPosition[BOARD_HEIGHT-pawnRow-1][j] = gameInfo.variant == VariantSpartan ? BlackLance : BlackPawn;
         if(gameInfo.variant == VariantXiangqi) {
@@ -6057,14 +6202,24 @@ InitPosition (int redraw)
                 }
             }
         }
-        if(gameInfo.variant == VariantGrand) {
+        if(gameInfo.variant == VariantChu) {
+             if(j == (BOARD_WIDTH-2)/3 || j == BOARD_WIDTH - (BOARD_WIDTH+1)/3)
+               initialPosition[pawnRow+1][j] = WhiteCobra,
+               initialPosition[BOARD_HEIGHT-pawnRow-2][j] = BlackCobra;
+             for(i=1; i<pieceRows; i++) {
+               initialPosition[i][j] = pieces[2*i][j-gameInfo.holdingsWidth];
+               initialPosition[BOARD_HEIGHT-1-i][j] =  pieces[2*i+1][j-gameInfo.holdingsWidth];
+             }
+        }
+        if(gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) {
             if(j==BOARD_LEFT || j>=BOARD_RGHT-1) {
                initialPosition[0][j] = WhiteRook;
                initialPosition[BOARD_HEIGHT-1][j] = BlackRook;
             }
         }
-        initialPosition[BOARD_HEIGHT-1-(gameInfo.variant == VariantGrand)][j] =  pieces[1][j-gameInfo.holdingsWidth];
+        initialPosition[BOARD_HEIGHT-1-(gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess)][j] =  pieces[1][j-gameInfo.holdingsWidth];
     }
+    if(gameInfo.variant == VariantChuChess) initialPosition[0][BOARD_WIDTH/2] = WhiteKing, initialPosition[BOARD_HEIGHT-1][BOARD_WIDTH/2-1] = BlackKing;
     if( (gameInfo.variant == VariantShogi) && !overrule ) {
 
             j=BOARD_LEFT+1;
@@ -6139,7 +6294,7 @@ SendBoard (ChessProgramState *cps, int moveNum)
     char message[MSG_SIZ];
 
     if (cps->useSetboard) {
-      char* fen = PositionToFEN(moveNum, cps->fenOverride);
+      char* fen = PositionToFEN(moveNum, cps->fenOverride, 1);
       snprintf(message, MSG_SIZ,"setboard %s\n", fen);
       SendToProgram(message, cps);
       free(fen);
@@ -6322,7 +6477,8 @@ ChessSquare
 DefaultPromoChoice (int white)
 {
     ChessSquare result;
-    if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
+    if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+       gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN)
        result = WhiteFerz; // no choice
     else if(gameInfo.variant == VariantSuicide || gameInfo.variant == VariantGiveaway)
        result= WhiteKing; // in Suicide Q is the last thing we want
@@ -6341,7 +6497,7 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i
     /* [HGM] rewritten IsPromotion to only flag promotions that offer a choice */
     /* [HGM] add Shogi promotions */
     int promotionZoneSize=1, highestPromotingPiece = (int)WhitePawn;
-    ChessSquare piece;
+    ChessSquare piece, partner;
     ChessMove moveType;
     Boolean premove;
 
@@ -6353,10 +6509,14 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i
        return FALSE;
 
     piece = boards[currentMove][fromY][fromX];
-    if(gameInfo.variant == VariantShogi) {
+    if(gameInfo.variant == VariantChu) {
+        int p = piece >= BlackPawn ? BLACK_TO_WHITE piece : piece;
+        promotionZoneSize = BOARD_HEIGHT/3;
+        highestPromotingPiece = (p >= WhiteLion || PieceToChar(piece + 22) == '.') ? WhitePawn : WhiteLion;
+    } else if(gameInfo.variant == VariantShogi || gameInfo.variant == VariantChuChess) {
         promotionZoneSize = BOARD_HEIGHT/3;
-        highestPromotingPiece = (int)WhiteFerz;
-    } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand) {
+        highestPromotingPiece = (int)WhiteAlfil;
+    } else if(gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess) {
         promotionZoneSize = 3;
     }
 
@@ -6370,10 +6530,13 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i
     if((int)piece >= BlackPawn) {
         if(toY >= promotionZoneSize && fromY >= promotionZoneSize)
              return FALSE;
+        if(fromY < promotionZoneSize && gameInfo.variant == VariantChuChess) return FALSE;
         highestPromotingPiece = WHITE_TO_BLACK highestPromotingPiece;
     } else {
         if(  toY < BOARD_HEIGHT - promotionZoneSize &&
            fromY < BOARD_HEIGHT - promotionZoneSize) return FALSE;
+        if(fromY >= BOARD_HEIGHT - promotionZoneSize && gameInfo.variant == VariantChuChess)
+             return FALSE;
     }
 
     if( (int)piece > highestPromotingPiece ) return FALSE; // non-promoting piece
@@ -6407,8 +6570,13 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i
     }
 
     // we either have a choice what to promote to, or (in Shogi) whether to promote
-    if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk) {
-       *promoChoice = PieceToChar(BlackFerz);  // no choice
+    if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+       gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN) {
+       ChessSquare p=BlackFerz;  // no choice
+       while(p < EmptySquare) {  //but make sure we use piece that exists
+           *promoChoice = PieceToChar(p++);
+           if(*promoChoice != '.') break;
+       }
        return FALSE;
     }
     // no sense asking what we must promote to if it is going to explode...
@@ -6418,7 +6586,9 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i
     }
     // give caller the default choice even if we will not make it
     *promoChoice = ToLower(PieceToChar(defaultPromoChoice));
-    if(gameInfo.variant == VariantShogi) *promoChoice = (defaultPromoChoice == piece ? '=' : '+');
+    partner = piece; // pieces can promote if the pieceToCharTable says so
+    if(IS_SHOGI(gameInfo.variant)) *promoChoice = (defaultPromoChoice == piece && sweepSelect ? '=' : '+'); // obsolete?
+    else if(Partner(&partner))     *promoChoice = (defaultPromoChoice == piece && sweepSelect ? NULLCHAR : '+');
     if(        sweepSelect && gameInfo.variant != VariantGreat
                           && gameInfo.variant != VariantGrand
                           && gameInfo.variant != VariantSuper) return FALSE;
@@ -6429,7 +6599,8 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i
              gameMode == IcsPlayingBlack &&  WhiteOnMove(currentMove);
     if(appData.testLegality && !premove) {
        moveType = LegalityTest(boards[currentMove], PosFlags(currentMove),
-                       fromY, fromX, toY, toX, gameInfo.variant == VariantShogi ? '+' : NULLCHAR);
+                       fromY, fromX, toY, toX, IS_SHOGI(gameInfo.variant) || gameInfo.variant == VariantChuChess ? '+' : NULLCHAR);
+        if(moveType == IllegalMove) *promoChoice = NULLCHAR; // could be the fact we promoted was illegal
        if(moveType != WhitePromotion && moveType  != BlackPromotion)
            return FALSE;
     }
@@ -6998,27 +7169,66 @@ FinishMove (ChessMove moveType, int fromX, int fromY, int toX, int toY, int prom
 }
 
 void
+MarkByFEN(char *fen)
+{
+       int r, f;
+       if(!appData.markers || !appData.highlightDragging) return;
+       for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) legal[r][f] = 0;
+       r=BOARD_HEIGHT-1; f=BOARD_LEFT;
+       while(*fen) {
+           int s = 0;
+           marker[r][f] = 0;
+           if(*fen == 'M') legal[r][f] = 2; else // request promotion choice
+           if(*fen >= 'A' && *fen <= 'Z') legal[r][f] = 1; else
+           if(*fen >= 'a' && *fen <= 'z') *fen += 'A' - 'a';
+           if(*fen == '/' && f > BOARD_LEFT) f = BOARD_LEFT, r--; else
+           if(*fen == 'T') marker[r][f++] = 0; else
+           if(*fen == 'Y') marker[r][f++] = 1; else
+           if(*fen == 'G') marker[r][f++] = 3; else
+           if(*fen == 'B') marker[r][f++] = 4; else
+           if(*fen == 'C') marker[r][f++] = 5; else
+           if(*fen == 'M') marker[r][f++] = 6; else
+           if(*fen == 'W') marker[r][f++] = 7; else
+           if(*fen == 'D') marker[r][f++] = 8; else
+           if(*fen == 'R') marker[r][f++] = 2; else {
+               while(*fen <= '9' && *fen >= '0') s = 10*s + *fen++ - '0';
+             f += s; fen -= s>0;
+           }
+           while(f >= BOARD_RGHT) f -= BOARD_RGHT - BOARD_LEFT, r--;
+           if(r < 0) break;
+           fen++;
+       }
+       DrawPosition(TRUE, NULL);
+}
+
+static char baseMarker[BOARD_RANKS][BOARD_FILES], baseLegal[BOARD_RANKS][BOARD_FILES];
+
+void
 Mark (Board board, int flags, ChessMove kind, int rf, int ff, int rt, int ft, VOIDSTAR closure)
 {
     typedef char Markers[BOARD_RANKS][BOARD_FILES];
     Markers *m = (Markers *) closure;
-    if(rf == fromY && ff == fromX)
+    if(rf == fromY && ff == fromX && (killX < 0 && !(rt == rf && ft == ff) || abs(ft-killX) < 2 && abs(rt-killY) < 2))
        (*m)[rt][ft] = 1 + (board[rt][ft] != EmptySquare
                         || kind == WhiteCapturesEnPassant
-                        || kind == BlackCapturesEnPassant);
+                        || kind == BlackCapturesEnPassant) + 3*(kind == FirstLeg && killX < 0);
     else if(flags & F_MANDATORY_CAPTURE && board[rt][ft] != EmptySquare) (*m)[rt][ft] = 3;
 }
 
+static int hoverSavedValid;
+
 void
 MarkTargetSquares (int clear)
 {
-  int x, y;
-  if(clear) // no reason to ever suppress clearing
-    for(x=0; x<BOARD_WIDTH; x++) for(y=0; y<BOARD_HEIGHT; y++) marker[y][x] = 0;
-  if(!appData.markers || !appData.highlightDragging || appData.icsActive && gameInfo.variant < VariantShogi ||
-     !appData.testLegality || gameMode == EditPosition) return;
-  if(!clear) {
+  int x, y, sum=0;
+  if(clear) { // no reason to ever suppress clearing
+    for(x=0; x<BOARD_WIDTH; x++) for(y=0; y<BOARD_HEIGHT; y++) sum += marker[y][x], marker[y][x] = 0;
+    hoverSavedValid = 0;
+    if(!sum) return; // nothing was cleared,no redraw needed
+  } else {
     int capt = 0;
+    if(!appData.markers || !appData.highlightDragging || appData.icsActive && gameInfo.variant < VariantShogi ||
+       !appData.testLegality || gameMode == EditPosition) return;
     GenLegal(boards[currentMove], PosFlags(currentMove), Mark, (void*) marker, EmptySquare);
     if(PosFlags(0) & F_MANDATORY_CAPTURE) {
       for(x=0; x<BOARD_WIDTH; x++) for(y=0; y<BOARD_HEIGHT; y++) if(marker[y][x]>1) capt++;
@@ -7048,19 +7258,59 @@ ChessSquare gatingPiece = EmptySquare; // exported to front-end, for dragging
 int
 CanPromote (ChessSquare piece, int y)
 {
+        int zone = (gameInfo.variant == VariantChuChess ? 3 : 1);
        if(gameMode == EditPosition) return FALSE; // no promotions when editing position
        // some variants have fixed promotion piece, no promotion at all, or another selection mechanism
-       if(gameInfo.variant == VariantShogi    || gameInfo.variant == VariantXiangqi ||
+       if(IS_SHOGI(gameInfo.variant)          || gameInfo.variant == VariantXiangqi ||
           gameInfo.variant == VariantSuper    || gameInfo.variant == VariantGreat   ||
           gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
-                                                 gameInfo.variant == VariantMakruk) return FALSE;
-       return (piece == BlackPawn && y == 1 ||
-               piece == WhitePawn && y == BOARD_HEIGHT-2 ||
+         gameInfo.variant == VariantMakruk   || gameInfo.variant == VariantASEAN) return FALSE;
+       return (piece == BlackPawn && y <= zone ||
+               piece == WhitePawn && y >= BOARD_HEIGHT-1-zone ||
                piece == BlackLance && y == 1 ||
                piece == WhiteLance && y == BOARD_HEIGHT-2 );
 }
 
 void
+HoverEvent (int xPix, int yPix, int x, int y)
+{
+       static int oldX = -1, oldY = -1, oldFromX = -1, oldFromY = -1;
+       int r, f;
+       if(!first.highlight) return;
+       if(fromX != oldFromX || fromY != oldFromY)  oldX = oldY = -1; // kludge to fake entry on from-click
+       if(x == oldX && y == oldY) return; // only do something if we enter new square
+       oldFromX = fromX; oldFromY = fromY;
+       if(oldX == -1 && oldY == -1 && x == fromX && y == fromY) { // record markings after from-change
+         for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
+           baseMarker[r][f] = marker[r][f], baseLegal[r][f] = legal[r][f];
+         hoverSavedValid = 1;
+       } else if(oldX != x || oldY != y) {
+         // [HGM] lift: entered new to-square; redraw arrow, and inform engine
+         if(hoverSavedValid) // don't restore markers that are supposed to be cleared
+         for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
+           marker[r][f] = baseMarker[r][f], legal[r][f] = baseLegal[r][f];
+         if((marker[y][x] == 2 || marker[y][x] == 6) && legal[y][x]) {
+           char buf[MSG_SIZ];
+           snprintf(buf, MSG_SIZ, "hover %c%d\n", x + AAA, y + ONE - '0');
+           SendToProgram(buf, &first);
+         }
+         oldX = x; oldY = y;
+//       SetHighlights(fromX, fromY, x, y);
+       }
+}
+
+void ReportClick(char *action, int x, int y)
+{
+       char buf[MSG_SIZ]; // Inform engine of what user does
+       int r, f;
+       if(action[0] == 'l') // mark any target square of a lifted piece as legal to-square, clear markers
+         for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) legal[r][f] = 1, marker[r][f] = 0;
+       if(!first.highlight || gameMode == EditPosition) return;
+       snprintf(buf, MSG_SIZ, "%s %c%d%s\n", action, x+AAA, y+ONE-'0', controlKey && action[0]=='p' ? "," : "");
+       SendToProgram(buf, &first);
+}
+
+void
 LeftClick (ClickType clickType, int xPix, int yPix)
 {
     int x, y;
@@ -7075,6 +7325,7 @@ LeftClick (ClickType clickType, int xPix, int yPix)
     prevClickTime = lastClickTime; GetTimeMark(&lastClickTime);
 
     if (clickType == Press) ErrorPopDown();
+    lastClickType = clickType, lastLeftX = xPix, lastLeftY = yPix; // [HGM] alien: remember state
 
     x = EventToSquare(xPix, BOARD_WIDTH);
     y = EventToSquare(yPix, BOARD_HEIGHT);
@@ -7152,13 +7403,14 @@ LeftClick (ClickType clickType, int xPix, int yPix)
       if(gameMode == AnalyzeMode && (pausing || controlKey) && first.excludeMoves) { // use pause state to exclude moves
        doubleClick = TRUE; gatingPiece = boards[currentMove][y][x];
       }
-      fromX = x; fromY = y; toX = toY = -1;
+      fromX = x; fromY = y; toX = toY = killX = killY = -1;
       if(!appData.oneClick || !OnlyMove(&x, &y, FALSE) ||
         // even if only move, we treat as normal when this would trigger a promotion popup, to allow sweep selection
         appData.sweepSelect && CanPromote(boards[currentMove][fromY][fromX], fromY) && originalY != y) {
            /* First square */
            if (OKToStartUserMove(fromX, fromY)) {
                second = 0;
+               ReportClick("lift", x, y);
                MarkTargetSquares(0);
                if(gameMode == EditPosition && controlKey) gatingPiece = boards[currentMove][fromY][fromX];
                DragPieceBegin(xPix, yPix, FALSE); dragging = 1;
@@ -7191,16 +7443,18 @@ LeftClick (ClickType clickType, int xPix, int yPix)
        fromP = boards[currentMove][fromY][fromX];
        toP = boards[currentMove][y][x];
        frc = gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom || gameInfo.variant == VariantSChess;
-       if ((WhitePawn <= fromP && fromP <= WhiteKing &&
+       if( (killX < 0 || x != fromX || y != fromY) && // [HGM] lion: do not interpret igui as deselect!
+          ((WhitePawn <= fromP && fromP <= WhiteKing &&
             WhitePawn <= toP && toP <= WhiteKing &&
             !(fromP == WhiteKing && toP == WhiteRook && frc) &&
             !(fromP == WhiteRook && toP == WhiteKing && frc)) ||
            (BlackPawn <= fromP && fromP <= BlackKing &&
             BlackPawn <= toP && toP <= BlackKing &&
             !(fromP == BlackRook && toP == BlackKing && frc) && // allow also RxK as FRC castling
-            !(fromP == BlackKing && toP == BlackRook && frc))) {
+            !(fromP == BlackKing && toP == BlackRook && frc)))) {
            /* Clicked again on same color piece -- changed his mind */
            second = (x == fromX && y == fromY);
+           killX = killY = -1;
            if(second && gameMode == AnalyzeMode && SubtractTimeMarks(&lastClickTime, &prevClickTime) < 200) {
                second = FALSE; // first double-click rather than scond click
                doubleClick = first.excludeMoves; // used by UserMoveEvent to recognize exclude moves
@@ -7221,6 +7475,7 @@ LeftClick (ClickType clickType, int xPix, int yPix)
                else gatingPiece = doubleClick ? fromP : EmptySquare;
                fromX = x;
                fromY = y; dragging = 1;
+               ReportClick("lift", x, y);
                MarkTargetSquares(0);
                DragPieceBegin(xPix, yPix, FALSE);
                if(appData.sweepSelect && CanPromote(piece = boards[currentMove][y][x], y)) {
@@ -7237,7 +7492,7 @@ LeftClick (ClickType clickType, int xPix, int yPix)
        if(x < BOARD_LEFT || x >= BOARD_RGHT) return;
     }
 
-    if (clickType == Release && x == fromX && y == fromY) {
+    if (clickType == Release && x == fromX && y == fromY && killX < 0) {
        DragPieceEnd(xPix, yPix); dragging = 0;
        if(clearFlag) {
            // a deferred attempt to click-click move an empty square on top of a piece
@@ -7270,26 +7525,42 @@ LeftClick (ClickType clickType, int xPix, int yPix)
 
     clearFlag = 0;
 
+    if(gameMode != EditPosition && !appData.testLegality && !legal[y][x] && (x != killX || y != killY) && !sweepSelecting) {
+       if(dragging) DragPieceEnd(xPix, yPix), dragging = 0;
+       DisplayMessage(_("only marked squares are legal"),"");
+       DrawPosition(TRUE, NULL);
+       return; // ignore to-click
+    }
+
     /* we now have a different from- and (possibly off-board) to-square */
     /* Completed move */
     if(!sweepSelecting) {
        toX = x;
        toY = y;
-    } else sweepSelecting = 0; // this must be the up-click corresponding to the down-click that started the sweep
+    }
+
+    piece = boards[currentMove][fromY][fromX];
 
     saveAnimate = appData.animate;
     if (clickType == Press) {
+       if(gameInfo.variant == VariantChuChess && piece != WhitePawn && piece != BlackPawn) defaultPromoChoice = piece;
        if(gameMode == EditPosition && boards[currentMove][fromY][fromX] == EmptySquare) {
            // must be Edit Position mode with empty-square selected
            fromX = x; fromY = y; DragPieceBegin(xPix, yPix, FALSE); dragging = 1; // consider this a new attempt to drag
            if(x >= BOARD_LEFT && x < BOARD_RGHT) clearFlag = 1; // and defer click-click move of empty-square to up-click
            return;
        }
-       if(HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice, FALSE)) {
+       if(dragging == 2) {  // [HGM] lion: just turn buttonless drag into normal drag, and let release to the job
+           return;
+       }
+       if(x == killX && y == killY) {              // second click on this square, which was selected as first-leg target
+           killX = killY = -1;                     // this informs us no second leg is coming, so treat as to-click without intermediate
+       } else
+       if(marker[y][x] == 5) return; // [HGM] lion: to-click on cyan square; defer action to release
+       if(legal[y][x] == 2 || HasPromotionChoice(fromX, fromY, toX, toY, &promoChoice, FALSE)) {
          if(appData.sweepSelect) {
-           ChessSquare piece = boards[currentMove][fromY][fromX];
            promoSweep = defaultPromoChoice;
-           if(PieceToChar(PROMOTED piece) == '+') promoSweep = PROMOTED piece;
+           if(gameInfo.variant != VariantChuChess && PieceToChar(CHUPROMOTED piece) == '+') promoSweep = CHUPROMOTED piece;
            selectFlag = 0; lastX = xPix; lastY = yPix;
            Sweep(0); // Pawn that is going to promote: preview promotion piece
            sweepSelecting = 1;
@@ -7304,6 +7575,13 @@ LeftClick (ClickType clickType, int xPix, int yPix)
        } else {
            ClearHighlights();
        }
+    } else if(sweepSelecting) { // this must be the up-click corresponding to the down-click that started the sweep
+       sweepSelecting = 0; appData.animate = FALSE; // do not animate, a selected piece already on to-square
+       if (appData.animate || appData.highlightLastMove) {
+           SetHighlights(fromX, fromY, toX, toY);
+       } else {
+           ClearHighlights();
+       }
     } else {
 #if 0
 // [HGM] this must be done after the move is made, as with arrow it could lead to a board redraw with piece still on from square
@@ -7314,6 +7592,18 @@ LeftClick (ClickType clickType, int xPix, int yPix)
            ClearHighlights();
        }
 #endif
+       if(gameInfo.variant == VariantChuChess && piece != WhitePawn && piece != BlackPawn) defaultPromoChoice = piece;
+       if(marker[y][x] == 5) { // [HGM] lion: this was the release of a to-click or drag on a cyan square
+         dragging *= 2;            // flag button-less dragging if we are dragging
+         MarkTargetSquares(1);
+         if(x == killX && y == killY) killX = killY = -1; else {
+           killX = x; killY = y;     //remeber this square as intermediate
+           ReportClick("put", x, y); // and inform engine
+           ReportClick("lift", x, y);
+           MarkTargetSquares(0);
+           return;
+         }
+       }
        DragPieceEnd(xPix, yPix); dragging = 0;
        /* Don't animate move and drag both */
        appData.animate = FALSE;
@@ -7349,6 +7639,7 @@ LeftClick (ClickType clickType, int xPix, int yPix)
 
     // off-board moves should not be highlighted
     if(x < 0 || y < 0) ClearHighlights();
+    else ReportClick("put", x, y);
 
     if(gatingPiece != EmptySquare && gameInfo.variant == VariantSChess) promoChoice = ToLower(PieceToChar(gatingPiece));
 
@@ -7368,7 +7659,7 @@ LeftClick (ClickType clickType, int xPix, int yPix)
            DisplayMessage("Click in holdings to choose piece", "");
            return;
        }
-       PromotionPopUp();
+       PromotionPopUp(promoChoice);
     } else {
        int oldMove = currentMove;
        UserMoveEvent(fromX, fromY, toX, toY, promoChoice);
@@ -8001,11 +8292,66 @@ Adjudicate (ChessProgramState *cps)
        return 0;
 }
 
+typedef int (CDECL *PPROBE_EGBB) (int player, int *piece, int *square);
+typedef int (CDECL *PLOAD_EGBB) (char *path, int cache_size, int load_options);
+static int egbbCode[] = { 6, 5, 4, 3, 2, 1 };
+
+static int
+BitbaseProbe ()
+{
+    int pieces[10], squares[10], cnt=0, r, f, res;
+    static int loaded;
+    static PPROBE_EGBB probeBB;
+    if(!appData.testLegality) return 10;
+    if(BOARD_HEIGHT != 8 || BOARD_RGHT-BOARD_LEFT != 8) return 12;
+    if(gameInfo.holdingsSize && gameInfo.variant != VariantSuper && gameInfo.variant != VariantSChess) return 12;
+    if(loaded == 2 && forwardMostMove < 2) loaded = 0; // retry on new game
+    for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) {
+       ChessSquare piece = boards[forwardMostMove][r][f];
+       int black = (piece >= BlackPawn);
+       int type = piece - black*BlackPawn;
+       if(piece == EmptySquare) continue;
+       if(type != WhiteKing && type > WhiteQueen) return 12; // unorthodox piece
+       if(type == WhiteKing) type = WhiteQueen + 1;
+       type = egbbCode[type];
+       squares[cnt] = r*(BOARD_RGHT - BOARD_LEFT) + f - BOARD_LEFT;
+        pieces[cnt] = type + black*6;
+       if(++cnt > 5) return 11;
+    }
+    pieces[cnt] = squares[cnt] = 0;
+    // probe EGBB
+    if(loaded == 2) return 13; // loading failed before
+    if(loaded == 0) {
+       loaded = 2; // prepare for failure
+       char *p, *path = strstr(appData.egtFormats, "scorpio:"), buf[MSG_SIZ];
+       HMODULE lib;
+       PLOAD_EGBB loadBB;
+       if(!path) return 13; // no egbb installed
+       strncpy(buf, path + 8, MSG_SIZ);
+       if(p = strchr(buf, ',')) *p = NULLCHAR; else p = buf + strlen(buf);
+       snprintf(p, MSG_SIZ - strlen(buf), "%c%s", SLASH, EGBB_NAME);
+       lib = LoadLibrary(buf);
+       if(!lib) { DisplayError(_("could not load EGBB library"), 0); return 13; }
+       loadBB = (PLOAD_EGBB) GetProcAddress(lib, "load_egbb_xmen");
+       probeBB = (PPROBE_EGBB) GetProcAddress(lib, "probe_egbb_xmen");
+       if(!loadBB || !probeBB) { DisplayError(_("wrong EGBB version"), 0); return 13; }
+       p[1] = NULLCHAR; loadBB(buf, 64*1028, 2); // 2 = SMART_LOAD
+       loaded = 1; // success!
+    }
+    res = probeBB(forwardMostMove & 1, pieces, squares);
+    return res > 0 ? 1 : res < 0 ? -1 : 0;
+}
+
 char *
 SendMoveToBookUser (int moveNr, ChessProgramState *cps, int initial)
 {   // [HGM] book: this routine intercepts moves to simulate book replies
     char *bookHit = NULL;
 
+    if(cps->drawDepth && BitbaseProbe() == 0) { // [HG} egbb: reduce depth in drawn position
+       char buf[MSG_SIZ];
+       snprintf(buf, MSG_SIZ, "sd %d\n", cps->drawDepth);
+       SendToProgram(buf, cps);
+    }
     //first determine if the incoming move brings opponent into his book
     if(appData.usePolyglotBook && (cps == &first ? !appData.firstHasOwnBookUCI : !appData.secondHasOwnBookUCI))
        bookHit = ProbeBook(moveNr+1, appData.polyglotBook); // returns move
@@ -8088,11 +8434,12 @@ static char stashedInputMove[MSG_SIZ];
 void
 HandleMachineMove (char *message, ChessProgramState *cps)
 {
+    static char firstLeg[20];
     char machineMove[MSG_SIZ], buf1[MSG_SIZ*10], buf2[MSG_SIZ];
     char realname[MSG_SIZ];
     int fromX, fromY, toX, toY;
     ChessMove moveType;
-    char promoChar;
+    char promoChar, roar;
     char *p, *pv=buf1;
     int machineWhite, oldError;
     char *bookHit;
@@ -8230,14 +8577,32 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
        }
 
         if(cps->alphaRank) AlphaRank(machineMove, 4);
+
+       // [HGM] lion: (some very limited) support for Alien protocol
+       killX = killY = -1;
+       if(machineMove[strlen(machineMove)-1] == ',') { // move ends in coma: non-final leg of composite move
+           safeStrCpy(firstLeg, machineMove, 20); // just remember it for processing when second leg arrives
+           return;
+       } else if(firstLeg[0]) { // there was a previous leg;
+           // only support case where same piece makes two step (and don't even test that!)
+           char buf[20], *p = machineMove+1, *q = buf+1, f;
+           safeStrCpy(buf, machineMove, 20);
+           while(isdigit(*q)) q++; // find start of to-square
+           safeStrCpy(machineMove, firstLeg, 20);
+           while(isdigit(*p)) p++;
+           safeStrCpy(p, q, 20); // glue to-square of second leg to from-square of first, to process over-all move
+           sscanf(buf, "%c%d", &f, &killY); killX = f - AAA; killY -= ONE - '0'; // pass intermediate square to MakeMove in global
+           firstLeg[0] = NULLCHAR;
+       }
+
         if (!ParseOneMove(machineMove, forwardMostMove, &moveType,
                               &fromX, &fromY, &toX, &toY, &promoChar)) {
            /* Machine move could not be parsed; ignore it. */
          snprintf(buf1, MSG_SIZ*10, _("Illegal move \"%s\" from %s machine"),
                    machineMove, _(cps->which));
            DisplayMoveError(buf1);
-            snprintf(buf1, MSG_SIZ*10, "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d",
-                    machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, moveType);
+            snprintf(buf1, MSG_SIZ*10, "Xboard: Forfeit due to invalid move: %s (%c%c%c%c via %c%c) res=%d",
+                    machineMove, fromX+AAA, fromY+ONE, toX+AAA, toY+ONE, killX+AAA, killY+ONE, moveType);
            if (gameMode == TwoMachinesPlay) {
              GameEnds(machineWhite ? BlackWins : WhiteWins,
                        buf1, GE_XBOARD);
@@ -8292,6 +8657,17 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h
 
        MakeMove(fromX, fromY, toX, toY, promoChar);/*updates forwardMostMove*/
 
+        /* Test suites abort the 'game' after one move */
+        if(*appData.finger) {
+           static FILE *f;
+           char *fen = PositionToFEN(backwardMostMove, NULL, 0); // no counts in EPD
+           if(!f) f = fopen(appData.finger, "w");
+           if(f) fprintf(f, "%s bm %s;\n", fen, parseList[backwardMostMove]), fflush(f);
+           else { DisplayFatalError("Bad output file", errno, 0); return; }
+           free(fen);
+           GameEnds(GameUnfinished, NULL, GE_XBOARD);
+        }
+
         /* [AS] Adjudicate game if needed (note: remember that forwardMostMove now points past the last move) */
         if( gameMode == TwoMachinesPlay && adjudicateLossThreshold != 0 && forwardMostMove >= adjudicateLossPlies ) {
             int count = 0;
@@ -8379,10 +8755,12 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
            cps->other->maybeThinking = TRUE;
        }
 
+       roar = (killX >= 0 && IS_LION(boards[forwardMostMove][toY][toX]));
+
        ShowMove(fromX, fromY, toX, toY); /*updates currentMove*/
 
         if (!pausing && appData.ringBellAfterMoves) {
-           RingBell();
+           if(!roar) RingBell();
        }
 
        /*
@@ -8433,14 +8811,26 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
     }
 
     if (!strncmp(message, "setup ", 6) && 
-       (!appData.testLegality || gameInfo.variant == VariantFairy || NonStandardBoardSize())
+       (!appData.testLegality || gameInfo.variant == VariantFairy || gameInfo.variant == VariantUnknown ||
+          NonStandardBoardSize(gameInfo.variant, gameInfo.boardWidth, gameInfo.boardHeight, gameInfo.holdingsSize))
                                        ) { // [HGM] allow first engine to define opening position
-      int dummy, s=6; char buf[MSG_SIZ];
+      int dummy, w, h, hand, s=6; char buf[MSG_SIZ], varName[MSG_SIZ];
       if(appData.icsActive || forwardMostMove != 0 || cps != &first) return;
+      *buf = NULLCHAR;
       if(sscanf(message, "setup (%s", buf) == 1) s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, buf);
       if(startedFromSetupPosition) return;
-      if(sscanf(message+s, "%dx%d+%d", &dummy, &dummy, &dummy) == 3) while(message[s] && message[s++] != ' '); // for compatibility with Alien Edition
-      ParseFEN(boards[0], &dummy, message+s);
+      dummy = sscanf(message+s, "%dx%d+%d_%s", &w, &h, &hand, varName);
+      if(dummy >= 3) {
+        while(message[s] && message[s++] != ' ');
+        if(BOARD_HEIGHT != h || BOARD_WIDTH != w + 4*(hand != 0) || gameInfo.holdingsSize != hand ||
+           dummy == 4 && gameInfo.variant != StringToVariant(varName) ) { // engine wants to change board format or variant
+           appData.NrFiles = w; appData.NrRanks = h; appData.holdingsSize = hand;
+           if(dummy == 4) gameInfo.variant = StringToVariant(varName);     // parent variant
+          InitPosition(1); // calls InitDrawingSizes to let new parameters take effect
+          if(*buf) SetCharTable(pieceToChar, buf); // do again, for it was spoiled by InitPosition
+        }
+      }
+      ParseFEN(boards[0], &dummy, message+s, FALSE);
       DrawPosition(TRUE, boards[0]);
       startedFromSetupPosition = TRUE;
       return;
@@ -8453,7 +8843,7 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
 
         GameEnds(GameUnfinished, "Engine aborts game", GE_XBOARD);
 
-        if (!ParseFEN(initial_position, &blackPlaysFirst, message + 9)) {
+        if (!ParseFEN(initial_position, &blackPlaysFirst, message + 9, FALSE)) {
             DisplayError(_("Bad FEN received from engine"), 0);
             return ;
         } else {
@@ -8553,6 +8943,36 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
        }
     }
     if (sscanf(message, "pong %d", &cps->lastPong) == 1) {
+       if(initPing == cps->lastPong) {
+           if(gameInfo.variant == VariantUnknown) {
+               DisplayError(_("Engine did not send setup for non-standard variant"), 0);
+               *engineVariant = NULLCHAR; appData.variant = VariantNormal; // back to normal as error recovery?
+               GameEnds(GameUnfinished, NULL, GE_XBOARD);
+           }
+           initPing = -1;
+        }
+       return;
+    }
+    if(!strncmp(message, "highlight ", 10)) {
+       if(appData.testLegality && appData.markers) return;
+       MarkByFEN(message+10); // [HGM] alien: allow engine to mark board squares
+       return;
+    }
+    if(!strncmp(message, "click ", 6)) {
+       char f, c=0; int x, y; // [HGM] alien: allow engine to finish user moves (i.e. engine-driven one-click moving)
+       if(appData.testLegality || !appData.oneClick) return;
+       sscanf(message+6, "%c%d%c", &f, &y, &c);
+       x = f - 'a' + BOARD_LEFT, y -= ONE - '0';
+       if(flipView) x = BOARD_WIDTH-1 - x; else y = BOARD_HEIGHT-1 - y;
+       x = x*squareSize + (x+1)*lineGap + squareSize/2;
+       y = y*squareSize + (y+1)*lineGap + squareSize/2;
+       f = first.highlight; first.highlight = 0; // kludge to suppress lift/put in response to own clicks
+       if(lastClickType == Press) // if button still down, fake release on same square, to be ready for next click
+           LeftClick(Release, lastLeftX, lastLeftY);
+       controlKey  = (c == ',');
+       LeftClick(Press, x, y);
+       LeftClick(Release, x, y);
+       first.highlight = f;
        return;
     }
     /*
@@ -8895,7 +9315,7 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
            DisplayInformation(_("Machine accepts your draw offer"));
            GameEnds(GameIsDrawn, "Draw agreed", GE_XBOARD);
          } else {
-            DisplayInformation(_("Machine offers a draw\nSelect Action / Draw to agree"));
+            DisplayInformation(_("Machine offers a draw.\nSelect Action / Draw to accept."));
          }
        }
     }
@@ -8974,7 +9394,10 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
                        if(f = fopen(buf, "w")) { // export PV to applicable PV file
                                fprintf(f, "%5.2f/%-2d %s", curscore/100., plylev, pv);
                                fclose(f);
-                       } else DisplayError(_("failed writing PV"), 0);
+                       }
+                       else
+                         /* TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone */
+                         DisplayError(_("failed writing PV"), 0);
                }
 
                tempStats.depth = plylev;
@@ -9237,6 +9660,7 @@ ParseGameHistory (char *game)
          case WhiteNonPromotion:
          case BlackNonPromotion:
          case NormalMove:
+         case FirstLeg:
          case WhiteCapturesEnPassant:
          case BlackCapturesEnPassant:
          case WhiteKingSideCastle:
@@ -9360,7 +9784,7 @@ ParseGameHistory (char *game)
          default:
            break;
          case MT_CHECK:
-            if(gameInfo.variant != VariantShogi)
+            if(!IS_SHOGI(gameInfo.variant))
                 strcat(parseList[boardIndex - 1], "+");
            break;
          case MT_CHECKMATE:
@@ -9377,7 +9801,7 @@ void
 ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
 {
   ChessSquare captured = board[toY][toX], piece, king; int p, oldEP = EP_NONE, berolina = 0;
-  int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand ? 3 : 1;
+  int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess ? 3 : 1;
 
     /* [HGM] compute & store e.p. status and castling rights for new position */
     /* we can always do that 'in place', now pointers to these rights are passed to ApplyMove */
@@ -9394,11 +9818,23 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
        }
         piece = board[toY][toX] = (ChessSquare) fromX;
   } else {
+      ChessSquare victim;
       int i;
 
-      if( board[toY][toX] != EmptySquare )
+      if( killX >= 0 && killY >= 0 ) // [HGM] lion: Lion trampled over something
+           victim = board[killY][killX],
+           board[killY][killX] = EmptySquare,
            board[EP_STATUS] = EP_CAPTURE;
 
+      if( board[toY][toX] != EmptySquare ) {
+           board[EP_STATUS] = EP_CAPTURE;
+           if( (fromX != toX || fromY != toY) && // not igui!
+               (captured == WhiteLion && board[fromY][fromX] != BlackLion ||
+                captured == BlackLion && board[fromY][fromX] != WhiteLion   ) ) { // [HGM] lion: Chu Lion-capture rules
+               board[EP_STATUS] = EP_IRON_LION; // non-Lion x Lion: no counter-strike allowed
+           }
+      }
+
       if( board[fromY][fromX] == WhiteLance || board[fromY][fromX] == BlackLance ) {
            if( gameInfo.variant != VariantSuper && gameInfo.variant != VariantShogi )
                board[EP_STATUS] = EP_PAWN_MOVE; // Lance is Pawn-like in most variants
@@ -9485,7 +9921,7 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
         board[toY][toX+1] = board[fromY][BOARD_LEFT];
         board[fromY][BOARD_LEFT] = EmptySquare;
     } else if ((board[fromY][fromX] == WhitePawn && gameInfo.variant != VariantXiangqi ||
-                board[fromY][fromX] == WhiteLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantShogi)
+                board[fromY][fromX] == WhiteLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantChu)
                && toY >= BOARD_HEIGHT-promoRank && promoChar // defaulting to Q is done elsewhere
                ) {
        /* white pawn promotion */
@@ -9546,7 +9982,7 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
        board[fromY][0] = EmptySquare;
        board[toY][2] = BlackRook;
     } else if ((board[fromY][fromX] == BlackPawn && gameInfo.variant != VariantXiangqi ||
-                board[fromY][fromX] == BlackLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantShogi)
+                board[fromY][fromX] == BlackLance && gameInfo.variant != VariantSuper && gameInfo.variant != VariantChu)
               && toY < promoRank && promoChar
                ) {
        /* black pawn promotion */
@@ -9579,8 +10015,9 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
                board[fromY][fromX+1] = EmptySquare;
        }
     } else {
-       board[toY][toX] = board[fromY][fromX];
+       ChessSquare piece = board[fromY][fromX]; // [HGM] lion: allow for igui (where from == to)
        board[fromY][fromX] = EmptySquare;
+       board[toY][toX] = piece;
     }
   }
 
@@ -9658,12 +10095,15 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
        board[toY][toX] = EmptySquare;
       }
     }
+
     if(gameInfo.variant == VariantSChess && promoChar != NULLCHAR && promoChar != '=' && piece != WhitePawn && piece != BlackPawn) {
         board[fromY][fromX] = CharToPiece(piece < BlackPawn ? ToUpper(promoChar) : ToLower(promoChar)); // S-Chess gating
     } else
     if(promoChar == '+') {
         /* [HGM] Shogi-style promotions, to piece implied by original (Might overwrite ordinary Pawn promotion) */
-        board[toY][toX] = (ChessSquare) (PROMOTED piece);
+        board[toY][toX] = (ChessSquare) (CHUPROMOTED piece);
+        if(gameInfo.variant == VariantChuChess && (piece == WhiteKnight || piece == BlackKnight))
+          board[toY][toX] = piece + WhiteLion - WhiteKnight; // adjust Knight promotions to Lion
     } else if(!appData.testLegality && promoChar != NULLCHAR && promoChar != '=') { // without legality testing, unconditionally believe promoChar
         ChessSquare newPiece = CharToPiece(piece < BlackPawn ? ToUpper(promoChar) : ToLower(promoChar));
        if((newPiece <= WhiteMan || newPiece >= BlackPawn && newPiece <= BlackMan) // unpromoted piece specified
@@ -9682,19 +10122,24 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board)
                board[BOARD_HEIGHT-1-k][0] = EmptySquare;
        }
     }
-
 }
 
 /* Updates forwardMostMove */
 void
 MakeMove (int fromX, int fromY, int toX, int toY, int promoChar)
 {
+    int x = toX, y = toY;
+    char *s = parseList[forwardMostMove];
+    ChessSquare p = boards[forwardMostMove][toY][toX];
 //    forwardMostMove++; // [HGM] bare: moved downstream
 
+    if(killX >= 0 && killY >= 0) x = killX, y = killY; // [HGM] lion: make SAN move to intermediate square, if there is one
     (void) CoordsToAlgebraic(boards[forwardMostMove],
                             PosFlags(forwardMostMove),
-                            fromY, fromX, toY, toX, promoChar,
-                            parseList[forwardMostMove]);
+                            fromY, fromX, y, x, promoChar,
+                            s);
+    if(killX >= 0 && killY >= 0)
+        sprintf(s + strlen(s), "%c%c%d", p == EmptySquare || toX == fromX && toY == fromY ? '-' : 'x', toX + AAA, toY + ONE - '0');
 
     if(serverMoves != NULL) { /* [HGM] write moves on file for broadcasting (should be separate routine, really) */
         int timeLeft; static int lastLoadFlag=0; int king, piece;
@@ -9781,7 +10226,7 @@ MakeMove (int fromX, int fromY, int toX, int toY, int promoChar)
       default:
        break;
       case MT_CHECK:
-        if(gameInfo.variant != VariantShogi)
+        if(!IS_SHOGI(gameInfo.variant))
             strcat(parseList[forwardMostMove - 1], "+");
        break;
       case MT_CHECKMATE:
@@ -9789,7 +10234,6 @@ MakeMove (int fromX, int fromY, int toX, int toY, int promoChar)
        strcat(parseList[forwardMostMove - 1], "#");
        break;
     }
-
 }
 
 /* Updates currentMove if not pausing */
@@ -9809,6 +10253,8 @@ ShowMove (int fromX, int fromY, int toX, int toY)
        currentMove = forwardMostMove;
     }
 
+    killX = killY = -1; // [HGM] lion: used up
+
     if (instant) return;
 
     DisplayMove(currentMove - 1);
@@ -9857,37 +10303,75 @@ SendEgtPath (ChessProgramState *cps)
 }
 
 static int
-NonStandardBoardSize ()
-{
-      /* [HGM] Awkward testing. Should really be a table */
-      int overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;
-      if( gameInfo.variant == VariantXiangqi )
-           overruled = gameInfo.boardWidth != 9 || gameInfo.boardHeight != 10 || gameInfo.holdingsSize != 0;
-      if( gameInfo.variant == VariantShogi )
-           overruled = gameInfo.boardWidth != 9 || gameInfo.boardHeight != 9 || gameInfo.holdingsSize != 7;
-      if( gameInfo.variant == VariantBughouse || gameInfo.variant == VariantCrazyhouse )
-           overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 5;
-      if( gameInfo.variant == VariantCapablanca || gameInfo.variant == VariantCapaRandom ||
-          gameInfo.variant == VariantGothic || gameInfo.variant == VariantFalcon || gameInfo.variant == VariantJanus )
-           overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;
-      if( gameInfo.variant == VariantCourier )
-           overruled = gameInfo.boardWidth != 12 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0;
-      if( gameInfo.variant == VariantSuper )
-           overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 8;
-      if( gameInfo.variant == VariantGreat )
-           overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 8;
-      if( gameInfo.variant == VariantSChess )
-           overruled = gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 7;
-      if( gameInfo.variant == VariantGrand )
-           overruled = gameInfo.boardWidth != 10 || gameInfo.boardHeight != 10 || gameInfo.holdingsSize != 7;
-      return overruled;
+NonStandardBoardSize (VariantClass v, int boardWidth, int boardHeight, int holdingsSize)
+{
+      int width = 8, height = 8, holdings = 0;             // most common sizes
+      if( v == VariantUnknown || *engineVariant) return 0; // engine-defined name never needs prefix
+      // correct the deviations default for each variant
+      if( v == VariantXiangqi ) width = 9,  height = 10;
+      if( v == VariantShogi )   width = 9,  height = 9,  holdings = 7;
+      if( v == VariantBughouse || v == VariantCrazyhouse) holdings = 5;
+      if( v == VariantCapablanca || v == VariantCapaRandom ||
+          v == VariantGothic || v == VariantFalcon || v == VariantJanus )
+                                width = 10;
+      if( v == VariantCourier ) width = 12;
+      if( v == VariantSuper )                            holdings = 8;
+      if( v == VariantGreat )   width = 10,              holdings = 8;
+      if( v == VariantSChess )                           holdings = 7;
+      if( v == VariantGrand )   width = 10, height = 10, holdings = 7;
+      if( v == VariantChuChess) width = 10, height = 10;
+      if( v == VariantChu )     width = 12, height = 12;
+      return boardWidth >= 0   && boardWidth   != width  || // -1 is default,
+             boardHeight >= 0  && boardHeight  != height || // and thus by definition OK
+             holdingsSize >= 0 && holdingsSize != holdings;
+}
+
+char variantError[MSG_SIZ];
+
+char *
+SupportedVariant (char *list, VariantClass v, int boardWidth, int boardHeight, int holdingsSize, int proto, char *engine)
+{     // returns error message (recognizable by upper-case) if engine does not support the variant
+      char *p, *variant = VariantName(v);
+      static char b[MSG_SIZ];
+      if(NonStandardBoardSize(v, boardWidth, boardHeight, holdingsSize)) { /* [HGM] make prefix for non-standard board size. */
+          snprintf(b, MSG_SIZ, "%dx%d+%d_%s", boardWidth, boardHeight,
+                                               holdingsSize, variant); // cook up sized variant name
+           /* [HGM] varsize: try first if this deviant size variant is specifically known */
+           if(StrStr(list, b) == NULL) {
+               // specific sized variant not known, check if general sizing allowed
+               if(proto != 1 && StrStr(list, "boardsize") == NULL) {
+                   snprintf(variantError, MSG_SIZ, "Board size %dx%d+%d not supported by %s",
+                            boardWidth, boardHeight, holdingsSize, engine);
+                   return NULL;
+               }
+               /* [HGM] here we really should compare with the maximum supported board size */
+           }
+      } else snprintf(b, MSG_SIZ,"%s", variant);
+      if(proto == 1) return b; // for protocol 1 we cannot check and hope for the best
+      p = StrStr(list, b);
+      while(p && (p != list && p[-1] != ',' || p[strlen(b)] && p[strlen(b)] != ',') ) p = StrStr(p+1, b);
+      if(p == NULL) {
+          // occurs not at all in list, or only as sub-string
+          snprintf(variantError, MSG_SIZ, _("Variant %s not supported by %s"), b, engine);
+          if(p = StrStr(list, b)) { // handle requesting parent variant when only size-overridden is supported
+              int l = strlen(variantError);
+              char *q;
+              while(p != list && p[-1] != ',') p--;
+              q = strchr(p, ',');
+              if(q) *q = NULLCHAR;
+              snprintf(variantError + l, MSG_SIZ - l,  _(", but %s is"), p);
+              if(q) *q= ',';
+          }
+          return NULL;
+      }
+      return b;
 }
 
 void
 InitChessProgram (ChessProgramState *cps, int setup)
 /* setup needed to setup FRC opening position */
 {
-    char buf[MSG_SIZ], b[MSG_SIZ];
+    char buf[MSG_SIZ], *b;
     if (appData.noChessProgram) return;
     hintRequested = FALSE;
     bookRequested = FALSE;
@@ -9909,33 +10393,15 @@ InitChessProgram (ChessProgramState *cps, int setup)
     if (gameInfo.variant != VariantNormal &&
        gameInfo.variant != VariantLoadable
         /* [HGM] also send variant if board size non-standard */
-        || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0
-                                            ) {
-      char *v = VariantName(gameInfo.variant);
-      if (cps->protocolVersion != 1 && StrStr(cps->variants, v) == NULL) {
-        /* [HGM] in protocol 1 we have to assume all variants valid */
-       snprintf(buf, MSG_SIZ, _("Variant %s not supported by %s"), v, cps->tidy);
-       DisplayFatalError(buf, 0, 1);
+        || gameInfo.boardWidth != 8 || gameInfo.boardHeight != 8 || gameInfo.holdingsSize != 0) {
+
+      b = SupportedVariant(cps->variants, gameInfo.variant, gameInfo.boardWidth,
+                           gameInfo.boardHeight, gameInfo.holdingsSize, cps->protocolVersion, cps->tidy);
+      if (b == NULL) {
+       DisplayFatalError(variantError, 0, 1);
        return;
       }
 
-      if(NonStandardBoardSize()) { /* [HGM] make prefix for non-standard board size. */
-       snprintf(b, MSG_SIZ, "%dx%d+%d_%s", gameInfo.boardWidth, gameInfo.boardHeight,
-                gameInfo.holdingsSize, VariantName(gameInfo.variant)); // cook up sized variant name
-           /* [HGM] varsize: try first if this defiant size variant is specifically known */
-           if(StrStr(cps->variants, b) == NULL) {
-               // specific sized variant not known, check if general sizing allowed
-               if (cps->protocolVersion != 1) { // for protocol 1 we cannot check and hope for the best
-                   if(StrStr(cps->variants, "boardsize") == NULL) {
-                    snprintf(buf, MSG_SIZ, "Board size %dx%d+%d not supported by %s",
-                            gameInfo.boardWidth, gameInfo.boardHeight, gameInfo.holdingsSize, cps->tidy);
-                       DisplayFatalError(buf, 0, 1);
-                       return;
-                   }
-                   /* [HGM] here we really should compare with the maximum supported board size */
-               }
-           }
-      } else snprintf(b, MSG_SIZ,"%s", VariantName(gameInfo.variant));
       snprintf(buf, MSG_SIZ, "variant %s\n", b);
       SendToProgram(buf, cps);
     }
@@ -9975,7 +10441,7 @@ InitChessProgram (ChessProgramState *cps, int setup)
        SendToProgram("easy\n", cps);
     }
     if (cps->usePing) {
-      snprintf(buf, MSG_SIZ, "ping %d\n", ++cps->lastPing);
+      snprintf(buf, MSG_SIZ, "ping %d\n", initPing = ++cps->lastPing);
       SendToProgram(buf, cps);
     }
     cps->initDone = TRUE;
@@ -10334,6 +10800,7 @@ SwapEngines (int n)
     SWAP(fenOverride, p)
     SWAP(NPS, h)
     SWAP(accumulateTC, h)
+    SWAP(drawDepth, h)
     SWAP(host, p)
 }
 
@@ -10615,7 +11082,7 @@ GameEnds (ChessMove result, char *resultDetails, int whosays)
              result, resultDetails ? resultDetails : "(null)", whosays);
     }
 
-    fromX = fromY = -1; // [HGM] abort any move the user is entering.
+    fromX = fromY = killX = killY = -1; // [HGM] abort any move the user is entering. // [HGM] lion
 
     if(pausing) PauseEvent(); // can happen when we abort a paused game (New Game or Quit)
 
@@ -10837,6 +11304,7 @@ GameEnds (ChessMove result, char *resultDetails, int whosays)
                    PlayIcsUnfinishedSound();
                }
            }
+           if(appData.quitNext) { ExitEvent(0); return; }
        } else if (gameMode == EditGame ||
                   gameMode == PlayFromGameFile ||
                   gameMode == AnalyzeMode ||
@@ -11013,7 +11481,8 @@ FeedMovesToProgram (ChessProgramState *cps, int upto)
     if(currentlyInitializedVariant != gameInfo.variant) {
       char buf[MSG_SIZ];
         // [HGM] variantswitch: make engine aware of new variant
-       if(cps->protocolVersion > 1 && StrStr(cps->variants, VariantName(gameInfo.variant)) == NULL)
+       if(!SupportedVariant(cps->variants, gameInfo.variant, gameInfo.boardWidth,
+                             gameInfo.boardHeight, gameInfo.holdingsSize, cps->protocolVersion, ""))
                return; // [HGM] refrain from feeding moves altogether if variant is unsupported!
        snprintf(buf, MSG_SIZ, "variant %s\n", VariantName(gameInfo.variant));
        SendToProgram(buf, cps);
@@ -11096,6 +11565,7 @@ Reset (int redraw, int init)
     lastHint[0] = NULLCHAR;
     ClearGameInfo(&gameInfo);
     gameInfo.variant = StringToVariant(appData.variant);
+    if(gameInfo.variant == VariantNormal && strcmp(appData.variant, "normal")) gameInfo.variant = VariantUnknown;
     ics_user_moved = ics_clock_paused = FALSE;
     ics_getting_history = H_FALSE;
     ics_gamenum = -1;
@@ -11109,6 +11579,7 @@ Reset (int redraw, int init)
     ClearPremoveHighlights();
     gotPremove = FALSE;
     alarmSounded = FALSE;
+    killX = killY = -1; // [HGM] lion
 
     GameEnds(EndOfFile, NULL, GE_PLAYER);
     if(appData.serverMovesName != NULL) {
@@ -11289,6 +11760,7 @@ LoadGameOneMove (ChessMove readAhead)
       case WhiteNonPromotion:
       case BlackNonPromotion:
       case NormalMove:
+      case FirstLeg:
       case WhiteKingSideCastle:
       case WhiteQueenSideCastle:
       case BlackKingSideCastle:
@@ -11310,6 +11782,7 @@ LoadGameOneMove (ChessMove readAhead)
         toX = currentMoveString[2] - AAA;
         toY = currentMoveString[3] - ONE;
        promoChar = currentMoveString[4];
+       if(promoChar == ';') promoChar = NULLCHAR;
        break;
 
       case WhiteDrop:
@@ -11476,6 +11949,7 @@ LoadGameOneMove (ChessMove readAhead)
 
        thinkOutput[0] = NULLCHAR;
        MakeMove(fromX, fromY, toX, toY, promoChar);
+       killX = killY = -1; // [HGM] lion: used up
        currentMove = forwardMostMove;
        return TRUE;
     }
@@ -11947,7 +12421,7 @@ GameContainsPosition (FILE *f, ListGame *lg)
        for(next = WhitePawn; next<EmptySquare; next++) keys[next] = random()>>8 ^ random()<<6 ^random()<<20;
        initDone = TRUE;
     }
-    if(lg->gameInfo.fen) ParseFEN(boards[scratch], &btm, lg->gameInfo.fen);
+    if(lg->gameInfo.fen) ParseFEN(boards[scratch], &btm, lg->gameInfo.fen, FALSE);
     else CopyBoard(boards[scratch], initialPosition); // default start position
     if(lg->moves) {
        turn = btm + 1;
@@ -11991,6 +12465,7 @@ GameContainsPosition (FILE *f, ListGame *lg)
            case WhiteNonPromotion:
            case BlackNonPromotion:
            case NormalMove:
+           case FirstLeg:
            case WhiteKingSideCastle:
            case WhiteQueenSideCastle:
            case BlackKingSideCastle:
@@ -12055,6 +12530,7 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList)
     if (gameMode != BeginningOfGame) {
       Reset(FALSE, TRUE);
     }
+    killX = killY = -1; // [HGM] lion: in case we did not Reset
 
     gameFileFP = f;
     if (lastLoadGameFP != NULL && lastLoadGameFP != f) {
@@ -12208,6 +12684,7 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList)
            break;
 
          case NormalMove:
+         case FirstLeg:
            /* Only a NormalMove can be at the start of a game
             * without a position diagram. */
            if (lastLoadGameStart == EndOfFile ) {
@@ -12269,7 +12746,7 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList)
        if (gameInfo.fen != NULL) {
          Board initial_position;
          startedFromSetupPosition = TRUE;
-         if (!ParseFEN(initial_position, &blackPlaysFirst, gameInfo.fen)) {
+         if (!ParseFEN(initial_position, &blackPlaysFirst, gameInfo.fen, TRUE)) {
            Reset(TRUE, TRUE);
            DisplayError(_("Bad FEN position in file"), 0);
            return FALSE;
@@ -12475,6 +12952,15 @@ LoadGame (FILE *f, int gameNumber, char *title, int useList)
       AnalyzeFileEvent();
     }
 
+    if(gameInfo.result == GameUnfinished && gameInfo.resultDetails && appData.clockMode) {
+       long int w, b; // [HGM] adjourn: restore saved clock times
+       char *p = strstr(gameInfo.resultDetails, "(Clocks:");
+       if(p && sscanf(p+8, "%ld,%ld", &w, &b) == 2) {
+           timeRemaining[0][forwardMostMove] = whiteTimeRemaining = 1000*w + 500;
+           timeRemaining[1][forwardMostMove] = blackTimeRemaining = 1000*b + 500;
+       }
+    }
+
     if(creatingBook) return TRUE;
     if (!matchMode && pos > 0) {
        ToNrEvent(pos); // [HGM] no autoplay if selected on position
@@ -12597,7 +13083,7 @@ LoadPosition (FILE *f, int positionNumber, char *title)
     }
 
     if (fenMode) {
-       if (!ParseFEN(initial_position, &blackPlaysFirst, line)) {
+       if (!ParseFEN(initial_position, &blackPlaysFirst, line, TRUE)) {
            DisplayError(_("Bad FEN position in file"), 0);
            return FALSE;
        }
@@ -12839,7 +13325,7 @@ SaveGamePGN (FILE *f)
     if(appData.numberTag && matchMode) fprintf(f, "[Number \"%d\"]\n", nextGame+1); // [HGM] number tag
 
     if (backwardMostMove > 0 || startedFromSetupPosition) {
-        char *fen = PositionToFEN(backwardMostMove, NULL);
+        char *fen = PositionToFEN(backwardMostMove, NULL, 1);
         fprintf(f, "[FEN \"%s\"]\n[SetUp \"1\"]\n", fen);
        fprintf(f, "\n{--------------\n");
        PrintPosition(f, backwardMostMove);
@@ -12976,8 +13462,11 @@ SaveGamePGN (FILE *f)
     /* Print result */
     if (gameInfo.resultDetails != NULL &&
        gameInfo.resultDetails[0] != NULLCHAR) {
-       fprintf(f, "{%s} %s\n\n", gameInfo.resultDetails,
-               PGNResult(gameInfo.result));
+       char buf[MSG_SIZ], *p = gameInfo.resultDetails;
+       if(gameInfo.result == GameUnfinished && appData.clockMode &&
+          (gameMode == MachinePlaysWhite || gameMode == MachinePlaysBlack || gameMode == TwoMachinesPlay)) // [HGM] adjourn: save clock settings
+           snprintf(buf, MSG_SIZ, "%s (Clocks: %ld, %ld)", p, whiteTimeRemaining/1000, blackTimeRemaining/1000), p = buf;
+       fprintf(f, "{%s} %s\n\n", p, PGNResult(gameInfo.result));
     } else {
        fprintf(f, "%s\n\n", PGNResult(gameInfo.result));
     }
@@ -13108,7 +13597,7 @@ SavePosition (FILE *f, int dummy, char *dummy2)
        PrintPosition(f, currentMove);
        fprintf(f, "--------------]\n");
     } else {
-       fen = PositionToFEN(currentMove, NULL);
+       fen = PositionToFEN(currentMove, NULL, 1);
        fprintf(f, "%s\n", fen);
        free(fen);
     }
@@ -14010,7 +14499,7 @@ TwoMachinesEvent P((void))
       case MachinePlaysWhite:
       case MachinePlaysBlack:
        if (WhiteOnMove(forwardMostMove) == (gameMode == MachinePlaysWhite)) {
-           DisplayError(_("Wait until your turn,\nor select Move Now"), 0);
+           DisplayError(_("Wait until your turn,\nor select 'Move Now'."), 0);
            return;
        }
        /* fall through */
@@ -14045,7 +14534,8 @@ TwoMachinesEvent P((void))
     }
     if(WaitForEngine(&second, TwoMachinesEventIfReady)) return; // (if needed:) started up second engine, so wait for features
 
-    if(second.protocolVersion >= 2 && !strstr(second.variants, VariantName(gameInfo.variant))) {
+    if(!SupportedVariant(second.variants, gameInfo.variant, gameInfo.boardWidth,
+                         gameInfo.boardHeight, gameInfo.holdingsSize, second.protocolVersion, second.tidy)) {
        startingEngine = FALSE;
        DisplayError("second engine does not play this", 0);
        return;
@@ -14447,11 +14937,15 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y)
 {
     char buf[MSG_SIZ];
     ChessSquare piece = boards[0][y][x];
+    static Board erasedBoard, currentBoard, menuBoard, nullBoard;
+    static int lastVariant;
 
     if (gameMode != EditPosition && gameMode != IcsExamining) return;
 
     switch (selection) {
       case ClearBoard:
+       CopyBoard(currentBoard, boards[0]);
+       CopyBoard(menuBoard, initialPosition);
        if (gameMode == IcsExamining && ics_type == ICS_FICS) {
            SendToICS(ics_prefix);
            SendToICS("bsetup clear\n");
@@ -14459,6 +14953,7 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y)
            SendToICS(ics_prefix);
            SendToICS("clearboard\n");
        } else {
+            int nonEmpty = 0;
             for (x = 0; x < BOARD_WIDTH; x++) { ChessSquare p = EmptySquare;
                if(x == BOARD_LEFT-1 || x == BOARD_RGHT) p = (ChessSquare) 0; /* [HGM] holdings */
                 for (y = 0; y < BOARD_HEIGHT; y++) {
@@ -14469,9 +14964,33 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y)
                            SendToICS(buf);
                        }
                    } else {
+                       if(boards[0][y][x] != p) nonEmpty++;
                        boards[0][y][x] = p;
                    }
                }
+               menuBoard[1][x] = menuBoard[BOARD_HEIGHT-2][x] = p;
+           }
+           if(gameMode != IcsExamining) { // [HGM] editpos: cycle trough boards
+               for(x = BOARD_LEFT; x < BOARD_RGHT; x++) { // create 'menu board' by removing duplicates 
+                   ChessSquare p = menuBoard[0][x];
+                   for(y = x + 1; y < BOARD_RGHT; y++) if(menuBoard[0][y] == p) menuBoard[0][y] = EmptySquare;
+                   p = menuBoard[BOARD_HEIGHT-1][x];
+                   for(y = x + 1; y < BOARD_RGHT; y++) if(menuBoard[BOARD_HEIGHT-1][y] == p) menuBoard[BOARD_HEIGHT-1][y] = EmptySquare;
+               }
+               DisplayMessage("Clicking clock again restores position", "");
+               if(gameInfo.variant != lastVariant) lastVariant = gameInfo.variant, CopyBoard(erasedBoard, boards[0]);
+               if(!nonEmpty) { // asked to clear an empty board
+                   CopyBoard(boards[0], menuBoard);
+               } else
+               if(CompareBoards(currentBoard, menuBoard)) { // asked to clear an empty board
+                   CopyBoard(boards[0], initialPosition);
+               } else
+               if(CompareBoards(currentBoard, initialPosition) && !CompareBoards(currentBoard, erasedBoard)
+                                                                && !CompareBoards(nullBoard, erasedBoard)) {
+                   CopyBoard(boards[0], erasedBoard);
+               } else
+                   CopyBoard(erasedBoard, currentBoard);
+
            }
        }
        if (gameMode == EditPosition) {
@@ -14529,6 +15048,7 @@ EditPositionMenuEvent (ChessSquare selection, int x, int y)
         if(gameInfo.variant == VariantShatranj ||
            gameInfo.variant == VariantXiangqi  ||
            gameInfo.variant == VariantCourier  ||
+           gameInfo.variant == VariantASEAN    ||
            gameInfo.variant == VariantMakruk     )
             selection = (ChessSquare)((int)selection - (int)WhiteQueen + (int)WhiteFerz);
         goto defaultlabel;
@@ -15124,7 +15644,7 @@ RetractMoveEvent ()
       case MachinePlaysWhite:
       case MachinePlaysBlack:
        if (WhiteOnMove(forwardMostMove) == (gameMode == MachinePlaysWhite)) {
-           DisplayError(_("Wait until your turn,\nor select Move Now"), 0);
+           DisplayError(_("Wait until your turn,\nor select 'Move Now'."), 0);
            return;
        }
        if (forwardMostMove < 2) return;
@@ -15222,14 +15742,14 @@ HintEvent ()
     switch (gameMode) {
       case MachinePlaysWhite:
        if (WhiteOnMove(forwardMostMove)) {
-           DisplayError(_("Wait until your turn"), 0);
+           DisplayError(_("Wait until your turn."), 0);
            return;
        }
        break;
       case BeginningOfGame:
       case MachinePlaysBlack:
        if (!WhiteOnMove(forwardMostMove)) {
-           DisplayError(_("Wait until your turn"), 0);
+           DisplayError(_("Wait until your turn."), 0);
            return;
        }
        break;
@@ -15282,14 +15802,14 @@ BookEvent ()
     switch (gameMode) {
       case MachinePlaysWhite:
        if (WhiteOnMove(forwardMostMove)) {
-           DisplayError(_("Wait until your turn"), 0);
+           DisplayError(_("Wait until your turn."), 0);
            return;
        }
        break;
       case BeginningOfGame:
       case MachinePlaysBlack:
        if (!WhiteOnMove(forwardMostMove)) {
-           DisplayError(_("Wait until your turn"), 0);
+           DisplayError(_("Wait until your turn."), 0);
            return;
        }
        break;
@@ -15953,6 +16473,27 @@ SendTimeRemaining (ChessProgramState *cps, int machineWhite)
     SendToProgram(message, cps);
 }
 
+char *
+EngineDefinedVariant (ChessProgramState *cps, int n)
+{   // return name of n-th unknown variant that engine supports
+    static char buf[MSG_SIZ];
+    char *p, *s = cps->variants;
+    if(!s) return NULL;
+    do { // parse string from variants feature
+      VariantClass v;
+       p = strchr(s, ',');
+       if(p) *p = NULLCHAR;
+      v = StringToVariant(s);
+      if(v == VariantNormal && strcmp(s, "normal") && !strstr(s, "_normal")) v = VariantUnknown; // garbage is recognized as normal
+       if(v == VariantUnknown) { // non-standard variant in list of engine-supported variants
+           if(--n < 0) safeStrCpy(buf, s, MSG_SIZ);
+       }
+       if(p) *p++ = ',';
+       if(n < 0) return buf;
+    } while(s = p);
+    return NULL;
+}
+
 int
 BoolFeature (char **p, char *name, int *loc, ChessProgramState *cps)
 {
@@ -16167,6 +16708,7 @@ ParseFeatures (char *args, ChessProgramState *cps)
     /* End of additions by Tord */
 
     /* [HGM] added features: */
+    if (BoolFeature(&p, "highlight", &cps->highlight, cps)) continue;
     if (BoolFeature(&p, "debug", &cps->debug, cps)) continue;
     if (BoolFeature(&p, "nps", &cps->supportsNPS, cps)) continue;
     if (IntFeature(&p, "level", &cps->maxNrOfSessions, cps)) continue;
@@ -16320,7 +16862,7 @@ TypeInDoneEvent (char *move)
        ChessMove moveType;
 
        // [HGM] FENedit
-       if(gameMode == EditPosition && ParseFEN(board, &n, move) ) {
+       if(gameMode == EditPosition && ParseFEN(board, &n, move, TRUE) ) {
                EditPositionPasteFEN(move);
                return;
        }
@@ -17022,7 +17564,7 @@ PGNDate ()
 
 
 char *
-PositionToFEN (int move, char *overrideCastling)
+PositionToFEN (int move, char *overrideCastling, int moveCounts)
 {
     int i, j, fromX, fromY, toX, toY;
     int whiteToPlay;
@@ -17054,7 +17596,7 @@ PositionToFEN (int move, char *overrideCastling)
                     *p++ = '+';
                     piece = (ChessSquare)(DEMOTED piece);
                 }
-                *p++ = PieceToChar(piece);
+                *p++ = (piece == DarkSquare ? '*' : PieceToChar(piece));
                 if(p[-1] == '~') {
                     /* [HGM] flag promoted pieces as '<promoted>~' (Crazyhouse) */
                     p[-1] = PieceToChar((ChessSquare)(DEMOTED piece));
@@ -17152,7 +17694,8 @@ PositionToFEN (int move, char *overrideCastling)
   }
 
   if(gameInfo.variant != VariantShogi    && gameInfo.variant != VariantXiangqi &&
-     gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier && gameInfo.variant != VariantMakruk ) {
+     gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier &&
+     gameInfo.variant != VariantMakruk   && gameInfo.variant != VariantASEAN ) {
     /* En passant target square */
     if (move > backwardMostMove) {
         fromX = moveList[move - 1][0] - AAA;
@@ -17184,9 +17727,10 @@ PositionToFEN (int move, char *overrideCastling)
   }
   }
 
-    /* [HGM] find reversible plies */
+    if(moveCounts)
     {   int i = 0, j=move;
 
+        /* [HGM] find reversible plies */
         if (appData.debugMode) { int k;
             fprintf(debugFP, "write FEN 50-move: %d %d %d\n", initialRulePlies, forwardMostMove, backwardMostMove);
             for(k=backwardMostMove; k<=forwardMostMove; k++)
@@ -17198,42 +17742,40 @@ PositionToFEN (int move, char *overrideCastling)
         if( j == backwardMostMove ) i += initialRulePlies;
         sprintf(p, "%d ", i);
         p += i>=100 ? 4 : i >= 10 ? 3 : 2;
-    }
-    /* Fullmove number */
-    sprintf(p, "%d", (move / 2) + 1);
+
+        /* Fullmove number */
+        sprintf(p, "%d", (move / 2) + 1);
+    } else *--p = NULLCHAR;
 
     return StrSave(buf);
 }
 
 Boolean
-ParseFEN (Board board, int *blackPlaysFirst, char *fen)
+ParseFEN (Board board, int *blackPlaysFirst, char *fen, Boolean autoSize)
 {
-    int i, j;
+    int i, j, k, w=0;
     char *p, c;
     int emptycount, virgin[BOARD_FILES];
     ChessSquare piece;
 
     p = fen;
 
-    /* [HGM] by default clear Crazyhouse holdings, if present */
-    if(gameInfo.holdingsWidth) {
-       for(i=0; i<BOARD_HEIGHT; i++) {
-           board[i][0]             = EmptySquare; /* black holdings */
-           board[i][BOARD_WIDTH-1] = EmptySquare; /* white holdings */
-           board[i][1]             = (ChessSquare) 0; /* black counts */
-           board[i][BOARD_WIDTH-2] = (ChessSquare) 0; /* white counts */
-       }
-    }
-
     /* Piece placement data */
     for (i = BOARD_HEIGHT - 1; i >= 0; i--) {
        j = 0;
        for (;;) {
-            if (*p == '/' || *p == ' ' || (*p == '[' && i == 0) ) {
-                if (*p == '/') p++;
+            if (*p == '/' || *p == ' ' || *p == '[' ) {
+               if(j > w) w = j;
                 emptycount = gameInfo.boardWidth - j;
                 while (emptycount--)
                         board[i][(j++)+gameInfo.holdingsWidth] = EmptySquare;
+                if (*p == '/') p++;
+               else if(autoSize) { // we stumbled unexpectedly into end of board
+                    for(k=i; k<BOARD_HEIGHT; k++) { // too few ranks; shift towards bottom
+                       for(j=0; j<BOARD_WIDTH; j++) board[k-i][j] = board[k][j];
+                    }
+                   appData.NrRanks = gameInfo.boardHeight - i; i=0;
+                }
                break;
 #if(BOARD_FILES >= 10)
             } else if(*p=='x' || *p=='X') { /* [HGM] X means 10 */
@@ -17242,6 +17784,8 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen)
                 while (emptycount--)
                         board[i][(j++)+gameInfo.holdingsWidth] = EmptySquare;
 #endif
+            } else if (*p == '*') {
+               board[i][(j++)+gameInfo.holdingsWidth] = DarkSquare; p++;
             } else if (isdigit(*p)) {
                emptycount = *p++ - '0';
                 while(isdigit(*p)) emptycount = 10*emptycount + *p++ - '0'; /* [HGM] allow > 9 */
@@ -17253,7 +17797,7 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen)
                 if(*p=='+') {
                     piece = CharToPiece(*++p);
                     if(piece == EmptySquare) return FALSE; /* unknown piece */
-                    piece = (ChessSquare) (PROMOTED piece ); p++;
+                    piece = (ChessSquare) (CHUPROMOTED piece ); p++;
                     if(PieceToChar(piece) != '+') return FALSE; /* unpromotable piece */
                 } else piece = CharToPiece(*p++);
 
@@ -17271,6 +17815,18 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen)
     }
     while (*p == '/' || *p == ' ') p++;
 
+    if(autoSize) appData.NrFiles = w, InitPosition(TRUE);
+
+    /* [HGM] by default clear Crazyhouse holdings, if present */
+    if(gameInfo.holdingsWidth) {
+       for(i=0; i<BOARD_HEIGHT; i++) {
+           board[i][0]             = EmptySquare; /* black holdings */
+           board[i][BOARD_WIDTH-1] = EmptySquare; /* white holdings */
+           board[i][1]             = (ChessSquare) 0; /* black counts */
+           board[i][BOARD_WIDTH-2] = (ChessSquare) 0; /* white counts */
+       }
+    }
+
     /* [HGM] look for Crazyhouse holdings here */
     while(*p==' ') p++;
     if( gameInfo.holdingsWidth && p[-1] == '/' || *p == '[') {
@@ -17436,7 +17992,8 @@ ParseFEN (Board board, int *blackPlaysFirst, char *fen)
 
     /* read e.p. field in games that know e.p. capture */
     if(gameInfo.variant != VariantShogi    && gameInfo.variant != VariantXiangqi &&
-       gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier && gameInfo.variant != VariantMakruk ) {
+       gameInfo.variant != VariantShatranj && gameInfo.variant != VariantCourier &&
+       gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN ) {
       if(*p=='-') {
         p++; board[EP_STATUS] = EP_NONE;
       } else {
@@ -17463,7 +18020,7 @@ EditPositionPasteFEN (char *fen)
   if (fen != NULL) {
     Board initial_position;
 
-    if (!ParseFEN(initial_position, &blackPlaysFirst, fen)) {
+    if (!ParseFEN(initial_position, &blackPlaysFirst, fen, TRUE)) {
       DisplayError(_("Bad FEN position in clipboard"), 0);
       return ;
     } else {
index 0ca3120..fb1ae4f 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -75,11 +75,13 @@ extern char lastMsg[MSG_SIZ];
 extern Boolean bookUp;
 extern int tinyLayout, smallLayout;
 extern Boolean mcMode;
+extern int dragging;
+extern char variantError[];
 
 void MarkMenuItem P((char *menuRef, int state));
 char *CmailMsg P((void));
 /* Tord: Added the useFEN960 parameter in PositionToFEN() below */
-char *PositionToFEN P((int move, char* useFEN960));
+char *PositionToFEN P((int move, char* useFEN960, int moveCounts));
 void AlphaRank P((char *s, int n)); /* [HGM] Shogi move preprocessor */
 void EditPositionPasteFEN P((char *fen));
 void TimeDelay P((long ms));
@@ -201,8 +203,9 @@ int PromoScroll P((int x, int y));
 void EditBookEvent P((void));
 Boolean DisplayBook P((int moveNr));
 void SaveToBook P((char *text));
+void HoverEvent P((int hiX, int hiY, int x, int y));
 int PackGame P((Board board));
-Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));
+Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen, Boolean autoSize));
 void ApplyMove P((int fromX, int fromY, int toX, int toY, int promoChar, Board board));
 void PackMove P((int fromX, int fromY, int toX, int toY, ChessSquare promoPiece));
 void ics_printf P((char *format, ...));
@@ -351,6 +354,7 @@ typedef struct XB_CPS {
     int debug;      /* [HGM] ignore engine debug lines starting with '#'    */
     int maxNrOfSessions; /* [HGM] secondary TC: max args in 'level' command */
     int accumulateTC; /* [HGM] secondary TC: how to handle extra sessions   */
+    int drawDepth;    /* [HGM] egbb: search depth to play egbb draws        */
     int nps;          /* [HGM] nps: factor for node count to replace time   */
     int supportsNPS;
     int alphaRank;    /* [HGM] shogi: engine uses shogi-type coordinates    */
@@ -359,6 +363,7 @@ typedef struct XB_CPS {
     char *egtFormats; /* [HGM] EGT: supported tablebase formats             */
     int bookSuspend;  /* [HGM] book: go was deferred because of book hit    */
     int pause;        /* [HGM] pause: 1=supports it, 2=actually paused      */
+    int highlight;    /* [HGM] engine wants to get lift and put commands    */
     int nrOptions;    /* [HGM] options: remembered option="..." features    */
 #define MAX_OPTIONS 200
     Option option[MAX_OPTIONS];
@@ -398,6 +403,8 @@ extern int errorExitStatus;
 extern char *recentEngines;
 extern char *comboLine;
 extern Boolean partnerUp, twoBoards;
+extern char engineVariant[];
+char *EngineDefinedVariant P((ChessProgramState *cps, int n));
 void SettingsPopUp P((ChessProgramState *cps)); // [HGM] really in front-end, but CPS not known in frontend.h
 int WaitForEngine P((ChessProgramState *cps, DelayedEventCallback x));
 void Load P((ChessProgramState *cps, int n));
@@ -406,6 +413,7 @@ void MoveHistorySet P(( char movelist[][2*MOVE_LEN], int first, int last, int cu
 void MakeEngineOutputTitle P((void));
 void LoadTheme P((void));
 void CreateBookEvent P((void));
+char *SupportedVariant P((char *list, VariantClass v, int w, int h, int s, int proto, char *engine));
 
 /* A point in time */
 typedef struct {
diff --git a/board.c b/board.c
index 5c55b4f..abd2a68 100644 (file)
--- a/board.c
+++ b/board.c
@@ -599,11 +599,13 @@ void
 AnimateMove (Board board, int fromX, int fromY, int toX, int toY)
 {
   ChessSquare piece;
-  int hop;
+  int hop, x = toX, y = toY;
   Pnt      start, finish, mid;
   Pnt      frames[kFactor * 2 + 1];
   int        nFrames, startColor, endColor;
 
+  if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar();
+
   /* Are we animating? */
   if (!appData.animate || appData.blindfold)
     return;
@@ -616,6 +618,10 @@ AnimateMove (Board board, int fromX, int fromY, int toX, int toY)
   piece = board[fromY][fromX];
   if (piece >= EmptySquare) return;
 
+  if(killX >= 0) toX = killX, toY = killY; // [HGM] lion: first to kill square
+
+again:
+
 #if DONT_HOP
   hop = FALSE;
 #else
@@ -653,6 +659,8 @@ AnimateMove (Board board, int fromX, int fromY, int toX, int toY)
 
   /* Be sure end square is redrawn */
   damage[0][toY][toX] |= True;
+
+  if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; goto again; } // second leg
 }
 
 void
@@ -817,6 +825,7 @@ DrawSquare (int row, int column, ChessSquare piece, int do_flash)
        snprintf(tString, 3, "%d", piece);
        align = 4; // holdings count in upper-left corner
     }
+    if(piece == DarkSquare) square_color = 2;
     if(square_color == 2 || appData.blindfold) piece = EmptySquare;
 
     if (do_flash && piece != EmptySquare && appData.flashCount > 0) {
index 861eefa..f8a521a 100644 (file)
--- a/common.h
+++ b/common.h
@@ -172,7 +172,7 @@ typedef char *String;
    outside world in ASCII. In a similar way, the different rank numbering
    systems (starting at rank 0 or 1) are implemented by redefining '1'.
 */
-#define BOARD_RANKS             11             /* [HGM] for in declarations  */
+#define BOARD_RANKS             17            /* [HGM] for in declarations  */
 #define BOARD_FILES             16             /* [HGM] for in declarations  */
 #define BOARD_HEIGHT (gameInfo.boardHeight)    /* [HGM] made user adjustable */
 #define BOARD_WIDTH  (gameInfo.boardWidth + 2*gameInfo.holdingsWidth)
@@ -182,7 +182,7 @@ typedef char *String;
 #define VIRGIN       (BOARD_RANKS-2)           /* [HGM] pieces not moved     */
 #define EP_STATUS    CASTLING][(BOARD_FILES-2) /* [HGM] in upper rank        */
 #define HOLDINGS_SET CASTLING][(BOARD_FILES-1) /* [HGM] in upper-right corner*/
-#define ONE          ('1'-(BOARD_HEIGHT>9))    /* [HGM] foremost board rank  */
+#define ONE          ('1'-(BOARD_HEIGHT==10))  /* [HGM] foremost board rank  */
 #define AAA          ('a'-BOARD_LEFT)          /* [HGM] leftmost board file  */
 #define VIRGIN_W                 1             /* [HGM] flags in Board[VIRGIN][X] */
 #define VIRGIN_B                 2
@@ -288,12 +288,20 @@ typedef enum {
     WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen,
     WhiteFerz, WhiteAlfil, WhiteAngel, WhiteMarshall, WhiteWazir, WhiteMan,
     WhiteCannon, WhiteNightrider, WhiteCardinal, WhiteDragon, WhiteGrasshopper,
-    WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteKing,
+    WhiteSilver, WhiteFalcon, WhiteLance, WhiteCobra, WhiteUnicorn, WhiteLion,
+    WhiteTokin, WhiteDagger, WhitePCardinal, WhitePDragon, WhiteCat,
+    WhitePSword, WhiteMonarch, WhiteMother, WhiteNothing, WhitePRook, WhitePDagger,
+    WhiteDolphin, WhiteStag, WhiteHorned, WhiteEagle, WhiteSword,
+    WhiteCrown, WhiteHCrown, WhiteHorse, WhiteDrunk, WhitePBishop, WhiteKing,
     BlackPawn, BlackKnight, BlackBishop, BlackRook, BlackQueen,
     BlackFerz, BlackAlfil, BlackAngel, BlackMarshall, BlackWazir, BlackMan,
     BlackCannon, BlackNightrider, BlackCardinal, BlackDragon, BlackGrasshopper,
-    BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackKing,
-    EmptySquare,
+    BlackSilver, BlackFalcon, BlackLance, BlackCobra, BlackUnicorn, BlackLion,
+    BlackTokin, BlackDagger, BlackPCardinal, BlackPDragon, BlackCat,
+    BlackPSword, BlackMonarch, BlackMother, BlackNothing, BlackPRook, BlackPDagger,
+    BlackDolphin, BlackStag, BlackHorned, BlackEagle, BlackSword,
+    BlackCrown, BlackHCrown, BlackHorse, BlackDrunk, BlackPBishop, BlackKing,
+    EmptySquare, DarkSquare,
     NoRights, // [HGM] gamestate: for castling rights hidden in board[CASTLING]
     ClearBoard, WhitePlay, BlackPlay, PromotePiece, DemotePiece /*for use on EditPosition menus*/
   } ChessSquare;
@@ -304,6 +312,9 @@ typedef enum {
 #define PROMOTED       (int)WhiteDragon - (int)WhiteRook + (int)
 #define DEMOTED        (int)WhiteRook - (int)WhiteDragon + (int)
 #define SHOGI          (int)EmptySquare + (int)
+#define CHUPROMOTED    ((int)WhitePDragon - (int)WhiteDragon)*(gameInfo.variant == VariantChu) + PROMOTED
+#define IS_SHOGI(V)    ((V) == VariantShogi || (V) == VariantChu)
+#define IS_LION(V)     ((V) == WhiteLion || (V) == BlackLion)
 
 
 typedef ChessSquare Board[BOARD_RANKS][BOARD_FILES];
@@ -319,7 +330,7 @@ typedef enum {
     WhitePromotion, WhiteNonPromotion,
     BlackPromotion, BlackNonPromotion,
     WhiteCapturesEnPassant, BlackCapturesEnPassant,
-    WhiteDrop, BlackDrop,
+    WhiteDrop, BlackDrop, FirstLeg,
     NormalMove, AmbiguousMove, IllegalMove, ImpossibleMove,
     WhiteWins, BlackWins, GameIsDrawn, GameUnfinished,
     GNUChessGame, XBoardGame, MoveNumberOne, Open, Close, Nothing,
@@ -333,7 +344,7 @@ typedef enum {
 } ColorClass;
 
 typedef enum {
-    SoundMove, SoundBell, SoundAlarm, SoundIcsWin, SoundIcsLoss,
+    SoundMove, SoundBell, SoundRoar, SoundAlarm, SoundIcsWin, SoundIcsLoss,
     SoundIcsDraw, SoundIcsUnfinished, NSoundClasses
 } SoundClass;
 
@@ -363,6 +374,7 @@ typedef enum {
     Variant35,           /* Temporary name for possible future ICC wild 35 */
     Variant36,           /* Temporary name for possible future ICC wild 36 */
     VariantShogi,        /* [HGM] added variants */
+    VariantChu,
     VariantXiangqi,
     VariantCourier,
     VariantGothic,
@@ -378,9 +390,12 @@ typedef enum {
     VariantGreat,
     VariantTwilight,
     VariantMakruk,
+    VariantASEAN,
     VariantSChess,
     VariantGrand,
     VariantSpartan,
+    VariantLion,
+    VariantChuChess,
     VariantUnknown       /* Catchall for other unknown variants */
 } VariantClass;
 
@@ -409,6 +424,7 @@ typedef enum {
   "wild35", \
   "wild36", \
   "shogi", \
+  "chu", \
   "xiangqi", \
   "courier", \
   "gothic", \
@@ -424,9 +440,12 @@ typedef enum {
   "great",\
   "twilight",\
   "makruk",\
+  "asean",\
   "seirawan",\
   "grand",\
   "spartan",\
+  "lion",\
+  "chuchess",\
   "unknown" \
 }
 
@@ -562,6 +581,7 @@ typedef struct {
     char *soundSeek;
     char *soundMove;     // [HGM] IMPORTANT: order must be as in SoundClass
     char *soundBell;
+    char *soundRoar;
     char *soundIcsAlarm;
     char *soundIcsWin;
     char *soundIcsLoss;
@@ -691,13 +711,16 @@ typedef struct {
     int zippyShortGame; /* [HGM] aborter   */
 #endif
     Boolean lowTimeWarning; /* [HGM] low time */
+    Boolean quitNext;
     char *lowTimeWarningColor;
 
     char *serverFileName;
     char *serverMovesName;
+    char *finger;
     Boolean suppressLoadMoves;
     int serverPause;
     int timeOdds[ENGINES];
+    int drawDepth[ENGINES];
     int timeOddsMode;
     int accumulateTC[ENGINES];
     int NPS[ENGINES];
diff --git a/conf/chu b/conf/chu
new file mode 100644 (file)
index 0000000..45195ef
--- /dev/null
+++ b/conf/chu
@@ -0,0 +1,42 @@
+;
+; settings for oriental Chu-Shogi theme
+;
+-variant chu
+;
+; pieces: supplied chu-shogi svg's, and flip them in flipView
+;
+-pid ~~/themes/chu
+-flipBlack true
+-trueColors true
+;
+; board: no checkering (both w. and w.o. texture)
+;
+-liteBackTextureFile  "~~/themes/textures/wood_l.png"
+-darkBackTextureFile  "~~/themes/textures/wood_l.png"
+-lightSquareColor #FF8040
+-darkSquareColor #FF8040
+;
+; detour under-promotion is less convenient when non-pawns promote
+;
+-sweepPromotions false
+;
+; legality testing must be on for double-moves to work, no adjudication
+;
+-testLegality true
+-trivialDraws false
+-materialDraws false
+;
+; make the Lion roar on double captures
+;
+-roarSound roar.wav
+;
+; redefine default engine
+;
+-fcp hachu
+-scp hachu
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-chu-rc
+-saveSettingsFile ~/.xboard-chu-rc
+
diff --git a/conf/ics b/conf/ics
new file mode 100644 (file)
index 0000000..9823c73
--- /dev/null
+++ b/conf/ics
@@ -0,0 +1,10 @@
+;
+; settings for Internet Chess Server client
+;
+-ics
+;
+; set up own persistence file, used for ICS play
+;
+-settingsFile ~/.xboard-ics-rc
+-saveSettingsFile ~/.xboard-ics-rc
+
diff --git a/conf/judkins b/conf/judkins
new file mode 100644 (file)
index 0000000..250369d
--- /dev/null
@@ -0,0 +1,19 @@
+;
+; additional settings for Judkins Shogi
+;
+-variant shogi
+;
+; size overrides
+;
+-boardWidth 6
+-boardHeight 6
+-holdingsSize 6
+;
+; remove L from piece set
+;
+-pieceToCharTable "PNBR.S...G.++++.+Kpnbr.s...g.++++.+k"
+;
+; provide initial position
+;
+-loadPositionFile "~~/themes/conf/judkins.fen"
+
diff --git a/conf/judkins.fen b/conf/judkins.fen
new file mode 100644 (file)
index 0000000..d805858
--- /dev/null
@@ -0,0 +1,2 @@
+rbnsgk/6p/6/6/P5/KGSNBR w 0 1
+
diff --git a/conf/mini b/conf/mini
new file mode 100644 (file)
index 0000000..ee6fce6
--- /dev/null
+++ b/conf/mini
@@ -0,0 +1,24 @@
+;
+; additional settings for mini-Shogi
+;
+-variant shogi
+;
+; size overrides
+;
+-boardWidth 5
+-boardHeight 5
+-holdingsSize 5
+;
+; remove L and N from piece set
+;
+-pieceToCharTable "P.BR.S...G.+.++.+Kp.br.s...g.+.++.+k"
+;
+; redefine default engine
+;
+-fcp gnuminishogi
+-scp gnuminishogi
+;
+; provide initial position
+;
+-loadPositionFile "~~/themes/conf/mini.fen"
+
diff --git a/conf/mini.fen b/conf/mini.fen
new file mode 100644 (file)
index 0000000..7ddea3a
--- /dev/null
@@ -0,0 +1,2 @@
+rbsgk/4p/5/P4/KGSBR w 0 1
+
diff --git a/conf/sho b/conf/sho
new file mode 100644 (file)
index 0000000..7b48f27
--- /dev/null
+++ b/conf/sho
@@ -0,0 +1,28 @@
+;
+; additional settings for Sho Shogi
+;
+-variant shogi
+;
+; size overrides
+;
+-boardWidth 9
+-boardHeight 9
+-holdingsSize 0
+;
+; add Elephant to piece set
+;
+-pieceToCharTable "PNBRLSE..G.+++++++Kpnbrlse..g.+++++++k"
+;
+; provide initial position
+;
+-loadPositionFile "~~/themes/conf/sho.fen"
+;
+; must play with legality testing off, for +E and mate
+;
+-testLegality false
+;
+; redefine default engine
+;
+-fcp hachu
+-scp hachu
+
diff --git a/conf/sho.fen b/conf/sho.fen
new file mode 100644 (file)
index 0000000..689e5a6
--- /dev/null
@@ -0,0 +1,2 @@
+lnsgkgsnl/1r2e2b1/ppppppppp/9/9/9/PPPPPPPPP/1B2E2R1/LNSGKGSNL w 0 1
+
diff --git a/conf/shogi b/conf/shogi
new file mode 100644 (file)
index 0000000..90cde91
--- /dev/null
@@ -0,0 +1,41 @@
+;
+; settings for oriental Shogi theme
+;
+-variant shogi
+;
+; pieces: supplied shogi svg's, and flip them in flipView
+;
+-pid ~~/themes/shogi
+-flipBlack true
+-trueColors true
+;
+; board: no checkering (both w. and w.o. texture)
+;
+-liteBackTextureFile  "~~/themes/textures/wood_l.png"
+-darkBackTextureFile  "~~/themes/textures/wood_l.png"
+-lightSquareColor #FF8040
+-darkSquareColor #FF8040
+;
+; detour under-promotion is less convenient when non-pawns promote
+;
+-sweepPromotions false
+;
+; no adjudication
+;
+-trivialDraws false
+-materialDraws false
+;
+; common non-compliant notations
+;
+-colorNickNames "sg"
+;
+; redefine default engine
+;
+-fcp gnushogi
+-scp gnushogi
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-shogi-rc
+-saveSettingsFile ~/.xboard-shogi-rc
+
diff --git a/conf/xiangqi b/conf/xiangqi
new file mode 100644 (file)
index 0000000..23aeb36
--- /dev/null
@@ -0,0 +1,30 @@
+;
+; settings for oriental Xiangqi theme
+;
+-variant xiangqi
+;
+; pieces: supplied xiangqi svg's
+;
+-pid ~~/themes/xiangqi
+-trueColors true
+;
+; board: supplied board bitmap
+;
+-liteBackTextureFile  "~~/themes/textures/xqboard.png"
+-darkBackTextureFile  "~~/themes/textures/xqboard.png"
+;
+; suppress square boundaries and highlight with arrow instead
+;
+-overrideLineGap 0
+-highlightMovesWithArrow true
+;
+; define common non-compliant notations
+;
+-pieceNickNames ".N...MB..G..n...mb..g."
+-colorNickNames "r."
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-xiangqi-rc
+-saveSettingsFile ~/.xboard-xiangqi-rc
+
diff --git a/conf/xq b/conf/xq
new file mode 100644 (file)
index 0000000..fe659ba
--- /dev/null
+++ b/conf/xq
@@ -0,0 +1,36 @@
+;
+; settings for oriental Xiangqi theme
+;
+-variant xiangqi
+;
+; pieces: supplied xiangqi svg's
+;
+-pid ~~/themes/xiangqi
+-trueColors true
+;
+; board: supplied board bitmap
+;
+-useBoardTexture true
+-liteBackTextureFile  "~~/themes/textures/xqboard.png"
+-darkBackTextureFile  "~~/themes/textures/xqboard.png"
+;
+; suppress square boundaries and highlight with arrow instead
+;
+-overrideLineGap 0
+-highlightMoveWithArrow true
+;
+; define common non-compliant notations
+;
+-pieceNickNames ".N...MB..G..n...mb..g."
+-colorNickNames "r."
+;
+; set default engines
+;
+-fcp maxqi
+-scp maxqi
+;
+; set up own persistence file, used for this theme only
+;
+-settingsFile ~/.xboard-xiangqi-rc
+-saveSettingsFile ~/.xboard-xiangqi-rc
+
index 2937474..5189be7 100644 (file)
@@ -28,7 +28,7 @@ dnl| to regenerate configure.  Then submit your changes to be folded into
 dnl| the standard version of xboard.
 
 dnl| define second argument as VERSION.PATCHLEVEL. e.g. 4.4.0j
-AC_INIT([xboard],[4.7.2],[bug-xboard@gnu.org])
+AC_INIT([xboard],[master-20130828],[bug-xboard@gnu.org])
 
 dnl| need this to be able to compile some files in a subdir (filebrowser)
 AM_INIT_AUTOMAKE([subdir-objects])
@@ -56,7 +56,6 @@ AH_TEMPLATE([USE_PTYS],[template])
 AH_TEMPLATE([X_WCHAR],[template])
 AH_TEMPLATE([ATTENTION],[template])
 AH_TEMPLATE([DEFINED_SYS_ERRLIST],[template])
-AH_TEMPLATE([HAVE_LIBXPM],[template])
 AH_TEMPLATE([USE_XAW3D],[template])
 AH_TEMPLATE([X_LOCALE],[template])
 
@@ -138,24 +137,61 @@ FRONTEND_LIBS=""
 
 AC_ARG_WITH([gtk],
             [AS_HELP_STRING([--with-gtk],[use GTK front-end (experimental)])],
-            [with_GTK=yes],
-            [with_GTK=no])
+            [with_GTK=$withval],
+            [with_GTK="no"])
 
 AC_ARG_WITH([Xaw3d],
             [AS_HELP_STRING([--with-Xaw3d],[use Xaw3d front-end (not fully supported anymore)])],
-            [with_Xaw3d=yes],
-            [with_Xaw3d=no])
+            [with_Xaw3d="$withval"],
+            [with_Xaw3d="no"])
 
 AC_ARG_WITH([Xaw],
             [AS_HELP_STRING([--with-Xaw],[use Xaw front-end (default)])],
-            [with_Xaw=yes],
-            [with_Xaw=no])
+            [with_Xaw="$withval"],
+            [with_Xaw="yes"])
+
+AC_ARG_WITH([iconsdir],
+            [AS_HELP_STRING([--with-iconsdir=DIR],
+            [path where icons get installed (default: $datadir/icons/hicolor/48x48/apps)])],
+            [ICONSDIR="$withval"],
+            [ICONSDIR='$(datadir)/icons/hicolor/48x48/apps'])
+
+AC_ARG_WITH([svgiconsdir],
+            [AS_HELP_STRING([--with-svgiconsdir=DIR],
+            [path where svg icons get installed (default: $datadir/icons/hicolor/scalable/apps)])],
+            [SVGICONSDIR="$withval"],
+            [SVGICONSDIR='$(datadir)/icons/hicolor/scalable/apps'])
+
+AC_ARG_WITH([desktopdir],
+            [AS_HELP_STRING([--with-desktopdir=DIR],
+                            [path where desktop files get installed (default: $datadir/applications)])],
+            [DESKTOPDIR="$withval"],
+            [DESKTOPDIR='$(datadir)/applications'])
+
+AC_ARG_WITH([mimedir],
+            [AS_HELP_STRING([--with-mimedir=DIR],
+                            [path where mime files get installed (default: $datadir/mime/packages)])],
+            [MIMEDIR="$withval"],
+            [MIMEDIR='$(datadir)/mime/packages'])
+
+AC_ARG_WITH([gamedatadir],
+            [AS_HELP_STRING([--with-gamedatadir=DIR],
+                            [path where game data files get installed (default: $datadir/games/xboard)])],
+            [GAMEDATADIR="$withval"],
+            [GAMEDATADIR='$(datadir)/games/xboard'])
+
+AC_SUBST(ICONSDIR)
+AC_SUBST(SVGICONSDIR)
+AC_SUBST(DESKTOPDIR)
+AC_SUBST(MIMEDIR)
+AC_SUBST(GAMEDATADIR)
 
 dnl | check for libraries
 if test x"$with_GTK" = x"yes" ; then
   PKG_CHECK_MODULES([GTK], [ gtk+-2.0 >= 2.16.0 gmodule-2.0 ])
   FRONTEND_CFLAGS=$GTK_CFLAGS
   FRONTEND_LIBS=$GTK_LIBS
+  with_Xaw="no"
 fi
 
 if test x"$with_GTK" = x"no" ; then
@@ -212,8 +248,7 @@ fi
 
 dnl | make results available in Makefile.am
 AM_CONDITIONAL([withGTK],   [test x"$with_GTK" = x"yes"])
-AM_CONDITIONAL([withXaw],   [test x"$with_Xaw3d" = x"yes"])
-AM_CONDITIONAL([withXaw],   [test x"$with_Xaw" = x"yes"])
+AM_CONDITIONAL([withXaw],   [test x"$with_Xaw3d" = x"yes" || test x"$with_Xaw" = x"yes"])
 
 
 AC_SUBST(FRONTEND_CFLAGS)
@@ -400,29 +435,6 @@ dnl| add some libs for OS X
   ;;
 esac
 
-AC_ARG_ENABLE( [xpm],
-               [AS_HELP_STRING([--enable-xpm],[libXpm will be used if found (default)])],
-               [enable_xpm="$enableval"],
-               [enable_xpm="yes"])
-
-if test x"$enable_xpm" != "xno"; then
-  save_cflags="$CFLAGS"
-  save_cppflags="$CPPFLAGS"
-  CFLAGS="$CFLAGS $X_CFLAGS"
-  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  AC_CHECK_HEADERS(X11/xpm.h)
-  CFLAGS="$save_cflags"
-  CPPFLAGS="$save_cppflags"
-  if test "$ac_cv_header_X11_xpm_h" = "yes"; then
-    save_ldflags="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $X_LIBS"
-    AC_CHECK_LIB(Xpm, XpmReadFileToPixmap,
-                 [X_PRE_LIBS="-lXpm $X_PRE_LIBS"; AC_DEFINE(HAVE_LIBXPM)], [],
-                 [$X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
-    LDFLAGS="$save_ldflags"
-  fi
-fi
-
 AC_SUBST(PRE_XMULIB)
 AC_SUBST(POST_XMULIB)
 AC_SUBST(CONF_CFLAGS)
@@ -501,6 +513,17 @@ if test x"$enable_mimedb" = "xyes"; then
    AC_SUBST(XDG_ICON_RESOURCE)
 fi
 
+dnl create a string with configure options that can be passed to the
+dnl program, good for bug reports and version printout, see output below
+CONFIGURE_OPTIONS="prefix=$prefix; datarootdir=$datarootdir; \
+datadir=$datadir; gamedatadir=$GAMEDATADIR; desktopdir=$DESKTOPDIR; \
+mimedir=$MIMEDIR; iconsdir=$ICONSDIR; svgiconsdir=$SVGICONSDIR; infodir=$infodir; \
+sysconfigdir=$sysconfigdir; update_mimedb=$enable_mimedb; NLS=$USE_NLS; \
+GKT=$with_GTK; Xaw3d=$with_Xaw3d; Xaw=$with_Xaw; \
+ptys=$enable_ptys; zippy=$enable_zippy; sigint=$enable_sigint"
+
+AC_SUBST(CONFIGURE_OPTIONS)
+
 dnl |  output Makefile
 AC_CONFIG_FILES([Makefile cmail po/Makefile.in])
 AC_CONFIG_COMMANDS([test-stamp-h],[test -z "$CONFIG_HEADERS" || date > stamp-h])
@@ -515,8 +538,12 @@ echo " Configurations summary:"
 echo ""
 echo "        prefix:          $prefix       "
 echo "        datarootdir:     $datarootdir  "
-echo "        datadir:         $datadir   (icons will go in \$datadir/icons/hicolor/...)"
-echo "                                    (bitmaps will go in \$datadir/games/xboard/...)"
+echo "        datadir:         $datadir      "
+echo "        gamedatadir:     $GAMEDATADIR  "
+echo "        desktopdir:      $DESKTOPDIR   "
+echo "        mimedir:         $MIMEDIR      "
+echo "        iconsdir:        $ICONSDIR     "
+echo "        svgiconsdir:     $SVGICONSDIR  "
 echo "        infodir:         $infodir   (info files will go here)"
 echo "        sysconfdir:      $sysconfdir   (xboard.conf will go here)"
 echo ""
@@ -528,7 +555,6 @@ echo "        GTK:             $with_GTK"
 echo "        Xaw3d:           $with_Xaw3d"
 echo "        Xaw:             $with_Xaw"
 echo ""
-echo "        xpm:             $enable_xpm"
 echo "        ptys:            $enable_ptys"
 echo "        zippy:           $enable_zippy"
 echo "        sigint:          $enable_sigint"
index bb98b3f..57b7142 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -184,12 +184,14 @@ GenericReadout (Option *opts, int selected)
                    if(x < opts[i].min) x = opts[i].min;
                    if(opts[i].type == Fractional)
                        *(float*) opts[i].target = x; // engines never have float options!
-                   else if(opts[i].value != x) {
-                       opts[i].value = x;
+                   else {
                        if(currentCps) {
+                         if(opts[i].value != x) { // only to engine if changed
                            snprintf(buf, MSG_SIZ,  "option %s=%.0f\n", opts[i].name, x);
                            SendToProgram(buf, currentCps);
+                         }
                        } else *(int*) opts[i].target = x;
+                       opts[i].value = x;
                    }
                    break;
                case CheckBox:
@@ -228,6 +230,7 @@ GenericReadout (Option *opts, int selected)
                case SaveButton:
                case Label:
                case Break:
+               case -1:
              break;
            }
            if(opts[i].type == EndMark) break;
@@ -257,10 +260,9 @@ MatchOK (int n)
 
 static Option matchOptions[] = {
 { 0,  0,          0, NULL, (void*) &tfName, ".trn", NULL, FileName, N_("Tournament file:          ") },
+{ 0,  0,          0, NULL, NULL, "", NULL, Label, N_("For concurrent playing of tourney with multiple XBoards:") },
 { 0,  0,          0, NULL, (void*) &appData.roundSync, "", NULL, CheckBox, N_("Sync after round") },
-{ 0, SAME_ROW|LL, 0, NULL, NULL, "", NULL, Label, N_("    (for concurrent playing of a single") },
 { 0,  0,          0, NULL, (void*) &appData.cycleSync, "", NULL, CheckBox, N_("Sync after cycle") },
-{ 0, SAME_ROW|LL, 0, NULL, NULL, "", NULL, Label, N_("      tourney with multiple XBoards)") },
 { 0,  LR,       175, NULL, NULL, "", NULL, Label, N_("Tourney participants:") },
 { 0, SAME_ROW|RR, 175, NULL, NULL, "", NULL, Label, N_("Select Engine:") },
 { 150, T_VSCRL | T_FILL | T_WRAP,
@@ -341,7 +343,7 @@ MatchOptionsProc ()
    ASSIGN(tfName, appData.tourneyFile[0] ? appData.tourneyFile : MakeName(appData.defName));
    ASSIGN(engineName, appData.participants);
    ASSIGN(engineMnemonic[0], "");
-   GenericPopUp(matchOptions, _("Match Options"), TransientDlg, BoardWindow, MODAL, 0);
+   GenericPopUp(matchOptions, _("Tournament Options"), TransientDlg, BoardWindow, MODAL, 0);
 }
 
 // ------------------------------------------- General Options --------------------------------------------------
@@ -367,6 +369,7 @@ static Option generalOptions[] = {
 { 0,  0, 0, NULL, (void*) &appData.autoCallFlag, "", NULL, CheckBox, N_("Auto Flag") },
 { 0,  0, 0, NULL, (void*) &appData.autoFlipView, "", NULL, CheckBox, N_("Auto Flip View") },
 { 0,  0, 0, NULL, (void*) &appData.blindfold, "", NULL, CheckBox, N_("Blindfold") },
+/* TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position */
 { 0,  0, 0, NULL, (void*) &appData.dropMenu, "", NULL, CheckBox, N_("Drop Menu") },
 { 0,  0, 0, NULL, (void*) &appData.variations, "", NULL, CheckBox, N_("Enable Variation Trees") },
 { 0,  0, 0, NULL, (void*) &appData.hideThinkingFromHuman, "", NULL, CheckBox, N_("Hide Thinking from Human") },
@@ -405,47 +408,66 @@ OptionsProc ()
 static void Pick P((int n));
 
 static char warning[MSG_SIZ];
+static int ranksTmp, filesTmp, sizeTmp;
 
 static Option variantDescriptors[] = {
-{ VariantNormal,        0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("normal")},
-{ VariantMakruk, SAME_ROW, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("makruk")},
+{ VariantNormal,        0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Normal")},
+{ VariantMakruk, SAME_ROW, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Makruk")},
 { VariantFischeRandom,  0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("FRC")},
-{ VariantShatranj,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("shatranj")},
-{ VariantWildCastle,    0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("wild castle")},
-{ VariantKnightmate,SAME_ROW,135,NULL,(void*) &Pick, "#FFFFFF", NULL, Button, N_("knightmate")},
-{ VariantNoCastle,      0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("no castle")},
-{ VariantCylinder,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("cylinder *")},
+{ VariantShatranj,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Shatranj")},
+{ VariantWildCastle,    0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Wild castle")},
+{ VariantKnightmate,SAME_ROW,135,NULL,(void*) &Pick, "#FFFFFF", NULL, Button, N_("Knightmate")},
+{ VariantNoCastle,      0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("No castle")},
+{ VariantCylinder,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("Cylinder *")},
 { Variant3Check,        0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("3-checks")},
 { VariantBerolina,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("berolina *")},
 { VariantAtomic,        0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("atomic")},
 { VariantTwoKings,SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("two kings")},
+{ -1,                   0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
+{ VariantSpartan,SAME_ROW, 135, NULL, (void*) &Pick, "#FF0000", NULL, Button, N_("Spartan")},
 { 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("Board size ( -1 = default for selected variant):")},
-{ 0, -1, BOARD_RANKS-1, NULL, (void*) &appData.NrRanks, "", NULL, Spin, N_("Number of Board Ranks:") },
-{ 0, -1, BOARD_FILES, NULL, (void*) &appData.NrFiles, "", NULL, Spin, N_("Number of Board Files:") },
-{ 0, -1, BOARD_RANKS-1, NULL, (void*) &appData.holdingsSize, "", NULL, Spin, N_("Holdings Size:") },
+{ 0, -1, BOARD_RANKS-1, NULL, (void*) &ranksTmp, "", NULL, Spin, N_("Number of Board Ranks:") },
+{ 0, -1, BOARD_FILES,   NULL, (void*) &filesTmp, "", NULL, Spin, N_("Number of Board Files:") },
+{ 0, -1, BOARD_RANKS-1, NULL, (void*) &sizeTmp,  "", NULL, Spin, N_("Holdings Size:") },
 { 0, 0, 275, NULL, NULL, NULL, NULL, Label, warning },
-{ 0, 0, 275, NULL, NULL, NULL, NULL, Label, "Variants marked with * can only be played\nwith legality testing off"},
+{ 0, 0, 275, NULL, NULL, NULL, NULL, Label, N_("Variants marked with * can only be played\nwith legality testing off.")},
 { 0, SAME_ROW, 0, NULL, NULL, NULL, NULL, Break, ""},
-{ VariantFairy,         0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("fairy")},
+{ VariantASEAN,         0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_("ASEAN")},
 { VariantGreat,  SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Great Shatranj (10x8)")},
 { VariantSChess,        0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Seirawan")},
-{ VariantFalcon, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("falcon (10x8)")},
+{ VariantFalcon, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Falcon (10x8)")},
 { VariantSuper,         0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Superchess")},
 { VariantCapablanca,SAME_ROW,135,NULL,(void*) &Pick, "#BFBFFF", NULL, Button, N_("Capablanca (10x8)")},
-{ VariantCrazyhouse,    0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("crazyhouse")},
+{ VariantCrazyhouse,    0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Crazyhouse")},
 { VariantGothic, SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Gothic (10x8)")},
-{ VariantBughouse,      0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("bughouse")},
-{ VariantJanus,  SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("janus (10x8)")},
-{ VariantSuicide,       0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("suicide")},
+{ VariantBughouse,      0, 135, NULL, (void*) &Pick, "#FFBFBF", NULL, Button, N_("Bughouse")},
+{ VariantJanus,  SAME_ROW, 135, NULL, (void*) &Pick, "#BFBFFF", NULL, Button, N_("Janus (10x8)")},
+{ VariantSuicide,       0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("Suicide")},
 { VariantCapaRandom,SAME_ROW,135,NULL,(void*) &Pick, "#BFBFFF", NULL, Button, N_("CRC (10x8)")},
 { VariantGiveaway,      0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("give-away")},
 { VariantGrand,  SAME_ROW, 135, NULL, (void*) &Pick, "#5070FF", NULL, Button, N_("grand (10x10)")},
 { VariantLosers,        0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("losers")},
 { VariantShogi,  SAME_ROW, 135, NULL, (void*) &Pick, "#BFFFFF", NULL, Button, N_("shogi (9x9)")},
-{ VariantSpartan,       0, 135, NULL, (void*) &Pick, "#FF0000", NULL, Button, N_("Spartan")},
+{ VariantFairy,         0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("fairy")},
 { VariantXiangqi, SAME_ROW,135, NULL, (void*) &Pick, "#BFFFFF", NULL, Button, N_("xiangqi (9x10)")},
-{ -1,                   0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
+{ VariantLion,          0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("mighty lion")},
 { VariantCourier, SAME_ROW,135, NULL, (void*) &Pick, "#BFFFBF", NULL, Button, N_("courier (12x8)")},
+{ VariantChuChess,      0, 135, NULL, (void*) &Pick, "#BFBFBF", NULL, Button, N_("chu chess (10x10)")},
+{ VariantChu,    SAME_ROW, 135, NULL, (void*) &Pick, "#BFFFBF", NULL, Button, N_("chu shogi (12x12)")},
+//{ -1,                   0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
+// optional buttons for engine-defined variants
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, -1, NULL },
 { 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" }
 };
 
@@ -453,27 +475,29 @@ static void
 Pick (int n)
 {
        VariantClass v = variantDescriptors[n].value;
+       if(v == VariantUnknown) safeStrCpy(engineVariant, variantDescriptors[n].name, MSG_SIZ); else *engineVariant = NULLCHAR;
+       GenericReadout(variantDescriptors, -1); // read new ranks and file settings
        if(!appData.noChessProgram) {
-           char *name = VariantName(v), buf[MSG_SIZ];
-           if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {
-               /* [HGM] in protocol 2 we check if variant is suported by engine */
-             snprintf(buf, MSG_SIZ,  _("Variant %s not supported by %s"), name, first.tidy);
-               DisplayError(buf, 0);
+           char buf[MSG_SIZ];
+           if (!SupportedVariant(first.variants, v, filesTmp, ranksTmp, sizeTmp, first.protocolVersion, first.tidy)) {
+               DisplayError(variantError, 0);
                return; /* ignore OK if first engine does not support it */
            } else
-           if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {
-             snprintf(buf, MSG_SIZ,  _("Warning: second engine (%s) does not support this!"), second.tidy);
+           if (second.initDone &&
+               !SupportedVariant(second.variants, v, filesTmp, ranksTmp, sizeTmp, second.protocolVersion, second.tidy)) {
+                snprintf(buf, MSG_SIZ,  _("Warning: second engine (%s) does not support this!"), second.tidy);
                DisplayError(buf, 0);   /* use of second engine is optional; only warn user */
            }
        }
 
-       GenericReadout(variantDescriptors, -1); // make sure ranks and file settings are read
-
        gameInfo.variant = v;
        appData.variant = VariantName(v);
 
        shuffleOpenings = FALSE; /* [HGM] shuffle: possible shuffle reset when we switch */
        startedFromPositionFile = FALSE; /* [HGM] loadPos: no longer valid in new variant */
+       appData.NrRanks = ranksTmp;
+       appData.NrFiles = filesTmp;
+       appData.holdingsSize = sizeTmp;
        appData.pieceToCharTable = NULL;
        appData.pieceNickNames = "";
        appData.colorNickNames = "";
@@ -485,9 +509,30 @@ Pick (int n)
 void
 NewVariantProc ()
 {
-   if(appData.noChessProgram) sprintf(warning, _("Only bughouse is not available in viewer mode")); else
-   sprintf(warning, _("All variants not supported by first engine\n(currently %s) are disabled"), first.tidy);
+   static int start;
+   int i, last;
+   char buf[MSG_SIZ];
+   ranksTmp = filesTmp = sizeTmp = -1; // prefer defaults over actual settings
+   if(appData.noChessProgram) sprintf(warning, _("Only bughouse is not available in viewer mode.")); else
+   sprintf(warning, _("All variants not supported by the first engine\n(currently %s) are disabled."), first.tidy);
+   if(!start) while(variantDescriptors[start].type != -1) start++; // locate first spare
+   last = -1;
+   for(i=0; variantDescriptors[start+i].type != EndMark; i++) { // create buttons for engine-defined variants
+     char *v = EngineDefinedVariant(&first, i);
+     if(v) {
+       last =  i;
+       ASSIGN(variantDescriptors[start+i].name, v);
+       variantDescriptors[start+i].type = Button;
+     } else variantDescriptors[start+i].type = -1;
+   }
+   if(!(last&1)) { // odd number, add filler
+       ASSIGN(variantDescriptors[start+last+1].name, " ");
+       variantDescriptors[start+last+1].type = Button;
+       variantDescriptors[start+last+1].value = -1;
+   }
+   safeStrCpy(buf, engineVariant, MSG_SIZ); *engineVariant = NULLCHAR; // yeghh...
    GenericPopUp(variantDescriptors, _("New Variant"), TransientDlg, BoardWindow, MODAL, 0);
+   safeStrCpy(engineVariant, buf, MSG_SIZ); // must temporarily clear to avoid enabling all variant buttons
 }
 
 //------------------------------------------- Common Engine Options -------------------------------------
@@ -578,6 +623,7 @@ Option icsOptions[] = {
 { 0, 0, 0, NULL, (void*) &appData.seekGraph, "",   NULL, CheckBox, N_("Seek Graph") },
 { 0, 0, 0, NULL, (void*) &appData.autoRefresh, "", NULL, CheckBox, N_("Auto-Refresh Seek Graph") },
 { 0, 0, 0, NULL, (void*) &appData.autoBox, "", NULL, CheckBox, N_("Auto-InputBox PopUp") },
+{ 0, 0, 0, NULL, (void*) &appData.quitNext, "", NULL, CheckBox, N_("Quit after game") },
 { 0, 0, 0, NULL, (void*) &appData.premove, "",     NULL, CheckBox, N_("Premove") },
 { 0, 0, 0, NULL, (void*) &appData.premoveWhite, "", NULL, CheckBox, N_("Premove for White") },
 { 0, 0, 0, NULL, (void*) &appData.premoveWhiteText, "", NULL, TextBox, N_("First White Move:") },
@@ -689,6 +735,7 @@ static char *soundNames[] = {
        N_("Penalty"),
        N_("Phone"),
        N_("Pop"),
+       N_("Roar"),
        N_("Slap"),
        N_("Wood Thunk"),
        NULL,
@@ -707,6 +754,7 @@ static char *soundFiles[] = { // sound files corresponding to above names
        "penalty.wav",
        "phone.wav",
        "pop2.wav",
+       "roar.wav",
        "slap.wav",
        "woodthunk.wav",
        NULL,
@@ -734,6 +782,7 @@ static Option soundOptions[] = {
 { 0, 0, 0, NULL, (void*) &appData.soundTell, (char*) soundFiles, soundNames, ComboBox, N_("Tell:") },
 { 0, 0, 0, NULL, (void*) &appData.soundKibitz, (char*) soundFiles, soundNames, ComboBox, N_("Kibitz:") },
 { 0, 0, 0, NULL, (void*) &appData.soundRequest, (char*) soundFiles, soundNames, ComboBox, N_("Request:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundRoar, (char*) soundFiles, soundNames, ComboBox, N_("Lion roar:") },
 { 0, 0, 0, NULL, (void*) &appData.soundSeek, (char*) soundFiles, soundNames, ComboBox, N_("Seek:") },
 { 0, SAME_ROW, 0, NULL, NULL, "", NULL, EndMark , "" }
 };
@@ -814,7 +863,7 @@ static Option boardOptions[] = {
 { 0, 0, 0, NULL, (void*) &appData.upsideDown, "", NULL, CheckBox, N_("Flip Pieces Shogi Style        (Colored buttons restore default)") },
 //{ 0, 0, 0, NULL, (void*) &appData.allWhite, "", NULL, CheckBox, N_("Use Outline Pieces for Black") },
 { 0, 0, 0, NULL, (void*) &appData.monoMode, "", NULL, CheckBox, N_("Mono Mode") },
-{ 0,-1, 5, NULL, (void*) &appData.overrideLineGap, "", NULL, Spin, N_("Line Gap ( -1 = default for board size):") },
+{ 0,-1, 5, NULL, (void*) &appData.overrideLineGap, "", NULL, Spin, N_("Line Gap (-1 = default for board size):") },
 { 0, 0, 0, NULL, (void*) &appData.useBitmaps, "", NULL, CheckBox, N_("Use Board Textures") },
 { 0, 0, 0, NULL, (void*) &appData.liteBackTextureFile, ".png", NULL, FileName, N_("Light-Squares Texture File:") },
 { 0, 0, 0, NULL, (void*) &appData.darkBackTextureFile, ".png", NULL, FileName, N_("Dark-Squares Texture File:") },
@@ -1026,7 +1075,7 @@ static char *tagsText;
 static int
 NewTagsCallback (int n)
 {
-    ReplaceTags(tagsText, &gameInfo);
+    if(!bookUp) ReplaceTags(tagsText, &gameInfo);
     return 1;
 }
 
@@ -1041,7 +1090,7 @@ static void
 changeTags (int n)
 {
     GenericReadout(tagsOptions, 1);
-    if(bookUp) SaveToBook(tagsText); else
+    if(bookUp) SaveToBook(tagsText), DisplayBook(currentMove); else
     ReplaceTags(tagsText, &gameInfo);
 }
 
@@ -1552,6 +1601,7 @@ PromoPick (int n)
        ClearHighlights();
        return;
     }
+    if(promoChar == '=' && !IS_SHOGI(gameInfo.variant)) promoChar = NULLCHAR;
     UserMoveEvent(fromX, fromY, toX, toY, promoChar);
 
     if (!appData.highlightLastMove || gotPremove) ClearHighlights();
@@ -1568,11 +1618,11 @@ SetPromo (char *name, int nr, char promoChar)
 }
 
 void
-PromotionPopUp ()
+PromotionPopUp (char choice)
 { // choice depends on variant: prepare dialog acordingly
   count = 8;
-  SetPromo(_("Cancel"), --count, 0); // Beware: GenericPopUp cannot handle user buttons named "cancel" (lowe case)!
-  if(gameInfo.variant != VariantShogi) {
+  SetPromo(_("Cancel"), --count, -1); // Beware: GenericPopUp cannot handle user buttons named "cancel" (lowe case)!
+  if(choice != '+') {
     if (!appData.testLegality || gameInfo.variant == VariantSuicide ||
         gameInfo.variant == VariantSpartan && !WhiteOnMove(currentMove) ||
         gameInfo.variant == VariantGiveaway) {
@@ -1594,6 +1644,8 @@ PromotionPopUp ()
         SetPromo(_("Chancellor"), --count, 'c');
       }
       SetPromo(_("Queen"), --count, 'q');
+      if(gameInfo.variant == VariantChuChess)
+        SetPromo(_("Lion"), --count, 'l');
     }
   } else // [HGM] shogi
   {
@@ -2136,12 +2188,17 @@ static Option *
 Exp (int n, int x, int y)
 {
     static int but1, but3, oldW, oldH;
-    int menuNr = -3, sizing;
+    int menuNr = -3, sizing, f, r;
 
     if(n == 0) { // motion
        if(SeekGraphClick(Press, x, y, 1)) return NULL;
-       if(but1 && !PromoScroll(x, y)) DragPieceMove(x, y);
+       if((but1 || dragging == 2) && !PromoScroll(x, y)) DragPieceMove(x, y);
        if(but3) MovePV(x, y, lineGap + BOARD_HEIGHT * (squareSize + lineGap));
+       if(appData.highlightDragging) {
+           f = EventToSquare(x, BOARD_WIDTH);  if ( flipView && f >= 0) f = BOARD_WIDTH - 1 - f;
+           r = EventToSquare(y, BOARD_HEIGHT); if (!flipView && r >= 0) r = BOARD_HEIGHT - 1 - r;
+           HoverEvent(x, y, f, r);
+       }
        return NULL;
     }
     if(n != 10 && PopDown(PromoDlg)) fromX = fromY = -1; // user starts fiddling with board when promotion dialog is up
@@ -2339,7 +2396,6 @@ static char *Extensions[] = {
 ".trn",
 ".bin",
 ".wav",
-".xpm",
 ".ini",
 ".log",
 "",
diff --git a/draw.c b/draw.c
index a306aba..f89468d 100644 (file)
--- a/draw.c
+++ b/draw.c
@@ -140,11 +140,12 @@ SelectPieces(VariantClass v)
        for(p=0; p<=(int)WhiteKing; p++)
           pngPieceBitmaps[i][p] = pngPieceBitmaps2[i][p]; // defaults
        if(v == VariantShogi) {
-          pngPieceBitmaps[i][(int)WhiteCannon] = pngPieceBitmaps2[i][(int)WhiteKing+1];
+          pngPieceBitmaps[i][(int)WhiteCannon] = pngPieceBitmaps2[i][(int)WhiteTokin];
           pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteKing+2];
-          pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhiteKing+3];
-          pngPieceBitmaps[i][(int)WhiteGrasshopper] = pngPieceBitmaps2[i][(int)WhiteKing+4];
+          pngPieceBitmaps[i][(int)WhiteGrasshopper] = pngPieceBitmaps2[i][(int)WhiteKing+3];
+          pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhiteKing+4];
           pngPieceBitmaps[i][(int)WhiteQueen] = pngPieceBitmaps2[i][(int)WhiteLance];
+          pngPieceBitmaps[i][(int)WhiteFalcon] = pngPieceBitmaps2[i][(int)WhiteMonarch]; // for Sho Shogi
        }
 #ifdef GOTHIC
        if(v == VariantGothic) {
@@ -155,6 +156,15 @@ SelectPieces(VariantClass v)
           pngPieceBitmaps[i][(int)WhiteAngel]    = pngPieceBitmaps2[i][(int)WhiteFalcon];
           pngPieceBitmaps[i][(int)WhiteMarshall] = pngPieceBitmaps2[i][(int)WhiteAlfil];
        }
+       if(v == VariantChuChess) {
+          pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteLion];
+       }
+       if(v == VariantChu) {
+          pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteKing+1];
+          pngPieceBitmaps[i][(int)WhiteUnicorn] = pngPieceBitmaps2[i][(int)WhiteCat];
+          pngPieceBitmaps[i][(int)WhiteSilver]  = pngPieceBitmaps2[i][(int)WhiteSword];
+          pngPieceBitmaps[i][(int)WhiteFalcon]  = pngPieceBitmaps2[i][(int)WhiteDagger];
+       }
     }
 }
 
@@ -228,12 +238,16 @@ CreatePNGBoard (char *s, int kind)
 
 char *pngPieceNames[] = // must be in same order as internal piece encoding
 { "Pawn", "Knight", "Bishop", "Rook", "Queen", "Advisor", "Elephant", "Archbishop", "Marshall", "Gold", "Commoner",
-  "Canon", "Nightrider", "CrownedBishop", "CrownedRook", "Princess", "Chancellor", "Hawk", "Lance", "Cobra", "Unicorn", "King",
-  "GoldKnight", "GoldLance", "GoldPawn", "GoldSilver", NULL
+  "Canon", "Nightrider", "CrownedBishop", "CrownedRook", "Princess", "Chancellor", "Hawk", "Lance", "Cobra", "Unicorn", "Lion",
+  "GoldPawn", "HSword", "PromoHorse", "PromoDragon", "Leopard", "PromoSword", "Prince", "Phoenix", "Kylin", "PromoRook", "PromoHSword",
+  "Dolphin", "Chancellor", "Unicorn", "Hawk", "Sword", "Princess", "HCrown", "Knight", "Elephant", "PromoBishop", "King",
+  "Claw", "GoldKnight", "GoldLance", "GoldSilver", NULL
 };
 
+char *backupPiece[] = { "King", "Queen", "Lion" }; // pieces that map on other when not kanji
+
 RsvgHandle *
-LoadSVG (char *dir, int color, int piece)
+LoadSVG (char *dir, int color, int piece, int retry)
 {
     char buf[MSG_SIZ];
   RsvgHandle *svg=svgPieces[color][piece];
@@ -242,7 +256,8 @@ LoadSVG (char *dir, int color, int piece)
   cairo_surface_t *img;
   cairo_t *cr;
 
-    snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White", pngPieceNames[piece]);
+    snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White",
+             retry ? backupPiece[piece - WhiteMonarch] : pngPieceNames[piece]);
 
     if(svg || *dir && (svg = rsvg_handle_new_from_file(buf, &svgerror))) {
 
@@ -260,6 +275,8 @@ LoadSVG (char *dir, int color, int piece)
 
       return svg;
     }
+    if(!retry && piece >= WhiteMonarch && piece <= WhiteNothing) // pieces that are only different in kanji sets
+        return LoadSVG(dir, color, piece, 1);
     if(svgerror)
        g_error_free(svgerror);
     return NULL;
@@ -275,22 +292,22 @@ ScaleOnePiece (int color, int piece)
 
   g_type_init ();
 
-  svgPieces[color][piece] = LoadSVG("", color, piece); // this fills pngPieceImages if we had cached svg with bitmap of wanted size
+  svgPieces[color][piece] = LoadSVG("", color, piece, 0); // this fills pngPieceImages if we had cached svg with bitmap of wanted size
 
   if(!pngPieceImages[color][piece]) { // we don't have cached bitmap (implying we did not have cached svg)
     if(*appData.pieceDirectory) { // user specified piece directory
       snprintf(buf, MSG_SIZ, "%s/%s%s.png", appData.pieceDirectory, color ? "Black" : "White", pngPieceNames[piece]);
       img = cairo_image_surface_create_from_png (buf); // try if there are png pieces there
       if(cairo_surface_status(img) != CAIRO_STATUS_SUCCESS) { // there were not
-       svgPieces[color][piece] = LoadSVG(appData.pieceDirectory, color, piece); // so try if he has svg there
+       svgPieces[color][piece] = LoadSVG(appData.pieceDirectory, color, piece, 0); // so try if he has svg there
       } else pngPieceImages[color][piece] = img;
     }
   }
 
   if(!pngPieceImages[color][piece]) { // we still did not manage to acquire a piece bitmap
     static int warned = 0;
-    if(!(svgPieces[color][piece] = LoadSVG(SVGDIR, color, piece)) && !warned) { // try to fall back on installed svg
-      char *msg = _("No default pieces installed\nSelect your own -pieceImageDirectory");
+    if(!(svgPieces[color][piece] = LoadSVG(SVGDIR, color, piece, 0)) && !warned) { // try to fall back on installed svg 
+      char *msg = _("No default pieces installed!\nSelect your own using '-pieceImageDirectory'.");
       printf("%s\n", msg); // give up
       DisplayError(msg, 0);
       warned = 1; // prevent error message being repeated for each piece type
@@ -641,6 +658,8 @@ pngDrawPiece (cairo_surface_t *dest, ChessSquare piece, int square_color, int x,
     cairo_destroy (cr);
 }
 
+static char *markerColor[8] = { "#FFFF00", "#FF0000", "#00FF00", "#0000FF", "#00FFFF", "#FF00FF", "#FFFFFF", "#000000" };
+
 void
 DoDrawDot (cairo_surface_t *cs, int marker, int x, int y, int r)
 {
@@ -653,7 +672,7 @@ DoDrawDot (cairo_surface_t *cs, int marker, int x, int y, int r)
            cairo_stroke_preserve(cr);
            SetPen(cr, 2, marker == 2 ? "#FFFFFF" : "#000000", 0);
        } else {
-           SetPen(cr, 2, marker == 2 ? "#FF0000" : "#FFFF00", 0);
+           SetPen(cr, 2, markerColor[marker-1], 0);
        }
        cairo_fill(cr);
 
index 3e966be..1546cc8 100644 (file)
@@ -540,6 +540,7 @@ defined variant names are:
 <tr><td>unknown</td><td>Unknown variant (not supported)</td></tr>\r
 </table>\r
 \r
+As of XBoard 4.8, engines can define arbitrary variant names; see the "feature" and "setup" commands in <a href="#9">section 9</a>.\r
 </dd>\r
 \r
 <dt>quit</dt>\r
@@ -837,7 +838,7 @@ only applies to normal Chess;
 Obviously in variants that cannot be described by a FEN for normal Chess,\r
 e.g. because the board is not 8x8, other pieces then PNBRQK participate, \r
 there are holdings that need to be specified, etc., \r
-xboard will use a FEN format that is standard or suitable for that varant.\r
+xboard will use a FEN format that is standard or suitable for that variant.\r
 In particular, in FRC or CRC, WinBoard will use Shredder-FEN or X-FEN standard,\r
 i.e. it can use the rook-file indicator letter to represent a castling right \r
 (like HAha) whenever it wants, but if it uses KQkq, this will always refer \r
@@ -1342,10 +1343,16 @@ correct value for your engine (just "normal" in most cases) rather
 than leaving the default in place, so that the user will get an\r
 appropriate error message if he tries to play a variant that your\r
 engine does not support.</span>\r
+<span class="version47">As of XBoard 4.8 a variant name not known to the GUI will be\r
+considered an engine-defined variant.\r
+The user will be given the opportunity to select such variants,\r
+but when this happens, the engine should define its meaning\r
+in detail with the aid of a "setup" command defined below,\r
+in order to avoid an error.</span>\r
 <br />\r
 <span class="version43">If your engine can play variants on a deviating board size,\r
 like capablanca on an 8x8 board, or capablanca crazyhouse,\r
-it can list them amongst the variants with a prefix spcifying board size plus\r
+it can list them amongst the variants with a prefix specifying board size plus\r
 holdings size, like 8x8+0_capablanca or 10x8+7_capablanca.\r
 If it is capable of playing any variant with an arbitrary board size,\r
 it should list "boardsize" as one of the variants.\r
@@ -1510,6 +1517,46 @@ in this case, you must set done=1 before xboard will enter normal operation.
 </dl>\r
 </dd>\r
 \r
+<dt>setup FEN</dt>\r
+<dt>setup (PIECETOCHAR) FEN</dt>\r
+<dt>setup (PIECETOCHAR) WxH+S_PARENTVARIANT FEN</dt>\r
+<dd>The engine can optionally send a setup command to the GUI in reply\r
+to the variant command.\r
+In the simplest form this sends the FEN of the initial position.\r
+This can be used to implement engines for non-standard variants\r
+that only differ from standard variants through the initial position.\r
+(E.g. many of the 'wild' boards you can play on an ICS.)\r
+Whether the GUI should obey or ignore this command depends on the situation.\r
+Normally it would ignore it in variants where it knows the standard initial position\r
+and legality testing is on, or when the user specified an initial position.\r
+In other cases it will use the FEN sent by the first engine\r
+for setting up the initial position, as if it was an externally supplied position.\r
+Such a position will always be sent to a second engine that might be involved,\r
+and any setup commands received from the latter will always be ignored.\r
+(This to allow for shuffle games, where the two engines might pick different setups.)\r
+When no initial position is known, such as for 'catch-all' variants like fairy,\r
+or whenever the board width is overruled to a non-standard value,\r
+the FEN will be used as default initial position even when legality testing is on.\r
+</dd>\r
+<dd>Optionally the meaning of the piece ID letters in the FEN can be defined\r
+between parentheses; this will be interpreted as if it was the value of a\r
+-pieceToCharTable command-line option, mapping letters to GUI piece types.\r
+Also optionally behind that, the setup command can specify board width W,\r
+board height H and holdings size S, as well as a 'parent variant'.\r
+This is typically done in response to a variant command with a non-standard name,\r
+about which the GUI is not supposed to know anything at all.\r
+The engine can then specify board size, participating pieces, initial setup,\r
+and other rule details (inherited from the parent variant),\r
+saving the user the trouble to configure the GUI for this non-standard variant.\r
+Example:\r
+<pre>\r
+  setup (PN.RQKpn.rqk) 6x6+0_fairy rnqknr/pppppp/6/6/PPPPPP/RNQKNR w - - 0 1\r
+</pre>\r
+could be used by an engine for Los-Alamos Chess in response to 'variant losalamos',\r
+and would automatically switch the GUI to this variant as soon as the user\r
+selected it from the GUI menu.\r
+The PIECETOCHAR element would ensure a Bishop would not be accepted as promotion choice. \r
+</dd>\r
 \r
 <dt>Illegal move: MOVE</dt>\r
 <dt>Illegal move (REASON): MOVE</dt>\r
index 10bb064..6dcc1f7 100644 (file)
@@ -93,13 +93,14 @@ void DrawSeekDot P((int x, int y, int color));
 void PopUpMoveDialog P((char first));
 
 void RingBell P((void));
+int  Roar P((void));
 void PlayIcsWinSound P((void));
 void PlayIcsLossSound P((void));
 void PlayIcsDrawSound P((void));
 void PlayIcsUnfinishedSound P((void));
 void PlayAlarmSound P((void));
 void PlayTellSound P((void));
-void PlaySoundFile P((char *name));
+int  PlaySoundFile P((char *name));
 void PlaySoundByColor P((void));
 void EchoOn P((void));
 void EchoOff P((void));
@@ -128,7 +129,7 @@ DelayedEventCallback GetDelayedEvent P((void));
 void CancelDelayedEvent P((void));
 // [HGM] mouse: next six used by mouse handler, which was moved to backend
 extern int fromX, fromY, toX, toY;
-void PromotionPopUp P((void));
+void PromotionPopUp P((char choice));
 void DragPieceBegin P((int x, int y, Boolean instantly));
 void DragPieceEnd P((int x, int y));
 void DragPieceMove P((int x, int y));
index 19bad0b..62b4e83 100644 (file)
@@ -305,7 +305,7 @@ GameListBuild (FILE *f)
            } while (cm == PGNTag || cm == Comment);
            if(1) {
                int btm=0;
-               if(currentListGame->gameInfo.fen) ParseFEN(boards[scratch], &btm, currentListGame->gameInfo.fen);
+               if(currentListGame->gameInfo.fen) ParseFEN(boards[scratch], &btm, currentListGame->gameInfo.fen, FALSE);
                else CopyBoard(boards[scratch], initialPosition);
                plyNr = (btm != 0);
                currentListGame->moves = PackGame(boards[scratch]);
index d59adf1..750e64f 100644 (file)
@@ -175,6 +175,7 @@ extern char *getenv();
    // redefine some defaults
 #  undef ICS_LOGON
 #  undef SYSCONFDIR
+#  undef DATADIR
 #  define ICS_LOGON "Library/Preferences/XboardICS.conf"
 #  define SYSCONFDIR "../etc"
 #  define DATADIR dataDir
@@ -679,6 +680,7 @@ PrintArg (ArgType t)
     case ArgTwo:
     case ArgNone:
     case ArgCommSettings:
+    default:
       break;
   }
   return p;
@@ -761,7 +763,7 @@ main (int argc, char **argv)
     debugFP = stderr;
 
     if(argc > 1 && (!strcmp(argv[1], "-v" ) || !strcmp(argv[1], "--version" ))) {
-       printf("%s version %s\n", PACKAGE_NAME, PACKAGE_VERSION);
+        printf("%s version %s\n\n  configure options: %s\n", PACKAGE_NAME, PACKAGE_VERSION, CONFIGURE_OPTIONS);
        exit(0);
     }
 
index 8fb5dca..b618013 100644 (file)
@@ -449,7 +449,7 @@ CreateMenuPopup (Option *opt, int n, int def)
            if(accelerator_mods & GDK_CONTROL_MASK) {  // in OSX use Meta where Linux uses Ctrl
                accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag
                accelerator_mods |= GDK_META_MASK;     // set Meta flag
-           } 
+           }
 #endif
            gtk_widget_add_accelerator (GTK_WIDGET(entry), "activate",GtkAccelerators,
                                        accelerator_key, accelerator_mods, GTK_ACCEL_VISIBLE);
@@ -1511,7 +1511,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width);
                gtkosx_application_set_menu_bar(theApp, GTK_MENU_SHELL(menuBar));
                gtkosx_application_insert_app_menu_item(theApp, GTK_MENU_ITEM(helpMenu[8].handle), 0); // hack
                gtkosx_application_sync_menubar(theApp);
-           } 
+           }
 #endif
            break;
          case BoxEnd:
diff --git a/menus.c b/menus.c
index 4d20041..11fe7a9 100644 (file)
--- a/menus.c
+++ b/menus.c
@@ -215,7 +215,7 @@ CopyPositionProc ()
     static char *selected_fen_position=NULL;
     if(gameMode == EditPosition) EditPositionDone(TRUE);
     if (selected_fen_position) free(selected_fen_position);
-    selected_fen_position = (char *)PositionToFEN(currentMove, NULL);
+    selected_fen_position = (char *)PositionToFEN(currentMove, NULL, 1);
     if (!selected_fen_position) return;
     CopySomething(selected_fen_position);
 }
@@ -580,8 +580,8 @@ CreateBookDelayed ()
 
 MenuItem fileMenu[] = {
   {N_("New Game"),             "<Ctrl>n",          "NewGame",              ResetGameEvent},
-  {N_("New Shuffle Game ..."),  NULL,              "NewShuffleGame",       ShuffleMenuProc},
-  {N_("New Variant ..."),      "<Alt><Shift>v",    "NewVariant",           NewVariantProc},// [HGM] variant: not functional yet
+  {N_("New Shuffle Game..."),   NULL,              "NewShuffleGame",       ShuffleMenuProc},
+  {N_("New Variant..."),       "<Alt><Shift>v",    "NewVariant",           NewVariantProc},// [HGM] variant: not functional yet
   {"----",                      NULL,               NULL,                  NothingProc},
   {N_("Load Game"),            "<Ctrl>o",          "LoadGame",             LoadGameProc,           CHECK},
   {N_("Load Position"),        "<Ctrl><Shift>o",   "LoadPosition",         LoadPositionProc},
@@ -681,11 +681,11 @@ MenuItem actionMenu[] = {
 };
 
 MenuItem engineMenu[100] = {
-  {N_("Load New 1st Engine ..."),  NULL,     "LoadNew1stEngine", LoadEngine1Proc},
-  {N_("Load New 2nd Engine ..."),  NULL,     "LoadNew2ndEngine", LoadEngine2Proc},
+  {N_("Load New 1st Engine..."),   NULL,     "LoadNew1stEngine", LoadEngine1Proc},
+  {N_("Load New 2nd Engine..."),   NULL,     "LoadNew2ndEngine", LoadEngine2Proc},
   {"----",                         NULL,      NULL,              NothingProc},
-  {N_("Engine #1 Settings ..."),   NULL,     "Engine#1Settings", FirstSettingsProc},
-  {N_("Engine #2 Settings ..."),   NULL,     "Engine#2Settings", SecondSettingsProc},
+  {N_("Engine #1 Settings..."),    NULL,     "Engine#1Settings", FirstSettingsProc},
+  {N_("Engine #2 Settings..."),    NULL,     "Engine#2Settings", SecondSettingsProc},
   {"----",                         NULL,      NULL,              NothingProc},
   {N_("Hint"),                     NULL,     "Hint",             HintEvent},
   {N_("Book"),                     NULL,     "Book",             BookEvent},
@@ -697,17 +697,17 @@ MenuItem engineMenu[100] = {
 
 MenuItem optionsMenu[] = {
 #ifdef OPTIONSDIALOG
-  {N_("General ..."),             NULL,             "General",             OptionsProc},
+  {N_("General..."),              NULL,             "General",             OptionsProc},
 #endif
-  {N_("Time Control ..."),       "<Alt><Shift>t",   "TimeControl",         TimeControlProc},
-  {N_("Common Engine ..."),      "<Alt><Shift>u",   "CommonEngine",        UciMenuProc},
-  {N_("Adjudications ..."),      "<Alt><Shift>j",   "Adjudications",       EngineMenuProc},
-  {N_("ICS ..."),                 NULL,             "ICS",                 IcsOptionsProc},
-  {N_("Match ..."),               NULL,             "Match",               MatchOptionsProc},
-  {N_("Load Game ..."),           NULL,             "LoadGame",            LoadOptionsProc},
-  {N_("Save Game ..."),           NULL,             "SaveGame",            SaveOptionsProc},
-  {N_("Game List ..."),           NULL,             "GameList",            GameListOptionsProc},
-  {N_("Sounds ..."),              NULL,             "Sounds",              SoundOptionsProc},
+  {N_("Time Control..."),        "<Alt><Shift>t",   "TimeControl",         TimeControlProc},
+  {N_("Common Engine..."),       "<Alt><Shift>u",   "CommonEngine",        UciMenuProc},
+  {N_("Adjudications..."),       "<Alt><Shift>j",   "Adjudications",       EngineMenuProc},
+  {N_("ICS..."),                  NULL,             "ICS",                 IcsOptionsProc},
+  {N_("Tournament..."),           NULL,             "Match",               MatchOptionsProc},
+  {N_("Load Game..."),            NULL,             "LoadGame",            LoadOptionsProc},
+  {N_("Save Game..."),            NULL,             "SaveGame",            SaveOptionsProc},
+  {N_("Game List..."),            NULL,             "GameList",            GameListOptionsProc},
+  {N_("Sounds..."),               NULL,             "Sounds",              SoundOptionsProc},
   {"----",                        NULL,              NULL,                 NothingProc},
 #ifndef OPTIONSDIALOG
   {N_("Always Queen"),           "<Ctrl><Shift>q",  "AlwaysQueen",         AlwaysQueenProc},
diff --git a/moves.c b/moves.c
index 4852ee2..7ffe59d 100644 (file)
--- a/moves.c
+++ b/moves.c
@@ -98,7 +98,7 @@ SameColor (ChessSquare piece1, ChessSquare piece2)
             (int) piece2 <  (int) EmptySquare);
 }
 #else
-#define SameColor(piece1, piece2) (piece1 < EmptySquare && piece2 < EmptySquare && (piece1 < BlackPawn) == (piece2 < BlackPawn))
+#define SameColor(piece1, piece2) (piece1 < EmptySquare && piece2 < EmptySquare && (piece1 < BlackPawn) == (piece2 < BlackPawn) || piece1 == DarkSquare || piece2 == DarkSquare)
 #endif
 
 char pieceToChar[] = {
@@ -165,6 +165,207 @@ CompareBoards (Board board1, Board board2)
     return TRUE;
 }
 
+// [HGM] move generation now based on hierarchy of subroutines for rays and combinations of rays
+
+void
+SlideForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int i, rt, ft = ff;
+  for (i = 1;; i++) {
+      rt = rf + i;
+      if (rt >= BOARD_HEIGHT) break;
+      if (SameColor(board[rf][ff], board[rt][ft])) break;
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+      if (board[rt][ft] != EmptySquare) break;
+  }
+}
+
+void
+SlideBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int i, rt, ft = ff;
+  for (i = 1;; i++) {
+      rt = rf - i;
+      if (rt < 0) break;
+      if (SameColor(board[rf][ff], board[rt][ft])) break;
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+      if (board[rt][ft] != EmptySquare) break;
+  }
+}
+
+void
+SlideVertical (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  SlideForward(board, flags, rf, ff, callback, closure);
+  SlideBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+SlideSideways (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int i, s, rt = rf, ft;
+  for(s = -1; s <= 1; s+= 2) {
+    for (i = 1;; i++) {
+      ft = ff + i*s;
+      if (ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
+      if (SameColor(board[rf][ff], board[rt][ft])) break;
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+      if (board[rt][ft] != EmptySquare) break;
+    }
+  }
+}
+
+void
+SlideDiagForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int i, s, rt, ft;
+  for(s = -1; s <= 1; s+= 2) {
+    for (i = 1;; i++) {
+      rt = rf + i;
+      ft = ff + i * s;
+      if (rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
+      if (SameColor(board[rf][ff], board[rt][ft])) break;
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+      if (board[rt][ft] != EmptySquare) break;
+    }
+  }
+}
+
+void
+SlideDiagBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int i, s, rt, ft;
+  for(s = -1; s <= 1; s+= 2) {
+    for (i = 1;; i++) {
+      rt = rf - i;
+      ft = ff + i * s;
+      if (rt < 0 || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
+      if (SameColor(board[rf][ff], board[rt][ft])) break;
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+      if (board[rt][ft] != EmptySquare) break;
+    }
+  }
+}
+
+void
+Rook (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  SlideVertical(board, flags, rf, ff, callback, closure);
+  SlideSideways(board, flags, rf, ff, callback, closure);
+}
+
+void
+Bishop (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  SlideDiagForward(board, flags, rf, ff, callback, closure);
+  SlideDiagBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+Sting (Board board, int flags, int rf, int ff, int dy, int dx, MoveCallback callback, VOIDSTAR closure)
+{ // Lion-like move of Horned Falcon and Souring Eagle
+  int ft = ff + dx, rt = rf + dy;
+  if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) return;
+  if (!SameColor(board[rf][ff], board[rt][ft]))
+    callback(board, flags, board[rt][ft] != EmptySquare ? FirstLeg : NormalMove, rf, ff, rt, ft, closure);
+  ft += dx; rt += dy;
+  if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) return;
+  if (!SameColor(board[rf][ff], board[rt][ft]))
+    callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int ft = ff, rt = rf + 1;
+  if (rt >= BOARD_HEIGHT) return;
+  if (SameColor(board[rf][ff], board[rt][ft])) return;
+  callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int ft = ff, rt = rf - 1;
+  if (rt < 0) return;
+  if (SameColor(board[rf][ff], board[rt][ft])) return;
+  callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepSideways (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int ft, rt = rf;
+  ft = ff + 1;
+  if (!(rt >= BOARD_HEIGHT || ft >= BOARD_RGHT) && !SameColor(board[rf][ff], board[rt][ft]))
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+  ft = ff - 1;
+  if (!(rt >= BOARD_HEIGHT || ft < BOARD_LEFT) && !SameColor(board[rf][ff], board[rt][ft]))
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepDiagForward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int ft, rt = rf + 1;
+  if (rt >= BOARD_HEIGHT) return;
+  ft = ff + 1;
+  if (!(rt >= BOARD_HEIGHT || ft >= BOARD_RGHT) && !SameColor(board[rf][ff], board[rt][ft]))
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+  ft = ff - 1;
+  if (!(rt >= BOARD_HEIGHT || ft < BOARD_LEFT) && !SameColor(board[rf][ff], board[rt][ft]))
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepDiagBackward (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  int ft, rt = rf - 1;
+  if(rt < 0) return;
+  ft = ff + 1;
+  if (!(rt < 0 || ft >= BOARD_RGHT) && !SameColor(board[rf][ff], board[rt][ft]))
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+  ft = ff - 1;
+  if (!(rt < 0 || ft < BOARD_LEFT) && !SameColor(board[rf][ff], board[rt][ft]))
+      callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+}
+
+void
+StepVertical (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  StepForward(board, flags, rf, ff, callback, closure);
+  StepBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+Ferz (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  StepDiagForward(board, flags, rf, ff, callback, closure);
+  StepDiagBackward(board, flags, rf, ff, callback, closure);
+}
+
+void
+Wazir (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+  StepVertical(board, flags, rf, ff, callback, closure);
+  StepSideways(board, flags, rf, ff, callback, closure);
+}
+
+void
+Knight (Board board, int flags, int rf, int ff, MoveCallback callback, VOIDSTAR closure)
+{
+    int i, j, s, rt, ft;
+    for (i = -1; i <= 1; i += 2)
+       for (j = -1; j <= 1; j += 2)
+           for (s = 1; s <= 2; s++) {
+               rt = rf + i*s;
+               ft = ff + j*(3-s);
+               if (!(rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT)
+                   && ( gameInfo.variant != VariantXiangqi || board[rf+i*(s-1)][ff+j*(2-s)] == EmptySquare)
+                   && !SameColor(board[rf][ff], board[rt][ft]))
+                   callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+           }
+}
 
 /* Call callback once for each pseudo-legal move in the given
    position, except castling moves. A move is pseudo-legal if it is
@@ -181,7 +382,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
     int rf, ff;
     int i, j, d, s, fs, rs, rt, ft, m;
     int epfile = (signed char)board[EP_STATUS]; // [HGM] gamestate: extract ep status from board
-    int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand ? 3 : 1;
+    int promoRank = gameInfo.variant == VariantMakruk || gameInfo.variant == VariantGrand || gameInfo.variant == VariantChuChess ? 3 : 1;
 
     for (rf = 0; rf < BOARD_HEIGHT; rf++)
       for (ff = BOARD_LEFT; ff < BOARD_RGHT; ff++) {
@@ -195,7 +396,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
           if(PieceToChar(piece) == '~')
                  piece = (ChessSquare) ( DEMOTED piece );
           if(filter != EmptySquare && piece != filter) continue;
-          if(gameInfo.variant == VariantShogi)
+          if(IS_SHOGI(gameInfo.variant))
                  piece = (ChessSquare) ( SHOGI piece );
 
           switch ((int)piece) {
@@ -309,7 +510,6 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
             case BlackUnicorn:
            case WhiteKnight:
            case BlackKnight:
-            mounted:
              for (i = -1; i <= 1; i += 2)
                for (j = -1; j <= 1; j += 2)
                  for (s = 1; s <= 2; s++) {
@@ -366,47 +566,77 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
 
             /* Gold General (and all its promoted versions) . First do the */
             /* diagonal forward steps, then proceed as normal Wazir        */
-            case SHOGI WhiteWazir:
             case SHOGI (PROMOTED WhitePawn):
+               if(gameInfo.variant == VariantShogi) goto WhiteGold;
+            case SHOGI (PROMOTED BlackPawn):
+               if(gameInfo.variant == VariantShogi) goto BlackGold;
+               SlideVertical(board, flags, rf, ff, callback, closure);
+               break;
+
             case SHOGI (PROMOTED WhiteKnight):
-            case SHOGI (PROMOTED WhiteQueen):
-            case SHOGI (PROMOTED WhiteFerz):
-             for (s = -1; s <= 1; s += 2) {
-                  if (rf < BOARD_HEIGHT-1 && ff + s >= BOARD_LEFT && ff + s < BOARD_RGHT &&
-                      !SameColor(board[rf][ff], board[rf + 1][ff + s])) {
-                      callback(board, flags, NormalMove,
-                              rf, ff, rf + 1, ff + s, closure);
-                 }
-              }
-              goto finishGold;
+               if(gameInfo.variant == VariantShogi) goto WhiteGold;
+            case SHOGI BlackDrunk:
+            case SHOGI BlackAlfil:
+               Ferz(board, flags, rf, ff, callback, closure);
+               StepSideways(board, flags, rf, ff, callback, closure);
+               StepBackward(board, flags, rf, ff, callback, closure);
+               break;
 
-            case SHOGI BlackWazir:
-            case SHOGI (PROMOTED BlackPawn):
             case SHOGI (PROMOTED BlackKnight):
+               if(gameInfo.variant == VariantShogi) goto BlackGold;
+            case SHOGI WhiteDrunk:
+            case SHOGI WhiteAlfil:
+               Ferz(board, flags, rf, ff, callback, closure);
+               StepSideways(board, flags, rf, ff, callback, closure);
+               StepForward(board, flags, rf, ff, callback, closure);
+               break;
+
+
+            case SHOGI WhiteStag:
+            case SHOGI BlackStag:
+               if(gameInfo.variant == VariantShogi) goto BlackGold;
+               SlideVertical(board, flags, rf, ff, callback, closure);
+               Ferz(board, flags, rf, ff, callback, closure);
+               StepSideways(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI (PROMOTED WhiteQueen):
+            case SHOGI WhiteTokin:
+            case SHOGI WhiteWazir:
+           WhiteGold:
+               StepDiagForward(board, flags, rf, ff, callback, closure);
+               Wazir(board, flags, rf, ff, callback, closure);
+               break;
+
             case SHOGI (PROMOTED BlackQueen):
-            case SHOGI (PROMOTED BlackFerz):
-             for (s = -1; s <= 1; s += 2) {
-                  if (rf > 0 && ff + s >= BOARD_LEFT && ff + s < BOARD_RGHT &&
-                      !SameColor(board[rf][ff], board[rf - 1][ff + s])) {
-                      callback(board, flags, NormalMove,
-                              rf, ff, rf - 1, ff + s, closure);
-                 }
-             }
+            case SHOGI BlackTokin:
+            case SHOGI BlackWazir:
+            BlackGold:
+               StepDiagBackward(board, flags, rf, ff, callback, closure);
+               Wazir(board, flags, rf, ff, callback, closure);
+               break;
 
             case WhiteWazir:
             case BlackWazir:
-            finishGold:
-              for (d = 0; d <= 1; d++)
-                for (s = -1; s <= 1; s += 2) {
-                      rt = rf + s * d;
-                      ft = ff + s * (1 - d);
-                      if (!(rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT)
-                          && !SameColor(board[rf][ff], board[rt][ft]) &&
-                          (gameInfo.variant != VariantXiangqi || InPalace(rt, ft) ) )
-                               callback(board, flags, NormalMove,
-                                        rf, ff, rt, ft, closure);
-                      }
-             break;
+               Wazir(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteMarshall:
+            case SHOGI BlackMarshall:
+               Ferz(board, flags, rf, ff, callback, closure);
+               for (d = 0; d <= 1; d++)
+                   for (s = -2; s <= 2; s += 4) {
+                       rt = rf + s * d;
+                       ft = ff + s * (1 - d);
+                       if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
+                       if (!SameColor(board[rf][ff], board[rt][ft]) )
+                           callback(board, flags, NormalMove, rf, ff, rt, ft, closure);
+                   }
+               break;
+
+            case SHOGI WhiteAngel:
+            case SHOGI BlackAngel:
+               Wazir(board, flags, rf, ff, callback, closure);
 
             case WhiteAlfil:
             case BlackAlfil:
@@ -422,8 +652,8 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
                           && !SameColor(board[rf][ff], board[rt][ft]))
                                callback(board, flags, NormalMove,
                                         rf, ff, rt, ft, closure);
-                      if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier
-                                                             || gameInfo.variant == VariantXiangqi) continue; // classical Alfil
+                      if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+                         gameInfo.variant == VariantChu      || gameInfo.variant == VariantXiangqi) continue; // classical Alfil
                       rt = rf + rs; // in unknown variant we assume Modern Elephant, which can also do one step
                       ft = ff + fs;
                       if (!(rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT)
@@ -442,6 +672,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
             /* Make Dragon-Horse also do Dababba moves outside Shogi, for better disambiguation in variant Fairy */
            case WhiteCardinal:
            case BlackCardinal:
+              if(gameInfo.variant == VariantChuChess) goto DragonHorse;
               for (d = 0; d <= 1; d++) // Dababba moves that Rook cannot do
                 for (s = -2; s <= 2; s += 4) {
                      rt = rf + s * d;
@@ -454,36 +685,31 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
             /* Shogi Dragon Horse has to continue with Wazir after Bishop */
             case SHOGI WhiteCardinal:
             case SHOGI BlackCardinal:
-              m++;
+            case SHOGI WhitePCardinal:
+            case SHOGI BlackPCardinal:
+            DragonHorse:
+               Bishop(board, flags, rf, ff, callback, closure);
+               Wazir(board, flags, rf, ff, callback, closure);
+               break;
 
             /* Capablanca Archbishop continues as Knight                  */
             case WhiteAngel:
             case BlackAngel:
-              m++;
+               Knight(board, flags, rf, ff, callback, closure);
 
             /* Shogi Bishops are ordinary Bishops */
             case SHOGI WhiteBishop:
             case SHOGI BlackBishop:
+            case SHOGI WhitePBishop:
+            case SHOGI BlackPBishop:
            case WhiteBishop:
            case BlackBishop:
-             for (rs = -1; rs <= 1; rs += 2)
-                for (fs = -1; fs <= 1; fs += 2)
-                 for (i = 1;; i++) {
-                     rt = rf + (i * rs);
-                     ft = ff + (i * fs);
-                      if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
-                     if (SameColor(board[rf][ff], board[rt][ft])) break;
-                     callback(board, flags, NormalMove,
-                              rf, ff, rt, ft, closure);
-                     if (board[rt][ft] != EmptySquare) break;
-                 }
-                if(m==1) goto mounted;
-                if(m==2) goto finishGold;
-                /* Bishop falls through */
-             break;
+               Bishop(board, flags, rf, ff, callback, closure);
+               break;
 
             /* Shogi Lance is unlike anything, and asymmetric at that */
             case SHOGI WhiteQueen:
+              if(gameInfo.variant == VariantChu) goto doQueen;
               for(i = 1;; i++) {
                       rt = rf + i;
                       ft = ff;
@@ -496,6 +722,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
               break;
 
             case SHOGI BlackQueen:
+              if(gameInfo.variant == VariantChu) goto doQueen;
               for(i = 1;; i++) {
                       rt = rf - i;
                       ft = ff;
@@ -510,6 +737,7 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
             /* Make Dragon-King Dababba & Rook-like outside Shogi, for better disambiguation in variant Fairy */
            case WhiteDragon:
            case BlackDragon:
+              if(gameInfo.variant == VariantChuChess) goto DragonKing;
               for (d = 0; d <= 1; d++) // Dababba moves that Rook cannot do
                 for (s = -2; s <= 2; s += 4) {
                      rt = rf + s * d;
@@ -524,112 +752,84 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
             /* Shogi Dragon King has to continue as Ferz after Rook moves */
             case SHOGI WhiteDragon:
             case SHOGI BlackDragon:
+            case SHOGI WhitePDragon:
+            case SHOGI BlackPDragon:
+            DragonKing:
+               Rook(board, flags, rf, ff, callback, closure);
+               Ferz(board, flags, rf, ff, callback, closure);
+               break;
               m++;
 
             /* Capablanca Chancellor sets flag to continue as Knight      */
             case WhiteMarshall:
             case BlackMarshall:
-              m++;
-              m += (gameInfo.variant == VariantSpartan); // in Spartan Chess Chancellor is used for Dragon King.
+               Rook(board, flags, rf, ff, callback, closure);
+               if(gameInfo.variant == VariantSpartan) // in Spartan Chess Chancellor is used for Dragon King.
+                   Ferz(board, flags, rf, ff, callback, closure);
+               else
+                   Knight(board, flags, rf, ff, callback, closure);
+               break;
 
             /* Shogi Rooks are ordinary Rooks */
             case SHOGI WhiteRook:
             case SHOGI BlackRook:
+            case SHOGI WhitePRook:
+            case SHOGI BlackPRook:
            case WhiteRook:
            case BlackRook:
           doRook:
-              for (d = 0; d <= 1; d++)
-                for (s = -1; s <= 1; s += 2)
-                 for (i = 1;; i++) {
-                     rt = rf + (i * s) * d;
-                     ft = ff + (i * s) * (1 - d);
-                      if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
-                     if (SameColor(board[rf][ff], board[rt][ft])) break;
-                     callback(board, flags, NormalMove,
-                              rf, ff, rt, ft, closure);
-                     if (board[rt][ft] != EmptySquare || i == rookRange) break;
-                 }
-                if(m==1) goto mounted;
-                if(m==2) goto finishSilver;
-             break;
+               Rook(board, flags, rf, ff, callback, closure);
+               break;
 
            case WhiteQueen:
            case BlackQueen:
-             for (rs = -1; rs <= 1; rs++)
-               for (fs = -1; fs <= 1; fs++) {
-                   if (rs == 0 && fs == 0) continue;
-                   for (i = 1;; i++) {
-                       rt = rf + (i * rs);
-                       ft = ff + (i * fs);
-                        if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
-                       if (SameColor(board[rf][ff], board[rt][ft])) break;
-                       callback(board, flags, NormalMove,
-                                rf, ff, rt, ft, closure);
-                       if (board[rt][ft] != EmptySquare) break;
-                   }
-               }
-             break;
+            case SHOGI WhiteMother:
+            case SHOGI BlackMother:
+           doQueen:
+               Rook(board, flags, rf, ff, callback, closure);
+               Bishop(board, flags, rf, ff, callback, closure);
+               break;
+
+           case SHOGI WhitePawn:
+               StepForward(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI BlackPawn:
+               StepBackward(board, flags, rf, ff, callback, closure);
+               break;
 
-            /* Shogi Pawn and Silver General: first the Pawn move,    */
-            /* then the General continues like a Ferz                 */
             case WhiteMan:
-                if(gameInfo.variant != VariantMakruk) goto commoner;
-            case SHOGI WhitePawn:
+                if(gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN) goto commoner;
             case SHOGI WhiteFerz:
-                  if (rf < BOARD_HEIGHT-1 &&
-                           !SameColor(board[rf][ff], board[rf + 1][ff]) )
-                           callback(board, flags, NormalMove,
-                                    rf, ff, rf + 1, ff, closure);
-              if(piece != SHOGI WhitePawn) goto finishSilver;
-              break;
+               Ferz(board, flags, rf, ff, callback, closure);
+               StepForward(board, flags, rf, ff, callback, closure);
+               break;
 
             case BlackMan:
-                if(gameInfo.variant != VariantMakruk) goto commoner;
-            case SHOGI BlackPawn:
+                if(gameInfo.variant != VariantMakruk && gameInfo.variant != VariantASEAN) goto commoner;
             case SHOGI BlackFerz:
-                  if (rf > 0 &&
-                           !SameColor(board[rf][ff], board[rf - 1][ff]) )
-                           callback(board, flags, NormalMove,
-                                    rf, ff, rf - 1, ff, closure);
-              if(piece == SHOGI BlackPawn) break;
+               StepBackward(board, flags, rf, ff, callback, closure);
 
             case WhiteFerz:
             case BlackFerz:
-            finishSilver:
                 /* [HGM] support Shatranj pieces */
-                for (rs = -1; rs <= 1; rs += 2)
-                  for (fs = -1; fs <= 1; fs += 2) {
-                      rt = rf + rs;
-                      ft = ff + fs;
-                      if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
-                      if (!SameColor(board[rf][ff], board[rt][ft]) &&
-                          (gameInfo.variant != VariantXiangqi || InPalace(rt, ft) ) )
-                               callback(board, flags, NormalMove,
-                                        rf, ff, rt, ft, closure);
-                 }
-                break;
+               Ferz(board, flags, rf, ff, callback, closure);
+               break;
 
            case WhiteSilver:
            case BlackSilver:
-               m++; // [HGM] superchess: use for Centaur
+               Knight(board, flags, rf, ff, callback, closure); // [HGM] superchess: use for Centaur
+
             commoner:
+            case SHOGI WhiteMonarch:
+            case SHOGI BlackMonarch:
             case SHOGI WhiteKing:
             case SHOGI BlackKing:
            case WhiteKing:
            case BlackKing:
-//            walking:
-             for (i = -1; i <= 1; i++)
-               for (j = -1; j <= 1; j++) {
-                   if (i == 0 && j == 0) continue;
-                   rt = rf + i;
-                   ft = ff + j;
-                    if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
-                   if (SameColor(board[rf][ff], board[rt][ft])) continue;
-                   callback(board, flags, NormalMove,
-                            rf, ff, rt, ft, closure);
-               }
-               if(m==1) goto mounted;
-             break;
+               Ferz(board, flags, rf, ff, callback, closure);
+               Wazir(board, flags, rf, ff, callback, closure);
+               break;
 
            case WhiteNightrider:
            case BlackNightrider:
@@ -649,20 +849,10 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
              break;
 
            Amazon:
-             /* First do Bishop,then continue like Chancellor */
-             for (rs = -1; rs <= 1; rs += 2)
-                for (fs = -1; fs <= 1; fs += 2)
-                 for (i = 1;; i++) {
-                     rt = rf + (i * rs);
-                     ft = ff + (i * fs);
-                      if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) break;
-                     if (SameColor(board[rf][ff], board[rt][ft])) break;
-                     callback(board, flags, NormalMove,
-                              rf, ff, rt, ft, closure);
-                     if (board[rt][ft] != EmptySquare) break;
-                 }
-             m++;
-             goto doRook;
+               Bishop(board, flags, rf, ff, callback, closure);
+               Rook(board, flags, rf, ff, callback, closure);
+               Knight(board, flags, rf, ff, callback, closure);
+               break;
 
            // Use Lance as Berolina / Spartan Pawn.
            case WhiteLance:
@@ -697,6 +887,127 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure,
              }
             break;
 
+            case SHOGI WhiteNothing:
+            case SHOGI BlackNothing:
+            case SHOGI WhiteLion:
+            case SHOGI BlackLion:
+            case WhiteLion:
+            case BlackLion:
+              for(rt = rf - 2; rt <= rf + 2; rt++) for(ft = ff - 2; ft <= ff + 2; ft++) {
+                if (rt < 0 || rt >= BOARD_HEIGHT || ft < BOARD_LEFT || ft >= BOARD_RGHT) continue;
+                if (!(ff == ft && rf == rt) && SameColor(board[rf][ff], board[rt][ft])) continue;
+                callback(board, flags, (rt-rf)*(rt-rf) + (ff-ft)*(ff-ft) < 3 && board[rt][ft] != EmptySquare ? FirstLeg : NormalMove,
+                         rf, ff, rt, ft, closure);
+              }
+              break;
+
+            case SHOGI WhiteFalcon:
+            case SHOGI BlackFalcon:
+            case SHOGI WhitePDagger:
+            case SHOGI BlackPDagger:
+               SlideSideways(board, flags, rf, ff, callback, closure);
+               StepVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteCobra:
+            case SHOGI BlackCobra:
+               StepVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI (PROMOTED WhiteFerz):
+               if(gameInfo.variant == VariantShogi) goto WhiteGold;
+            case SHOGI (PROMOTED BlackFerz):
+               if(gameInfo.variant == VariantShogi) goto BlackGold;
+            case SHOGI WhitePSword:
+            case SHOGI BlackPSword:
+               SlideVertical(board, flags, rf, ff, callback, closure);
+               StepSideways(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteUnicorn:
+            case SHOGI BlackUnicorn:
+               Ferz(board, flags, rf, ff, callback, closure);
+               StepVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteMan:
+               StepDiagForward(board, flags, rf, ff, callback, closure);
+               StepVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI BlackMan:
+               StepDiagBackward(board, flags, rf, ff, callback, closure);
+               StepVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteHCrown:
+            case SHOGI BlackHCrown:
+               Bishop(board, flags, rf, ff, callback, closure);
+               SlideSideways(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteCrown:
+            case SHOGI BlackCrown:
+               Bishop(board, flags, rf, ff, callback, closure);
+               SlideVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteHorned:
+               Sting(board, flags, rf, ff, 1, 0, callback, closure);
+               callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+               if(killX >= 0) break;
+               Bishop(board, flags, rf, ff, callback, closure);
+               SlideSideways(board, flags, rf, ff, callback, closure);
+               SlideBackward(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI BlackHorned:
+               Sting(board, flags, rf, ff, -1, 0, callback, closure);
+               callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+               if(killX >= 0) break;
+               Bishop(board, flags, rf, ff, callback, closure);
+               SlideSideways(board, flags, rf, ff, callback, closure);
+               SlideForward(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteEagle:
+               Sting(board, flags, rf, ff, 1,  1, callback, closure);
+               Sting(board, flags, rf, ff, 1, -1, callback, closure);
+               callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+               if(killX >= 0) break;
+               Rook(board, flags, rf, ff, callback, closure);
+               SlideDiagBackward(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI BlackEagle:
+               Sting(board, flags, rf, ff, -1,  1, callback, closure);
+               Sting(board, flags, rf, ff, -1, -1, callback, closure);
+               callback(board, flags, NormalMove, rf, ff, rf, ff, closure);
+               if(killX >= 0) break;
+               Rook(board, flags, rf, ff, callback, closure);
+               SlideDiagForward(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteDolphin:
+            case SHOGI BlackHorse:
+               SlideDiagBackward(board, flags, rf, ff, callback, closure);
+               SlideVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI BlackDolphin:
+            case SHOGI WhiteHorse:
+               SlideDiagForward(board, flags, rf, ff, callback, closure);
+               SlideVertical(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI WhiteLance:
+               SlideForward(board, flags, rf, ff, callback, closure);
+               break;
+
+            case SHOGI BlackLance:
+               SlideBackward(board, flags, rf, ff, callback, closure);
+               break;
+
            case WhiteFalcon: // [HGM] wild: for wildcards, self-capture symbolizes move to anywhere
            case BlackFalcon:
            case WhiteCobra:
@@ -728,6 +1039,8 @@ GenLegalCallback (Board board, int flags, ChessMove kind, int rf, int ff, int rt
 
     if(rFilter >= 0 && rFilter != rt || fFilter >= 0 && fFilter != ft) return; // [HGM] speed: ignore moves with wrong to-square
 
+    if (board[EP_STATUS] == EP_IRON_LION && (board[rt][ft] == WhiteLion || board[rt][ft] == BlackLion)) return; //[HGM] lion
+
     if (!(flags & F_IGNORE_CHECK) ) {
       int check, promo = (gameInfo.variant == VariantSpartan && kind == BlackPromotion);
       if(promo) {
@@ -974,6 +1287,9 @@ CheckTestCallback (Board board, int flags, ChessMove kind, int rf, int ff, int r
        cl->check++;
        xqCheckers[rf][ff] = xqCheckers[EP_STATUS] & 1; // remember who is checking (if status == 1)
     }
+    if( board[EP_STATUS] == EP_ROYAL_LION && (board[rt][ft] == WhiteLion || board[rt][ft] == BlackLion)
+       && (gameInfo.variant != VariantLion || board[rf][ff] != WhiteKing && board[rf][ff] != BlackKing) )
+       cl->check++; // [HGM] lion: forbidden counterstrike against Lion equated to putting yourself in check
 }
 
 
@@ -989,25 +1305,43 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant
 {
     CheckTestClosure cl;
     ChessSquare king = flags & F_WHITE_ON_MOVE ? WhiteKing : BlackKing;
-    ChessSquare captured = EmptySquare;
+    ChessSquare captured = EmptySquare, ep, trampled;
     /*  Suppress warnings on uninitialized variables    */
 
     if(gameInfo.variant == VariantXiangqi)
         king = flags & F_WHITE_ON_MOVE ? WhiteWazir : BlackWazir;
     if(gameInfo.variant == VariantKnightmate)
         king = flags & F_WHITE_ON_MOVE ? WhiteUnicorn : BlackUnicorn;
+    if(gameInfo.variant == VariantChu) { // strictly speaking this is not needed, as Chu officially has no check
+       int r, f, k = king, royals=0, prince = flags & F_WHITE_ON_MOVE ? WhiteMonarch : BlackMonarch;
+       for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) {
+           if(board[r][f] == k || board[r][f] == prince) {
+               if(++royals > 1) return FALSE; // no check if we have two royals (ignores double captureby Lion!)
+               king = board[r][f]; // remember hich one we had
+           }
+       }
+    }
 
     if (rt >= 0) {
        if (enPassant) {
            captured = board[rf][ft];
            board[rf][ft] = EmptySquare;
        } else {
-           captured = board[rt][ft];
+           captured = board[rt][ft];
+           if(killX >= 0) { trampled = board[killY][killX]; board[killY][killX] = EmptySquare; }
        }
        if(rf == DROP_RANK) board[rt][ft] = ff; else { // [HGM] drop
            board[rt][ft] = board[rf][ff];
            board[rf][ff] = EmptySquare;
        }
+       ep = board[EP_STATUS];
+       if( captured == WhiteLion || captured == BlackLion ) { // [HGM] lion: Chu Lion-capture rules
+           ChessSquare victim = killX < 0 ? EmptySquare : trampled;
+           if( (board[rt][ft] == WhiteLion || board[rt][ft] == BlackLion) &&           // capturer is Lion
+               (ff - ft > 1 || ft - ff > 1 || rf - rt > 1 || rt - rf > 1) &&           // captures from a distance
+               (victim == EmptySquare || victim == WhitePawn || victim == BlackPawn) ) // no or worthless 'bridge'
+                    board[EP_STATUS] = EP_ROYAL_LION; // on distant Lion x Lion victim must not be pseudo-legally protected
+       }
     }
 
     /* For compatibility with ICS wild 9, we scan the board in the
@@ -1042,13 +1376,25 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant
            board[rf][ft] = captured;
            board[rt][ft] = EmptySquare;
        } else {
+           if(killX >= 0) board[killY][killX] = trampled;
            board[rt][ft] = captured;
        }
+       board[EP_STATUS] = ep;
     }
 
     return cl.fking < BOARD_RGHT ? cl.check : 1000; // [HGM] atomic: return 1000 if we have no king
 }
 
+int
+HasLion (Board board, int flags)
+{
+    int lion = F_WHITE_ON_MOVE & flags ? WhiteLion : BlackLion;
+    int r, f;
+    for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++)
+        if(board[r][f] == lion) return 1;
+    return 0;
+}
+
 ChessMove
 LegalDrop (Board board, int flags, ChessSquare piece, int rt, int ft)
 {   // [HGM] put drop legality testing in separate routine for clarity
@@ -1138,6 +1484,13 @@ LegalityTest (Board board, int flags, int rf, int ff, int rt, int ft, int promoC
             if(board[BOARD_HEIGHT-1-PieceToNumber(CharToPiece(ToLower(promoChar)))][1] == 0) return ImpossibleMove;
         }
     } else
+    if(gameInfo.variant == VariantChu) {
+        if(cl.kind != NormalMove || promoChar == NULLCHAR || promoChar == '=') return cl.kind;
+        if(promoChar != '+')
+            return CharToPiece(promoChar) == EmptySquare ? ImpossibleMove : IllegalMove;
+        if(PieceToChar(CHUPROMOTED board[rf][ff]) != '+') return ImpossibleMove;
+        return flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion;
+    } else
     if(gameInfo.variant == VariantShogi) {
         /* [HGM] Shogi promotions. '=' means defer */
         if(rf != DROP_RANK && cl.kind == NormalMove) {
@@ -1172,16 +1525,26 @@ if(appData.debugMode)fprintf(debugFP,"SHOGI promoChar = %c\n", promoChar ? promo
         }
     } else
     if (promoChar != NULLCHAR) {
+       if(cl.kind == NormalMove && promoChar == '+') { // allow shogi-style promotion is pieceToChar specifies them
+            ChessSquare piece = board[rf][ff];
+            if(piece < BlackPawn ? piece > WhiteMan : piece > BlackMan) return ImpossibleMove; // already promoted
+            // should test if in zone, really
+            if(gameInfo.variant == VariantChuChess && (piece == WhiteKnight || piece == BlackKnight) && HasLion(board, flags))
+                return IllegalMove;
+            if(PieceToChar(PROMOTED piece) == '+') return flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion;
+        } else
        if(promoChar == '=') cl.kind = IllegalMove; else // [HGM] shogi: no deferred promotion outside Shogi
        if (cl.kind == WhitePromotion || cl.kind == BlackPromotion) {
            ChessSquare piece = CharToPiece(flags & F_WHITE_ON_MOVE ? ToUpper(promoChar) : ToLower(promoChar));
            if(piece == EmptySquare)
                 cl.kind = ImpossibleMove; // non-existing piece
-           if(gameInfo.variant == VariantSpartan && cl.kind == BlackPromotion ) {
+           if(gameInfo.variant == VariantChuChess && promoChar == 'l' && HasLion(board, flags)) {
+                cl.kind = IllegalMove; // no two Lions
+           } else if(gameInfo.variant == VariantSpartan && cl.kind == BlackPromotion ) {
                if(promoChar != PieceToChar(BlackKing)) {
                    if(CheckTest(board, flags, rf, ff, rt, ft, FALSE)) cl.kind = IllegalMove; // [HGM] spartan: only promotion to King was possible
                    if(piece == BlackLance) cl.kind = ImpossibleMove;
-               } else { // promotion to King allowed only if we do not haave two yet
+               } else { // promotion to King allowed only if we do not have two yet
                    int r, f, kings = 0;
                    for(r=0; r<BOARD_HEIGHT; r++) for(f=BOARD_LEFT; f<BOARD_RGHT; f++) kings += (board[r][f] == BlackKing);
                    if(kings == 2) cl.kind = IllegalMove;
@@ -1266,7 +1629,7 @@ MateTest (Board board, int flags)
        else if(gameInfo.variant == VariantGiveaway) return MT_STEALMATE; // no check exists, stalemated = win
 
         return inCheck ? MT_CHECKMATE
-                      : (gameInfo.variant == VariantXiangqi || gameInfo.variant == VariantShatranj || gameInfo.variant == VariantShogi) ?
+                      : (gameInfo.variant == VariantXiangqi || gameInfo.variant == VariantShatranj || IS_SHOGI(gameInfo.variant)) ?
                          MT_STAINMATE : MT_STALEMATE;
     }
 }
@@ -1369,6 +1732,9 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure)
             if(board[BOARD_HEIGHT-1-PieceToNumber(CharToPiece(ToLower(c)))][1] == 0) closure->kind = ImpossibleMove;
         }
     } else
+    if(gameInfo.variant == VariantChu) {
+        if(c == '+') closure->kind = (flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion); // for now, accept any
+    } else
     if(gameInfo.variant == VariantShogi) {
         /* [HGM] Shogi promotions. On input, '=' means defer, '+' promote. Afterwards, c is set to '+' for promotions, NULL other */
         if(closure->rfIn != DROP_RANK && closure->kind == NormalMove) {
@@ -1402,7 +1768,8 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure)
     } else
     if (closure->kind == WhitePromotion || closure->kind == BlackPromotion) {
         if(c == NULLCHAR) { // missing promoChar on mandatory promotion; use default for variant
-            if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
+            if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier ||
+               gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN)
                 c = PieceToChar(BlackFerz);
             else if(gameInfo.variant == VariantGreat)
                 c = PieceToChar(BlackMan);
@@ -1411,6 +1778,12 @@ Disambiguate (Board board, int flags, DisambiguateClosure *closure)
             else
                 c = PieceToChar(BlackQueen);
         } else if(c == '=') closure->kind = IllegalMove; // no deferral outside Shogi
+        else if(c == 'l' && gameInfo.variant == VariantChuChess && HasLion(board, flags)) closure->kind = IllegalMove;
+    } else if (c == '+') { // '+' outside shogi, check if pieceToCharTable enabled it
+        ChessSquare p = closure->piece;
+        if(p > WhiteMan && p < BlackPawn || p > BlackMan || PieceToChar(PROMOTED p) != '+')
+            closure->kind = ImpossibleMove; // used on non-promotable piece
+        else if(gameInfo.variant == VariantChuChess && HasLion(board, flags)) closure->kind = IllegalMove;
     } else if (c != NULLCHAR) closure->kind = IllegalMove;
 
     closure->promoChar = ToLower(c); // this can be NULLCHAR! Note we keep original promoChar even if illegal.
@@ -1529,7 +1902,7 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p
        /* Use promotion suffix style "=Q" */
        *outp = NULLCHAR;
         if (promoChar != NULLCHAR) {
-            if(gameInfo.variant == VariantShogi) {
+            if(IS_SHOGI(gameInfo.variant)) {
                 /* [HGM] ... but not in Shogi! */
                 *outp++ = promoChar == '=' ? '=' : '+';
             } else {
@@ -1606,7 +1979,7 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p
        */
         if( c == '~' || c == '+') {
            /* [HGM] print nonexistent piece as its demoted version */
-           piece = (ChessSquare) (DEMOTED piece);
+           piece = (ChessSquare) (DEMOTED piece - 11*(gameInfo.variant == VariantChu));
         }
         if(c=='+') *outp++ = c;
         *outp++ = ToUpper(PieceToChar(piece));
@@ -1627,11 +2000,12 @@ CoordsToAlgebraic (Board board, int flags, int rf, int ff, int rt, int ft, int p
         if(rt+ONE <= '9')
            *outp++ = rt + ONE;
         else { *outp++ = (rt+ONE-'0')/10 + '0';*outp++ = (rt+ONE-'0')%10 + '0'; }
-        if (gameInfo.variant == VariantShogi) {
+        if (IS_SHOGI(gameInfo.variant)) {
             /* [HGM] in Shogi non-pawns can promote */
             *outp++ = promoChar; // Don't bother to correct move type, return value is never used!
         }
-        else if (gameInfo.variant != VariantSuper && promoChar &&
+        else if (gameInfo.variant == VariantChuChess && promoChar ||
+                 gameInfo.variant != VariantSuper && promoChar &&
                  (piece == WhiteLance || piece == BlackLance) ) { // Lance sometimes represents Pawn
             *outp++ = '=';
             *outp++ = ToUpper(promoChar);
diff --git a/moves.h b/moves.h
index fb1edc8..b4b9eb3 100644 (file)
--- a/moves.h
+++ b/moves.h
@@ -83,10 +83,12 @@ typedef void (*MoveCallback) P((Board board, int flags, ChessMove kind,
 #define F_MANDATORY_CAPTURE 0x200
 
 /* Special epfile values. [HGM] positive values are non-reversible moves! */
-#define EP_NONE (-4)           /* [HGM] Tricky! order matters:            */
-#define EP_UNKNOWN (-1)        /*       >= EP_UNKNOWN spils rep-draw      */
+#define EP_NONE (-6)           /* [HGM] Tricky! order matters:            */
+#define EP_UNKNOWN (-1)        /*       >= EP_UNKNOWN spoils rep-draw     */
 #define EP_CAPTURE (-2)        /*       <= EP_NONE is reversible move     */
 #define EP_PAWN_MOVE (-3)
+#define EP_IRON_LION (-4)
+#define EP_ROYAL_LION (-5)
 #define EP_REP_DRAW   (-15)
 #define EP_RULE_DRAW  (-14)
 #define EP_INSUF_DRAW  (-13)
@@ -172,4 +174,4 @@ ChessMove CoordsToAlgebraic P((Board board, int flags,
                               int rf, int ff, int rt, int ft,
                               int promoChar, char out[MOVE_LEN]));
 
-extern int quickFlag;
+extern int quickFlag, killX, killY;
index fab7ce6..ce77057 100644 (file)
@@ -74,16 +74,18 @@ int highTextStart[2], highTextEnd[2];
 int MemoProc P((Option *opt, int n, int x, int y, char *text, int index));
 
 Option engoutOptions[] = {
-{  0,  LL|T2T,           17, NULL, NULL, NULL, NULL, Icon, " " },
-{  0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") },
+{  0,  LL|T2T,           18, NULL, NULL, NULL, NULL, Icon, " " },
+{  0, L2L|T2T|SAME_ROW, 162, NULL, NULL, NULL, NULL, Label, N_("engine name") },
 {  0,     T2T|SAME_ROW,  30, NULL, NULL, NULL, NULL, Icon, " " },
+/* TRANSLATORS: noun, as in "the move Nf3"*/
 {  0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") },
 {  0,  RR|T2T|SAME_ROW,  80, NULL, NULL, NULL, NULL, Label, N_("NPS") },
 {200, T_VSCRL | T_TOP,  500, NULL, (void*) &mem1, "", (char**) MemoProc, TextBox, "" },
 {  0,         0,         0, NULL, NULL, "", NULL, Break , "" },
-{  0,  LL|T2T,           17, NULL, NULL, NULL, NULL, Icon, " " },
-{  0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") },
+{  0,  LL|T2T,           18, NULL, NULL, NULL, NULL, Icon, " " },
+{  0, L2L|T2T|SAME_ROW, 162, NULL, NULL, NULL, NULL, Label, N_("engine name") },
 {  0,     T2T|SAME_ROW,  30, NULL, NULL, NULL, NULL, Icon, " " },
+/* TRANSLATORS: noun, as in "the move Nf3"*/
 {  0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") },
 {  0,  RR|T2T|SAME_ROW,  80, NULL, NULL, NULL, NULL, Label, N_("NPS") },
 {200, T_VSCRL | T_TOP,  500, NULL, (void*) &mem2, "", (char**) MemoProc, TextBox, "" },
index 8e31362..481e7b2 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -151,11 +151,11 @@ PromoSuffix (char **p)
 {
     char *start = *p;
     if(**p == 'e' && (Match("ep", p) || Match("e.p.", p))) { *p = start; return NULLCHAR; } // non-compliant e.p. suffix is no promoChar!
-    if(**p == '+' && gameInfo.variant == VariantShogi) { (*p)++; return '+'; }
+    if(**p == '+' && IS_SHOGI(gameInfo.variant)) { (*p)++; return '+'; }
     if(**p == '=' || (gameInfo.variant == VariantSChess) && **p == '/') (*p)++; // optional = (or / for Seirawan gating)
     if(**p == '(' && (*p)[2] == ')' && isalpha( (*p)[1] )) { (*p) += 3; return ToLower((*p)[-2]); }
-    if(isalpha(**p)) return ToLower(*(*p)++);
-    if(*p != start) return '='; // must be the optional =
+    if(isalpha(**p) && **p != 'x') return ToLower(*(*p)++); // reserve 'x' for multi-leg captures? 
+    if(*p != start) return **p == '+' ? *(*p)++ : '='; // must be the optional = (or =+)
     return NULLCHAR; // no suffix detected
 }
 
@@ -240,7 +240,7 @@ NextUnit (char **p)
        } else if(n == 1 && type[0] == NUMERIC && coord[0] > 1) { while(**p == '.') (*p)++; return Nothing; } // fast exit for move numbers
        if(n == 4 && type[2] != type[3] && // we have a valid to-square (kludge: type[3] can be NOTHING on fxg type move)
                     (piece || !promoted) && // promoted indicator only valid on named piece type
-                    (type[2] == ALPHABETIC || gameInfo.variant == VariantShogi)) { // in Shogi also allow alphabetic rank
+                    (type[2] == ALPHABETIC || IS_SHOGI(gameInfo.variant))) { // in Shogi also allow alphabetic rank
            DisambiguateClosure cl;
            int fromX, fromY, toX, toY;
 
@@ -261,7 +261,7 @@ NextUnit (char **p)
            if(piece) {
                cl.pieceIn = CharToPiece(wom ? piece : ToLower(piece));
                if(cl.pieceIn == EmptySquare) return ImpossibleMove; // non-existent piece
-               if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
+               if(promoted) cl.pieceIn = (ChessSquare) (CHUPROMOTED cl.pieceIn);
            } else cl.pieceIn = EmptySquare;
            if(separator == '@' || separator == '*') { // drop move. We only get here without from-square or promoted piece
                fromY = DROP_RANK; fromX = cl.pieceIn;
@@ -279,13 +279,25 @@ NextUnit (char **p)
                fromY = (currentMoveString[1] = coord[1] + '0') - ONE;
                currentMoveString[4] = cl.promoCharIn = PromoSuffix(p);
                currentMoveString[5] = NULLCHAR;
+               if(!cl.promoCharIn && (**p == '-' || **p == 'x')) { // Lion-type multi-leg move
+                   currentMoveString[5] = (killX = toX) + AAA; // what we thought was to-square is in fact kill-square
+                   currentMoveString[6] = (killY = toY) + ONE; // append it as suffix behind long algebraic move
+                   currentMoveString[4] = ';';
+                   currentMoveString[7] = NULLCHAR;
+                   // read new to-square (VERY non-robust! Assumes correct (non-alpha-rank) syntax, and messes up on errors)
+                   toX = cl.ftIn = (currentMoveString[2] = *++*p) - AAA; ++*p;
+                   toY = cl.rtIn = (currentMoveString[3] = Number(p) + '0') - ONE;
+               }
                if(type[0] != NOTHING && type[1] != NOTHING && type[3] != NOTHING) { // fully specified.
+                   ChessSquare realPiece = boards[yyboardindex][fromY][fromX];
                    // Note that Disambiguate does not work for illegal moves, but flags them as impossible
                    if(piece) { // check if correct piece indicated
-                       ChessSquare realPiece = boards[yyboardindex][fromY][fromX];
                        if(PieceToChar(realPiece) == '~') realPiece = (ChessSquare) (DEMOTED realPiece);
                        if(!(appData.icsActive && PieceToChar(realPiece) == '+') && // trust ICS if it moves promoted pieces
                           piece && realPiece != cl.pieceIn) return ImpossibleMove;
+                   } else if(!separator && **p == '+') { // could be a protocol move, where bare '+' suffix means shogi-style promotion
+                       if(realPiece < (wom ?  WhiteCannon : BlackCannon) && PieceToChar(PROMOTED realPiece) == '+') // seems to be that
+                          currentMoveString[4] = cl.promoCharIn = *(*p)++; // append promochar after all
                    }
                    result = LegalityTest(boards[yyboardindex], PosFlags(yyboardindex), fromY, fromX, toY, toX, cl.promoCharIn);
                    if (currentMoveString[4] == NULLCHAR) { // suppy missing mandatory promotion character
@@ -321,6 +333,7 @@ NextUnit (char **p)
                currentMoveString[0] = cl.ff + AAA;
                currentMoveString[1] = cl.rf + ONE;
                currentMoveString[3] = cl.rt + ONE;
+               if(killX < 0) // [HGM] lion: do not overwrite kill-square suffix
                currentMoveString[4] = cl.promoChar;
 
                if((cl.kind == WhiteCapturesEnPassant || cl.kind == BlackCapturesEnPassant) && (Match("ep", p) || Match("e.p.", p)));
diff --git a/pixmaps/ANALYZING_14.xpm b/pixmaps/ANALYZING_14.xpm
deleted file mode 100644 (file)
index b43e871..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *ANALYZE_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".......   ....",\r
-".....  ...  ..",\r
-".... ....... .",\r
-".... .. .... .",\r
-"... ..  ..... ",\r
-"... ......... ",\r
-"... ......... ",\r
-".... ....... .",\r
-".... ....... .",\r
-"... .  ...  ..",\r
-".. . ..   ....",\r
-". . ..........",\r
-"   ...........",\r
-".............."\r
-};\r
diff --git a/pixmaps/BLACK_14.xpm b/pixmaps/BLACK_14.xpm
deleted file mode 100644 (file)
index cab2a1e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *BLACK_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....****.....",\r
-"...**    **...",\r
-"..*        *..",\r
-".*          *.",\r
-".*          *.",\r
-"*            *",\r
-"*            *",\r
-"*            *",\r
-"*            *",\r
-".*          *.",\r
-".*          *.",\r
-"..*        *..",\r
-"...**    **...",\r
-".....****....."\r
-};\r
diff --git a/pixmaps/CLEAR_14.xpm b/pixmaps/CLEAR_14.xpm
deleted file mode 100644 (file)
index 68a0efd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *CLEAR_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-"..............",\r
-".............."\r
-};\r
diff --git a/pixmaps/PONDER_14.xpm b/pixmaps/PONDER_14.xpm
deleted file mode 100644 (file)
index 2f732ab..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *PONDER_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-"....  ..  ....",\r
-"..  ... ..  ..",\r
-". .......... .",\r
-" .......... ..",\r
-" ........... .",\r
-".  .......... ",\r
-".. .......... ",\r
-". .......... .",\r
-".. .......  ..",\r
-"... ..  .. ...",\r
-".. .  ..  ....",\r
-".   ..........",\r
-" .............",\r
-".............."\r
-};\r
diff --git a/pixmaps/THINKING_14.xpm b/pixmaps/THINKING_14.xpm
deleted file mode 100644 (file)
index 4b28f19..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *THINK_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....   ......",\r
-"...  ...  ....",\r
-".. ... ... ...",\r
-". .... .... ..",\r
-". .... .... ..",\r
-" ..... ..... .",\r
-" ....     .. .",\r
-" ..... ..... .",\r
-". ......... ..",\r
-". ......... ..",\r
-".. ....... ...",\r
-"...  ...  ....",\r
-".....   ......",\r
-".............."\r
-};\r
diff --git a/pixmaps/UNKNOWN_14.xpm b/pixmaps/UNKNOWN_14.xpm
deleted file mode 100644 (file)
index 9f4c241..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *UNKNOWN_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....****.....",\r
-"...**    **...",\r
-"..*  . .   *..",\r
-".* . . . .  *.",\r
-".*  . . . . *.",\r
-"*  . . . . . *",\r
-"* . . . . .  *",\r
-"*  . . . . . *",\r
-"* . . . . .  *",\r
-".* . . . .  *.",\r
-".*  . . . . *.",\r
-"..*  . .   *..",\r
-"...**    **...",\r
-".....****....."\r
-};\r
diff --git a/pixmaps/WHITE_14.xpm b/pixmaps/WHITE_14.xpm
deleted file mode 100644 (file)
index 3f13936..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* XPM */\r
-static char *WHITE_14[] = {\r
-/* columns rows colors chars-per-pixel */\r
-"14 14 3 1",\r
-"  c white",\r
-"* c black",\r
-". c None",\r
-/* pixels */\r
-".....****.....",\r
-"...**    **...",\r
-"..*  ....  *..",\r
-".* ........ *.",\r
-".* ........ *.",\r
-"* .......... *",\r
-"* .......... *",\r
-"* .......... *",\r
-"* .......... *",\r
-".* ........ *.",\r
-".* ........ *.",\r
-"..*  ....  *..",\r
-"...**    **...",\r
-".....****....."\r
-};\r
diff --git a/pixmaps/board32.png b/pixmaps/board32.png
new file mode 100644 (file)
index 0000000..1f2ffa6
Binary files /dev/null and b/pixmaps/board32.png differ
diff --git a/pixmaps/board32.xpm b/pixmaps/board32.xpm
deleted file mode 100644 (file)
index cc92926..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* XPM */
-static char *board__[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 4 1",
-"  c #000000",
-". c #FFFF00",
-"X c #808080",
-"o c #FFFFFF",
-/* pixels */
-"X.X.    X.X.    X.X.    X.X.    ",
-".XoX    .XoX    .XoX    .XoX    ",
-"X.X.    X.X.    X.X.    X.X.    ",
-"oX.X    oX.X    oX.X    oX.X    ",
-"    X.X.    X.X.    X.X.    X.X.",
-"    .XoX    .XoX    .XoX    .XoX",
-"    X.X.    X.X.    X.X.    X.X.",
-"    oX.X    oX.X    oX.X    oX.X",
-"X.X.    X.X.    X.X.    X.X.    ",
-".XoX    .XoX    .XoX    .XoX    ",
-"X.X.    X.X.    X.X.    X.X.    ",
-"oX.X    oX.X    oX.X    oX.X    ",
-"    X.X.    X.X.    X.X.    X.X.",
-"    .XoX    .XoX    .XoX    .XoX",
-"    X.X.    X.X.    X.X.    X.X.",
-"    oX.X    oX.X    oX.X    oX.X",
-"X.X.    X.X.    X.X.    X.X.    ",
-".XoX    .XoX    .XoX    .XoX    ",
-"X.X.    X.X.    X.X.    X.X.    ",
-"oX.X    oX.X    oX.X    oX.X    ",
-"    X.X.    X.X.    X.X.    X.X.",
-"    .XoX    .XoX    .XoX    .XoX",
-"    X.X.    X.X.    X.X.    X.X.",
-"    oX.X    oX.X    oX.X    oX.X",
-"X.X.    X.X.    X.X.    X.X.    ",
-".XoX    .XoX    .XoX    .XoX    ",
-"X.X.    X.X.    X.X.    X.X.    ",
-"oX.X    oX.X    oX.X    oX.X    ",
-"    X.X.    X.X.    X.X.    X.X.",
-"    .XoX    .XoX    .XoX    .XoX",
-"    X.X.    X.X.    X.X.    X.X.",
-"    oX.X    oX.X    oX.X    oX.X"
-};
diff --git a/pixmaps/board48.png b/pixmaps/board48.png
new file mode 100644 (file)
index 0000000..f47e085
Binary files /dev/null and b/pixmaps/board48.png differ
diff --git a/pixmaps/board48.xpm b/pixmaps/board48.xpm
deleted file mode 100644 (file)
index 5aec594..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static char *board__[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 4 1",
-"  c #000000",
-". c #FFFF00",
-"X c #808080",
-"o c #FFFFFF",
-/* pixels */
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-"oX.XoX      oX.XoX      oX.XoX      oX.XoX      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      oX.XoX      oX.XoX      oX.XoX      oX.XoX",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-"oX.XoX      oX.XoX      oX.XoX      oX.XoX      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      oX.XoX      oX.XoX      oX.XoX      oX.XoX",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-"oX.XoX      oX.XoX      oX.XoX      oX.XoX      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      oX.XoX      oX.XoX      oX.XoX      oX.XoX",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-"oX.XoX      oX.XoX      oX.XoX      oX.XoX      ",
-"X.X.X.      X.X.X.      X.X.X.      X.X.X.      ",
-".XoX.X      .XoX.X      .XoX.X      .XoX.X      ",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      oX.XoX      oX.XoX      oX.XoX      oX.XoX",
-"      X.X.X.      X.X.X.      X.X.X.      X.X.X.",
-"      .XoX.X      .XoX.X      .XoX.X      .XoX.X",
-};
diff --git a/pixmaps/cross32.png b/pixmaps/cross32.png
new file mode 100644 (file)
index 0000000..ccad759
Binary files /dev/null and b/pixmaps/cross32.png differ
diff --git a/pixmaps/cross32.xpm b/pixmaps/cross32.xpm
deleted file mode 100644 (file)
index 425c3a5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* XPM */
-static char *cross[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 4 1",
-"  c #000000",
-". c #FF0000",
-"X c #0000FF",
-"o c #FFFFFF",
-/* pixels */
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"X     oooooooooooooooooooooooooX",
-"X     oo.ooooooooooooooooooooooX",
-"X     o...ooooooo...oooooooooooX",
-"X     oo.ooooooooooooooooooooooX",
-"X     oooooooooooooooooooooooooX",
-"Xooooo     ooooooooooooooooooooX",
-"Xooooo     oooooooooooo.oooooooX",
-"Xo...o     ooooooooooo...ooooooX",
-"Xooooo     oooooooooooo.oooooooX",
-"Xooooo     ooooooooooooooooooooX",
-"Xoooooooooo     oooooooooooooooX",
-"Xoooooooooo     o...oooooooooooX",
-"Xoooooooooo     oooooooooooo.ooX",
-"Xoooooooooo     o...ooooooo...oX",
-"Xoooooooooo     oooooooooooo.ooX",
-"Xooooooooooooooo     ooooooooooX",
-"Xoo.oooooooo...o     ooooooooooX",
-"Xo...ooooooooooo     ooooooooooX",
-"Xoo.oooooooo...o     ooooooooooX",
-"Xooooooooooooooo     ooooooooooX",
-"Xoooooooooooooooooooo     oooooX",
-"Xoooooooooooooooooooo     oo.ooX",
-"Xoooooo...ooooooooooo     o...oX",
-"Xoooooooooooooooooooo     oo.ooX",
-"Xoooooooooooooooooooo     oooooX",
-"Xooooooooooooooooooooooooo     X",
-"Xooooooooooo...ooooooooooo     X",
-"Xooooooooooooooooooooo...o     X",
-"Xooooooooooooooooooooooooo     X",
-"Xooooooooooooooooooooooooo     X",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-};
diff --git a/pixmaps/cross48.png b/pixmaps/cross48.png
new file mode 100644 (file)
index 0000000..5247864
Binary files /dev/null and b/pixmaps/cross48.png differ
diff --git a/pixmaps/cross48.xpm b/pixmaps/cross48.xpm
deleted file mode 100644 (file)
index 47b629b..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/* XPM */
-static char *cross[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 4 1",
-"  c #000000",
-". c #FF0000",
-"X c #0000FF",
-"o c #FFFFFF",
-/* pixels */
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"XXooooooooooooooooooooooooooooooooooooooooooooXX",
-"XXo       ooooooooooooooooooooooooooooooooooooXX",
-"XXo       ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo       ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo       o.....ooooooooo.....ooooooooooooooooXX",
-"XXo       ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo       ooo.ooooooooooooooooooooooooooooooooXX",
-"XXo       ooooooooooooooooooooooooooooooooooooXX",
-"XXoooooooo       oooooooooooooooooooooooooooooXX",
-"XXoooooooo       ooooooooooooooooo.oooooooooooXX",
-"XXoooooooo       ooooooooooooooooo.oooooooooooXX",
-"XXoo.....o       ooooooooooooooo.....oooooooooXX",
-"XXoooooooo       ooooooooooooooooo.oooooooooooXX",
-"XXoooooooo       ooooooooooooooooo.oooooooooooXX",
-"XXoooooooo       oooooooooooooooooooooooooooooXX",
-"XXooooooooooooooo       ooooooooooooooooooooooXX",
-"XXooooooooooooooo       ooooooooooooooooo.ooooXX",
-"XXooooooooooooooo       o.....ooooooooooo.ooooXX",
-"XXooooooooooooooo       ooooooooooooooo.....ooXX",
-"XXooooooooooooooo       o.....ooooooooooo.ooooXX",
-"XXooooooooooooooo       ooooooooooooooooo.ooooXX",
-"XXooooooooooooooo       ooooooooooooooooooooooXX",
-"XXoooooooooooooooooooooo       oooooooooooooooXX",
-"XXoooo.ooooooooooooooooo       oooooooooooooooXX",
-"XXoooo.ooooooooooo.....o       oooooooooooooooXX",
-"XXoo.....ooooooooooooooo       oooooooooooooooXX",
-"XXoooo.ooooooooooo.....o       oooooooooooooooXX",
-"XXoooo.ooooooooooooooooo       oooooooooooooooXX",
-"XXoooooooooooooooooooooo       oooooooooooooooXX",
-"XXooooooooooooooooooooooooooooo       ooooooooXX",
-"XXooooooooooooooooooooooooooooo       ooo.ooooXX",
-"XXooooooooooooooooooooooooooooo       ooo.ooooXX",
-"XXooooooooo.....ooooooooooooooo       o.....ooXX",
-"XXooooooooooooooooooooooooooooo       ooo.ooooXX",
-"XXooooooooooooooooooooooooooooo       ooo.ooooXX",
-"XXooooooooooooooooooooooooooooo       ooooooooXX",
-"XXoooooooooooooooooooooooooooooooooooo       oXX",
-"XXoooooooooooooooooooooooooooooooooooo       oXX",
-"XXoooooooooooooooooooooooooooooooooooo       oXX",
-"XXoooooooooooooooo.....ooooooooo.....o       oXX",
-"XXoooooooooooooooooooooooooooooooooooo       oXX",
-"XXoooooooooooooooooooooooooooooooooooo       oXX",
-"XXoooooooooooooooooooooooooooooooooooo       oXX",
-"XXooooooooooooooooooooooooooooooooooooooooooooXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-};
diff --git a/pixmaps/ini32.png b/pixmaps/ini32.png
new file mode 100644 (file)
index 0000000..ce8af9c
Binary files /dev/null and b/pixmaps/ini32.png differ
diff --git a/pixmaps/ini32.xpm b/pixmaps/ini32.xpm
deleted file mode 100644 (file)
index b6a7968..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *nld33[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 3 1",
-"  c black",
-". c transparent",
-"X c white",
-/* pixels */
-"................................",
-"................................",
-"................................",
-".........  ...  ................",
-"......... X . XX ...............",
-"......... XX  XX   .............",
-"......... X   XX XX  ...........",
-"......... X XXXXXXXXX  .........",
-"........ XXXXXXXXXXXXX  ........",
-"........ X  XXXXXXXXXXX  .......",
-"....... X XXXXXXXXXXXXXX  ......",
-"....... X XXXXXXXX XXXXX  ......",
-"...... XXXXXXXXXXX XXXXXX  .....",
-"...... XXXXXXXXXXX XXXXXX  .....",
-"..... XXXXXXXXXXXX XXXXXXX  ....",
-"..... XXXXXXXXXXX XXXXXXXX  ....",
-".... XXXXXXXXXX   XXXXXXXX  ....",
-".... XXXXXXXXX .. XXXXXXXXX  ...",
-"... X XXXXXX  ... XXXXXXXXX  ...",
-"... X XXXXX .... XXXXXXXXXX  ...",
-"... XXX XX ..... XXXXXXXXXX  ...",
-"... XXX X ..... XXXXXXXXXXXX ...",
-"....     ..... XXXXXXXXXXXXX  ..",
-"............. XXXXXXXXXXXXXX  ..",
-"............ XXXXXXXXXXXXXXX  ..",
-"........... XXXXXXXXXXXXXXXX  ..",
-"........... XXXXXXXXXXXXXXXX  ..",
-".......... XXXXXXXXXXXXXXXXX  ..",
-".......... XXXXXXXXXXXXXXXXX  ..",
-"..........                    ..",
-"................................",
-"................................"
-};
diff --git a/pixmaps/ini48.png b/pixmaps/ini48.png
new file mode 100644 (file)
index 0000000..ea0415e
Binary files /dev/null and b/pixmaps/ini48.png differ
diff --git a/pixmaps/ini48.xpm b/pixmaps/ini48.xpm
deleted file mode 100644 (file)
index 4e0434f..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/* XPM */
-static char *nld49[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 3 1",
-"  c black",
-". c transparent",
-"X c whit",
-/* pixels */
-"................................................",
-"................................................",
-"................................................",
-"............ ........ ..........................",
-"............   ..... X .........................",
-"............ XX .... XX ........................",
-"............ XXX .. XXX ........................",
-"............ XXXX   XXX    .....................",
-"............. XX  X XXX XXX   ..................",
-"............ XX XXXXXXXXXXXXXX  ................",
-"........... XXXXXXXXXXXXXXXXXXXX ...............",
-".......... XXXXXXXXXXXXXXXXXXXXXX  .............",
-".......... XXXXXXXXXXXXXXXXXXXXXXX  ............",
-"......... XXXXX XXXXXXXXXXXXXXXXXXX  ...........",
-"......... XXX  XXXXXXXXXXXXXXXXXXXXX  ..........",
-"......... XXX XXXXXXXXXXXXXXXXXXXXXXX ..........",
-"......... XX XXXXXXXXXXXXXXXXXXXXXXXX  .........",
-"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXX  ........",
-"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXX  ........",
-"........ XXXXXXXXXXXXXXXX XXXXXXXXXXXXX  .......",
-"....... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXX  .......",
-"....... XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX .......",
-"...... XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX  ......",
-"..... XXXXXXXXXXXXXXXXX . XXXXXXXXXXXXXX  ......",
-"..... XXXXXXXXXXXXXXXX .. XXXXXXXXXXXXXXX ......",
-".... XXXXXXXXXXXXXXX  ... XXXXXXXXXXXXXXX  .....",
-".... XXXXXXXXXXXXXX ..... XXXXXXXXXXXXXXX  .....",
-"... XX  XXXXXXXXX  ...... XXXXXXXXXXXXXXX  .....",
-"... XX XXXXXXXXX ....... XXXXXXXXXXXXXXXXX .....",
-"... XXXXXXXXXXX ........ XXXXXXXXXXXXXXXXX  ....",
-"... XXXXXX XXX ........ XXXXXXXXXXXXXXXXXX  ....",
-"... XXXXX XXX ........ XXXXXXXXXXXXXXXXXXX  ....",
-".... XXXX XX ........ XXXXXXXXXXXXXXXXXXXX  ....",
-".....     X ........ XXXXXXXXXXXXXXXXXXXXX  ....",
-"..........  ....... XXXXXXXXXXXXXXXXXXXXXXX ....",
-".................. XXXXXXXXXXXXXXXXXXXXXXXX  ...",
-".................. XXXXXXXXXXXXXXXXXXXXXXXX  ...",
-"................. XXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-"................ XXXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-"............... XXXXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-"............... XXXXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-".............. XXXXXXXXXXXXXXXXXXXXXXXXXXXX  ...",
-"..............                              ....",
-"................................................",
-"................................................",
-"................................................"
-};
index 3f9d403..e6ea5ac 100644 (file)
Binary files a/png/xqboard.png and b/png/xqboard.png differ
index ce00dd2..a985ef3 100755 (executable)
@@ -1,3 +1,3 @@
 # whitespace separated list of translated languages goes below
 # note: zh translations are untested; xboard fails to create a fontset for them
-da de es it ru tr uk vi zh_CN zh_HK zh_TW
+da de es it nl ru tr uk vi zh_CN zh_HK zh_TW
index a70db03..bbc5091 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -21,7 +21,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard 4.6.0.20120304\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: 2012-03-06 12:27+0100\n"
 "Last-Translator: Byrial Ole Jensen <byrial@vip.cybercity.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -32,100 +32,100 @@ msgstr ""
 "X-Generator: Lokalize 1.2\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr "%s i indstillingsfil\n"
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr "Forkert heltalsværdi %s"
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr "Ikke genkendt argument %s"
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr "Ingen værdi givet for argumentet %s"
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr "Ukomplet \\-undvigesekvens i værdi for %s"
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr "Åbning af inkluderet fil \"%s\" mislykkedes"
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr "Ikke genkendt boolesk argumentværdi %s"
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr "første"
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr "det andet"
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "protokolversion %d er ikke understøttet"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr "Du angav ikke et kørbart skakprogram"
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "forkert timeControl-tilvalg %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "forkert searchTime-tilvalg %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "Varianten %s er kun understøttet i ICS-tilstand"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "Ukendt variantnavn %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "Starter skakprogram"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "Fejl i partifil"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "Fejl i stillingsfil"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr "Vælg nyt spil"
 
 # cycle = runde?
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
@@ -135,123 +135,123 @@ msgstr ""
 "En mere cyklus vil nu blive tilføjet\n"
 "Partierne starter om 10 sekunder"
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr "Alle partier i turneringen \"%s\" er allerede færdige eller i gang"
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "Kan ikke have en match uden skakprogrammer"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "Kunne ikke åbne seriel port %s"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "Kunne ikke forbinde til vært %s, port %s"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "Ukendt initialMode %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "AnalyzeFile-tilstand kræver en partifil"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "Analysetilstand kræver et skakprogram"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "Analysetilstand virker ikke sammen med ICS-tilstand"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "MachineWhite-tilstand kræver et skakprogram"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "MachineWhite-tilstand virker ikke sammen med ICS-tilstand"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "MachineBlack-tilstand kræver et skakprogram"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "MachineBlack-tilstand virker ikke sammen med ICS-tilstand"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "TwoMachines-tilstand kræver et skakprogram"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "TwoMachines-tilstand virker ikke sammen med ICS-tilstand"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "Træningstilstand kræver en partifil"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "Fejl ved skrivning til ICS"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "Fejl ved læsning fra tastatur"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "Fik filafslutning fra tastatur"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr "Ukendt vild type %d"
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "Fejl ved skrivning til skærm"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr "din modstander kommenterer: %s"
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "Fejl ved tolkning af trækliste: to teksthoveder"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "Fejl ved tolkning af trækliste: indlejret"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr "–"
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr "Ulovligt træk (afvist af ICS)"
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "Forbindelse lukket af ICS"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "Fejl ved læsning fra ICS"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
@@ -260,108 +260,112 @@ msgstr ""
 "Fortolkning af brætstreng mislykkedes:\n"
 "\"%s\""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr "Parti for langt; forøg MAX_MOVES og genoversæt"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "Fejl ved tolkning af trækliste: ekstra bræt"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "Kunne ikke fortolke \"%s\" fra ICS"
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "say Intern fejl; forkert moveType%d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr "Du kan ikke gøre dette, mens du spiller eller observerer"
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr "Genoversæt for at understøtte denne BOARD_RANKS eller BOARD_FILES!"
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "Du spiller sort"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "Du spiller hvid"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "Det er hvids tur"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "Det er sorts tur"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "Den viste stilling er ikke den aktuelle"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "Ulovligt træk"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "Slutningen af partiet"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "Ukorrekt træk"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr "Træk bonde baglæns for at underforvandle"
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr "Svejtserturnering afsluttet"
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr "Ikke tilladt parring fra parringsprogram"
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "Ulovligt træk \"%s\" fra %s skakprogram"
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr "Fejl i FEN modtaget fra skakprogram"
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s understøtter ikke analyse"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "Ulovligt træk \"%s\" (afvist af %s skakprogram)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "Fejl ved start af %s skakprogram %s på %s: %s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "Tip: %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
@@ -370,11 +374,11 @@ msgstr ""
 "Ulovligt tip om træk \"%s\"\n"
 "fra %s skakprogram"
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr "Skakprogrammet accepterer dit remistilbud"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
@@ -382,47 +386,47 @@ msgstr ""
 "Skakprogrammet tilbyder remis\n"
 "Vælg Handlinger / Remis for at acceptere"
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr "skrivning af analysevariant mislykkedes"
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "Flertydigt træk i ICS-output: \"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "Ulovligt træk i ICS-output: \"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "Hul i trækliste"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "Variant %s understøttes ikke af %s"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "Opstartsfejl på \"%s\""
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "Venter på første skakprogram"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "Venter på andet skakprogram"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr "Kunne ikke skrive turneringsfil"
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
@@ -430,11 +434,11 @@ msgstr ""
 "Du kan ikke udskifte et skakprogram, mens det bruges!\n"
 "Afslut dets parti først."
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr "Der er ikke installeret et skakprogram med det angivne navn"
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
@@ -442,16 +446,16 @@ msgstr ""
 "Ændr først skakprogram ved at redigere deltagerlisten\n"
 "i turneringsindstillingerne"
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr "Du kan kun ændre et skakprogram ad gangen"
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, fuzzy, c-format
 msgid "No engine %s is installed"
 msgstr "Der er ikke installeret et skakprogram med det angivne navn"
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
@@ -459,115 +463,115 @@ msgstr ""
 "Du skal angive en turneringsfil\n"
 "til at gemme turneringens afvikling"
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr "Der er ikke nok deltagere"
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr "Fejl i turneringsfil"
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr "Venter på andet parti/andre partier"
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr "Der er ikke noget parringsprogram specificeret"
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "Match %s - %s: slutscore %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "Ulovligt træk: %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "Flertydigt træk: %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "Kan ikke åbne \"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "Kan ikke konstruere partiliste"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "Der er ikke flere partier i denne besked"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "Der er endnu ingen indlæste partier"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "Kan ikke gå længere tilbage"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "Partinummer findes ikke"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "Kan ikke spole i partifil"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "Parti ikke fundet i fil"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "Fejl i FEN-stilling i fil"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "Ingen træk i partiet"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "Ingen stilling er endnu indlæst"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "Kan ikke spole i stillingsfil"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "Stilling er ikke fundet i fil"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "Sort i trækket"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "Hvid i trækket"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr "Venter på adgang til gemmefil"
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr "Gemmer parti"
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr "Søgning mislykkedes"
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr "Gemmer stilling"
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
@@ -575,7 +579,7 @@ msgstr ""
 "Du har redigeret i parti-historikken.\n"
 "Genindlæs partiet og udfør trækket igen."
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
@@ -583,7 +587,7 @@ msgstr ""
 "Du har indtastet for mange træk.\n"
 "Gå tilbage til den aktuelle stilling og prøv igen."
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
@@ -591,11 +595,11 @@ msgstr ""
 "Den viste stilling er ikke den aktuelle.\n"
 "Gå fremad til den korrekte stilling og prøv igen."
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "Du har ikke trukket endnu"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
@@ -603,11 +607,11 @@ msgstr ""
 "Cmail-beskeden er ikke indlæst.\n"
 "Brug Genindlæs CMail-besked og lav dit træk igen."
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "Der er ingen uafsluttede partier"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -622,78 +626,78 @@ msgstr ""
 "\"cmail -remail -game %s\"\n"
 "på kommandolinjen."
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "Start af cmail mislykkedes"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "Venter på svar fra modstander\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "Der er stadig nødvendigt at trække i partiet\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "Der er stadig nødvendigt at trække i begge partier\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "Der er stadig nødvendigt at trække i alle %d partier\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "Der er stadig nødvendigt at trække i partiet %s\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "Der er ingen uafsluttede partier\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "Klar til at sende e-mail\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "Der er stadig nødvendigt at trække i partierne %s\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "Redigér kommentar"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "Redigér kommentar til %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr "Du observerer ikke et parti"
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "Hvid er ikke i trækket"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "Sort er ikke i trækket"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr "Starter %s skakprogram"
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
@@ -701,132 +705,132 @@ msgstr ""
 "Vent på din tur,\n"
 "eller vælg Træk nu"
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "Træningstilstand fra"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "Træningstilstand til"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "Allerede ved slutningen af partiet"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "Advarsel: Du spiller stadig et parti"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "Advarsel: Du observerer stadig et parti"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "Advarsel: Du undersøger stadig et parti"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr "Lukker skakprogram til ICS-analyse ..."
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "Det felt er besat"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "Der er ingen aktuelle tilbud ved dette træk"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "Din modstander har ikke overskredet tiden"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "Du skal trække før du tilbyder remis"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "Du undersøger ikke et parti"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "Du kan ikke annullere variantlinje under pause"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "Det er dig som er i trækket"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "Vent til du kommer i trækket"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "Tip er ikke tilgængeligt"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 msgid "Game list not loaded or empty"
 msgstr "Partiliste ikke indlæst eller tom"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "Fejl ved skrivning til %s skakprogram"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr "%s program afslutter i remisstilling (%s)"
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "Fejl: %s skakprogram (%s) afsluttede uventet"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "Fejl ved læsning fra %s skakprogram (%s)"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr "%s skakprogram har for mange tilvalg\n"
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "Det viste træk er ikke det aktuelle"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "Kunne ikke fortolke træk"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "Begge flag er faldet"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "Hvids flag er faldet"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "Sorts flag er faldet"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr "Det er ikke tilladt er stille på uret i auto-flag-tilstand"
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "Fejl i FEN-stilling i udklipsholder"
 
@@ -938,7 +942,7 @@ msgstr "Kopiér turnering"
 msgid "First you must specify an existing tourney file to clone"
 msgstr "Du skal angive en eksisterende turneringsfil til at kopiere"
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -1008,7 +1012,7 @@ msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
 # ... mens modstanderen er i trækket
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "Spekulér på næste træk"
 
@@ -1129,7 +1133,7 @@ msgid "Holdings Size:"
 msgstr "Depotstørrelse:"
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1201,279 +1205,284 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "Advarsel: det andet skakprogram (%s) understøtter ikke dette!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "Ny variant"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "Maksimalt antal CPU'er pr. skakprogram:"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr "Polyglot-katalog:"
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "Hashtabel-størrelse (MB):"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr "Sti til Nalimov-EGTB:"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr "EGTB-cachestørrelse (MB):"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr "Brug GUI's åbningsbog"
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr "Åbningsbogsfilnavn:"
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr "Åbningsbogsdybde (træk):"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr "Åbningsbogvariation (0) vs. styrke (100):"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr "Skakprogram nr. 1 har egen åbningsbog"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr "Skakprogram nr. 2 har egen åbningsbog"
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr "Indstillinger for skakprogrammer"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr "Find alle matter"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "Efterprøv resultatangivelser fra skakprogrammer"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr "Remis ved utilstrækkeligt matsættende materiale"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr "Døm trivielle remiser (3-træks forsinkelse)"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr "N-træksregel:"
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr "N-gange gentagelser:"
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "Remis efter i alt N træk:"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "Gevinst/tabs-tærskel:"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "Negér skakprogram nr. 1's score"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "Negér skakprogram nr. 2's score"
 
-#: dialogs.c:556
+#: dialogs.c:557
 msgid "Adjudicate non-ICS Games"
 msgstr "Døm ikke-ICS partier"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "Send kommentarer fra skakprogram"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "Gem kommentarer til træk"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "Observér automatisk"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "Bræt øverst ved partistart"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "Obsevér i baggrunden når der spilles"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "Andet bræt til baggrundsobservede partier"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "Hent trækliste"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "Stille spil"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "Søgegraf"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr "Automatisk opdatering af søgegraf"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+#, fuzzy
+msgid "Quit after game"
+msgstr "Venter på andet parti/andre partier"
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr "Forhåndstræk"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr "Forhåndstræk for hvid"
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "Hvids første træk:"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr "Forhåndstræk for sort"
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "Sorts første træk:"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "Alarm"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr "Alarmtid (millisekunder):"
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr "Farv meddelelser"
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr "Tekstfarver for råb:"
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr "Tekstfarver for s-råb:"
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr "Tekstfarver for kanal nr. 1:"
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr "Tekstfarver for andre kanaler:"
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr "Tekstfarver for kommentar:"
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr "Tekstfarver for tale:"
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr "Tekstfarver for udfordring:"
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr "Tekstfarver for forespørgsel:"
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr "Tekstfarver for søgning:"
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "ICS-indstillinger"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr "Eksakt stilling"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr "Viste stilling er en delmængde"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr "Samme materiale med samme bondestruktur"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr "Samme materiale"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr "Materiale-interval (øverste halvdel af brættet valgfrit)"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr "Materiale-forskel (balanceret valgfrit materiale)"
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr "Automatisk visning af partidata"
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr "Automatisk visning af kommentarer"
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
@@ -1481,12 +1490,12 @@ msgstr ""
 "Hastighed af gennemspilning af indlæste partier\n"
 "(0 = øjeblikkeligt, -1 fra):"
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr "Sekunder pr. træk:"
 
 # Ingen grund til ikke at bruge stort begyndelsesbogstav her.
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
@@ -1494,7 +1503,7 @@ msgstr ""
 "\n"
 "Indstillinger til brug ved gennemkigning af partier:"
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
@@ -1502,701 +1511,701 @@ msgstr ""
 "\n"
 "Grænseværdier for stillingsfiltrering i partiliste:"
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr "Stærkeste spillers rating er mindst:"
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr "Svageste spillers rating er mindst:"
 
-#: dialogs.c:633
+#: dialogs.c:635
 msgid "No games before year:"
 msgstr "Ingen partier før år:"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr "Mindste antal stillinger i følge ad gangen:"
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr "Søgemetode:"
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr "Match også omvendte farver"
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr "Match også spejlvendt stilling"
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "Indstillinger for indlæsning af parti"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr "Gem partier automatisk"
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr "Gem partier i filen:"
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr "Gem slutstillinger i filen:"
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr "Event-tekst i PGN-fil:"
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr "Gammel gemmestil (i modsætning til PGN)"
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr "Brug partinumre i PGN-fil for turnering"
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr "Gem score/dybde-information i PGN"
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr "Gem ud af åbningsbog-info i PGN      "
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "Indstillinger for gemning af parti"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "Ingen lyd"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "Standard bip"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr "WAV-filen ovenfor"
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr "Bilhorn"
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr "Bækken"
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr "Ding"
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr "Gongon"
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr "Laser"
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr "Straffe"
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr "Telefon"
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr "Plop"
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr "Slag"
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr "Dunk"
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr "Brugerfil"
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr "Bruger WAV-fil:"
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr "Lydprogram:"
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr "Afprøv lyd:"
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "Afspil"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr "Træk:"
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr "Gevinst:"
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr "Tab:"
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr "Remis:"
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr "Uafsluttet:"
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr "Alarm:"
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr "Udfodring:"
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr "Lydkatalog:"
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr "Råb:"
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr "S-råb:"
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr "Kanal:"
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr "Kanal 1:"
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr "Tale:"
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr "Kommentar:"
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr "Forespøgsel:"
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr "Søgning:"
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "Lydindstillinger"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr "Farve for hvide brikker:"
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr "R"
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr "G"
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr "B"
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr "M"
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr "Farve for sorte brikker:"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "Farve for lyse felter:"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "Farve for mørke felter:"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "Farve til fremhævelse:"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr "Farve til forhåndstræk:"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr "Ombyt brikker som i shogi    (Farvede knapper gendanner standard)"
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr "Monokrom-tilstand"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr "Mellemrum mellem felter (-1 = standard for brætstørrelsen):"
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr "Brug brætteksturer"
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr "Teksturfil for lyse felter:"
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr "Teksturfil for mørke felter:"
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 #, fuzzy
 msgid "Directory with Pieces Images:"
 msgstr "Katalog med bitmap-brikker:"
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "Brætindstillinger"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr "ICS-tekstmenu"
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr "ryd"
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr "gem ændringer"
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 msgid "Edit book"
 msgstr "Redigér åbningsbog"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "Partidata"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr "ICS-inputboks"
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr "Tast et træk"
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr "Skakprogrammet har ingen tilvalg"
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr "Indstillinger for skakprogram"
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr "Vælg skakprogram fra liste:"
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr "eller specificér en herunder:"
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr "Kaldenavn (ikke nødvendigt):"
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr "Brug kaldenavnet som spillerbetegnelse i PGN-filer"
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr "Skakprogramkatalog:"
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr "Skakprogramkommando:"
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr "(Katalog vil blive udledt fra programstien hvis ikke udfyldt)"
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr "UCI"
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr "WB-protokol v1 (brug ikke særlige skakprogramfunktioner)"
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr "Må ikke bruge GUI's åbningsbog"
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr "Tilføj dette skakprogram til listen"
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr "Brug aktuel variant med dette skakprogram"
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 #, fuzzy
 msgid "Load first engine"
 msgstr "Indlæs skakprogram"
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 #, fuzzy
 msgid "Load second engine"
 msgstr "Indlæs skakprogrammet som"
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr "bland brikker"
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "Startstillingsnummer:"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 msgid "randomize"
 msgstr "vælg tilfældigt"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr "vælg bestemt"
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "Nyt blandet parti"
 
 # Stort begyndelsesbogstav med vilje
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr "Klassisk"
 
 # Stort begyndelsesbogstav med vilje
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr "Tillægstid"
 
 # Stort begyndelsesbogstav med vilje
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr "Maks. pr. træk"
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr "Træk pr.  tidsperiode:"
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr "Tid fra start (minutter):"
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr "Tillægstid eller maks. pr. træk (sekunder):"
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 msgid "Time-Odds factors:"
 msgstr "Tidsforkortelses-faktorer:"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 msgid "Engine #1"
 msgstr "Skakprogram nr. 1"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 msgid "Engine #2 / Human"
 msgstr "Skakprogram nr. 2 / menneske"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr "Ubrugt"
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr "Betænkningstid"
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "Fejl ved skrivning til skakprogram"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 msgid "Cancel"
 msgstr "Annullér"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "Konge"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr ""
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "Springer"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Løber"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Tårn"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr ""
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr ""
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Dronning"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "Bondeforvandling"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr "standard"
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "op"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "ned"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr "Ingen overskrift valgt"
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 msgid "Game-list options"
 msgstr "Indstillinger for partiliste"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "Fejl"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "Fatal fejl"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "Afslutter"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "Meddelelse"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "Notits"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Hvid"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Bonde"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr ""
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr ""
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr ""
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Tomt felt"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "Ryd bræt"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Sort"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "Fil"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "Redigér"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr "Vis"
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "Tilstand"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "Handlinger"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr "Skakprogram"
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "Indstillinger"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Hjælp"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 #, fuzzy
 msgid "Directories:"
 msgstr "Lydkatalog:"
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "Fil"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "Filter:"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 #, fuzzy
 msgid "New directory"
 msgstr "Skakprogramkatalog:"
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "Filter:"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "Kommentarer"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 #, fuzzy
 msgid "  next page"
 msgstr "næste side"
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index 1afb241..38f124d 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: xboard 4.6.0.20121211\n"
+"Project-Id-Version: xboard 4.7.2\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
-"PO-Revision-Date: 2013-01-20 18:51-0800\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
+"PO-Revision-Date: 2013-11-24 18:22-0800\n"
 "Last-Translator: Arun Persaud <arun@nubati.net>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
@@ -17,99 +17,99 @@ msgstr ""
 "Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr "Falscher Integer-wert %s"
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr "Nicht erkanntes Argument %s"
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr "Fehlender Wert für Argument %s"
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr "Unvollständiges \\ escape im Wert von »%s«"
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr "Fehler beim Öffnen der Datei »%s«"
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr "Nicht anerkannter logischer Wert für Argument %s"
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr "erstes"
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr "zweites"
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "Protokollversion %d nicht unterstützt"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr "Das Computerprogramm für das Schachprogramm wurde nicht angegeben"
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "falsche timeControl-Option %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "falsche searchTime-Option %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "Variante %s wird nur im ICS-Modus unterstützt"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "Unbekannte Variante mit Namen %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "Starte Schachprogramm"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "Fehler in Partiedatei"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "Fehler in Positionsdatei"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr "Wähle neues Spiel"
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
@@ -119,124 +119,124 @@ msgstr ""
 "Eine neue Runde wird hinzugefügt\n"
 "Die Spiele werden in 10 Sekunden starten"
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr "Alle Spiele im Turnier »%s« sind entweder beendet oder werden gespielt"
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "Partie ohne Schachprogram ist nicht möglich"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "Konnte Kommunikationsport %s nicht öffnen"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr ""
 "Verbindung zu Hostrechner %s, Portnummer %s konnte nicht hergestellt werden"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "Unbekannter initalMode %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "»Analysiere Datei«-Modus benötigt eine Partiedatei"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "Analyse-Modus benötigt ein Schachprogramm"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "Analyse-Modus funktioniert nicht im ICS-Modus"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "»Schachprogramm Weiß«-Modus benötigt ein Schachprogramm"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "»Schachprogramm Weiß«-Modus funktioniert nicht im ICS-Modus"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "»Schachprogramm Schwarz«-Modus benötigt ein Schachprogramm"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "»Schachprogramm Schwarz«-Modus funktioniert nicht im ICS-Modus"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "»Zwei Schachprogramme«-Modus benötigt ein Schachprogramm"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "»Zwei Schachprogramme«-Modus funktioniert nicht im ICS-Modus"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "Trainieren-Modus benötigt eine Partiedatei"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "Fehler beim Schreiben zum ICS"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "Fehler beim Lesen der Tastatur"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "Habe Ende-der-Datei von der Tastatur erhalten"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr "Unbekannter wild-Variante %d"
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "Fehler beim Schreiben auf dem Display"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr "Dein Gegner kibitzt: %s"
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "Fehler beim Erstellen der Zugliste: zwei Dateiköpfe"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "Fehler beim Erstellen der Zugliste: verschachtelt"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr "gegen"
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr "Illegaler Zug (abgelehnt vom ICS)"
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "Verbindung zum ICS beendet"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "Fehler beim Lesen vom ICS"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
@@ -245,108 +245,112 @@ msgstr ""
 "Konnte Schachbrettzeichenkette nicht parsen:\n"
 "»%s«"
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr "Partie zu lang; erhöhe MAX_MOVES und kompiliere neu"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "Fehler beim Erstellen der Zugliste: extra Schachbrett"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "Konnte Zug »%s« vom ICS nicht parsen"
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "Interner Fehler; falscher moveType %d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr "Dies ist nicht möglich während oder beim Zuschauen eines Spieles"
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr "Kompiliere erneut mit Unterstützung von BOARD_RANKS oder BOARD_FILES!"
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "Sie spielen Schwarz"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "Sie spielen Weiß"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "Weiß ist am Zug"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "Schwarz ist am Zug"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "Angezeigte Position ist nicht die Aktuelle"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "Ungültiger Zug"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "Ende des Spiels"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "Ungültiger Zug"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr "Bewege Bauern rückwärts zum Unterverwandeln"
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr "Turnier im Schweizer System beendet"
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr "Ungültige Paarungen vom Paarungsprogramm"
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "Illegaler Zug »%s« vom Schachprogramm %s"
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr "Schlechte FEN vom Schachprogramm erhalten"
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s unterstützt keine Analyse"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "Illegaler Zug »%s« (abgelehnt vom Schachprogram %s)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "Konnte %s Schachprogram %s auf %s nicht starten: %s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "Hinweis: %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
@@ -355,59 +359,59 @@ msgstr ""
 "Illegaler Zughinweis »%s«\n"
 "vom Schachprogramm %s"
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
-msgstr "Das Schachprogramm akzeptiert dein Remiangebot"
+msgstr "Das Schachprogramm akzeptiert dein Remisangebot"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
-"Das Schachprogramm bietet Remi an\n"
-"Wähle Aktion/Remi, um anzunehmen"
+"Das Schachprogramm bietet Remis an\n"
+"Wähle Aktion/Remis, um anzunehmen"
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr "schreiben des PV fehlgeschlagen"
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "Nicht eindeutiger Zug in der ICS-Ausgabe: »%s«"
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "Illegaler Zug in der ICS-Ausgabe: \"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "Lücke in Zugliste"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "Variante %s wird von %s nicht unterstützt"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "Fehler beim Starten »%s«"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "Warte auf erstes Schachprogramm"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "Warte auf zweites Schachprogramm"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr "Schreibzugriff auf Turnierdatei nicht möglich"
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
@@ -415,11 +419,11 @@ msgstr ""
 "Ersetzen eines Schachprogramms während es läuft nicht möglich!\n"
 "Beenden Sie das Spiel zuerst."
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr "Ein Schachprogram mit dem angegebenen Namen ist nicht installiert"
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
@@ -427,16 +431,16 @@ msgstr ""
 "Ändern Sie ein Schachprogramm indem Sie die Liste der Teilnehmner\n"
 "im Turnieroptionendialog editieren"
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr "Sie können immer nur ein Schachprogramm ändern"
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr "Das Schachprogram %s ist nicht installiert"
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
@@ -444,115 +448,115 @@ msgstr ""
 "Sie müssen eine Turnierdatei zum Speichern\n"
 "der Turnierdaten angeben"
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr "Nicht genügend Teilnehmer"
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr "Fehler in Turnierdatei"
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr "Warte auf weiter Spiele"
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr "Kein Paarungsprogram angegeben"
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "Partie %s gegen %s: Endergebnis %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "Illegaler Zug: %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "Nicht eindeutiger Zug: %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "Kann »%s« nicht öffnen"
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "Kann Zugliste nicht erstellen"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "Keine weiteren Partien in dieser Nachricht"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "Noch keine Partie geladen"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "Kann nicht weiter zurückgehen"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "Partienummer außerhalb des Bereichs"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "Kann nicht in der Partiedatei suchen"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "Spiel in Datei nicht gefunden"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "Schlechte FEN-Stellung in Datei"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "Keine Züge in dem Spiel"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "Noch keine Stellung geladen"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "Kann nicht in Stellungsdatei suchen"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "Stellung in Datei nicht gefunden"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "Schwarz am Zug"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "Weiß am Zug"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr "Warte auf Zugriff zur Datei zum Speichern"
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr "Speichere Spiel"
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr "Fehlerhafte Suche"
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr "Speichere Stellung "
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
@@ -560,7 +564,7 @@ msgstr ""
 "Sie haben die Partieentwicklung verändert.\n"
 "Benutzen Sie »Spiel erneut laden« und führen Sie ihren Zug erneut aus."
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
@@ -568,7 +572,7 @@ msgstr ""
 "Sie haben zu viele Züge eingegeben.\n"
 "Gehen Sie zur richtigen Stellung zurück und versuchen Sie es erneut."
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
@@ -576,11 +580,11 @@ msgstr ""
 "Die angezeigt Stellung ist nicht die aktuelle.\n"
 "Gehen Sie vorwärts zur richtigen Stellung und versuchen Sie es erneut."
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "Sie haben noch keinen Zug gemacht"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
@@ -589,11 +593,11 @@ msgstr ""
 "Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut "
 "aus."
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "Keine laufenden Partien"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -608,78 +612,78 @@ msgstr ""
 "»cmail -remail -game %s«\n"
 "in die Kommandozeile."
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "Fehler beim Aufruf von cmail"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "Warte auf Antwort des Gegners\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "Sie müssen noch einen Zug für die Partie machen\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "Sie müssen noch Züge für beide Partien machen\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "Sie müssen noch Züge für alle %d Partien machen\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "Sie müssen noch einen Zug für Partie %s machen\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "Keine laufenden Partien\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "Bereit zum Versenden der Mail\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "Sie müssen noch Züge für Partie %s machen\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "Editiere Kommentar"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "Editiere Kommentar für %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr "Sie schauen keiner Partie zu"
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "Weiß ist nicht am Zug"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "Schwarz ist nicht am Zug"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr "Starte %s Schachprogramm"
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
@@ -687,132 +691,132 @@ msgstr ""
 "Warte bis Sie am Zug sind\n"
 "oder wähle »Ziehe jetzt«"
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "Trainier-Modus aus"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "Trainier-Modus ein"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "Schon am Ende der Partie"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "Warnung: Sie spielen noch eine Partie"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "Warnung: Sie schauen noch einer Partie zu"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "Warnung: Sie untersuchen noch eine Partie"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr "Klicke auf eine Uhr, um das Brett zu leeren"
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr "Schließe ICS Programmanalyse…"
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "Dieses Feld ist besetzt"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "Es liegt kein unbeantwortes Angebot für diesen Zug vor"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "Ihr Gegner hat die Zeit noch nicht überschritten"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
-msgstr "Sie müssem erst ziehen bevor Sie Remi anbieten können"
+msgstr "Sie müssem erst ziehen bevor Sie Remis anbieten können"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "Sie untersuchen keine Partie"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "Sie können nicht zurücknehmen solange die Partie pausiert"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "Sie sind am Zug"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "Warten Sie bis Sie am Zug sind"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "Kein Hinweis erhältlich"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 msgid "Game list not loaded or empty"
 msgstr "Noch keine Partie geladen"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr "Buchdatei existiert! Versuche erneut zum Überschreiben."
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "Fehler beim Schreiben zum Schachprogramm %s"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
-msgstr "%s Schachprogramm beendet in Remistellung (%s)"
+msgstr "%s Schachprogramm beendet in Remisstellung (%s)"
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "Fehler: %s Schachprogramm (%s) unerwartet beendet"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "Fehler beim Lesen vom Schachprogramm %s (%s)"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr "Schachprogramm %s hat zu viele Optionen\n"
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "Angezeigter Zug ist nicht aktuell"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "Konnte Zug nicht parsen"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "Beide Zeitkontrollen überschritten"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "Weiß überschritt die Zeitkontrolle"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "Schwarz überschritt die Zeitkontrolle"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr "Veränderungen an der Uhr sind im »Auto-flag«-Modus nicht erlaubt"
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "Schlechte FEN-Stellung in der Zwischenablage"
 
@@ -922,7 +926,7 @@ msgstr ""
 "Bitte geben Sie zuerst eine existierende Turnierdatei, die geklont werden "
 "kann"
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr "# keine Schachprogramme installiert"
 
@@ -964,7 +968,7 @@ msgstr ""
 
 #: dialogs.c:371
 msgid "Enable Variation Trees"
-msgstr ""
+msgstr "Erlaube Varianten"
 
 #: dialogs.c:372
 msgid "Hide Thinking from Human"
@@ -990,7 +994,7 @@ msgstr ""
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "Nächsten Zug abwägen"
 
@@ -1072,7 +1076,7 @@ msgstr ""
 
 #: dialogs.c:416
 msgid "no castle"
-msgstr ""
+msgstr "keine Rochade"
 
 #: dialogs.c:417
 msgid "cylinder *"
@@ -1092,11 +1096,11 @@ msgstr ""
 
 #: dialogs.c:421
 msgid "two kings"
-msgstr ""
+msgstr "Zwei Könige"
 
 #: dialogs.c:422
 msgid "Board size ( -1 = default for selected variant):"
-msgstr ""
+msgstr "Brettgröße (-1 = default für gewählte Variante):"
 
 #: dialogs.c:423
 msgid "Number of Board Ranks:"
@@ -1111,7 +1115,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1152,7 +1156,7 @@ msgstr ""
 
 #: dialogs.c:439
 msgid "suicide"
-msgstr ""
+msgstr "Räuberschach"
 
 #: dialogs.c:440
 msgid "CRC (10x8)"
@@ -1183,984 +1187,988 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
-msgstr " "
+msgid "fairy"
+msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "Warnung: zweites Schachprogramm (%s) unterstützt dies nicht!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "Neue Variante"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "Maximal Anzahl der CPUs pro Schachprogram:"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr "Polyglot-verzeichnis:"
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "Größe der Hashtabelle (MB):"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr ""
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr ""
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr "Dateiname des Eröffnungsbuches:"
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr ""
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr ""
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr ""
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr ""
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr ""
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr ""
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr ""
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr ""
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr "N-Züge Regel:"
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
-msgstr "Remi nach N Zügen (total):"
+msgstr "Remis nach N Zügen (total):"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "Gewinn/Verlust Grenzwert:"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "Negiere Bewertung des 1. Schachprogramms"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "Negiere Bewertung des 2. Schachprogramms"
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "Gewinn Weiß zuerkennen"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "Auto-Kibitz"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "Automatische Kommentare"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "Automatisch Beobachten"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "Automatisch das Brett in den Vordergrung bringen"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr "Automatisch Login-skript erzeugen"
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "Beobachte im Hintegrund während einer Partie"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "Zweites Brett für beobachtetes Spiel"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "Zugliste abholen"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr ""
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
-msgstr ""
+msgstr "Suchgraph"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr ""
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+#, fuzzy
+msgid "Quit after game"
+msgstr "Warte auf weiter Spiele"
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr ""
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "Erster Zug von Weiß:"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "Erster Zug von Schwarz:"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "Alarm"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr "Alarmzeit (msek):"
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr "Nachrichten kolorieren"
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr "Textfarbe Ruf:"
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr "Textfarbe S-Ruf:"
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr "Textfarbe Kanal #1:"
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr "Textfarbe andere Kanäle:"
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr "Textfarbe Kibitz:"
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr "Textfarbe Mitteilung:"
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
-msgstr ""
+msgstr "Textfarbe Herausforderung:"
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
-msgstr ""
+msgstr "Textfarbe Spielgesuch:"
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "ICS Optionen"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr "Gleiches Material mit genau gleicher Bauernstruktur"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr "Gleiches Material"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr "Sekunden pro Zug:"
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr "Mind. Elo des stärksten Spielers:"
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr "Mind. Elo des schwächsten Spielers:"
 
-#: dialogs.c:633
+#: dialogs.c:635
 msgid "No games before year:"
 msgstr "Keine Partie vor Jahr:"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr "Such-modus:"
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "Spieleinstellungen laden"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr "Automatisch Partien speichern"
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
-msgstr ""
+msgstr "Nur eigene Partien"
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr "Partien speichern als Datei:"
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr "Speichere Endstellung in Datei:"
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "Spieleinstellungen speichern"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "Kein Ton"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr ""
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr "Hupe"
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr "Laser"
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr "Benutzerdatei"
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr "Teste Geräusch:"
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "Spielen"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr "Zug:"
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr "Gewonnen:"
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr "Verloren:"
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
-msgstr "Remi:"
+msgstr "Remis:"
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr "Nicht beendet:"
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr "Alarm:"
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
-msgstr ""
+msgstr "Herausforderung:"
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
-msgstr ""
+msgstr "Klangverzeichnis:"
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr "Ruf:"
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr "S-Ruf:"
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr "Kanal:"
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr "Kanal 1:"
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr "Mitteilung:"
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr "Kibitz:"
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr "Gesuch:"
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "Klangeinstellungen"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
-msgstr ""
+msgstr "Farbe weiße Figuren:"
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr "R"
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr "G"
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr "B"
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr "D"
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
-msgstr ""
+msgstr "Farbe schwarze Figuren:"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "Weißes Feld:"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "Schwarzes Feld:"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "Farbe zum Hervorheben:"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr ""
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr ""
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
-msgstr ""
+msgstr "Benutze Bretttexturen"
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
-msgstr ""
+msgstr "Texturedatei für weiße Felder:"
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
-msgstr ""
+msgstr "Texturdatei für schwarze Felder:"
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
-msgstr ""
+msgstr "Benutze externe Figurebitmaps mit deren Farben"
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
-msgstr ""
+msgstr "Verzeichnis mit Bildern für Figuren:"
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "Bretteinstellungen"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
-msgstr "ICS-Textmenue"
+msgstr "ICS-Textmenü"
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr "speichere Änderungen"
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 msgid "Edit book"
-msgstr "Bearbeite Buch"
+msgstr "Buch editieren"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "Markierungen"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr "ICS Eingabefeld"
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr "Geben Sie einen Zug ein"
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr "Schachprogramm hat keine Optionen"
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr "Schachprogrammeinstellungen"
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr "Wähle Schachprogram aus der Liste:"
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
-msgstr ""
+msgstr "Spitzname (optional):"
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
-msgstr ""
+msgstr "Schachprogramkommando:"
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
-msgstr ""
+msgstr "(Verzeichnis wird vom Schachprogrampfad genommen, falls leer)"
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr "Füge diese Schachprogramm zur Liste hinzu"
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr "Lade erstes Schachprogramm"
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr "Lade zweites Schachprogramm"
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr "Shuffle"
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "Startposition-Nummer:"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 msgid "randomize"
 msgstr "zufällig"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "Neue Shuffle-Partie"
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr "klassisch"
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr "Zuwachs"
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 msgid "Time-Odds factors:"
 msgstr ""
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 msgid "Engine #1"
 msgstr "Schachprogramm #1"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 msgid "Engine #2 / Human"
 msgstr "Schachprogram #2 / Spieler"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr "Nicht benutzt"
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr "Zeitkontrolle"
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "Fehler beim Schreiben zum Schachprogramm"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "König"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr "Kapitän"
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr "Leutnant"
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "General"
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr "Kriegsherr"
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "Springer"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Läufer"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Turm"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "Erzbischof"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "Kanlzer"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Königin"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr "vertagen"
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "umwandlung"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr "Fabrik"
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "hoch"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "runter"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr "Keine Markierung selektiert"
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 msgid "Game-list options"
 msgstr "Spieleliste-optionen"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "Fehler"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "Schwerwiegender Fehler"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "Beende"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "Information"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "Notiz"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Weiß"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Bauer"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "Elefant"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "Kanone"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "degradieren"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Leeres Feld"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "Brett leeren"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Schwarz"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "Datei"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr "Anzeigen"
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "Modus"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "Aktion"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr "Schachprogramm"
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "Optionen"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Hilfe"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr "Verzeichnisse:"
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 msgid "Files:"
 msgstr "Dateien:"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr "nach Namen"
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr "nach Typ"
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 msgid "Filename:"
 msgstr "Dateinname:"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr "Neues Verzeichnis"
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 msgid "File type:"
 msgstr "Dateientyp:"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 msgid "Contents of"
 msgstr "Inhalt von"
 
-#: dialogs.c:2473
-#, fuzzy
+#: dialogs.c:2480
 msgid "  next page"
 msgstr "nächste Seite"
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr "VERSUCHE EINEN ANDEREN NAMEN"
 
@@ -2286,52 +2294,44 @@ msgid "About XBoard"
 msgstr "Über XBoard"
 
 #: menus.c:582
-#, fuzzy
 msgid "New Game"
-msgstr "Neue Shuffle-Partie"
+msgstr "Neue Partie"
 
 #: menus.c:583
 msgid "New Shuffle Game ..."
 msgstr "Neue Shuffle Partie… "
 
 #: menus.c:584
-#, fuzzy
 msgid "New Variant ..."
-msgstr "Neue Variante"
+msgstr "Neue Variante…"
 
 #: menus.c:586
-#, fuzzy
 msgid "Load Game"
 msgstr "Partie laden…"
 
 #: menus.c:587
-#, fuzzy
 msgid "Load Position"
-msgstr "Nächste Stellung laden"
+msgstr "Stellung laden"
 
 #: menus.c:588
-#, fuzzy
 msgid "Next Position"
-msgstr "Nächste Stellung laden"
+msgstr "Nächste Stellung"
 
 #: menus.c:589
-#, fuzzy
 msgid "Prev Position"
-msgstr "Vorherige Stellung laden"
+msgstr "Vorherige Stellung"
 
 #: menus.c:591
-#, fuzzy
 msgid "Save Game"
 msgstr "Partie speichern…"
 
 #: menus.c:592
-#, fuzzy
 msgid "Save Position"
-msgstr "Speichere Stellung "
+msgstr "Speichere Stellung"
 
 #: menus.c:593
 msgid "Save Games as Book"
-msgstr "Partien speichern als Buch:"
+msgstr "Partien speichern als Buch"
 
 #: menus.c:595
 msgid "Mail Move"
@@ -2346,38 +2346,32 @@ msgid "Quit "
 msgstr ""
 
 #: menus.c:603
-#, fuzzy
 msgid "Copy Game"
-msgstr "Partieliste kopieren"
+msgstr "Partie kopieren"
 
 #: menus.c:604
-#, fuzzy
 msgid "Copy Position"
-msgstr "Stellung kopieren Strg+Umschalt+C"
+msgstr "Stellung kopieren"
 
 #: menus.c:605
 msgid "Copy Game List"
 msgstr "Partieliste kopieren"
 
 #: menus.c:607
-#, fuzzy
 msgid "Paste Game"
-msgstr "Spiel zurücksetzen"
+msgstr "Partie einfügen"
 
 #: menus.c:608
-#, fuzzy
 msgid "Paste Position"
-msgstr "Nächste Stellung laden"
+msgstr "Stellung einfügen"
 
 #: menus.c:610 menus.c:652
-#, fuzzy
 msgid "Edit Game"
-msgstr "Editiere Kommentar"
+msgstr "Partie editiere"
 
 #: menus.c:611 menus.c:653
-#, fuzzy
 msgid "Edit Position"
-msgstr "Nächste Stellung laden"
+msgstr "Stellung editieren"
 
 #: menus.c:612
 msgid "Edit Tags"
@@ -2400,9 +2394,8 @@ msgid "Annotate"
 msgstr "Annotieren"
 
 #: menus.c:618
-#, fuzzy
 msgid "Truncate Game"
-msgstr "Partie abbrechen         End"
+msgstr "Partie abbrechen"
 
 #: menus.c:620
 msgid "Backward"
@@ -2413,34 +2406,28 @@ msgid "Forward"
 msgstr "Vorwärts"
 
 #: menus.c:622
-#, fuzzy
 msgid "Back to Start"
-msgstr "Schwarz am Zug"
+msgstr "Zurück zum Anfang"
 
 #: menus.c:623
-#, fuzzy
 msgid "Forward to End"
-msgstr "Vorwärts zum Ende  Alt+End"
+msgstr "Zur Schlussstellung"
 
 #: menus.c:628
-#, fuzzy
 msgid "Flip View"
-msgstr "Brett automatisch drehen"
+msgstr "Brett drehen"
 
 #: menus.c:631
-#, fuzzy
 msgid "Move History"
 msgstr "Zugliste"
 
 #: menus.c:632
-#, fuzzy
 msgid "Evaluation Graph"
 msgstr "Auswertungsgraph"
 
 #: menus.c:633
-#, fuzzy
 msgid "Game List"
-msgstr "Partieliste…"
+msgstr "Partieliste"
 
 #: menus.c:637
 msgid "Comments"
@@ -2463,29 +2450,24 @@ msgid "Game List Tags..."
 msgstr "Partie Markierungen…"
 
 #: menus.c:647
-#, fuzzy
 msgid "Machine White"
-msgstr "Schachprogramm weiß   Strg+W"
+msgstr "Schachprogramm weiß"
 
 #: menus.c:648
-#, fuzzy
 msgid "Machine Black"
-msgstr "Schachprogramm Partie"
+msgstr "Schachprogramm schwarz"
 
 #: menus.c:649
-#, fuzzy
 msgid "Two Machines"
-msgstr "Zwei Schachprogramme   Strg+T"
+msgstr "Zwei Schachprogramme"
 
 #: menus.c:650
-#, fuzzy
 msgid "Analysis Mode"
-msgstr "Analyse-Modus   Strg+A"
+msgstr "Analyse-Modus"
 
 #: menus.c:651
-#, fuzzy
 msgid "Analyze Game"
-msgstr "Spiel analysieren   Strg+G"
+msgstr "Spiel analysieren"
 
 #: menus.c:654
 msgid "Training"
@@ -2493,7 +2475,7 @@ msgstr "Training"
 
 #: menus.c:655
 msgid "ICS Client"
-msgstr "ICS-client"
+msgstr "ICS-Client"
 
 #: menus.c:657
 msgid "Machine Match"
@@ -2516,14 +2498,12 @@ msgid "Rematch"
 msgstr ""
 
 #: menus.c:667
-#, fuzzy
 msgid "Call Flag"
-msgstr "Zeit reklamieren    F5"
+msgstr "Zeit reklamieren"
 
 #: menus.c:668
-#, fuzzy
 msgid "Draw"
-msgstr "Remi:"
+msgstr "Remis"
 
 #: menus.c:669
 msgid "Adjourn"
@@ -2538,14 +2518,12 @@ msgid "Resign"
 msgstr "Aufgeben"
 
 #: menus.c:673
-#, fuzzy
 msgid "Stop Observing"
-msgstr "Beobachtung beenden    F10"
+msgstr "Beobachtung beenden"
 
 #: menus.c:674
-#, fuzzy
 msgid "Stop Examining"
-msgstr "Untersuchen beenden   F11"
+msgstr "Untersuchen beenden"
 
 #: menus.c:675
 msgid "Upload to Examine"
@@ -2553,15 +2531,15 @@ msgstr "Hochladen zum Untersuchen"
 
 #: menus.c:677
 msgid "Adjudicate to White"
-msgstr "Gewinn Weiß zuerkennen"
+msgstr "Weiß den Gewinn zuerkennen"
 
 #: menus.c:678
 msgid "Adjudicate to Black"
-msgstr "Gewinn Schwartz zuerkennnen"
+msgstr "Schwarz den Gewinn zuerkennnen"
 
 #: menus.c:679
 msgid "Adjudicate Draw"
-msgstr "Remi zuerkennen"
+msgstr "Als Remis abschätzen"
 
 #: menus.c:684
 msgid "Load New 1st Engine ..."
@@ -2581,40 +2559,35 @@ msgstr "Schachprogram #2 Einstellungen…"
 
 #: menus.c:690
 msgid "Hint"
-msgstr "Hinweiß"
+msgstr "Hinweis"
 
 #: menus.c:691
 msgid "Book"
 msgstr "Buch"
 
 #: menus.c:693
-#, fuzzy
 msgid "Move Now"
-msgstr "Klang für Zug"
+msgstr "Jetzt ziehen"
 
 #: menus.c:694
-#, fuzzy
 msgid "Retract Move"
-msgstr "Zug zurücknehmen  Strg+X"
+msgstr "Zug zurücknehmen"
 
 #: menus.c:700
 msgid "General ..."
 msgstr "Allgemein…"
 
 #: menus.c:702
-#, fuzzy
 msgid "Time Control ..."
-msgstr "Zeitkontrolle"
+msgstr "Zeitkontrolle…"
 
 #: menus.c:703
-#, fuzzy
 msgid "Common Engine ..."
-msgstr "Allemein Schachprogramme…    Alt+Umschalt+U"
+msgstr "Allgemein Schachprogramme…"
 
 #: menus.c:704
-#, fuzzy
 msgid "Adjudications ..."
-msgstr "Zuerkennung…        Alt+Umschalt+J"
+msgstr "Zuerkennung…"
 
 #: menus.c:705
 msgid "ICS ..."
@@ -2638,7 +2611,7 @@ msgstr "Partieliste…"
 
 #: menus.c:710
 msgid "Sounds ..."
-msgstr "Klang ..."
+msgstr "Klang…"
 
 #: menus.c:713
 msgid "Always Queen"
@@ -2686,12 +2659,11 @@ msgstr "Einstellung am Ende speichern"
 
 #: menus.c:742
 msgid "Info XBoard"
-msgstr "Info XBoard"
+msgstr "Info über XBoard"
 
 #: menus.c:743
-#, fuzzy
 msgid "Man XBoard"
-msgstr "Man XBoard   F1"
+msgstr "XBoard-Hilfe"
 
 #: menus.c:745
 msgid "XBoard Home Page"
@@ -2703,11 +2675,11 @@ msgstr "Online Benutzerhandbuch"
 
 #: menus.c:747
 msgid "Development News"
-msgstr "Entwicklungsnachrichten"
+msgstr "Entwicklungsneuigkeiten"
 
 #: menus.c:748
 msgid "e-Mail Bug Report"
-msgstr "E-mail Fehlerreport"
+msgstr "Sende Fehlerbericht"
 
 #: nengineoutput.c:78 nengineoutput.c:85
 msgid "engine name"
@@ -2870,15 +2842,15 @@ msgstr "durchsuche"
 
 #: xaw/xoptions.c:387 xaw/xoptions.c:388
 msgid "Ctrl"
-msgstr ""
+msgstr "Strg"
 
 #: xaw/xoptions.c:393 xaw/xoptions.c:394
 msgid "Alt"
-msgstr ""
+msgstr "Alt"
 
 #: xaw/xoptions.c:399 xaw/xoptions.c:400
 msgid "Shift"
-msgstr ""
+msgstr "Umschalt"
 
 #: xaw/xoptions.c:1262
 msgid "OK"
@@ -2888,6 +2860,9 @@ msgstr "OK"
 msgid "cancel"
 msgstr "abbrechen"
 
+#~ msgid " "
+#~ msgstr " "
+
 #~ msgid "recognized '%s' (%d) as variant %s\n"
 #~ msgstr "erkenne '%s' (%d) als Variante %s\n"
 
@@ -3001,7 +2976,7 @@ msgstr "abbrechen"
 #~ msgstr "Revanche       F12"
 
 #~ msgid "Draw                F6"
-#~ msgstr "Remi          F6"
+#~ msgstr "Remis          F6"
 
 #~ msgid "Adjourn            F7"
 #~ msgstr "Aussetzen      F7"
@@ -3084,10 +3059,10 @@ msgstr "abbrechen"
 #~ msgstr "(Datei:%s) "
 
 #~ msgid "light square "
-#~ msgstr "weisses Feld "
+#~ msgstr "weißes Feld "
 
 #~ msgid "dark square "
-#~ msgstr "schwarze Feld "
+#~ msgstr "schwarzes Feld "
 
 #~ msgid "Done.\n"
 #~ msgstr "Fertig.\n"
index e4fce62..f21854f 100644 (file)
--- a/po/es.po
+++ b/po/es.po
 # XBoard -- a graphical chessboard for X
-# Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
-# Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc.
+# Copyright (C) 2013 Free Software Foundation, Inc.
 # This file is distributed under the same license as the XBoard package.
 # Traducción por Óscar Toledo G., 2010
+# Antonio Ceballos <aceballos@gmail.com>, 2013
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU xboard master-20110411\n"
+"Project-Id-Version: GNU xboard 4.7.2\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
+"PO-Revision-Date: 2013-12-07 00:14+0200\n"
+"Last-Translator: Antonio Ceballos <aceballos@gmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
-msgstr ""
+msgstr "%s en el fichero de configuración\n"
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
-msgstr ""
+msgstr "Valor entero malo %s"
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
-msgstr ""
+msgstr "Argumento no reconocido %s"
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
-msgstr ""
+msgstr "No se ha dado valor al argumento %s"
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
-msgstr ""
+msgstr "Carácter de escape \\ incompleto en el valor de %s"
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
-msgstr ""
+msgstr "Fallo al abrir fichero de indirección %s"
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
-msgstr ""
+msgstr "Valor del argumento lógico %s no reconocido"
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
-msgstr ""
+msgstr "primer"
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
-msgstr ""
+msgstr "segundo"
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "versión %d del protocolo no es admitida"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
-msgstr ""
+msgstr "No se especificó el ejecutable del motor"
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "opción timeControl incorrecta %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "opción searchTime incorrecta %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "La variante %s solo se admite en modo ICS"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "Nombre de variante desconocido %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "Iniciando programa de ajedrez"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "archivo de partidas incorrecto"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "archivo de posición incorrecto"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
-msgstr ""
+msgstr "Seleccionar una nueva partida"
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
+"Se ha reiniciado un torneo que ya había concluido\n"
+"Se le va a añadir un nuevo ciclo\n"
+"Las partidas comienzan dentro de 10 s"
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
+"Ya se han disputado o se están disputando todas las partidas del torneo '%s'"
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "No se puede tener una partida sin programas de ajedrez"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "No se pudo abrir la puerta de comunicaciones %s"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "No se pudo conectar al servidor %s, puerta %s"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "Modo inicial desconocido %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
-msgstr "El modo análisis de archivo requiere un archivo de partida"
+msgstr "El modo análisis de archivo requiere un archivo de partidas"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "El modo de análisis requiere un motor de ajedrez"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "El modo de análisis no funciona con el modo ICS"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "El modo de máquina con blancas requiere un motor de ajedrez"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "El modo de máquina con blancas no funciona con el modo ICS"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "El modo de máquina con negras requiere un motor de ajedrez"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "El modo de máquina con negras no funciona con el modo ICS"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "El modo de dos máquinas requiere un motor de ajedrez"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "El modo de dos máquinas no funciona con el modo ICS"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "El modo de entrenamiento requiere un archivo de partidas"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "Error al escribir a ICS"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "Error al leer el teclado"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "Se obtuvo del teclado un fin de archivo"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
-msgstr ""
+msgstr "Tipo «wild» %d desconocido"
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
-msgstr "Error al escribir a la pantalla"
+msgstr "Error al escribir en la pantalla"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
-msgstr ""
+msgstr "información kibitz de su oponente: %s"
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "Error al recolectar lista de jugadas: dos encabezados"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "Error al recolectar lista de jugadas: anidado"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
-msgstr ""
+msgstr "contra"
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
-msgstr ""
+msgstr "La jugada no es válida (la ha rechazado ICS)"
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "Conexión cerrada por ICS"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "Error al leer de ICS"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
+"Fallo al analizar texto del tablero:\n"
+"\"%s\""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
-msgstr "Juego demasiado largo; incremente MAX_MOVES y recompile"
+msgstr "Partida demasiado larga; incremente MAX_MOVES y recompile"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "Error al recolectar lista de jugadas: tablero extra"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
-msgstr "No se pudo analizar jugada \"%s\" de ICS"
+msgstr "No se pudo analizar la jugada \"%s\" de ICS"
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "say Error interno; moveType incorrecto %d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
-msgstr ""
+msgstr "No se puede hacer esto mientras se está jugando u observando"
 
-#: backend.c:6029
+#  TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable?
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
-msgstr ""
+msgstr "¡Hace falta recompilar para disponer de BOARD_RANKS o BOARD_FILES!"
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "Usted juega negras"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "Usted juega blancas"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "Turno de las blancas"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "Turno de las negras"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "La posición mostrada no es la actual"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "Jugada ilegal"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "Fin del juego"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "Jugada incorrecta"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
+msgstr "Retrasar el peón a la posición previa a la coronación"
+
+#: backend.c:7364
+msgid "only marked squares are legal"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7624
 msgid "Swiss tourney finished"
-msgstr ""
+msgstr "Torneo suizo terminado"
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
-msgstr ""
+msgstr "El bando del otro motor no es válido"
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "Jugada ilegal \"%s\" del %s motor"
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
-msgstr ""
+msgstr "El FEN recibido del motor es incorrecto"
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s no admite análisis"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
-msgstr "Jugada ilegal \"%s\" (rechazada por %s programa de ajedrez)"
+msgstr "Jugada ilegal \"%s\" (rechazada por el programa de ajedrez %s)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
-msgstr "Falla al iniciar %s programa de ajedrez %s en %s: %s\n"
+msgstr "Fallo al iniciar el programa de ajedrez %s %s en %s: %s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "Sugerencia: %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
+"La jugada sugerida \"%s\"\n"
+"por el programa de ajedrez %s no es válida"
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr "La máquina acepta su oferta de tablas"
 
-#: backend.c:8897
+# TRANSLATORS: Action / Draw translatable?
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
+"La máquina ofrece tablas\n"
+"Seleccione Action / Draw si está de acuerdo"
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
-msgstr ""
+msgstr "fallo al escribir la PV"
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
-msgstr "Jugada ambigua en salida ICS: \"%s\""
+msgstr "Jugada ambigua en la salida ICS: \"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
-msgstr "Jugada ilegal en salida ICS: \"%s\""
+msgstr "Jugada ilegal en la salida ICS: \"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
-msgstr "Hueco en lista de jugadas"
+msgstr "Hueco en la lista de jugadas"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "La variante %s no es admitida por %s"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
-msgstr "Falla al iniciar '%s'"
+msgstr "Fallo al iniciar '%s'"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "Esperando al primer programa de ajedrez"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "Esperando al segundo programa de ajedrez"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
-msgstr ""
+msgstr "No se ha podido escribir en el fichero de torneos"
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
+"¡No se puede reemplazar un motor mientras está ocupado!\n"
+"Termine primero la partida del motor."
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
-msgstr ""
+msgstr "No hay ningún motor instalado con el nombre indicado"
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
+"Cambie primero un motor editando la lista de participantes\n"
+"en el diálogo de las Opciones de Torneo"
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
-msgstr ""
+msgstr "Solo se puede cambiar un motor a la vez"
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
-msgstr ""
+msgstr "No hay ningún motor %s instalado"
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
+"Hay que proporcionar un fichero de torneos,\n"
+"para almacenar el progreso del torneo"
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
-msgstr ""
+msgstr "No hay suficientes participantes"
 
-#: backend.c:10459
-#, fuzzy
+#: backend.c:10589
 msgid "Bad tournament file"
-msgstr "archivo de partidas incorrecto"
+msgstr "Archivo de torneos incorrecto"
 
-#: backend.c:10471
-#, fuzzy
+#: backend.c:10601
 msgid "Waiting for other game(s)"
-msgstr "Esperando al primer programa de ajedrez"
+msgstr "Esperando por otra(s) partida(s)"
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
-msgstr ""
+msgstr "iNo se ha especificado el otro motor"
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
-msgstr "Partida %s vs. %s: puntuación final %d-%d-%d"
+msgstr "Encuentro %s - %s: puntuación final %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "Jugada ilegal: %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "Jugada ambigua: %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "No se puede abrir \"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
-msgstr "No se pudo armar lista de partidas"
+msgstr "No se pudo construir la lista de partidas"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "No hay más partidas en este mensaje"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "Ninguna partida se ha cargado aún"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "Ya no se puede ir más atrás"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "Número de partida fuera de rango"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "No se puede buscar en archivo de partidas"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "Partida no hallada en archivo"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "Posición FEN incorrecta en archivo"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "Ninguna jugada en la partida"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "Ninguna posición se ha cargado aún"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
-msgstr "No se puede buscar en archivo de partidas"
+msgstr "No se puede buscar en archivo de aperturas"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "No se halló la posición en el archivo"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
-msgstr "Las negras juegan"
+msgstr "Negras juegan"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
-msgstr "Las blancas juegan"
+msgstr "Blancas juegan"
 
-#: backend.c:12703 backend.c:13064
-#, fuzzy
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
-msgstr "Esperando al segundo programa de ajedrez"
+msgstr "Esperando a tener acceso para guardar el fichero"
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
-msgstr ""
+msgstr "Guardando partida"
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
-msgstr ""
+msgstr "Búsqueda incorrecta"
 
-#: backend.c:13066
-#, fuzzy
+#: backend.c:13197
 msgid "Saving position"
-msgstr "archivo de posición incorrecto"
+msgstr "Guardando posición"
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
+"Usted ha editado el historial de la partida.\n"
+"Use «Reload Same Game» y vuelva a realizar un movimiento."
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
+"Usted ha introducido demasiadas jugadas.\n"
+"Retroceda hasta la posición correcta e inténtelo de nuevo."
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
+"La posición que se está mostrando no es la actual.\n"
+"Avance hasta la posición correcta e inténtelo de nuevo."
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
-msgstr "Usted todavía no hace una jugada"
+msgstr "Usted no ha realizado todavía ninguna jugada"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
+"El mensaje «cmail» no está cargado.\n"
+"Use «Reload CMail Message» y vuelva a realizar un movimiento."
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "No hay partidas sin terminar"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -582,340 +608,345 @@ msgid ""
 "\"cmail -remail -game %s\"\n"
 "on the command line."
 msgstr ""
+"Ya ha enviado una jugada por correo.\n"
+"Espere hasta recibir una jugada de su adversario.\n"
+"Para volver a enviar la misma jugada, teclee\n"
+"\"cmail -remail -game %s\"\n"
+"en la línea de órdenes."
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
-msgstr "Falla al invocar cmail"
+msgstr "Fallo al invocar cmail"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "Esperando respuesta del oponente\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "Todavía necesita hacer una jugada para la partida\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "Todavía necesita hacer jugadas para ambas partidas\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "Todavía necesita hacer jugadas para las %d partidas\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "Todavía necesita hacer una jugada para la partida %s\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "No hay juegos sin terminar\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "Listo para enviar correo\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "Todavía necesita hacer jugadas para las partidas %s\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "Editar comentario"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "Editar comentario en %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
-msgstr ""
+msgstr "Usted no está observando una partida"
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "No es turno de las blancas"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "No es turno de las negras"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
-msgstr ""
+msgstr "Iniciando el programa de ajedrez %s"
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
+"Espere su turno\n"
+"o seleccione «Move Now»"
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "Modo de entrenamiento apagado"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "Modo de entrenamiento activo"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "Ya se encuentra al final de la partida"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "Advertencia: Usted todavía está jugando una partida"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "Advertencia: Usted todavía está observando una partida"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "Advertencia: Usted todavía está examinando una partida"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
-msgstr ""
+msgstr "Pinche el reloj para limpiar el tablero"
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
-msgstr ""
+msgstr "Cerrar el modo de análisis del motor ICS..."
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "Ese cuadro está ocupado"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "No hay oferta pendiente para esta jugada"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "Su oponente no está fuera de tiempo"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "Debe hacer su jugada antes de ofrecer tablas"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "Usted no está examinando una partida"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "No puede revertir si está en pausa"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "Es su turno"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "Espero su turno"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "No hay sugerencia disponible"
 
-#: backend.c:15234 ngamelist.c:355
-#, fuzzy
+#: backend.c:15366 ngamelist.c:355
 msgid "Game list not loaded or empty"
-msgstr "Ninguna partida se ha cargado aún"
+msgstr "La lista de partidas no se ha cargado o está vacía"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
+"¡Ya existe el fichero del libro! Inténtelo de nuevo si quiere "
+"sobreescribirlo."
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "Error al escribir al %s programa de ajedrez"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
-msgstr ""
+msgstr "El programa %s termina en posición de tablas (%s)"
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "Error: el %s programa de ajedrez (%s) terminó inesperadamente"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "Error al leer del %s programa de ajedrez (%s)"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
-msgstr ""
+msgstr "El motor %s tiene demasiadas opciones\n"
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "La jugada ilustrada no es la actual"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "No se pudo analizar la jugada"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "Ambas banderas cayeron"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "La bandera blanca cayó"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "La bandera negra cayó"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
+"El ajuste del reloj no está permitido en el modo de advertencia de tiempo "
+"automático"
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "Posición FEN incorrecta en portapapeles"
 
 #: book.c:577 book.c:830
 msgid "Polyglot book not valid"
-msgstr ""
+msgstr "El libro de Polyglot no es válido"
 
 #: book.c:701
 msgid "Book Fault"
-msgstr ""
+msgstr "Error en el libro"
 
 #: book.c:833
 msgid "Hash keys are different"
-msgstr ""
+msgstr "Las claves «hash» son diferentes"
 
 #: book.c:1000
-#, fuzzy
 msgid "Could not create book"
-msgstr "No se pudo analizar la jugada"
+msgstr "No se ha podido crear el libro"
 
 #: dialogs.c:259
-#, fuzzy
 msgid "Tournament file:          "
-msgstr "Aplazamiento   F7"
+msgstr "Fichero de torneos:       "
 
 #: dialogs.c:260
 msgid "Sync after round"
-msgstr ""
+msgstr "Sincronizar después de la ronda"
 
 #: dialogs.c:261
 msgid "    (for concurrent playing of a single"
-msgstr ""
+msgstr "    (para jugar simultáneamente en un solo"
 
 #: dialogs.c:262
 msgid "Sync after cycle"
-msgstr ""
+msgstr "Sincronizar después de una vuelta"
 
 #: dialogs.c:263
 msgid "      tourney with multiple XBoards)"
-msgstr ""
+msgstr "      torneo con múltiples XBoards)"
 
 #: dialogs.c:264
 msgid "Tourney participants:"
-msgstr ""
+msgstr "Participantes del torneo:"
 
 #: dialogs.c:265
-#, fuzzy
 msgid "Select Engine:"
-msgstr "Motor"
+msgstr "Seleccione Motor:"
 
 #: dialogs.c:273
 msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
-msgstr ""
+msgstr "Tipo de torneo (0 = liga, 1 = uno contra todos):"
 
 #: dialogs.c:274
 msgid "Number of tourney cycles (or Swiss rounds):"
-msgstr ""
+msgstr "Número de vueltas del torneo (o rondas de torneo suizo)"
 
 #: dialogs.c:275
-#, fuzzy
 msgid "Default Number of Games in Match (or Pairing):"
-msgstr "Partidas torneo p/def"
+msgstr "Número predeterminado de partidas del encuentro (o emparejamiento):"
 
 #: dialogs.c:276
 msgid "Pause between Match Games (msec):"
-msgstr ""
+msgstr "Pausa entre partidas del encuentro (ms):"
 
 #: dialogs.c:277
-#, fuzzy
 msgid "Save Tourney Games on:"
-msgstr "Opciones al salvar partida"
+msgstr "Guardar partidas del torneo en:"
 
 #: dialogs.c:278
 msgid "Game File with Opening Lines:"
-msgstr ""
+msgstr "Fichero de partidas con líneas de apertura:"
 
 #: dialogs.c:279
 msgid "Game Number (-1 or -2 = Auto-Increment):"
-msgstr ""
+msgstr "Número de la partida (-1 o -2 = incremento automático):"
 
 #: dialogs.c:280
 msgid "File with Start Positions:"
-msgstr ""
+msgstr "Fichero con posiciones iniciales:"
 
 #: dialogs.c:281
 msgid "Position Number (-1 or -2 = Auto-Increment):"
-msgstr ""
+msgstr "Número de la posición (-1 o -2 = incremento automático):"
 
 #: dialogs.c:282
 msgid "Rewind Index after this many Games (0 = never):"
-msgstr ""
+msgstr "Rebobinar Índice después de este número de Partidas (0 = nunca)"
 
 #: dialogs.c:283
 msgid "Disable own engine books by default"
-msgstr ""
+msgstr "Inicialmente, desactivar los libros propios del motor"
 
 #: dialogs.c:284
-#, fuzzy
 msgid "Replace Engine"
-msgstr "Motor"
+msgstr "Reemplazar motor"
 
 #: dialogs.c:285
-#, fuzzy
 msgid "Upgrade Engine"
-msgstr "Motor"
+msgstr "Actualizar motor"
 
 #: dialogs.c:286
 msgid "Clone Tourney"
-msgstr ""
+msgstr "Clonar torneo"
 
 #: dialogs.c:316
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
+"En primer lugar, debe usted especificar un fichero de torneos que exista, "
+"para ser clonado"
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
-msgstr ""
+msgstr "# no hay ningún motor instalado"
 
 #: dialogs.c:344
 msgid "Match Options"
-msgstr ""
+msgstr "Opciones del encuentro"
 
 #: dialogs.c:363
 msgid "Absolute Analysis Scores"
-msgstr ""
+msgstr "Puntuaciones absolutas del análisis"
 
 #: dialogs.c:364
 msgid "Almost Always Queen (Detour Under-Promote)"
-msgstr ""
+msgstr "Casi siempre dama (rodeo para subcoronar)"
 
 #: dialogs.c:365 menus.c:714
 msgid "Animate Dragging"
@@ -939,11 +970,11 @@ msgstr "A ciegas"
 
 #: dialogs.c:370
 msgid "Drop Menu"
-msgstr ""
+msgstr "Menú «drop»"
 
 #: dialogs.c:371
 msgid "Enable Variation Trees"
-msgstr ""
+msgstr "Activar árboles de variaciones"
 
 #: dialogs.c:372
 msgid "Hide Thinking from Human"
@@ -967,24 +998,23 @@ msgstr "Actualización periódica (en análisis)"
 
 #: dialogs.c:378
 msgid "Play Move(s) of Clicked PV (Analysis)"
-msgstr ""
+msgstr "Realizar la(s) jugada(s) de la PV escogida (análisis)"
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "Prever siguente jugada"
 
 #: dialogs.c:380
 msgid "Popup Exit Messages"
-msgstr "Ventana al salir"
+msgstr "Ventana emergente al salir"
 
 #: dialogs.c:381 menus.c:730
 msgid "Popup Move Errors"
-msgstr "Ventana si error en jugada"
+msgstr "Ventana emergente si error en jugada"
 
 #: dialogs.c:382
-#, fuzzy
 msgid "Scores in Move List"
-msgstr "Leer lista jugadas"
+msgstr "Puntuaciones de la lista de jugadas"
 
 #: dialogs.c:383
 msgid "Show Coordinates"
@@ -992,36 +1022,35 @@ msgstr "Mostrar coordenadas"
 
 #: dialogs.c:384
 msgid "Show Target Squares"
-msgstr ""
+msgstr "Mostrar casillas objetivo"
 
 #: dialogs.c:385
 msgid "Sticky Windows"
-msgstr ""
+msgstr "Ventanas adhesivas"
 
 #: dialogs.c:386 menus.c:733
 msgid "Test Legality"
-msgstr "Checar legalidad"
+msgstr "Verificar legalidad"
 
 #: dialogs.c:387
 msgid "Top-Level Dialogs"
-msgstr ""
+msgstr "Diálogos de alto nivel"
 
 #: dialogs.c:388
 msgid "Flash Moves (0 = no flashing):"
-msgstr ""
+msgstr "Destello en las jugadas (0 = sin destello):"
 
 #: dialogs.c:389
 msgid "Flash Rate (high = fast):"
-msgstr ""
+msgstr "Velocidad de destello (high = rápido):"
 
 #: dialogs.c:390
 msgid "Animation Speed (high = slow):"
-msgstr ""
+msgstr "Velocidad de animación (high = lenta):"
 
 #: dialogs.c:391
-#, fuzzy
 msgid "Zoom factor in Evaluation Graph:"
-msgstr "Gráfica de evaluación"
+msgstr "Factor de «zoom» en el grafo de evaluación:"
 
 #: dialogs.c:400
 msgid "General Options"
@@ -1033,40 +1062,39 @@ msgstr "normal"
 
 #: dialogs.c:411
 msgid "makruk"
-msgstr ""
+msgstr "«makruk» (tailandés)"
 
 #: dialogs.c:412
 msgid "FRC"
-msgstr ""
+msgstr "FRC (ajedrez aleatorio de Fischer)"
 
 #: dialogs.c:413
 msgid "shatranj"
-msgstr ""
+msgstr "«shatranj»"
 
 #: dialogs.c:414
 msgid "wild castle"
-msgstr ""
+msgstr "enroque salvaje"
 
 #: dialogs.c:415
 msgid "knightmate"
-msgstr ""
+msgstr "mate al caballo"
 
 #: dialogs.c:416
 msgid "no castle"
-msgstr ""
+msgstr "sin enroque"
 
 #: dialogs.c:417
-#, fuzzy
 msgid "cylinder *"
-msgstr "cilindro"
+msgstr "cilíndrico *"
 
 #: dialogs.c:418
 msgid "3-checks"
-msgstr ""
+msgstr "tres jaques"
 
 #: dialogs.c:419
 msgid "berolina *"
-msgstr ""
+msgstr "belorina *"
 
 #: dialogs.c:420
 msgid "atomic"
@@ -1074,63 +1102,64 @@ msgstr "atómico"
 
 #: dialogs.c:421
 msgid "two kings"
-msgstr ""
+msgstr "dos reyes"
 
 #: dialogs.c:422
 msgid "Board size ( -1 = default for selected variant):"
 msgstr ""
+"Tamaño del tablero ( -1 = el predeterminado para la variante seleccionada):"
 
 #: dialogs.c:423
 msgid "Number of Board Ranks:"
-msgstr ""
+msgstr "Número de filas del tablero:"
 
 #: dialogs.c:424
 msgid "Number of Board Files:"
-msgstr ""
+msgstr "Número de columnas del tablero:"
 
 #: dialogs.c:425
 msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
 msgid "Great Shatranj (10x8)"
-msgstr ""
+msgstr "Gran shatranj (10x8)"
 
 #: dialogs.c:431
 msgid "Seirawan"
-msgstr ""
+msgstr "Seirawan"
 
 #: dialogs.c:432
 msgid "falcon (10x8)"
-msgstr ""
+msgstr "halcón (10x8)"
 
 #: dialogs.c:433
 msgid "Superchess"
-msgstr ""
+msgstr "Superajedrez"
 
 #: dialogs.c:434
 msgid "Capablanca (10x8)"
-msgstr ""
+msgstr "Capablanca (10x8)"
 
 #: dialogs.c:435
 msgid "crazyhouse"
-msgstr ""
+msgstr "«crazyhouse»"
 
 #: dialogs.c:436
 msgid "Gothic (10x8)"
-msgstr ""
+msgstr "Gótico (10x8)"
 
 #: dialogs.c:437
 msgid "bughouse"
-msgstr ""
+msgstr "pasapiezas"
 
 #: dialogs.c:438
 msgid "janus (10x8)"
-msgstr ""
+msgstr "janus (10x8)"
 
 #: dialogs.c:439
 msgid "suicide"
@@ -1138,1120 +1167,1131 @@ msgstr "suicida"
 
 #: dialogs.c:440
 msgid "CRC (10x8)"
-msgstr ""
+msgstr "CRC (10x8)"
 
+# TRANSLATORS: give-away = losers?
 #: dialogs.c:441
 msgid "give-away"
-msgstr ""
+msgstr "pierde gana"
 
 #: dialogs.c:442
 msgid "grand (10x10)"
-msgstr ""
+msgstr "gran ajedrez (10x10)"
 
+# TRANSLATORS: give-away = losers?
 #: dialogs.c:443
 msgid "losers"
-msgstr ""
+msgstr "pierde gana"
 
 #: dialogs.c:444
 msgid "shogi (9x9)"
-msgstr ""
+msgstr "japonés (9x9)"
 
 #: dialogs.c:445
 msgid "Spartan"
-msgstr ""
+msgstr "espartano"
 
 #: dialogs.c:446
 msgid "xiangqi (9x10)"
-msgstr ""
+msgstr "chino"
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
-msgstr ""
+msgstr "ajedrez del mensajero (12x8)"
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "Advertencia: ¡el segundo motor (%s) no admite esto!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
-msgstr ""
+msgstr "Solo pasapiezas no está disponible en el modo visor"
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
+"Todas las variantes no disponibles en el primer motor\n"
+"(actualmente %s) están desactivas"
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
-msgstr "Variantes"
+msgstr "Nueva variante"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
-msgstr "Número max. CPUs:"
+msgstr "Número max. CPUs por motor:"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
-msgstr ""
+msgstr "Directorio de Ployglot:"
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
-msgstr "Tamaño hash (MB):"
+msgstr "Tamaño de la tabla de transposición (MB):"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
-msgstr "Carpeta EGTB:"
+msgstr "Carpeta de la EGTB Nalimov:"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
-msgstr "Tamaño EGTB (MB):"
+msgstr "Tamaño de la caché de la EGTB (MB):"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
-msgstr ""
+msgstr "Usar el libro de la GUI"
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
-msgstr ""
+msgstr "Fichero del libro de aperturas:"
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
-msgstr "Profundo libro:"
+msgstr "Profundidad del libro (jugadas):"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
-msgstr "Variación libro:"
+msgstr "Variedad del libro (0) frente a fuerza (100):"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
-msgstr "Primero tiene libro propio"
+msgstr "El motor 1 tiene libro propio"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
-msgstr ""
+msgstr "El motor 2 tiene libro propio"
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
-msgstr "Configuración común de motor"
+msgstr "Configuración general de los motores"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
-msgstr "Detectar mates"
+msgstr "Detectar todos los mates"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "Verificar avisos del motor"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
-msgstr "Tablas si hay material insufficiente"
+msgstr "Tablas si el material es insuficiente"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
-msgstr "Adjudicar tablas triviales"
+msgstr "Adjudicar tablas triviales (regla de las tres jugadas)"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
-msgstr ""
+msgstr "Regla de las N jugadas:"
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "Adjudicar mate después de:"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "Límite para adjudicar juego:"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
-msgstr "Puntuación motor #1 es absoluta"
+msgstr "Negar puntuación del motor #1"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
-msgstr "Puntuación motor #2 es absoluta"
+msgstr "Negar puntuación del motor #2"
 
-#: dialogs.c:556
-#, fuzzy
+#: dialogs.c:557
 msgid "Adjudicate non-ICS Games"
-msgstr "Adjudicar a blancas"
+msgstr "Adjudicar partidas no ICS"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "Auto Kibitz"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "Auto-comentario"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "Auto-Observar"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "Tablero al frente (automático)"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
-msgstr ""
+msgstr "Creación de fichero de registro automática"
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
-msgstr "Mirar en el fondo"
+msgstr "Seguir observando mientras se juega"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
-msgstr "Tablero dual"
+msgstr "Tablero dual para partidas observadas"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
-msgstr "Leer lista jugadas"
+msgstr "Leer lista de jugadas"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "Jugar en silencio"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "Buscar gráfica"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
-msgstr "auto-Refresco"
+msgstr "Grafo de búsqueda con refresco automático"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
-msgstr ""
+msgstr "Ventana emergente de buzón automática"
 
-#: dialogs.c:581
+#: dialogs.c:582
+#, fuzzy
+msgid "Quit after game"
+msgstr "Esperando por otra(s) partida(s)"
+
+#: dialogs.c:583
 msgid "Premove"
-msgstr "Pre-mov."
+msgstr "Pre-jugada"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
-msgstr ""
+msgstr "Prejugada de las blancas"
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "1er. mov. blancas"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
-msgstr ""
+msgstr "Prejugada de las negras"
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "1er. mov. negras"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "Alarma"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
-msgstr ""
+msgstr "Tiempo de la alarma (ms):"
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
-msgstr ""
+msgstr "Mensajes coloreados"
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
-msgstr ""
+msgstr "Colores del texto que se expresa en voz alta:"
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
-msgstr ""
+msgstr "Colores «S» del texto que se expresa en voz alta:"
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
-msgstr ""
+msgstr "Colores del texto del canal 1:"
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
-msgstr ""
+msgstr "Colores del texto del otro canal:"
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
-msgstr ""
+msgstr "Colores del texto kibitz:"
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
-msgstr ""
+msgstr "Colores del texto de hablar con otros:"
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
-msgstr ""
+msgstr "Colores del texto de desafíos:"
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
-msgstr ""
+msgstr "Colores del texto de peticiones:"
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
-msgstr ""
+msgstr "Colores del texto de búsqueda:"
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "Opciones ICS"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
-msgstr ""
+msgstr "Coincidencia exacta de la posición"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
-msgstr ""
+msgstr "La posición mostrada es un subconjunto"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
-msgstr ""
+msgstr "Mismo material con exactamente la misma cadena de peones"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
-msgstr ""
+msgstr "Mismo material"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
-msgstr ""
+msgstr "Rango de material (mitad superior del tablero opcional)"
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
-msgstr ""
+msgstr "Diferencia de material (situación equilibrada opcional)"
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
-msgstr ""
+msgstr "Etiquetas de visualización automática"
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
-msgstr ""
+msgstr "Comentario de visualización automática"
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
+"Velocidad de juego automático de las partidas cargadas\n"
+"(0 = instantánea, -1 = desactivada):"
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
-msgstr ""
+msgstr "Segundos por jugadas:"
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
+"\n"
+"opciones para el modo de visualización de partidas:"
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
+"\n"
+"Umbral para filtrar posiciones en la lista de partidas:"
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
-msgstr ""
+msgstr "Elo del mejor jugador como mínimo:"
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
-msgstr ""
+msgstr "Elo del peor jugador como mínimo:"
 
-#: dialogs.c:633
-#, fuzzy
+#: dialogs.c:635
 msgid "No games before year:"
-msgstr "Ninguna partida se ha cargado aún"
+msgstr "Número de partidas antes del año:"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
-msgstr ""
+msgstr "Número mínimo de posiciones consecutivas:"
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
-msgstr ""
+msgstr "Modo de búsqueda:"
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
-msgstr ""
+msgstr "También colores invertidos"
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
-msgstr ""
+msgstr "También posición volteada izquierda-derecha"
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "Opciones al leer partida"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
-msgstr ""
+msgstr "Guardar partidas automáticamente"
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
-msgstr ""
+msgstr "Solo partidas propias"
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
-msgstr ""
+msgstr "Guardar partidas en fichero"
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
-msgstr ""
+msgstr "Guardar en fichero posiciones finales:"
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
-msgstr ""
+msgstr "Cabecera PGN del evento:"
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
-msgstr ""
+msgstr "Estilo de guardado antiguo (en contraposición a PGN)"
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
-msgstr ""
+msgstr "Incluir etiqueta de número en el PGN del torneo"
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
-msgstr ""
+msgstr "Guardar la información de puntuación/profundidad en el PGN"
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
-msgstr ""
+msgstr "Guardar información fuera-de-libro en PGN "
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "Opciones al salvar partida"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "Sin sonido"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
-msgstr "Bip por defecto"
+msgstr "Bip predeterminado"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
-msgstr ""
+msgstr "Fichero WAV de arriba"
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
-msgstr ""
+msgstr "Bocina de coche"
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
-msgstr ""
+msgstr "Platillos"
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
-msgstr ""
+msgstr "Timbre"
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
-msgstr ""
+msgstr "«Gong»"
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
-msgstr ""
+msgstr "Láser"
 
-#: dialogs.c:689
+# TRANSLATORS
+#: dialogs.c:691
 msgid "Penalty"
-msgstr ""
+msgstr "Penalización"
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
-msgstr ""
+msgstr "Teléfono"
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
-msgstr ""
+msgstr "«Pop»"
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
-msgstr ""
+msgstr "Palmada"
 
-#: dialogs.c:693
+# TRANSLATORS
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
-msgstr ""
+msgstr "Fichero del usuario"
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
-msgstr ""
+msgstr "Fichero WAV del usuario:"
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
-msgstr ""
+msgstr "Programa de sonido:"
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
-msgstr ""
+msgstr "Sonido de prueba"
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "Reproducir"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
-msgstr ""
+msgstr "Jugada:"
 
-#: dialogs.c:722
+# TRANSLATORS
+#: dialogs.c:724
 msgid "Win:"
-msgstr ""
+msgstr "Victorias:"
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
-msgstr ""
+msgstr "Derrotas:"
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
-msgstr ""
+msgstr "Tablas"
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
-msgstr ""
+msgstr "No terminadas:"
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
-msgstr ""
+msgstr "Alarma:"
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
-msgstr ""
+msgstr "Desafío:"
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
-msgstr ""
+msgstr "Carpeta de sonidos:"
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
-msgstr ""
+msgstr "En voz alta:"
 
-#: dialogs.c:731
+# TRANSLATORS
+#: dialogs.c:733
 msgid "S-Shout:"
-msgstr ""
+msgstr "En voz alta S"
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
-msgstr ""
+msgstr "Canal:"
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
-msgstr ""
+msgstr "Canal 1:"
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
-msgstr ""
+msgstr "Decir:"
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
-msgstr ""
+msgstr "Kibitz:"
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
-msgstr ""
+msgstr "Pedir:"
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
-msgstr ""
+msgstr "Buscar:"
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
-msgstr "Sonidos"
+msgstr "Opciones de sonido"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
-msgstr ""
+msgstr "Color de las piezas blancas:"
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
-msgstr ""
+msgstr "R"
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
-msgstr ""
+msgstr "V"
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
-msgstr ""
+msgstr "A"
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
-msgstr ""
+msgstr "O"
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
-msgstr "Piezas negras"
+msgstr "Color de las piezas negras:"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
-msgstr "Cuadros claros"
+msgstr "Color de los escaques claros"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
-msgstr "Cuadros obscuros"
+msgstr "Color de los escaques oscuros"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
-msgstr "Cuadro iluminado"
+msgstr "Color de escaque iluminado"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
-msgstr "Iluminación pre.mov."
+msgstr "Color de iluminación de prejugada:"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
-msgstr ""
+msgstr "Voltear piezas estilo Shogi    (Botones de colores predefinidos)"
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
-msgstr "Monocromo"
+msgstr "Modo mono"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
+"Hueco de la línea ( -1 = el predeterminado para el tamaño de ltablero):"
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
-msgstr ""
+msgstr "Utilizar tablero con texturas"
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
-msgstr ""
+msgstr "Fichero de texturas para escaques claros:"
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
-msgstr ""
+msgstr "Fichero de texturas para escaques oscuros:"
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
-msgstr ""
+msgstr "Utilizar «bitmaps» externos para las piezas con sus propios colores"
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
-msgstr ""
+msgstr "Carpeta con imágenes de piezas:"
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "Opciones de tablero"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
-msgstr ""
+msgstr "Menú de texto ICS"
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
-msgstr ""
+msgstr "borrar"
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
-msgstr ""
+msgstr "guardar cambios"
 
-#: dialogs.c:1051
-#, fuzzy
+#: dialogs.c:1053
 msgid "Edit book"
-msgstr "Edición"
+msgstr "Editar libro"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
-msgstr "Circunstancias"
+msgstr "Etiquetas"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
-msgstr ""
+msgstr "Cuadro de entrada ICS"
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
-msgstr ""
+msgstr "Teclear una jugada"
 
-#: dialogs.c:1251
-#, fuzzy
+#: dialogs.c:1253
 msgid "Engine has no options"
-msgstr "Primero tiene libro propio"
+msgstr "El motor no tiene opciones"
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
-msgstr ""
+msgstr "Configuración del motor"
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
-msgstr ""
+msgstr "Seleccionar un motor de la lista:"
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
-msgstr ""
+msgstr "o especificar uno debajo:"
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
-msgstr ""
+msgstr "Sobrenombre (opcional):"
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
+"Usar el sobrenombre de las etiquetas de jugadores del PGN en las partidas "
+"motor-motor"
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
-msgstr ""
+msgstr "Carpeta del motor:"
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
-msgstr ""
+msgstr "Instrucción para el motor:"
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
-msgstr ""
+msgstr "(La carpeta se derivará de la del motor cuando esté vacía)"
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
-msgstr ""
+msgstr "UCI"
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
-msgstr ""
+msgstr "Protocolo WB v1 (no esperar por las características del motor)"
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
-msgstr ""
+msgstr "No debe utilizar el libro de la GUI"
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
-msgstr ""
+msgstr "Añadir este motor a la lista"
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
-msgstr ""
+msgstr "Forzar la variante actual con este motor"
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
-msgstr ""
+msgstr "Cargar el primer motor"
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
-msgstr ""
+msgstr "Cargar el segundo motor"
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
-msgstr ""
+msgstr "barajar"
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "Núm. de pos. inicial:"
 
-#: dialogs.c:1372
-#, fuzzy
+#: dialogs.c:1374
 msgid "randomize"
-msgstr "Aleatorio"
+msgstr "aleatorizar"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
-msgstr ""
+msgstr "selección fijada"
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "Nueva partida revuelta..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
-msgstr ""
+msgstr "clásica"
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
-msgstr ""
+msgstr "incremental"
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
-msgstr ""
+msgstr "máximo fijado"
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
-msgstr ""
+msgstr "Jugadas por sesión:"
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
-msgstr ""
+msgstr "Tiempo inicial (min):"
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
-msgstr ""
+msgstr "Incremento o máximo (s(jugada):"
 
-#: dialogs.c:1415
-#, fuzzy
+#: dialogs.c:1417
 msgid "Time-Odds factors:"
-msgstr "Factores de tiempo:"
+msgstr "Factores de tiempo extra:"
 
-#: dialogs.c:1416
-#, fuzzy
+#: dialogs.c:1418
 msgid "Engine #1"
-msgstr "Motor"
+msgstr "Motor 1"
 
-#: dialogs.c:1417
-#, fuzzy
+#: dialogs.c:1419
 msgid "Engine #2 / Human"
-msgstr "Primero tiene libro propio"
+msgstr "Motor 2 / Humano"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
-msgstr ""
+msgstr "No se usa"
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
-msgstr ""
+msgstr "Control de tiempo"
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "Error al escribir al programa de ajedrez"
 
-#: dialogs.c:1574
-#, fuzzy
+#: dialogs.c:1576
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "Rey"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
-msgstr ""
+msgstr "Capitán"
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
-msgstr ""
+msgstr "Teniente"
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
-msgstr "Generales..."
+msgstr "General"
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
-msgstr ""
+msgstr "Caudillo"
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "Caballo"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Alfil"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Torre"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "Arzobispo"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "Canciller"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Dama"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
-msgstr ""
+msgstr "Diferir"
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "Coronar"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
-msgstr ""
+msgstr "Charlar con compañero:"
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
-msgstr ""
+msgstr "Cuadro de charla"
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr "De fábrica"
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
-msgstr "Arriba"
+msgstr "arriba"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
-msgstr "Abajo"
+msgstr "abajo"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
-msgstr ""
+msgstr "Número de la etiqueta seleccionada"
 
-#: dialogs.c:1793
-#, fuzzy
+#: dialogs.c:1795
 msgid "Game-list options"
-msgstr "Opciones al leer partida"
+msgstr "Opciones de la lista de partidas"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "Error"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "Error fatal"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "Saliendo"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "Información"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "Nota"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Blancas"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Peón"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "Elefante"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "Cañón"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "Degradar"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Vaciar el escaque"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
-msgstr "Limpiar el tablero    "
+msgstr "Limpiar el tablero"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Negras"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "Archivo"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
-msgstr "Edición"
+msgstr "Editar"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr "Ver"
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "Modo"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
-msgstr "Partida"
+msgstr "Acción"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr "Motor"
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "Opciones"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Ayuda"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
-msgstr ""
+msgstr "<<"
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
-msgstr ""
+msgstr "<"
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
-msgstr ""
+msgstr ">"
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
-msgstr ""
+msgstr ">>"
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
-msgstr ""
+msgstr "Carpetas:"
 
-#: dialogs.c:2365
-#, fuzzy
+#: dialogs.c:2372
 msgid "Files:"
-msgstr "Archivo"
+msgstr "Archivos:"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
-msgstr ""
+msgstr "por nombre"
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
-msgstr ""
+msgstr "por tipo"
 
-#: dialogs.c:2370
-#, fuzzy
+#: dialogs.c:2377
 msgid "Filename:"
-msgstr "Filtro"
+msgstr "Nombre del fichero:"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
-msgstr ""
+msgstr "Nueva carpeta"
 
-#: dialogs.c:2372
-#, fuzzy
+#: dialogs.c:2379
 msgid "File type:"
-msgstr "Filtro"
+msgstr "Tipo de fichero:"
 
-#: dialogs.c:2447
-#, fuzzy
+#: dialogs.c:2454
 msgid "Contents of"
-msgstr "Comentarios"
+msgstr "Contenido de"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
-msgstr ""
+msgstr "  siguiente página"
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
-msgstr ""
+msgstr "INTENTAR OTRO NOMBRE"
 
 #: draw.c:293
 msgid ""
 "No default pieces installed\n"
 "Select your own -pieceImageDirectory"
 msgstr ""
+"No hay piezas predeterminadas instaladas\n"
+"Seleccione su propio -pieceImageDirectory"
 
 #: engineoutput.c:107 menus.c:630
-#, fuzzy, c-format
+#, c-format
 msgid "Engine Output"
-msgstr "Salida de motores"
+msgstr "Salida del motor"
 
 #: engineoutput.c:117
 #, c-format
 msgid "%s (%d reversible ply)"
 msgid_plural "%s (%d reversible plies)"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s (%d media-jugada reversible)"
+msgstr[1] "%s (%d medias-jugadas reversibles)"
 
 #: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
 msgid "NPS"
 msgstr "NPS"
 
 #: gamelist.c:375
-#, fuzzy, c-format
+#, c-format
 msgid "Reading game file (%d)"
-msgstr "archivo de partidas incorrecto"
+msgstr "Leyendo fichero de partidas (%d)"
 
 #: gtk/xboard.c:787 xaw/xboard.c:1161
 #, c-format
 msgid "%s: can't cd to CHESSDIR: "
-msgstr ""
+msgstr "%s: no se puede ir a la carpeta CHESSDIR: "
 
 #: gtk/xboard.c:796 xaw/xboard.c:1170
 #, c-format
 msgid "Failed to open file '%s'\n"
-msgstr ""
+msgstr "Fallo al abrir el fichero '%s'\n"
 
+#  TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable?
 #: gtk/xboard.c:811 xaw/xboard.c:1179
 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
 msgstr ""
+"Recompilar con BOARD_RANKS o BOARD_FILES mayor para admitir este tamaño"
 
 #: gtk/xboard.c:830 xaw/xboard.c:1211
 #, c-format
 msgid "%s: bad boardSize syntax %s\n"
-msgstr ""
+msgstr "%s: sintaxis de boardSize incorrecta %s\n"
 
 #: gtk/xboard.c:870 xaw/xboard.c:1248
 #, c-format
 msgid "%s: unrecognized boardSize name %s\n"
-msgstr ""
+msgstr "%s: nombre de boardSize no reconocido %s\n"
 
 #: gtk/xboard.c:911 xaw/xboard.c:1285
 #, c-format
 msgid "%s: too few colors available; trying monochrome mode\n"
-msgstr ""
+msgstr "%s: insuficientes colores disponibles: probando modo monocromo\n"
 
 #: gtk/xboard.c:1201 xaw/xboard.c:1567
 #, c-format
 msgid "Unable to create font set for %s.\n"
-msgstr ""
+msgstr "No se ha podido crear conjunto de fuentes para %s.\n"
 
 #: gtk/xboard.c:1226 xaw/xboard.c:1590
 #, c-format
 msgid "%s: no fonts match pattern %s\n"
-msgstr ""
+msgstr "%s: ninguna fuente concuerda con el patrón %s\n"
 
 #: gtk/xboard.c:1665 xaw/xboard.c:2080
 msgid "Can't open temp file"
-msgstr ""
+msgstr "No se puede abrir el fichero temporal"
 
 #: gtk/xboard.c:2128
-#, fuzzy
 msgid "Failed to open file"
-msgstr "Falla al invocar cmail"
+msgstr "Fallo al abrir fichero"
 
 #: menus.c:134
 msgid "Load game file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de partidas para cargar?"
 
 #: menus.c:179
 msgid "Load position file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de posiciones para cargar?"
 
 #: menus.c:185
 msgid "Save game file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de partidas para guardar?"
 
 #: menus.c:194
 msgid "Save position file name?"
-msgstr ""
+msgstr "¿Nombre del fichero de posiciones para guardar?"
 
 #: menus.c:358
 msgid " (with Zippy code)"
-msgstr ""
+msgstr " (con el código de Zippy)"
 
 #: menus.c:363
 #, c-format
@@ -2273,169 +2313,162 @@ msgid ""
 "Report bugs via email at: <bug-xboard@gnu.org>\n"
 "\n"
 msgstr ""
+"%s%s\n"
+"\n"
+"Copyright 1991 Digital Equipment Corporation\n"
+"Copyright de las mejoras 1992-2013 Free Software Foundation\n"
+"Copyright de las mejoras 2005 Alessandro Scotti\n"
+"\n"
+"%s es software libre SIN NINGUNA GARANTÍA; ver el fichero COPYING para más "
+"información.\n"
+"La versión de GTK utilizada es experimental e inestable\n"
+"\n"
+"Visite XBoard en la web en: http://www.gnu.org/software/xboard/\n"
+"Obtenga las características más recientes en: http://www.gnu.org/software/"
+"xboard/whats_new.html\n"
+"\n"
+"Informe de errores por correo a: <bug-xboard@gnu.org>\n"
+"\n"
 
 #: menus.c:375 menus.c:750
 msgid "About XBoard"
 msgstr "Acerca de XBoard"
 
 #: menus.c:582
-#, fuzzy
 msgid "New Game"
-msgstr "Nueva partida revuelta..."
+msgstr "Nueva partida"
 
 #: menus.c:583
 msgid "New Shuffle Game ..."
 msgstr "Nueva partida revuelta..."
 
 #: menus.c:584
-#, fuzzy
 msgid "New Variant ..."
-msgstr "Variantes"
+msgstr "Nueva variante ..."
 
 #: menus.c:586
-#, fuzzy
 msgid "Load Game"
-msgstr "Para leer partida...   Alt+Mayús+L"
+msgstr "Cargar partida"
 
 #: menus.c:587
-#, fuzzy
 msgid "Load Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Cargar posición"
 
 #: menus.c:588
-#, fuzzy
 msgid "Next Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Siguiente posición"
 
 #: menus.c:589
-#, fuzzy
 msgid "Prev Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Posición previa"
 
 #: menus.c:591
-#, fuzzy
 msgid "Save Game"
-msgstr "Para guardar partida...   Alt+Mayús+S"
+msgstr "Guardar partida"
 
 #: menus.c:592
-#, fuzzy
 msgid "Save Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Guardar posición"
 
 #: menus.c:593
-#, fuzzy
 msgid "Save Games as Book"
-msgstr "Para guardar partida...   Alt+Mayús+S"
+msgstr "Guardar partidas como libro"
 
 #: menus.c:595
 msgid "Mail Move"
-msgstr ""
+msgstr "Jugada por correo"
 
 #: menus.c:596
 msgid "Reload CMail Message"
-msgstr ""
+msgstr "Volver a cargar mensaje CMail"
 
 #: menus.c:598
 msgid "Quit "
-msgstr ""
+msgstr "Salir "
 
 #: menus.c:603
-#, fuzzy
 msgid "Copy Game"
-msgstr "Copiar lista de partidas"
+msgstr "Copiar partida"
 
 #: menus.c:604
-#, fuzzy
 msgid "Copy Position"
-msgstr "Copiar posición   Alt+Mayús+C"
+msgstr "Copiar posición"
 
 #: menus.c:605
 msgid "Copy Game List"
 msgstr "Copiar lista de partidas"
 
 #: menus.c:607
-#, fuzzy
 msgid "Paste Game"
-msgstr "Pegar partida   Ctrl+V"
+msgstr "Pegar partida"
 
 #: menus.c:608
-#, fuzzy
 msgid "Paste Position"
-msgstr "Pegar posición   Alt+Mayús+V"
+msgstr "Pegar posición"
 
 #: menus.c:610 menus.c:652
-#, fuzzy
 msgid "Edit Game"
-msgstr "Editar comentario"
+msgstr "Editar partida"
 
 #: menus.c:611 menus.c:653
-#, fuzzy
 msgid "Edit Position"
-msgstr "archivo de posición incorrecto"
+msgstr "Editar posición"
 
 #: menus.c:612
 msgid "Edit Tags"
-msgstr "Editar circunstancias"
+msgstr "Editar etiquetas"
 
 #: menus.c:613
 msgid "Edit Comment"
-msgstr "Editar comentarios"
+msgstr "Editar comentario"
 
 #: menus.c:614
-#, fuzzy
 msgid "Edit Book"
-msgstr "Repertorio de aperturas..."
+msgstr "Editar libro"
 
 #: menus.c:616
 msgid "Revert"
-msgstr ""
+msgstr "Revertir"
 
 #: menus.c:617
 msgid "Annotate"
 msgstr "Anotar"
 
 #: menus.c:618
-#, fuzzy
 msgid "Truncate Game"
-msgstr "Truncar partida   End"
+msgstr "Truncar partida"
 
 #: menus.c:620
 msgid "Backward"
-msgstr ""
+msgstr "Hacia atrás"
 
 #: menus.c:621
 msgid "Forward"
-msgstr ""
+msgstr "Hacia delante"
 
 #: menus.c:622
-#, fuzzy
 msgid "Back to Start"
-msgstr "Las negras juegan"
+msgstr "Volver a empezar"
 
 #: menus.c:623
-#, fuzzy
 msgid "Forward to End"
-msgstr "Ultima jugada   Alt+Fin"
+msgstr "Avanzar hasta el final"
 
 #: menus.c:628
-#, fuzzy
 msgid "Flip View"
-msgstr "Cambio de lado automático"
+msgstr "Voltear vista"
 
 #: menus.c:631
-#, fuzzy
 msgid "Move History"
-msgstr "Leer lista jugadas"
+msgstr "Historial de jugadas"
 
 #: menus.c:632
-#, fuzzy
 msgid "Evaluation Graph"
 msgstr "Gráfica de evaluación"
 
 #: menus.c:633
-#, fuzzy
 msgid "Game List"
-msgstr "Lista de partidas..."
+msgstr "Lista de partidas"
 
 #: menus.c:637
 msgid "Comments"
@@ -2443,44 +2476,39 @@ msgstr "Comentarios"
 
 #: menus.c:638
 msgid "ICS Input Box"
-msgstr ""
+msgstr "Cuatro de entrada ICS"
 
 #: menus.c:639
 msgid "Open Chat Window"
-msgstr ""
+msgstr "Abrir ventana de conversación"
 
 #: menus.c:641
 msgid "Board..."
-msgstr "Opciones del tablero..."
+msgstr "Tablero..."
 
 #: menus.c:642
 msgid "Game List Tags..."
-msgstr "Opciones de lista de partidas..."
+msgstr "Etiquetas de la lista de partidas..."
 
 #: menus.c:647
-#, fuzzy
 msgid "Machine White"
-msgstr "El programa juega con blancas   Ctrl+W"
+msgstr "El programa con blancas"
 
 #: menus.c:648
-#, fuzzy
 msgid "Machine Black"
-msgstr "Torneo de dos programas"
+msgstr "El programa con negras"
 
 #: menus.c:649
-#, fuzzy
 msgid "Two Machines"
-msgstr "Juegan dos programas   Ctrl+T"
+msgstr "Dos programas"
 
 #: menus.c:650
-#, fuzzy
 msgid "Analysis Mode"
-msgstr "Análisis   Ctrl+A"
+msgstr "Modo de análisis"
 
 #: menus.c:651
-#, fuzzy
 msgid "Analyze Game"
-msgstr "Analizar archivo   Ctrl+F"
+msgstr "Analizar partida"
 
 #: menus.c:654
 msgid "Training"
@@ -2488,7 +2516,7 @@ msgstr "Entrenamiento"
 
 #: menus.c:655
 msgid "ICS Client"
-msgstr "Conectado a un ICS"
+msgstr "Cliente ICS"
 
 #: menus.c:657
 msgid "Machine Match"
@@ -2496,50 +2524,47 @@ msgstr "Torneo de dos programas"
 
 #: menus.c:658
 msgid "Pause"
-msgstr ""
+msgstr "Pausa"
 
 #: menus.c:663
 msgid "Accept"
-msgstr ""
+msgstr "Aceptar"
 
 #: menus.c:664
 msgid "Decline"
-msgstr ""
+msgstr "Declinar"
 
 #: menus.c:665
 msgid "Rematch"
-msgstr ""
+msgstr "Revancha"
 
 #: menus.c:667
-#, fuzzy
 msgid "Call Flag"
-msgstr "Pedir la bandera   F5"
+msgstr "Pedir la bandera"
 
 #: menus.c:668
 msgid "Draw"
-msgstr ""
+msgstr "Tablas"
 
 #: menus.c:669
 msgid "Adjourn"
-msgstr ""
+msgstr "Aplazar"
 
 #: menus.c:670
 msgid "Abort"
-msgstr ""
+msgstr "Abortar"
 
 #: menus.c:671
 msgid "Resign"
-msgstr ""
+msgstr "Rendirse"
 
 #: menus.c:673
-#, fuzzy
 msgid "Stop Observing"
-msgstr "Dejo de observar   F10"
+msgstr "Dejar de observar"
 
 #: menus.c:674
-#, fuzzy
 msgid "Stop Examining"
-msgstr "Dejo de examinar   F11"
+msgstr "Dejar de examinar"
 
 #: menus.c:675
 msgid "Upload to Examine"
@@ -2559,87 +2584,83 @@ msgstr "Adjudicar tablas"
 
 #: menus.c:684
 msgid "Load New 1st Engine ..."
-msgstr ""
+msgstr "Cargar un nuevo primer motor ..."
 
 #: menus.c:685
 msgid "Load New 2nd Engine ..."
-msgstr ""
+msgstr "Cargar un nuevo segundo motor ..."
 
 #: menus.c:687
 msgid "Engine #1 Settings ..."
-msgstr "Configuración motor #1..."
+msgstr "Configuración del motor #1..."
 
 #: menus.c:688
 msgid "Engine #2 Settings ..."
-msgstr "Configuración motor #2..."
+msgstr "Configuración del motor #2..."
 
 #: menus.c:690
 msgid "Hint"
-msgstr "Dame una pista..."
+msgstr "Pista"
 
 #: menus.c:691
 msgid "Book"
-msgstr "Repertorio de aperturas..."
+msgstr "Repertorio de aperturas"
 
 #: menus.c:693
 msgid "Move Now"
-msgstr ""
+msgstr "Mover ahora"
 
 #: menus.c:694
-#, fuzzy
 msgid "Retract Move"
-msgstr "Revocar jugada   Ctrl+X"
+msgstr "Revocar jugada"
 
 #: menus.c:700
 msgid "General ..."
-msgstr "Generales..."
+msgstr "General..."
 
 #: menus.c:702
-#, fuzzy
 msgid "Time Control ..."
 msgstr "Controles de tiempo..."
 
 #: menus.c:703
-#, fuzzy
 msgid "Common Engine ..."
-msgstr "Para los motores...   Alt+Mayús+U"
+msgstr "General de los motores..."
 
 #: menus.c:704
-#, fuzzy
 msgid "Adjudications ..."
-msgstr "Adjudicaciones...   Alt+Mayús+J"
+msgstr "Adjudicaciones..."
 
 #: menus.c:705
 msgid "ICS ..."
-msgstr "ICS..."
+msgstr "ICS ..."
 
 #: menus.c:706
 msgid "Match ..."
-msgstr ""
+msgstr "Encuentro ..."
 
 #: menus.c:707
 msgid "Load Game ..."
-msgstr "Para leer partida...   Alt+Mayús+L"
+msgstr "Cargar partida ..."
 
 #: menus.c:708
 msgid "Save Game ..."
-msgstr "Para guardar partida...   Alt+Mayús+S"
+msgstr "Guardar partida ..."
 
 #: menus.c:709
 msgid "Game List ..."
-msgstr "Lista de partidas..."
+msgstr "Lista de partidas ..."
 
 #: menus.c:710
 msgid "Sounds ..."
-msgstr "Sonido..."
+msgstr "Sonidos ..."
 
 #: menus.c:713
 msgid "Always Queen"
-msgstr ""
+msgstr "Siempre dama"
 
 #: menus.c:719
 msgid "Flash Moves"
-msgstr ""
+msgstr "Destello en las jugadas"
 
 #: menus.c:721
 msgid "Highlight Dragging"
@@ -2651,7 +2672,7 @@ msgstr "Iluminar con flecha"
 
 #: menus.c:725
 msgid "Move Sound"
-msgstr ""
+msgstr "Sonido en jugadas"
 
 #: menus.c:727
 msgid "Periodic Updates"
@@ -2659,69 +2680,67 @@ msgstr "Actualización periódica"
 
 #: menus.c:729
 msgid "Popup Exit Message"
-msgstr "Ventana al salir"
+msgstr "Mensaje de salida en venta emergente"
 
 #: menus.c:731
 msgid "Show Coords"
 msgstr "Mostrar coordenadas"
 
 #: menus.c:732
-#, fuzzy
 msgid "Hide Thinking"
-msgstr "Ocultar cogitaciones al jugar contra humano"
+msgstr "Ocultar cogitaciones"
 
 #: menus.c:736
 msgid "Save Settings Now"
-msgstr "Salvar config. ahora"
+msgstr "Guardar config. ahora"
 
 #: menus.c:737
 msgid "Save Settings on Exit"
-msgstr "Salvar config. al salir del programa"
+msgstr "Guardar config. al salir del programa"
 
 #: menus.c:742
 msgid "Info XBoard"
-msgstr ""
+msgstr "Información XBoard"
 
 #: menus.c:743
-#, fuzzy
 msgid "Man XBoard"
-msgstr "Acerca de XBoard"
+msgstr "Manual de XBoard"
 
 #: menus.c:745
 msgid "XBoard Home Page"
-msgstr ""
+msgstr "Página web de XBoard"
 
 #: menus.c:746
 msgid "On-line User Guide"
-msgstr ""
+msgstr "Guía del usuario en línea"
 
 #: menus.c:747
 msgid "Development News"
-msgstr ""
+msgstr "Noticias sobre el desarrollo"
 
 #: menus.c:748
 msgid "e-Mail Bug Report"
-msgstr ""
+msgstr "correo-e para informar de errores"
 
 #: nengineoutput.c:78 nengineoutput.c:85
-#, fuzzy
 msgid "engine name"
-msgstr "Motor"
+msgstr "nombre del motor"
 
 #: nengineoutput.c:80 nengineoutput.c:87
-#, fuzzy
 msgid "move"
-msgstr "jugadas"
+msgstr "jugada"
 
 #: nengineoutput.c:153
 msgid "Engine output"
-msgstr "Salida de motores"
+msgstr "Salida del motor"
 
 #: nengineoutput.c:157
 msgid ""
 "Mismatch of STRIDE in nengineoutput.c\n"
 "Change and recompile!"
 msgstr ""
+"STRIDE desajustado en nengineoutput.c\n"
+"¡Cambiar y recompilar!"
 
 #: nevalgraph.c:68
 msgid "Evaluation graph"
@@ -2729,33 +2748,31 @@ msgstr "Gráfica de evaluación"
 
 #: nevalgraph.c:105
 msgid "Eval"
-msgstr ""
+msgstr "Evaluación"
 
 #: ngamelist.c:87
-#, fuzzy
 msgid "find position"
-msgstr "archivo de posición incorrecto"
+msgstr "encontrar posición"
 
 #: ngamelist.c:88
 msgid "narrow"
-msgstr ""
+msgstr "estrecho"
 
 #: ngamelist.c:89
 msgid "thresholds"
-msgstr ""
+msgstr "umbrales"
 
 #: ngamelist.c:90
-#, fuzzy
 msgid "tags"
-msgstr "Circunstancias"
+msgstr "etiquetas"
 
 #: ngamelist.c:91
 msgid "next"
-msgstr ""
+msgstr "siguiente"
 
 #: ngamelist.c:92
 msgid "close"
-msgstr ""
+msgstr "cerrar"
 
 #: ngamelist.c:116
 msgid "No game selected"
@@ -2768,24 +2785,24 @@ msgstr "Ya no se puede ir más adelante"
 #: ngamelist.c:192
 #, c-format
 msgid "Scanning through games (%d)"
-msgstr ""
+msgstr "Explorando partidas (%d)"
 
 #: ngamelist.c:211
 msgid "previous page"
-msgstr ""
+msgstr "página anterior"
 
 #: ngamelist.c:214
 msgid "next page"
-msgstr ""
+msgstr "página siguiente"
 
 #: ngamelist.c:217
 msgid "no games matched your request"
-msgstr ""
+msgstr "ninguna partida responde a su búsqueda"
 
 #: ngamelist.c:219
-#, fuzzy, c-format
+#, c-format
 msgid "%s - %d/%d games (%d-%d-%d)"
-msgstr "Partida %s vs. %s: puntuación final %d-%d-%d"
+msgstr "%s - %d/%d partidas (%d-%d-%d)"
 
 #: ngamelist.c:274
 msgid "There is no game list"
@@ -2793,50 +2810,51 @@ msgstr "No hay lista de partidas"
 
 #: nhistory.c:109
 msgid "Move list"
-msgstr ""
+msgstr "Lista de jugadas"
 
 #: usystem.c:222
 #, c-format
 msgid "%s: unrecognized color %s\n"
-msgstr ""
+msgstr "%s: color no reconocido %s\n"
 
 #: usystem.c:230
 #, c-format
 msgid "%s: can't parse foreground color in `%s'\n"
-msgstr ""
+msgstr "%s: no se puede analizar el color de primer plano en `%s'\n"
 
 #: usystem.c:259
 #, c-format
 msgid "%s: can't parse color names; disabling colorization\n"
 msgstr ""
+"%s: no se puede analizar los nombres de los colores; desactivando colorido\n"
 
 #: usystem.c:371
 #, c-format
 msgid "ERROR: Unknown user %s (in path %s)\n"
-msgstr ""
+msgstr "ERROR: usuario desconocido %s (en carpeta %s)\n"
 
 #: usystem.c:556
 msgid "Socket support is not configured in"
-msgstr ""
+msgstr "La capacidad de «socket» no está configurada en"
 
 #: usystem.c:645
 msgid "internal rcmd not implemented for Unix"
-msgstr ""
+msgstr "rcmd interno no implementado para Unix"
 
 #: xaw/xboard.c:477
 #, c-format
 msgid "%s: Can't access XPM directory %s\n"
-msgstr ""
+msgstr "%s: No se puede acceder a la carpeta XPM %s\n"
 
 #: xaw/xboard.c:498
 #, c-format
 msgid "Available `%s' sizes:\n"
-msgstr ""
+msgstr "Disponibles `%s' tamaños:\n"
 
 #: xaw/xboard.c:531
 #, c-format
 msgid "Error: No `%s' files!\n"
-msgstr ""
+msgstr "¡Error: no hay ficheros `%s'!\n"
 
 #: xaw/xboard.c:544
 #, c-format
@@ -2846,32 +2864,36 @@ msgid ""
 "   Please report this error to %s.\n"
 "   Include system type & operating system in message.\n"
 msgstr ""
+"ATENCIÓN: No se ha encontrado estructura DIR en este sistema --\n"
+"          No se puede asignar tamaño automáticamente a las piezas XPM/XIM.\n"
+"   Por favor, informe de este error a %s.\n"
+"   Incluya en su mensaje el tipo de sistema y de sistema operativo.\n"
 
 #: xaw/xboard.c:1291
 #, c-format
 msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
-msgstr ""
+msgstr "pixel blanco = 0x%lx, pixel negro = 0x%lx\n"
 
 #: xaw/xengineoutput.c:114
 #, c-format
 msgid "Error %d loading icon image\n"
-msgstr ""
+msgstr "Error %d cargando imagen de icono\n"
 
 #: xaw/xoptions.c:321 xaw/xoptions.c:1015
 msgid "browse"
-msgstr ""
+msgstr "navegar"
 
 #: xaw/xoptions.c:387 xaw/xoptions.c:388
 msgid "Ctrl"
-msgstr ""
+msgstr "Ctrl"
 
 #: xaw/xoptions.c:393 xaw/xoptions.c:394
 msgid "Alt"
-msgstr ""
+msgstr "Alt"
 
 #: xaw/xoptions.c:399 xaw/xoptions.c:400
 msgid "Shift"
-msgstr ""
+msgstr "Mayús"
 
 #: xaw/xoptions.c:1262
 msgid "OK"
@@ -2881,141 +2903,5 @@ msgstr "Aceptar"
 msgid "cancel"
 msgstr "Cancelar"
 
-#~ msgid "New Game        Ctrl+N"
-#~ msgstr "Nueva partida   Ctrl+N"
-
-#~ msgid "New Variant ...   Alt+Shift+V"
-#~ msgstr "Nueva variante...   Alt+Mayús+V"
-
-#~ msgid "Load Game       Ctrl+O"
-#~ msgstr "Leer partida...   Ctrl+O"
-
-#~ msgid "Load Position    Ctrl+Shift+O"
-#~ msgstr "Leer posición...   Ctrl+Mayús+O"
-
-#~ msgid "Save Game       Ctrl+S"
-#~ msgstr "Guardar partida...   Ctrl+S"
-
-#~ msgid "Save Position    Ctrl+Shift+S"
-#~ msgstr "Guardar posición...   Ctrl+Mayús+S"
-
-#~ msgid "Quit                 Ctr+Q"
-#~ msgstr "Salir"
-
-#~ msgid "Copy Game    Ctrl+C"
-#~ msgstr "Copiar partida   Ctrl+C"
-
-#~ msgid "Edit Game      Ctrl+E"
-#~ msgstr "Editar partida   Ctrl+E"
-
-#~ msgid "Edit Position   Ctrl+Shift+E"
-#~ msgstr "Editar posición   Ctrl+Mayús+E"
-
-#~ msgid "Revert              Home"
-#~ msgstr "Revertir   Home"
-
-#~ msgid "Backward         Alt+Left"
-#~ msgstr "Jugada anterior   Alt+Izquierda"
-
-#~ msgid "Forward           Alt+Right"
-#~ msgstr "Siguiente jugada   Alt+Derecha"
-
-#~ msgid "Back to Start     Alt+Home"
-#~ msgstr "Primera jugada   Alt+Inicio"
-
-#~ msgid "Flip View             F2"
-#~ msgstr "Tablero invertido   F2"
-
-#~ msgid "Engine Output      Alt+Shift+O"
-#~ msgstr "Mostrar salida del motor   Alt+Mayús+O"
-
-#~ msgid "Move History       Alt+Shift+H"
-#~ msgstr "Mostrar lista de jugadas   Alt+Mayús+H"
-
-#~ msgid "Evaluation Graph  Alt+Shift+E"
-#~ msgstr "Mostrar gráfica de evaluación   Alt+Mayús+E"
-
-#~ msgid "Game List            Alt+Shift+G"
-#~ msgstr "Mostrar lista de partidas   Alt+Mayús+G"
-
-#~ msgid "Machine Black  Ctrl+B"
-#~ msgstr "El programa juega con negras   Ctrl+B"
-
-#~ msgid "Edit Game         Ctrl+E"
-#~ msgstr "Editar partida   Ctrl+E"
-
-#~ msgid "Edit Position      Ctrl+Shift+E"
-#~ msgstr "Editar posición   Ctrl+Mayús+E"
-
-#~ msgid "Pause               Pause"
-#~ msgstr "Pausa   Pausa"
-
-#~ msgid "Accept             F3"
-#~ msgstr "Acepto   F3"
-
-#~ msgid "Decline            F4"
-#~ msgstr "Rehuso   F4"
-
-#~ msgid "Rematch           F12"
-#~ msgstr "Pido desquite   F12"
-
-#~ msgid "Draw                F6"
-#~ msgstr "Tablas   F6"
-
-#~ msgid "Adjourn            F7"
-#~ msgstr "Aplazamiento   F7"
-
-#~ msgid "Abort                F8"
-#~ msgstr "Anulación   F8"
-
-#~ msgid "Resign              F9"
-#~ msgstr "Me rindo   F9"
-
-#~ msgid "Move Now     Ctrl+M"
-#~ msgstr "Forzar jugada   Ctrl+M"
-
-#~ msgid "Always Queen        Ctrl+Shift+Q"
-#~ msgstr "Siempre dama                Ctrl+Mayús+Q"
-
-#~ msgid "Animate Moving      Ctrl+Shift+A"
-#~ msgstr "Animar movimiento         Ctrl+Mayús+A"
-
-#~ msgid "Auto Flag               Ctrl+Shift+F"
-#~ msgstr "Bandera automática       Ctrl+Mayús+F"
-
-#~ msgid "Ponder Next Move  Ctrl+Shift+P"
-#~ msgstr "Prever próx.jugada      Ctrl+Mayús+P"
-
-#~ msgid "Hide Thinking        Ctrl+Shift+H"
-#~ msgstr "Ocultar cogitación      Ctrl+Mayús+H"
-
-#~ msgid "Test Legality          Ctrl+Shift+L"
-#~ msgstr "Checar legalidad         Ctrl+Mayús+L"
-
-#~ msgid "Drop"
-#~ msgstr "Soltar"
-
-#, fuzzy
-#~ msgid "could not open: "
-#~ msgstr "No se pudo analizar la jugada"
-
-#~ msgid "Promotion"
-#~ msgstr "Coronación"
-
-#~ msgid "ok"
-#~ msgstr "Aceptar"
-
-#~ msgid "Highlight Dragging (Show Move Targets)"
-#~ msgstr "Iluminar arrastre"
-
-#~ msgid "White "
-#~ msgstr "Blancas "
-
-#~ msgid "Black "
-#~ msgstr "Negras "
-
-#~ msgid "Close"
-#~ msgstr "Cerrar"
-
-#~ msgid "sec/move"
-#~ msgstr "segundos por jugada"
+#~ msgid " "
+#~ msgstr " "
index 65bde87..a7211f8 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard master-20110411\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,566 +18,570 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "Versione %d del protocollo non supportata"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "Opzione timeControl non corretta: %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "Opzione searchTime non corretta: %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "La variante %s è supportata solo in modalità ICS"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "Nome di variante sconosciuto: %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "Avvio del motore di gioco"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "File partita non riconosciuto"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "File posizione non riconosciuto"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "Impossibile avviare un match senza specificare alcun motore di gioco"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "Apertura della porta comm %s fallita"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "Connessione all'host %s, porta %s fallita"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "Valore per initialMode non riconosciuto: %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "La modalità 'Analizza file' richiede un file partita"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "La modalità Analisi richiede un motore di gioco"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "La funzione di Analisi non è disponibile in modalità ICS"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "La modalità 'Bianco al motore di gioco' richiede almeno un motore"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr ""
 "La funzione 'Bianco al motore di gioco' non è disponibile in modalità ICS"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "La modalità 'Nero al motore di gioco' richiede almeno un motore"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr ""
 "La funzione 'Nero al motore di gioco' non è disponibile in modalità ICS"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr ""
 "La modalità 'Motore di gioco 1 vs 2' richiede almeno un motore di gioco"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "La funzione 'Motore di gioco 1 vs 2' non è disponibile in modalità ICS"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "La modalità Allenamento richiede un file partita"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "Errore in scrittura sull'ICS"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "Errore in lettura da tastiera"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "Ricevuto carattere di Fine file (EOF) dalla tastiera"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "Errore in scrittura sul display"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "Errore nella lettura della lista mosse: sono presenti due intestazioni"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "Errore nella lettura della lista mosse: mosse annidate"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "Connessione chiusa dal'ICS"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "Errore in lettura dall'ICS"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr ""
 "Partita troppo lunga; incrementare il valore di MAX_MOVES e ricompilare"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "Errore nela lettura della lista mosse: è presente una posizione in più"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "Impossibile interpretare la mossa dall'ICS: \"%s\""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "say Errore interno; moveType malformato %d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "Stai giocando con il Nero"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "Stai giocando con il Bianco"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "Il tratto è al Bianco"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "Il tratto è al Nero"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "La posizione mostrata non è quella corrente"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "Mossa illegale"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "Termine della partita"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "Mossa non corretta"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "Mossa illegale \"%s\" dal %s motore di gioco"
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s non supporta l'analisi"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "Mossa illegale \"%s\" (rifiutata dal %s motore di gioco)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "Avvio del %s motore di gioco %s su %s fallito: %s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "Suggerimento: %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr "Il motore di gioco accetta la tua offerta di patta"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "Mossa ambigua nell'output dell'ICS: \"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "Mossa illegale nell'output dell'ICS: \"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "Mosse mancanti nella lista mosse"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "La variante %s non è supportata da %s"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "Avvio di '%s' fallito"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "In attesa del primo motore di gioco"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "In attesa del secondo motore di gioco"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 #, fuzzy
 msgid "Bad tournament file"
 msgstr "File partita non riconosciuto"
 
-#: backend.c:10471
+#: backend.c:10601
 #, fuzzy
 msgid "Waiting for other game(s)"
 msgstr "In attesa del primo motore di gioco"
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "Match %s vs %s: punteggio finale %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "Mossa illegale: %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "Mossa ambigua: %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "Impossibile aprire \"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "Impossibile costruire lista delle partite"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "In questo messaggio non sono presenti altre partite"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "Non è ancora stata caricata nessuna partita"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "Impossibile tornare più indietro"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "Indice superiore al numero di partite"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "Impossibile effettuare la ricerca nel file di partita"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "Partita non trovata nel file"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "Stringa FEN di posizione scorretta nel file"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "Partita senza mosse"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "Non è ancora stata caricata nessuna posizione"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "Impossibile effettuare la ricerca nel file di posizione"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "Posizione non trovata nel file"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "Il tratto è al Nero"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "Il tratto è al Bianco"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 #, fuzzy
 msgid "Waiting for access to save file"
 msgstr "In attesa del secondo motore di gioco"
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 #, fuzzy
 msgid "Saving position"
 msgstr "File posizione non riconosciuto"
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "Non hai ancora fatto alcuna mossa"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "Non è presente nessuna partita non terminata"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -587,210 +591,210 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "Impossibile aprire l'applicazione cmail"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "In attesa di risposta dall'avversario\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "Occorre ancora eseguire la mossa per la partita\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "Occorre ancora eseguire mosse per entrambe le partite\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "Occorre ancora eseguire mosse per tutte le %d partite\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "Occorre ancora eseguire una mossa per la partita %s\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "Non è presente nessuna partita non terminata\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "Pronto all'invio della posta\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "Occorre ancora eseguire mosse per le partite %s\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "Modifica commento"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "Modifica commento a %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "Il tratto non è al Bianco"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "Il tratto non è al Nero"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "Modalità Allenamento disattivata"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "Modalità Allenamento attivata"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "Già alla fine della partita"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "Avviso: Stai ancora giocando una partita"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "Avviso: Stai ancora osservando una partita"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "Avviso: Stai ancora esaminando una partita"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "La casa è già occupata"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "Non vi è alcuna offerta pendente a questa mossa"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "Il tuo avversario non ha ancora esaurito il proprio tempo"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "Devi eseguire la tua mossa prima di offrire la patta"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "Non stai esaminando alcuna partita"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "Non è possibile ripristinare mentre la pausa è attiva"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "E' il tuo turno"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "Attendi il tuo turno"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "Nessun suggerimento disponibile"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 #, fuzzy
 msgid "Game list not loaded or empty"
 msgstr "Non è ancora stata caricata nessuna partita"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "Errore in scrittura sul %s motore di gioco"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "Errore: il %s motore di gioco (%s) è terminato in maniera inaspettata"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "Errore in lettura dal %s motore di gioco (%s)"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "La mossa mostrata non è quella corrente"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "Impossibile leggere mossa"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "Tempo esaurito per entrambi"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "Tempo esaurito per il Bianco"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr ""
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "Stringa FEN di posizione scorretta negli Appunti"
 
@@ -905,7 +909,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -973,7 +977,7 @@ msgstr "Aggiornamenti continui (per Modalità di analisi)"
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "Pensa sul mio tempo"
 
@@ -1097,8 +1101,8 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
-msgstr "Fairy"
+msgid "ASEAN"
+msgstr ""
 
 #: dialogs.c:430
 msgid "Great Shatranj (10x8)"
@@ -1169,997 +1173,1002 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
-msgstr ""
+msgid "fairy"
+msgstr "Fairy"
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr ""
 "Attenzione: il secondo motore di gioco (%s) non supporta questa azione!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "Varianti di gioco"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "Num max di CPU:"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "Dimensione Hash [MB]:"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr "Cartella EGTB:"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr "Dimensione EGTB [MB]:"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr "Profondità Libro:"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr "Varianti Libro:"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr "Libro proprio per motore 1"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr "Impostazioni motori di gioco"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr "Individua scacco matto"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "Verifica gli annunci del motore"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr "Patta per materiale insufficiente"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr "Aggiudica patte triviali"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "Aggiudica patta dopo:"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "Limite per aggiudicare vinta/persa:"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "Output motore 1 sempre riferito al Bianco"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "Output motore 2 sempre riferito al Bianco"
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "Aggiudica al Bianco"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "Auto Kibitz"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "Commenti automatici"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "Osserva automaticamente"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "Porta in primo piano"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "Osserva in bckgnd"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "Doppia scacchiera"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "Scarica lista mosse"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "Non disturbare durante il gioco"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "Grafico delle richieste"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr "Auto aggiorna"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+#, fuzzy
+msgid "Quit after game"
+msgstr "In attesa del primo motore di gioco"
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr "Premossa"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "1° mossa Bianco"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "1° mossa Nero"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "Allarme"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "Impostazioni ICS"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 #, fuzzy
 msgid "No games before year:"
 msgstr "Non è ancora stata caricata nessuna partita"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "Impostazioni apertura partita"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "Impostazioni salvataggio partita"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "Silenzioso"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "Beep"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "Ascolta"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "Impostazioni suoni"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr "Pezzi neri"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "Case bianche"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "Case nere"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "Case evidenziate"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr "Premosse evidenziate"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr "Monocromatico"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "Impostazioni scacchiera"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "Modifica"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "Informazioni partita"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 #, fuzzy
 msgid "Engine has no options"
 msgstr "Libro proprio per motore 1"
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "Disposizione iniziale:"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 #, fuzzy
 msgid "randomize"
 msgstr "Casuale"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "Nuova partita Shuffle..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 #, fuzzy
 msgid "Time-Odds factors:"
 msgstr "Riduci il tempo di un fattore:"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 #, fuzzy
 msgid "Engine #1"
 msgstr "Motore"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 #, fuzzy
 msgid "Engine #2 / Human"
 msgstr "Libro proprio per motore 1"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "Errore in scrittura sul motore di gioco"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "Cancella"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "Re"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "Generali..."
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "Cavallo"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Alfiere"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Torre"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "Arcivescovo"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "Cancelliere"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Donna"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "Promuovi"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr "Fabbrica"
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "Muovi su"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "Muovi giu"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "Impostazioni apertura partita"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "Errore"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "Errore fatale"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "Chiusura in corso"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "Informazione"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "Nota"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Bianco"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Pedone"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "Elefante"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "Cannone"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "Degrada"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Casa vuota"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "Svuota scacchiera"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Nero"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "File"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "Modifica"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr "Visualizza"
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "Modalità"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "Azioni"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr "Motore"
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "Impostazioni"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Aiuto"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "File"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "Filtro"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "Filtro"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "Commenti"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..c765ba9
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,2886 @@
+# Dutch translations for GNU xboard.
+# Copyright (C) 2013 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xboard package.
+#
+# "The patterns change, and never are the same again."
+#
+# Benno Schulenberg <benno@vertaalt.nl>, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU xboard 4.7.2\n"
+"Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
+"PO-Revision-Date: 2013-11-26 12:11+0100\n"
+"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: args.h:821
+#, c-format
+msgid "%s in settings file\n"
+msgstr "%s in instellingenbestand\n"
+
+#: args.h:831
+#, c-format
+msgid "Bad integer value %s"
+msgstr "Ongeldig geheel getal: %s"
+
+#: args.h:924 args.h:1165
+#, c-format
+msgid "Unrecognized argument %s"
+msgstr "Niet-herkend argument: %s"
+
+#: args.h:955
+#, c-format
+msgid "No value provided for argument %s"
+msgstr "Geen waarde gegeven voor argument %s"
+
+#: args.h:1015
+#, c-format
+msgid "Incomplete \\ escape in value for %s"
+msgstr "Onvolledige \\-stuurcode in waarde voor %s"
+
+#: args.h:1120
+#, c-format
+msgid "Failed to open indirection file %s"
+msgstr "Kan indirectiebestand %s niet openen"
+
+#: args.h:1137
+#, c-format
+msgid "Unrecognized boolean argument value %s"
+msgstr "Niet-herkende booleaanse waarde: %s"
+
+#. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
+#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
+#: backend.c:753
+msgid "first"
+msgstr "eerste"
+
+#. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
+#. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
+#: backend.c:756
+msgid "second"
+msgstr "tweede"
+
+#: backend.c:837
+#, c-format
+msgid "protocol version %d not supported"
+msgstr "protocolversie %d wordt niet ondersteund"
+
+#: backend.c:943
+msgid "You did not specify the engine executable"
+msgstr "U hebt geen automaatbestand opgegeven"
+
+#: backend.c:999
+#, c-format
+msgid "bad timeControl option %s"
+msgstr "ongeldige timeControl-optie: %s"
+
+#: backend.c:1014
+#, c-format
+msgid "bad searchTime option %s"
+msgstr "ongeldige searchTime-optie: %s"
+
+#: backend.c:1120
+#, c-format
+msgid "Variant %s supported only in ICS mode"
+msgstr "Variant %s wordt alleen ondersteund in ICS-modus"
+
+#: backend.c:1138
+#, c-format
+msgid "Unknown variant name %s"
+msgstr "Onbekende variantnaam: %s"
+
+#: backend.c:1386
+msgid "Starting chess program"
+msgstr "Starten van schaakprogramma"
+
+#: backend.c:1409
+msgid "Bad game file"
+msgstr "Incorrect partijbestand"
+
+#: backend.c:1416
+msgid "Bad position file"
+msgstr "Incorrect positiebestand"
+
+#: backend.c:1430
+msgid "Pick new game"
+msgstr "Kies een nieuwe partij"
+
+#: backend.c:1499
+msgid ""
+"You restarted an already completed tourney\n"
+"One more cycle will now be added to it\n"
+"Games commence in 10 sec"
+msgstr ""
+"U hebt een reeds voltooid toernooi herstart.\n"
+"Er wordt een extra cyclus aan toegevoegd.\n"
+"De partijen beginnen in tien seconden."
+
+#: backend.c:1506
+#, c-format
+msgid "All games in tourney '%s' are already played or playing"
+msgstr "Alle partijen in toernooi '%s' zijn al gespeeld of spelen nog"
+
+#: backend.c:1513
+msgid "Can't have a match with no chess programs"
+msgstr "Er is geen match mogelijk zonder schaakprogramma's."
+
+#: backend.c:1550
+#, c-format
+msgid "Could not open comm port %s"
+msgstr "Kan communicatiepoort %s niet openen"
+
+#: backend.c:1553
+#, c-format
+msgid "Could not connect to host %s, port %s"
+msgstr "Kan geen verbinding maken met host %s, poort %s"
+
+#: backend.c:1609
+#, c-format
+msgid "Unknown initialMode %s"
+msgstr "Onbekende initialMode %s"
+
+#: backend.c:1635
+msgid "AnalyzeFile mode requires a game file"
+msgstr "AnalyzeFile-modus vereist een partijbestand"
+
+#: backend.c:1662
+msgid "Analysis mode requires a chess engine"
+msgstr "Analysemodus vereist een schaakprogramma"
+
+#: backend.c:1666
+msgid "Analysis mode does not work with ICS mode"
+msgstr "Analysemodus werkt niet met ICS-modus"
+
+#: backend.c:1677
+msgid "MachineWhite mode requires a chess engine"
+msgstr "MachineWhite-modus vereist een schaakprogramma"
+
+#: backend.c:1682
+msgid "MachineWhite mode does not work with ICS mode"
+msgstr "MachineWhite-modus werkt niet met ICS-modus"
+
+#: backend.c:1689
+msgid "MachineBlack mode requires a chess engine"
+msgstr "MachineBlack-modus vereist een schaakprogramma"
+
+#: backend.c:1694
+msgid "MachineBlack mode does not work with ICS mode"
+msgstr "MachineBlack-modus werkt niet met ICS-modus"
+
+#: backend.c:1701
+msgid "TwoMachines mode requires a chess engine"
+msgstr "TwoMachines-modus vereist een schaakprogramma"
+
+#: backend.c:1706
+msgid "TwoMachines mode does not work with ICS mode"
+msgstr "TwoMachines-modus werkt niet met ICS-modus"
+
+#: backend.c:1717
+msgid "Training mode requires a game file"
+msgstr "Trainingsmodus vereist een partijbestand"
+
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
+msgid "Error writing to ICS"
+msgstr "Fout bij schrijven naar ICS"
+
+#: backend.c:1895
+msgid "Error reading from keyboard"
+msgstr "Fout bij lezen van toetsenbord"
+
+#: backend.c:1898
+msgid "Got end of file from keyboard"
+msgstr "Einde-van-bestand ontvangen van toetsenbord"
+
+#: backend.c:2203
+#, c-format
+msgid "Unknown wild type %d"
+msgstr "Onbekend wild type %d"
+
+#: backend.c:2274 usystem.c:329
+msgid "Error writing to display"
+msgstr "Fout bij schrijven naar beeldscherm"
+
+#: backend.c:3030
+#, c-format
+msgid "your opponent kibitzes: %s"
+msgstr "uw tegenstander kwekt: %s"
+
+#: backend.c:3559
+msgid "Error gathering move list: two headers"
+msgstr "Fout bij lezen van zettenlijst: twee koppen"
+
+#: backend.c:3606
+msgid "Error gathering move list: nested"
+msgstr "Fout bij lezen van zettenlijst: genest"
+
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
+msgid "vs."
+msgstr "tegen"
+
+#: backend.c:3838
+msgid "Illegal move (rejected by ICS)"
+msgstr "Ongeldige zet (geweigerd door ICS)"
+
+#: backend.c:4176
+msgid "Connection closed by ICS"
+msgstr "Verbinding is gesloten door ICS"
+
+#: backend.c:4178
+msgid "Error reading from ICS"
+msgstr "Fout bij lezen van ICS"
+
+#: backend.c:4255
+#, c-format
+msgid ""
+"Failed to parse board string:\n"
+"\"%s\""
+msgstr ""
+"Ontleden van bordtekenreeks is mislukt:\n"
+"\"%s\""
+
+#: backend.c:4264 backend.c:9885
+msgid "Game too long; increase MAX_MOVES and recompile"
+msgstr "*** Partij is te lang; verhoog MAX_MOVES en hercompileer."
+
+#: backend.c:4383
+msgid "Error gathering move list: extra board"
+msgstr "Fout bij lezen van zettenlijst: extra bord"
+
+#: backend.c:4815 backend.c:4837
+#, c-format
+msgid "Couldn't parse move \"%s\" from ICS"
+msgstr "Kan zet \"%s\" van ICS niet ontleden"
+
+#: backend.c:5074
+#, c-format
+msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
+msgstr "**interne programmafout**; ongeldig moveType %d (%d,%d-%d,%d)"
+
+#: backend.c:5145
+msgid "You cannot do this while you are playing or observing"
+msgstr "U kunt dit niet doen tijdens het spelen of bekijken."
+
+#: backend.c:6046
+msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
+msgstr "*** Hercompileer om BOARD_RANKS of BOARD_FILES te ondersteunen."
+
+#: backend.c:6510
+msgid "You are playing Black"
+msgstr "U speelt met zwart"
+
+#: backend.c:6519 backend.c:6546
+msgid "You are playing White"
+msgstr "U speelt met wit"
+
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
+msgid "It is White's turn"
+msgstr "Wit is aan zet"
+
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
+msgid "It is Black's turn"
+msgstr "Zwart is aan zet"
+
+#: backend.c:6571
+msgid "Displayed position is not current"
+msgstr "Getoonde positie is niet de huidige"
+
+#: backend.c:6809
+msgid "Illegal move"
+msgstr "Ongeldige zet"
+
+#: backend.c:6876
+msgid "End of game"
+msgstr "Einde van partij"
+
+#: backend.c:6879
+msgid "Incorrect move"
+msgstr "Onjuiste zet"
+
+#: backend.c:7257 backend.c:7392
+msgid "Pull pawn backwards to under-promote"
+msgstr "Beweeg pion terug voor onderpromotie."
+
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
+msgid "Swiss tourney finished"
+msgstr "Zwitsers toernooi is beëindigd"
+
+#: backend.c:8199
+msgid "Invalid pairing from pairing engine"
+msgstr "Ongeldig koppel van koppelautomaat"
+
+#: backend.c:8332
+#, c-format
+msgid "Illegal move \"%s\" from %s machine"
+msgstr "Ongeldige zet \"%s\" van automaat %s"
+
+#: backend.c:8564
+msgid "Bad FEN received from engine"
+msgstr "Ongeldige FEN ontvangen van automaat"
+
+#: backend.c:8730 backend.c:13793 backend.c:13858
+#, c-format
+msgid "%s does not support analysis"
+msgstr "%s ondersteunt geen analyse"
+
+#: backend.c:8796
+#, c-format
+msgid "Illegal move \"%s\" (rejected by %s chess program)"
+msgstr "Ongeldige zet \"%s\" (geweigerd door schaakprogramma %s)"
+
+#: backend.c:8823
+#, c-format
+msgid "Failed to start %s chess program %s on %s: %s\n"
+msgstr "Starten van %s-schaakprogramma %s op %s is mislukt: %s\n"
+
+#: backend.c:8844
+#, c-format
+msgid "Hint: %s"
+msgstr "Hint: %s"
+
+#: backend.c:8849
+#, c-format
+msgid ""
+"Illegal hint move \"%s\"\n"
+"from %s chess program"
+msgstr ""
+"Ongeldige hintzet \"%s\"\n"
+"van schaakprogramma %s."
+
+#: backend.c:9024
+msgid "Machine accepts your draw offer"
+msgstr "Automaat accepteert uw remise-aanbod"
+
+# XXX punten
+#: backend.c:9027
+msgid ""
+"Machine offers a draw\n"
+"Select Action / Draw to agree"
+msgstr ""
+"Automaat biedt remise aan.\n"
+"Kies Actie > Remise om te accepteren."
+
+#: backend.c:9106
+msgid "failed writing PV"
+msgstr "schrijven hoofdvariant is mislukt"
+
+#: backend.c:9404
+#, c-format
+msgid "Ambiguous move in ICS output: \"%s\""
+msgstr "Niet-eenduidige zet in ICS-uitvoer: \"%s\""
+
+#: backend.c:9414
+#, c-format
+msgid "Illegal move in ICS output: \"%s\""
+msgstr "Ongeldige zet in ICS-uitvoer: \"%s\""
+
+#: backend.c:9425
+msgid "Gap in move list"
+msgstr "Gat in zettenlijst"
+
+#: backend.c:10046 dialogs.c:461
+#, c-format
+msgid "Variant %s not supported by %s"
+msgstr "Variant %s wordt niet ondersteund door %s"
+
+#: backend.c:10167
+#, c-format
+msgid "Startup failure on '%s'"
+msgstr "Opstartfout bij '%s'"
+
+#: backend.c:10198
+msgid "Waiting for first chess program"
+msgstr "Wachten op eerste schaakprogramma"
+
+#: backend.c:10203 backend.c:14076
+msgid "Waiting for second chess program"
+msgstr "Wachten op tweede schaakprogramma"
+
+#: backend.c:10252
+msgid "Could not write on tourney file"
+msgstr "Kan niet naar toernooibestand schrijven."
+
+#: backend.c:10326
+msgid ""
+"You cannot replace an engine while it is engaged!\n"
+"Terminate its game first."
+msgstr ""
+"U kunt een automaat niet vervangen terwijl deze\n"
+"gebruikt wordt.  Beëindig eerst diens partij."
+
+#: backend.c:10340
+msgid "No engine with the name you gave is installed"
+msgstr "Er is geen automaat met de gegeven naam geïnstalleerd"
+
+#: backend.c:10342
+msgid ""
+"First change an engine by editing the participants list\n"
+"of the Tournament Options dialog"
+msgstr ""
+
+#: backend.c:10343
+msgid "You can only change one engine at the time"
+msgstr "U kunt slechts één automaat tegelijk wijzigen"
+
+#: backend.c:10358 backend.c:10505
+#, c-format
+msgid "No engine %s is installed"
+msgstr "Automaat '%s' is niet geïnstalleerd"
+
+#: backend.c:10378
+msgid ""
+"You must supply a tournament file,\n"
+"for storing the tourney progress"
+msgstr ""
+"U dient een toernooibestand op te geven,\n"
+"om de toernooivoortgang in op te slaan."
+
+#: backend.c:10388
+msgid "Not enough participants"
+msgstr "Te weinig deelnemers"
+
+#: backend.c:10589
+msgid "Bad tournament file"
+msgstr "Incorrect toernooibestand"
+
+#: backend.c:10601
+msgid "Waiting for other game(s)"
+msgstr "Wachten op andere partij(en)"
+
+#: backend.c:10614
+msgid "No pairing engine specified"
+msgstr "Geen koppelautomaat gegeven"
+
+#: backend.c:11092
+#, c-format
+msgid "Match %s vs. %s: final score %d-%d-%d"
+msgstr "Match van %s tegen %s: eindscore %d-%d-%d"
+
+#: backend.c:11554 backend.c:11585
+#, c-format
+msgid "Illegal move: %d.%s%s"
+msgstr "Ongeldige zet: %d.%s%s"
+
+#: backend.c:11574
+#, c-format
+msgid "Ambiguous move: %d.%s%s"
+msgstr "Niet-eenduidige zet: %d.%s%s"
+
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
+#, c-format
+msgid "Can't open \"%s\""
+msgstr "Kan \"%s\" niet openen"
+
+#: backend.c:11639 menus.c:116
+msgid "Cannot build game list"
+msgstr "Kan partijenlijst niet samenstellen"
+
+#: backend.c:11724
+msgid "No more games in this message"
+msgstr "Geen verdere partijen in dit bericht"
+
+#: backend.c:11764
+msgid "No game has been loaded yet"
+msgstr "Er is nog geen partij geladen"
+
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
+msgid "Can't back up any further"
+msgstr "Kan niet nog verder teruggaan"
+
+#: backend.c:12189
+msgid "Game number out of range"
+msgstr "Partijnummer valt buiten bereik"
+
+#: backend.c:12200
+msgid "Can't seek on game file"
+msgstr "Kan niet springen in partijbestand"
+
+#: backend.c:12258
+msgid "Game not found in file"
+msgstr "Partij niet gevonden in bestand"
+
+#: backend.c:12386 backend.c:12713
+msgid "Bad FEN position in file"
+msgstr "Ongeldige FEN-positie in bestand"
+
+#: backend.c:12538
+msgid "No moves in game"
+msgstr "Partij bevat geen zetten"
+
+#: backend.c:12613
+msgid "No position has been loaded yet"
+msgstr "Er is nog geen positie geladen"
+
+#: backend.c:12674 backend.c:12685
+msgid "Can't seek on position file"
+msgstr "Kan niet springen in positiebestand"
+
+#: backend.c:12692 backend.c:12704
+msgid "Position not found in file"
+msgstr "Positie niet gevonden in bestand"
+
+#: backend.c:12744
+msgid "Black to play"
+msgstr "Zwart is aan zet"
+
+#: backend.c:12747
+msgid "White to play"
+msgstr "Wit is aan zet"
+
+#: backend.c:12834 backend.c:13195
+msgid "Waiting for access to save file"
+msgstr "Wachten op toegang om bestand op te slaan"
+
+#: backend.c:12836
+msgid "Saving game"
+msgstr "Opslaan van partij"
+
+#: backend.c:12837
+msgid "Bad Seek"
+msgstr "Ongeldige bestandssprong"
+
+#: backend.c:13197
+msgid "Saving position"
+msgstr "Opslaan van positie"
+
+# XXX Reload Same Game is not in POT
+#: backend.c:13323
+msgid ""
+"You have edited the game history.\n"
+"Use Reload Same Game and make your move again."
+msgstr ""
+"U hebt de partijgeschiedenis bewerkt.\n"
+"Gebruik «Zelfde partij herladen» en doe uw zet opnieuw."
+
+#: backend.c:13328
+msgid ""
+"You have entered too many moves.\n"
+"Back up to the correct position and try again."
+msgstr ""
+"U hebt te veel zetten ingevoerd.\n"
+"Ga terug naar de correcte positie en probeer het opnieuw."
+
+#: backend.c:13333
+msgid ""
+"Displayed position is not current.\n"
+"Step forward to the correct position and try again."
+msgstr ""
+"Getoonde positie is niet de huidige.\n"
+"Ga vooruit naar de correcte positie en probeer het opnieuw."
+
+#: backend.c:13380
+msgid "You have not made a move yet"
+msgstr "U hebt nog geen zet gedaan"
+
+#: backend.c:13401
+msgid ""
+"The cmail message is not loaded.\n"
+"Use Reload CMail Message and make your move again."
+msgstr ""
+"Het CMail-bericht is niet geladen.\n"
+"Gebruik «CMail-bericht herladen» en doe uw zet opnieuw."
+
+#: backend.c:13406
+msgid "No unfinished games"
+msgstr "Geen onafgemaakte partijen"
+
+#: backend.c:13412
+#, c-format
+msgid ""
+"You have already mailed a move.\n"
+"Wait until a move arrives from your opponent.\n"
+"To resend the same move, type\n"
+"\"cmail -remail -game %s\"\n"
+"on the command line."
+msgstr ""
+
+#: backend.c:13427
+msgid "Failed to invoke cmail"
+msgstr "Aanroepen van 'cmail' is mislukt"
+
+#: backend.c:13489
+#, c-format
+msgid "Waiting for reply from opponent\n"
+msgstr "Wachten op antwoord van tegenstander\n"
+
+#: backend.c:13511
+#, c-format
+msgid "Still need to make move for game\n"
+msgstr "U dient nog een zet te doen voor deze partij.\n"
+
+#: backend.c:13515
+#, c-format
+msgid "Still need to make moves for both games\n"
+msgstr "U dient nog zetten te doen voor beide partijen.\n"
+
+#: backend.c:13519
+#, c-format
+msgid "Still need to make moves for all %d games\n"
+msgstr "U dient nog zetten te doen voor alle %d partijen.\n"
+
+#: backend.c:13526
+#, c-format
+msgid "Still need to make a move for game %s\n"
+msgstr "U dient nog een zet te doen voor partij %s.\n"
+
+#: backend.c:13532
+#, c-format
+msgid "No unfinished games\n"
+msgstr "Geen onafgemaakte partijen.\n"
+
+#: backend.c:13534
+#, c-format
+msgid "Ready to send mail\n"
+msgstr "Klaar om mail te verzenden.\n"
+
+#: backend.c:13539
+#, c-format
+msgid "Still need to make moves for games %s\n"
+msgstr "U dient nog zetten te doen voor partijen %s.\n"
+
+#: backend.c:13743
+msgid "Edit comment"
+msgstr "Opmerking bewerken"
+
+#: backend.c:13745
+#, c-format
+msgid "Edit comment on %d.%s%s"
+msgstr "Opmerking op %d.%s%s bewerken"
+
+#: backend.c:13800
+#, c-format
+msgid "You are not observing a game"
+msgstr "U bent geen partij aan het bekijken."
+
+#: backend.c:13908
+msgid "It is not White's turn"
+msgstr "Wit is niet aan zet"
+
+#: backend.c:13989
+msgid "It is not Black's turn"
+msgstr "Zwart is niet aan zet"
+
+#: backend.c:14097
+#, c-format
+msgid "Starting %s chess program"
+msgstr "Starten van schaakprogramma %s"
+
+#: backend.c:14125 backend.c:15240
+msgid ""
+"Wait until your turn,\n"
+"or select Move Now"
+msgstr ""
+"Wacht op uw beurt,\n"
+"of kies «Nu zetten»."
+
+#: backend.c:14259
+msgid "Training mode off"
+msgstr "Trainingsmodus is uitgeschakeld"
+
+#: backend.c:14267
+msgid "Training mode on"
+msgstr "Trainingsmodus is ingeschakeld"
+
+#: backend.c:14270
+msgid "Already at end of game"
+msgstr "Reeds aan einde van partij."
+
+#: backend.c:14350
+msgid "Warning: You are still playing a game"
+msgstr "Waarschuwing: u bent nog een partij aan het spelen."
+
+#: backend.c:14353
+msgid "Warning: You are still observing a game"
+msgstr "Waarschuwing: u bent nog een partij aan het bekijken."
+
+#: backend.c:14356
+msgid "Warning: You are still examining a game"
+msgstr "Waarschuwing: u bent nog een partij aan het bestuderen."
+
+#: backend.c:14423
+msgid "Click clock to clear board"
+msgstr "Klik op klok om bord leeg te maken."
+
+# XXX analysis?
+#: backend.c:14433
+msgid "Close ICS engine analyze..."
+msgstr ""
+
+#: backend.c:14722
+msgid "That square is occupied"
+msgstr "Dat veld is bezet."
+
+#: backend.c:14746 backend.c:14772
+msgid "There is no pending offer on this move"
+msgstr "Er is geen aanbod op deze zet."
+
+#: backend.c:14808 backend.c:14819
+msgid "Your opponent is not out of time"
+msgstr "Uw tegenstander heeft nog tijd."
+
+#: backend.c:14885
+msgid "You must make your move before offering a draw"
+msgstr "U dient uw zet te doen alvorens remise aan te bieden."
+
+#: backend.c:15222
+msgid "You are not examining a game"
+msgstr "U bent geen partij aan het bestuderen."
+
+#: backend.c:15226
+msgid "You can't revert while pausing"
+msgstr "U kunt niet terugdraaien tijdens pauze."
+
+#: backend.c:15280 backend.c:15287
+msgid "It is your turn"
+msgstr "U bent aan zet"
+
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
+msgid "Wait until your turn"
+msgstr "Wacht op uw beurt"
+
+#: backend.c:15350
+msgid "No hint available"
+msgstr "Geen hint beschikbaar"
+
+#: backend.c:15366 ngamelist.c:355
+msgid "Game list not loaded or empty"
+msgstr "Partijenlijst is leeg of niet geladen"
+
+#: backend.c:15373
+msgid "Book file exists! Try again for overwrite."
+msgstr "Bestand bestaat al.  Probeer het opnieuw om deze te overschrijven."
+
+#: backend.c:15851
+#, c-format
+msgid "Error writing to %s chess program"
+msgstr "Fout bij schrijven naar schaakprogramma %s"
+
+#: backend.c:15854 backend.c:15885
+#, c-format
+msgid "%s program exits in draw position (%s)"
+msgstr ""
+
+#: backend.c:15880
+#, c-format
+msgid "Error: %s chess program (%s) exited unexpectedly"
+msgstr ""
+
+#: backend.c:15898
+#, c-format
+msgid "Error reading from %s chess program (%s)"
+msgstr "Fout bij lezen van schaakprogramma %s (%s)"
+
+#: backend.c:16301
+#, c-format
+msgid "%s engine has too many options\n"
+msgstr "automaat %s heeft te veel opties\n"
+
+#: backend.c:16457
+msgid "Displayed move is not current"
+msgstr "Getoonde zet is niet de huidige"
+
+#: backend.c:16466
+msgid "Could not parse move"
+msgstr "Kan zet niet ontleden"
+
+#: backend.c:16591 backend.c:16613
+msgid "Both flags fell"
+msgstr "Beide vlaggen zijn gevallen"
+
+#: backend.c:16593
+msgid "White's flag fell"
+msgstr "Wits vlag is gevallen"
+
+#: backend.c:16615
+msgid "Black's flag fell"
+msgstr "Zwarts vlag is gevallen"
+
+#: backend.c:16746
+msgid "Clock adjustment not allowed in auto-flag mode"
+msgstr "Klokbijstelling is niet toegestaan in auto-vlagmodus"
+
+#: backend.c:17585
+msgid "Bad FEN position in clipboard"
+msgstr "Ongeldige FEN-positie op het klembord"
+
+#: book.c:577 book.c:830
+msgid "Polyglot book not valid"
+msgstr "Polyglot-boek is ongeldig"
+
+#: book.c:701
+msgid "Book Fault"
+msgstr "Fout in boek"
+
+#: book.c:833
+msgid "Hash keys are different"
+msgstr "Hash-sleutels zijn verschillend"
+
+#: book.c:1000
+msgid "Could not create book"
+msgstr "Kan geen boek aanmaken"
+
+#: dialogs.c:259
+msgid "Tournament file:          "
+msgstr "Toernooibestand:          "
+
+#: dialogs.c:260
+msgid "Sync after round"
+msgstr ""
+
+#: dialogs.c:261
+msgid "    (for concurrent playing of a single"
+msgstr ""
+
+#: dialogs.c:262
+msgid "Sync after cycle"
+msgstr ""
+
+#: dialogs.c:263
+msgid "      tourney with multiple XBoards)"
+msgstr ""
+
+#: dialogs.c:264
+msgid "Tourney participants:"
+msgstr "Toernooi-deelnemers:"
+
+#: dialogs.c:265
+msgid "Select Engine:"
+msgstr "Kies automaat:"
+
+#: dialogs.c:273
+msgid "Tourney type (0 = round-robin, 1 = gauntlet):"
+msgstr "Toernooitype (0 = op-de-rij-af, 1 = handschoen):"
+
+#: dialogs.c:274
+#, fuzzy
+msgid "Number of tourney cycles (or Swiss rounds):"
+msgstr "Aantal toernooirondes:"
+
+#: dialogs.c:275
+msgid "Default Number of Games in Match (or Pairing):"
+msgstr ""
+
+#: dialogs.c:276
+msgid "Pause between Match Games (msec):"
+msgstr ""
+
+#: dialogs.c:277
+msgid "Save Tourney Games on:"
+msgstr "Toernooipartijen bewaren op:"
+
+#: dialogs.c:278
+msgid "Game File with Opening Lines:"
+msgstr ""
+
+#: dialogs.c:279
+msgid "Game Number (-1 or -2 = Auto-Increment):"
+msgstr ""
+
+#: dialogs.c:280
+msgid "File with Start Positions:"
+msgstr "Bestand met startposities:"
+
+#: dialogs.c:281
+msgid "Position Number (-1 or -2 = Auto-Increment):"
+msgstr ""
+
+#: dialogs.c:282
+msgid "Rewind Index after this many Games (0 = never):"
+msgstr ""
+
+#: dialogs.c:283
+msgid "Disable own engine books by default"
+msgstr ""
+
+#: dialogs.c:284
+msgid "Replace Engine"
+msgstr "Automaat vervangen"
+
+#: dialogs.c:285
+msgid "Upgrade Engine"
+msgstr "Automaat upgraden"
+
+#: dialogs.c:286
+msgid "Clone Tourney"
+msgstr "Toernooi klonen"
+
+#: dialogs.c:316
+msgid "First you must specify an existing tourney file to clone"
+msgstr "U dient eerst een bestaand toernooibestand op te geven"
+
+#: dialogs.c:332 dialogs.c:1322
+#, fuzzy
+msgid "# no engines are installed"
+msgstr "# er zijn geen automaten geïnstalleerd"
+
+#: dialogs.c:344
+msgid "Match Options"
+msgstr "Match-opties"
+
+#: dialogs.c:363
+msgid "Absolute Analysis Scores"
+msgstr ""
+
+#: dialogs.c:364
+#, fuzzy
+msgid "Almost Always Queen (Detour Under-Promote)"
+msgstr "Bijna altijd koningin (soms onderpromoveren)"
+
+#: dialogs.c:365 menus.c:714
+msgid "Animate Dragging"
+msgstr "Slepen animeren"
+
+#: dialogs.c:366 menus.c:715
+msgid "Animate Moving"
+msgstr "Zetten animeren"
+
+#: dialogs.c:367 menus.c:716
+msgid "Auto Flag"
+msgstr "Vanzelf vlaggen"
+
+#: dialogs.c:368 menus.c:717
+msgid "Auto Flip View"
+msgstr "Bord vanzelf draaien"
+
+#: dialogs.c:369 menus.c:718
+msgid "Blindfold"
+msgstr "Geblinddoekt"
+
+#: dialogs.c:370
+msgid "Drop Menu"
+msgstr "Plaatsingsmenu"
+
+#: dialogs.c:371
+msgid "Enable Variation Trees"
+msgstr "Variatiebomen inschakelen"
+
+#: dialogs.c:372
+msgid "Hide Thinking from Human"
+msgstr "Denken verbergen voor mens"
+
+#: dialogs.c:373 menus.c:723
+msgid "Highlight Last Move"
+msgstr "Laatste zet markeren"
+
+#: dialogs.c:374
+msgid "Highlight with Arrow"
+msgstr "Markeren met pijl"
+
+#: dialogs.c:375 menus.c:726
+msgid "One-Click Moving"
+msgstr "Eenkliks zetten"
+
+#: dialogs.c:376
+msgid "Periodic Updates (in Analysis Mode)"
+msgstr "Periodieke updates (in analysemodus)"
+
+#: dialogs.c:378
+msgid "Play Move(s) of Clicked PV (Analysis)"
+msgstr ""
+
+#: dialogs.c:379 dialogs.c:515 menus.c:728
+msgid "Ponder Next Move"
+msgstr "Volgende zet overdenken"
+
+#: dialogs.c:380
+msgid "Popup Exit Messages"
+msgstr "Popup-afsluitberichten"
+
+#: dialogs.c:381 menus.c:730
+msgid "Popup Move Errors"
+msgstr "Popup-zetfouten"
+
+#: dialogs.c:382
+msgid "Scores in Move List"
+msgstr "Scores in zettenlijst"
+
+#: dialogs.c:383
+msgid "Show Coordinates"
+msgstr "Coördinaten tonen"
+
+#: dialogs.c:384
+msgid "Show Target Squares"
+msgstr "Doelvelden tonen"
+
+#: dialogs.c:385
+msgid "Sticky Windows"
+msgstr ""
+
+#: dialogs.c:386 menus.c:733
+msgid "Test Legality"
+msgstr "Geldigheid testen"
+
+#: dialogs.c:387
+msgid "Top-Level Dialogs"
+msgstr "Topniveau-dialogen"
+
+#: dialogs.c:388
+msgid "Flash Moves (0 = no flashing):"
+msgstr "Zetten knipperen (0 = niet knipperen):"
+
+#: dialogs.c:389
+msgid "Flash Rate (high = fast):"
+msgstr "Knippersnelheid (hoog = snel):"
+
+#: dialogs.c:390
+#, fuzzy
+msgid "Animation Speed (high = slow):"
+msgstr "Animatiesnelheid (hoog = langzaam):"
+
+#: dialogs.c:391
+msgid "Zoom factor in Evaluation Graph:"
+msgstr "Zoomfactor in evaluatiegrafiek:"
+
+#: dialogs.c:400
+msgid "General Options"
+msgstr "Algemene opties"
+
+#: dialogs.c:410
+msgid "normal"
+msgstr "normaal"
+
+#: dialogs.c:411
+msgid "makruk"
+msgstr "Makruk"
+
+#: dialogs.c:412
+msgid "FRC"
+msgstr "FRC"
+
+#: dialogs.c:413
+msgid "shatranj"
+msgstr "Shatranj"
+
+#: dialogs.c:414
+msgid "wild castle"
+msgstr "wilde rokade"
+
+#: dialogs.c:415
+msgid "knightmate"
+msgstr "paardmat"
+
+#: dialogs.c:416
+msgid "no castle"
+msgstr "geen rokade"
+
+#: dialogs.c:417
+msgid "cylinder *"
+msgstr "cilinder *"
+
+#: dialogs.c:418
+msgid "3-checks"
+msgstr "drie keer schaak"
+
+#: dialogs.c:419
+msgid "berolina *"
+msgstr "berolina *"
+
+#: dialogs.c:420
+msgid "atomic"
+msgstr "atomisch"
+
+#: dialogs.c:421
+msgid "two kings"
+msgstr "twee koningen"
+
+#: dialogs.c:422
+msgid "Board size ( -1 = default for selected variant):"
+msgstr "Bordafmetingen (-1 = standaard voor de variant):"
+
+#: dialogs.c:423
+msgid "Number of Board Ranks:"
+msgstr "Aantal bordrijen:"
+
+#: dialogs.c:424
+msgid "Number of Board Files:"
+msgstr "Aantal bordlijnen:"
+
+#: dialogs.c:425
+msgid "Holdings Size:"
+msgstr "Stalgrootte:"
+
+#: dialogs.c:429
+msgid "ASEAN"
+msgstr ""
+
+#: dialogs.c:430
+msgid "Great Shatranj (10x8)"
+msgstr "Grote Shatranj (10x8)"
+
+#: dialogs.c:431
+msgid "Seirawan"
+msgstr "Seirawan"
+
+#: dialogs.c:432
+msgid "falcon (10x8)"
+msgstr "Falcon (10x8)"
+
+#: dialogs.c:433
+msgid "Superchess"
+msgstr "Superschaak"
+
+#: dialogs.c:434
+msgid "Capablanca (10x8)"
+msgstr "Capablanca (10x8)"
+
+#: dialogs.c:435
+msgid "crazyhouse"
+msgstr "crazyhouse"
+
+#: dialogs.c:436
+msgid "Gothic (10x8)"
+msgstr "Gothic (10x8)"
+
+#: dialogs.c:437
+msgid "bughouse"
+msgstr "bughouse"
+
+#: dialogs.c:438
+msgid "janus (10x8)"
+msgstr "Janus (10x8)"
+
+#: dialogs.c:439
+msgid "suicide"
+msgstr "suicide"
+
+#: dialogs.c:440
+msgid "CRC (10x8)"
+msgstr "CRC (10x8)"
+
+#: dialogs.c:441
+msgid "give-away"
+msgstr "weggever"
+
+#: dialogs.c:442
+msgid "grand (10x10)"
+msgstr "Grand (10x10)"
+
+#: dialogs.c:443
+msgid "losers"
+msgstr "verliezers"
+
+#: dialogs.c:444
+msgid "shogi (9x9)"
+msgstr "Shogi (9x9)"
+
+#: dialogs.c:445
+msgid "Spartan"
+msgstr "Spartaans"
+
+#: dialogs.c:446
+msgid "xiangqi (9x10)"
+msgstr "Xiangqi (9x10)"
+
+#: dialogs.c:447
+msgid "fairy"
+msgstr "Fairy"
+
+#: dialogs.c:449
+msgid "courier (12x8)"
+msgstr "Courier (12x8)"
+
+#: dialogs.c:466
+#, c-format
+msgid "Warning: second engine (%s) does not support this!"
+msgstr "Waarschuwing: tweede automaat (%s) ondersteunt dit niet."
+
+#: dialogs.c:489
+#, c-format
+msgid "Only bughouse is not available in viewer mode"
+msgstr ""
+
+#: dialogs.c:490
+#, c-format
+msgid ""
+"All variants not supported by first engine\n"
+"(currently %s) are disabled"
+msgstr ""
+"Varianten die de eerste automaat (momenteel\n"
+"%s) niet kent zijn onkiesbaar."
+
+# XXX "NEW" is confusing, plural is better
+#: dialogs.c:491
+msgid "New Variant"
+msgstr "Varianten"
+
+#: dialogs.c:516
+msgid "Maximum Number of CPUs per Engine:"
+msgstr "Maximum aantal processoren per automaat:"
+
+#: dialogs.c:517
+msgid "Polygot Directory:"
+msgstr "Polygot-map:"
+
+#: dialogs.c:518
+msgid "Hash-Table Size (MB):"
+msgstr "Grootte van hash-tabel (MB):"
+
+#: dialogs.c:519
+msgid "Nalimov EGTB Path:"
+msgstr "Nalimov-EGTB-pad:"
+
+#: dialogs.c:520
+msgid "EGTB Cache Size (MB):"
+msgstr "Grootte van EGTB-cache (MB):"
+
+#: dialogs.c:521
+msgid "Use GUI Book"
+msgstr ""
+
+#: dialogs.c:522
+msgid "Opening-Book Filename:"
+msgstr "Bestandsnaam van openingenboek:"
+
+#: dialogs.c:523
+msgid "Book Depth (moves):"
+msgstr "Boekdiepte (zetten):"
+
+#: dialogs.c:524
+msgid "Book Variety (0) vs. Strength (100):"
+msgstr ""
+
+#: dialogs.c:525
+msgid "Engine #1 Has Own Book"
+msgstr "Automaat #1 heeft eigen boek"
+
+# XXX why the spaces?
+#: dialogs.c:526
+msgid "Engine #2 Has Own Book          "
+msgstr "Automaat #2 heeft eigen boek"
+
+#: dialogs.c:535
+msgid "Common Engine Settings"
+msgstr "Algemene automaatinstellingen"
+
+#: dialogs.c:541
+msgid "Detect all Mates"
+msgstr "Alle matten detecteren"
+
+#: dialogs.c:542
+msgid "Verify Engine Result Claims"
+msgstr ""
+
+#: dialogs.c:543
+msgid "Draw if Insufficient Mating Material"
+msgstr "Remise bij onvoldoende matmateriaal"
+
+#: dialogs.c:544
+msgid "Adjudicate Trivial Draws (3-Move Delay)"
+msgstr "Eenvoudige remises beslissen (3 zetten uitstel)"
+
+#: dialogs.c:545
+msgid "N-Move Rule:"
+msgstr ""
+
+#: dialogs.c:546
+msgid "N-fold Repeats:"
+msgstr ""
+
+#: dialogs.c:547
+msgid "Draw after N Moves Total:"
+msgstr ""
+
+#: dialogs.c:548
+msgid "Win / Loss Threshold:"
+msgstr "Winst/verlies-grenswaarde:"
+
+#: dialogs.c:549
+msgid "Negate Score of Engine #1"
+msgstr ""
+
+#: dialogs.c:550
+msgid "Negate Score of Engine #2"
+msgstr ""
+
+#: dialogs.c:557
+msgid "Adjudicate non-ICS Games"
+msgstr ""
+
+#: dialogs.c:570
+msgid "Auto-Kibitz"
+msgstr ""
+
+#: dialogs.c:571
+msgid "Auto-Comment"
+msgstr ""
+
+#: dialogs.c:572
+msgid "Auto-Observe"
+msgstr ""
+
+#: dialogs.c:573
+msgid "Auto-Raise Board"
+msgstr ""
+
+#: dialogs.c:574
+msgid "Auto-Create Logon Script"
+msgstr ""
+
+#: dialogs.c:575
+msgid "Background Observe while Playing"
+msgstr ""
+
+#: dialogs.c:576
+msgid "Dual Board for Background-Observed Game"
+msgstr ""
+
+#: dialogs.c:577
+msgid "Get Move List"
+msgstr "Zettenlijst ophalen"
+
+#: dialogs.c:578
+msgid "Quiet Play"
+msgstr ""
+
+#: dialogs.c:579
+msgid "Seek Graph"
+msgstr ""
+
+#: dialogs.c:580
+msgid "Auto-Refresh Seek Graph"
+msgstr ""
+
+#: dialogs.c:581
+msgid "Auto-InputBox PopUp"
+msgstr ""
+
+#: dialogs.c:582
+#, fuzzy
+msgid "Quit after game"
+msgstr "Wachten op andere partij(en)"
+
+#: dialogs.c:583
+msgid "Premove"
+msgstr ""
+
+#: dialogs.c:584
+msgid "Premove for White"
+msgstr ""
+
+#: dialogs.c:585
+msgid "First White Move:"
+msgstr "Eerste zet van wit:"
+
+#: dialogs.c:586
+msgid "Premove for Black"
+msgstr ""
+
+#: dialogs.c:587
+msgid "First Black Move:"
+msgstr "Eerste zet van zwart:"
+
+#: dialogs.c:589
+msgid "Alarm"
+msgstr ""
+
+#: dialogs.c:590
+msgid "Alarm Time (msec):"
+msgstr ""
+
+#: dialogs.c:592
+msgid "Colorize Messages"
+msgstr "Berichten kleuren"
+
+#: dialogs.c:593
+msgid "Shout Text Colors:"
+msgstr ""
+
+#: dialogs.c:594
+msgid "S-Shout Text Colors:"
+msgstr ""
+
+#: dialogs.c:595
+msgid "Channel #1 Text Colors:"
+msgstr "Kanaal-1-tekstkleuren:"
+
+#: dialogs.c:596
+msgid "Other Channel Text Colors:"
+msgstr "Anderekanaal-tekstkleuren:"
+
+#: dialogs.c:597
+msgid "Kibitz Text Colors:"
+msgstr "Kwek-tekstkleuren:"
+
+#: dialogs.c:598
+msgid "Tell Text Colors:"
+msgstr ""
+
+#: dialogs.c:599
+msgid "Challenge Text Colors:"
+msgstr ""
+
+#: dialogs.c:600
+msgid "Request Text Colors:"
+msgstr "Verzoek-tekstkleuren:"
+
+#: dialogs.c:601
+msgid "Seek Text Colors:"
+msgstr ""
+
+#: dialogs.c:608
+msgid "ICS Options"
+msgstr "ICS-opties"
+
+#: dialogs.c:613
+msgid "Exact position match"
+msgstr "Exacte positie-overeenkomst"
+
+#: dialogs.c:613
+msgid "Shown position is subset"
+msgstr "Getoonde positie is een subset"
+
+#: dialogs.c:613
+msgid "Same material with exactly same Pawn chain"
+msgstr "Zelfde materiaal met exact dezelfde pionketen"
+
+#: dialogs.c:614
+msgid "Same material"
+msgstr "Zelfde materiaal"
+
+#: dialogs.c:614
+msgid "Material range (top board half optional)"
+msgstr "Materiaalbereik (bovenste bordhelft is optioneel)"
+
+#: dialogs.c:614
+msgid "Material difference (optional stuff balanced)"
+msgstr "Materiaalverschil (optioneel spul is in evenwicht)"
+
+#: dialogs.c:626
+msgid "Auto-Display Tags"
+msgstr "Labels vanzelf tonen"
+
+#: dialogs.c:627
+msgid "Auto-Display Comment"
+msgstr "Opmerkingen vanzelf tonen"
+
+#: dialogs.c:628
+msgid ""
+"Auto-Play speed of loaded games\n"
+"(0 = instant, -1 = off):"
+msgstr ""
+"Speelsnelheid van geladen partijen\n"
+"(0 = instantaan, -1 = uit):"
+
+#: dialogs.c:629
+msgid "Seconds per Move:"
+msgstr "Seconden per zet:"
+
+#: dialogs.c:630
+msgid ""
+"\n"
+"options to use in game-viewer mode:"
+msgstr ""
+
+#: dialogs.c:632
+msgid ""
+"\n"
+"Thresholds for position filtering in game list:"
+msgstr ""
+
+#: dialogs.c:633
+msgid "Elo of strongest player at least:"
+msgstr "Elo van sterkste speler minstens:"
+
+#: dialogs.c:634
+msgid "Elo of weakest player at least:"
+msgstr "Elo van zwakste speler minstens:"
+
+#: dialogs.c:635
+msgid "No games before year:"
+msgstr "Geen partijen vóór het jaar:"
+
+#: dialogs.c:636
+msgid "Minimum nr consecutive positions:"
+msgstr "Minimum aantal opeenvolgende posities:"
+
+#: dialogs.c:637
+msgid "Search mode:"
+msgstr "Zoekmodus:"
+
+#: dialogs.c:638
+msgid "Also match reversed colors"
+msgstr "Ook matchen met verwisselde kleuren"
+
+#: dialogs.c:639
+msgid "Also match left-right flipped position"
+msgstr "Ook matchen met links-rechts gespiegelde positie"
+
+#: dialogs.c:647
+msgid "Load Game Options"
+msgstr "Partij-opties laden"
+
+#: dialogs.c:659
+msgid "Auto-Save Games"
+msgstr "Partijen auto-opslaan"
+
+#: dialogs.c:660
+msgid "Own Games Only"
+msgstr "Alleen eigen partijen"
+
+#: dialogs.c:661
+msgid "Save Games on File:"
+msgstr "Partijen opslaan in:"
+
+#: dialogs.c:662
+msgid "Save Final Positions on File:"
+msgstr "Eindposities opslaan in:"
+
+#: dialogs.c:663
+msgid "PGN Event Header:"
+msgstr ""
+
+#: dialogs.c:664
+msgid "Old Save Style (as opposed to PGN)"
+msgstr ""
+
+#: dialogs.c:665
+msgid "Include Number Tag in tourney PGN"
+msgstr "Nummerlabel in toernooi-PGN opnemen"
+
+#: dialogs.c:666
+msgid "Save Score/Depth Info in PGN"
+msgstr ""
+
+#: dialogs.c:667
+msgid "Save Out-of-Book Info in PGN           "
+msgstr ""
+
+#: dialogs.c:674
+msgid "Save Game Options"
+msgstr "Partij-opties opslaan"
+
+#: dialogs.c:683
+msgid "No Sound"
+msgstr "Geen geluid"
+
+#: dialogs.c:684
+msgid "Default Beep"
+msgstr "Standaardpiep"
+
+#: dialogs.c:685
+msgid "Above WAV File"
+msgstr ""
+
+#: dialogs.c:686
+msgid "Car Horn"
+msgstr "Claxon"
+
+#: dialogs.c:687
+msgid "Cymbal"
+msgstr "Cymbaal"
+
+#: dialogs.c:688
+msgid "Ding"
+msgstr "Ding"
+
+#: dialogs.c:689
+msgid "Gong"
+msgstr "Gong"
+
+#: dialogs.c:690
+msgid "Laser"
+msgstr "Laser"
+
+#: dialogs.c:691
+msgid "Penalty"
+msgstr "Penalty"
+
+#: dialogs.c:692
+msgid "Phone"
+msgstr "Telefoon"
+
+#: dialogs.c:693
+msgid "Pop"
+msgstr "Plop"
+
+#: dialogs.c:694
+msgid "Slap"
+msgstr "Klap"
+
+#: dialogs.c:695
+msgid "Wood Thunk"
+msgstr "Houtplok"
+
+#: dialogs.c:697
+msgid "User File"
+msgstr "Gebruikersbestand"
+
+#: dialogs.c:719
+msgid "User WAV File:"
+msgstr "Gebruikers-WAV-bestand:"
+
+#: dialogs.c:720
+msgid "Sound Program:"
+msgstr "Geluidsprogramma:"
+
+#: dialogs.c:721
+msgid "Try-Out Sound:"
+msgstr "Probeer geluid:"
+
+#: dialogs.c:722
+#, fuzzy
+msgid "Play"
+msgstr "Afspelen"
+
+#: dialogs.c:723
+msgid "Move:"
+msgstr "Zet:"
+
+#: dialogs.c:724
+msgid "Win:"
+msgstr "Gewonnen:"
+
+#: dialogs.c:725
+msgid "Lose:"
+msgstr "Verloren:"
+
+#: dialogs.c:726
+msgid "Draw:"
+msgstr "Remise:"
+
+#: dialogs.c:727
+msgid "Unfinished:"
+msgstr "Onafgemaakt:"
+
+#: dialogs.c:728
+msgid "Alarm:"
+msgstr ""
+
+#: dialogs.c:729
+msgid "Challenge:"
+msgstr ""
+
+#: dialogs.c:731
+msgid "Sounds Directory:"
+msgstr "Geluidenmap:"
+
+#: dialogs.c:732
+msgid "Shout:"
+msgstr ""
+
+#: dialogs.c:733
+msgid "S-Shout:"
+msgstr ""
+
+#: dialogs.c:734
+msgid "Channel:"
+msgstr "Kanaal:"
+
+#: dialogs.c:735
+msgid "Channel 1:"
+msgstr "Kanaal 1:"
+
+#: dialogs.c:736
+msgid "Tell:"
+msgstr ""
+
+#: dialogs.c:737
+msgid "Kibitz:"
+msgstr ""
+
+#: dialogs.c:738
+msgid "Request:"
+msgstr "Verzoek:"
+
+#: dialogs.c:739
+msgid "Seek:"
+msgstr ""
+
+#: dialogs.c:755
+msgid "Sound Options"
+msgstr "Geluidsopties"
+
+#: dialogs.c:776
+msgid "White Piece Color:"
+msgstr "Kleur van wit stuk:"
+
+#. TRANSLATORS: R = single letter for the color red
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
+msgid "R"
+msgstr "R"
+
+#. TRANSLATORS: G = single letter for the color green
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
+msgid "G"
+msgstr "G"
+
+#. TRANSLATORS: B = single letter for the color blue
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
+msgid "B"
+msgstr "B"
+
+#. TRANSLATORS: D = single letter to make a color darker
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
+msgid "D"
+msgstr "D"
+
+#: dialogs.c:786
+msgid "Black Piece Color:"
+msgstr "Kleur van zwart stuk:"
+
+#: dialogs.c:792
+msgid "Light Square Color:"
+msgstr "Kleur van licht veld:"
+
+#: dialogs.c:798
+msgid "Dark Square Color:"
+msgstr "Kleur van donker veld:"
+
+#: dialogs.c:804
+msgid "Highlight Color:"
+msgstr "Markeringskleur:"
+
+#: dialogs.c:810
+msgid "Premove Highlight Color:"
+msgstr ""
+
+#: dialogs.c:816
+msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
+msgstr ""
+
+#: dialogs.c:818
+msgid "Mono Mode"
+msgstr ""
+
+#: dialogs.c:819
+msgid "Line Gap ( -1 = default for board size):"
+msgstr ""
+
+#: dialogs.c:820
+msgid "Use Board Textures"
+msgstr "Bordtexturen gebruiken"
+
+#: dialogs.c:821
+msgid "Light-Squares Texture File:"
+msgstr "Textuurbestand voor lichte velden:"
+
+#: dialogs.c:822
+msgid "Dark-Squares Texture File:"
+msgstr "Textuurbestand voor donkere velden:"
+
+#: dialogs.c:823
+msgid "Use external piece bitmaps with their own colors"
+msgstr ""
+
+#: dialogs.c:824
+msgid "Directory with Pieces Images:"
+msgstr ""
+
+#: dialogs.c:874
+msgid "Board Options"
+msgstr "Bordopties"
+
+#: dialogs.c:927 menus.c:634
+msgid "ICS text menu"
+msgstr "ICS-tekstmenu"
+
+#: dialogs.c:949
+msgid "clear"
+msgstr "wissen"
+
+#: dialogs.c:950 dialogs.c:1038
+msgid "save changes"
+msgstr "wijzigingen opslaan"
+
+#: dialogs.c:1053
+msgid "Edit book"
+msgstr "Boek bewerken"
+
+#: dialogs.c:1053 menus.c:636
+msgid "Tags"
+msgstr "Labels"
+
+#: dialogs.c:1195
+msgid "ICS input box"
+msgstr "ICS-invoervak"
+
+#: dialogs.c:1227
+msgid "Type a move"
+msgstr "Typ een zet"
+
+#: dialogs.c:1253
+msgid "Engine has no options"
+msgstr "Automaat heeft geen opties"
+
+#: dialogs.c:1255
+msgid "Engine Settings"
+msgstr "Automaatinstellingen"
+
+#: dialogs.c:1280
+msgid "Select engine from list:"
+msgstr "Selecteer een automaat uit de lijst:"
+
+#: dialogs.c:1283
+msgid "or specify one below:"
+msgstr "of geef er hieronder een op:"
+
+#: dialogs.c:1284
+msgid "Nickname (optional):"
+msgstr "Bijnaam (optioneel):"
+
+#: dialogs.c:1285
+msgid "Use nickname in PGN player tags of engine-engine games"
+msgstr ""
+
+#: dialogs.c:1286
+msgid "Engine Directory:"
+msgstr "Automatenmap:"
+
+#: dialogs.c:1287
+msgid "Engine Command:"
+msgstr ""
+
+#: dialogs.c:1288
+msgid "(Directory will be derived from engine path when empty)"
+msgstr ""
+
+#: dialogs.c:1289
+msgid "UCI"
+msgstr "UCI"
+
+#: dialogs.c:1290
+msgid "WB protocol v1 (do not wait for engine features)"
+msgstr ""
+
+#: dialogs.c:1291
+msgid "Must not use GUI book"
+msgstr ""
+
+#: dialogs.c:1292
+msgid "Add this engine to the list"
+msgstr "Deze automaat aan de lijst toevoegen"
+
+#: dialogs.c:1293
+msgid "Force current variant with this engine"
+msgstr ""
+
+#: dialogs.c:1343
+msgid "Load first engine"
+msgstr "Eerste automaat laden"
+
+#: dialogs.c:1349
+msgid "Load second engine"
+msgstr "Tweede automaat laden"
+
+#: dialogs.c:1372
+msgid "shuffle"
+msgstr "Husselen"
+
+#: dialogs.c:1373
+msgid "Start-position number:"
+msgstr "Startpositienummer:"
+
+#: dialogs.c:1374
+msgid "randomize"
+msgstr "Willekeurig"
+
+#: dialogs.c:1375
+msgid "pick fixed"
+msgstr "Vaste kiezen"
+
+#: dialogs.c:1392
+msgid "New Shuffle Game"
+msgstr "Husselpartij"
+
+#: dialogs.c:1411
+msgid "classical"
+msgstr "klassiek"
+
+#: dialogs.c:1412
+#, fuzzy
+msgid "incremental"
+msgstr "incrementeel"
+
+#: dialogs.c:1413
+msgid "fixed max"
+msgstr ""
+
+#: dialogs.c:1414
+msgid "Moves per session:"
+msgstr "Zetten per sessie:"
+
+#: dialogs.c:1415
+msgid "Initial time (min):"
+msgstr ""
+
+#: dialogs.c:1416
+msgid "Increment or max (sec/move):"
+msgstr ""
+
+#: dialogs.c:1417
+msgid "Time-Odds factors:"
+msgstr ""
+
+#: dialogs.c:1418
+msgid "Engine #1"
+msgstr ""
+
+#: dialogs.c:1419
+msgid "Engine #2 / Human"
+msgstr ""
+
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
+#: gtk/xoptions.c:191
+msgid "Unused"
+msgstr "Ongebruikt"
+
+#: dialogs.c:1480
+msgid "Time Control"
+msgstr "Tijdsbeperking"
+
+#: dialogs.c:1509
+msgid "Error writing to chess program"
+msgstr "Fout bij schrijven naar schaakprogramma"
+
+#: dialogs.c:1576
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
+msgid "King"
+msgstr "Koning"
+
+#: dialogs.c:1584
+msgid "Captain"
+msgstr "Kapitein"
+
+#: dialogs.c:1585
+msgid "Lieutenant"
+msgstr "Luitenant"
+
+#: dialogs.c:1586
+msgid "General"
+msgstr "Generaal"
+
+#: dialogs.c:1587
+msgid "Warlord"
+msgstr "Krijgsheer"
+
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
+msgid "Knight"
+msgstr "Paard"
+
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
+msgid "Bishop"
+msgstr "Loper"
+
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
+msgid "Rook"
+msgstr "Toren"
+
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
+msgid "Archbishop"
+msgstr "Aartsbisschop"
+
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
+msgid "Chancellor"
+msgstr "Kanselier"
+
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
+msgid "Queen"
+msgstr "Koningin"
+
+#: dialogs.c:1602
+msgid "Defer"
+msgstr ""
+
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
+msgid "Promote"
+msgstr "Promoveren"
+
+#: dialogs.c:1618
+msgid "Chat partner:"
+msgstr "Chatpartner:"
+
+#: dialogs.c:1703
+msgid "Chat box"
+msgstr "Chatbox"
+
+#: dialogs.c:1744
+msgid "factory"
+msgstr "origineel"
+
+#: dialogs.c:1745
+msgid "up"
+msgstr "omhoog"
+
+#: dialogs.c:1746
+msgid "down"
+msgstr "omlaag"
+
+#: dialogs.c:1764
+msgid "No tag selected"
+msgstr "Geen label geselecteerd"
+
+#: dialogs.c:1795
+msgid "Game-list options"
+msgstr "Partijenlijst-opties"
+
+#: dialogs.c:1871 dialogs.c:1885
+msgid "Error"
+msgstr "Fout"
+
+#: dialogs.c:1908
+msgid "Fatal Error"
+msgstr "Fatale fout"
+
+#: dialogs.c:1908
+msgid "Exiting"
+msgstr "Afsluiten"
+
+#: dialogs.c:1919
+msgid "Information"
+msgstr "Informatie"
+
+#: dialogs.c:1926
+msgid "Note"
+msgstr "Notitie"
+
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
+msgid "White"
+msgstr "Wit"
+
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
+msgid "Pawn"
+msgstr "Pion"
+
+#: dialogs.c:1973 dialogs.c:1977
+msgid "Elephant"
+msgstr "Olifant"
+
+#: dialogs.c:1973 dialogs.c:1977
+msgid "Cannon"
+msgstr "Kanon"
+
+#: dialogs.c:1974 dialogs.c:1978
+msgid "Demote"
+msgstr "Degraderen"
+
+#: dialogs.c:1975 dialogs.c:1979
+msgid "Empty square"
+msgstr "Leeg veld"
+
+#: dialogs.c:1975 dialogs.c:1979
+msgid "Clear board"
+msgstr "Bord leegmaken"
+
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
+msgid "Black"
+msgstr "Zwart"
+
+#: dialogs.c:2075 menus.c:787
+msgid "File"
+msgstr "Bestand"
+
+#: dialogs.c:2076 menus.c:788
+msgid "Edit"
+msgstr "Bewerken"
+
+#: dialogs.c:2077 menus.c:789
+msgid "View"
+msgstr "Beeld"
+
+#: dialogs.c:2078 menus.c:790
+msgid "Mode"
+msgstr "Modus"
+
+#: dialogs.c:2079 menus.c:791
+msgid "Action"
+msgstr "Actie"
+
+#: dialogs.c:2080 menus.c:792
+msgid "Engine"
+msgstr "Automaat"
+
+#: dialogs.c:2081 menus.c:793
+msgid "Options"
+msgstr "Opties"
+
+#: dialogs.c:2082 menus.c:794
+msgid "Help"
+msgstr "Hulp"
+
+#: dialogs.c:2092
+msgid "<<"
+msgstr "<<"
+
+#: dialogs.c:2093
+msgid "<"
+msgstr "<"
+
+#: dialogs.c:2095
+msgid ">"
+msgstr ">"
+
+#: dialogs.c:2096
+msgid ">>"
+msgstr ">>"
+
+#: dialogs.c:2371
+msgid "Directories:"
+msgstr "Mappen:"
+
+#: dialogs.c:2372
+msgid "Files:"
+msgstr "Bestanden:"
+
+#: dialogs.c:2373
+msgid "by name"
+msgstr "op naam"
+
+#: dialogs.c:2374
+msgid "by type"
+msgstr "op type"
+
+#: dialogs.c:2377
+msgid "Filename:"
+msgstr "Bestandsnaam:"
+
+#: dialogs.c:2378
+msgid "New directory"
+msgstr "Nieuwe map"
+
+#: dialogs.c:2379
+msgid "File type:"
+msgstr "Bestandstype:"
+
+#: dialogs.c:2454
+msgid "Contents of"
+msgstr "Inhoud van"
+
+#: dialogs.c:2480
+msgid "  next page"
+msgstr "  volgende pagina"
+
+#: dialogs.c:2502
+msgid "FIRST TYPE DIRECTORY NAME HERE"
+msgstr "Typ hier eerst een mapnaam"
+
+#: dialogs.c:2503
+msgid "TRY ANOTHER NAME"
+msgstr "Kies een andere naam"
+
+#: draw.c:293
+msgid ""
+"No default pieces installed\n"
+"Select your own -pieceImageDirectory"
+msgstr ""
+"Geen standaardstukken geïnstalleerd.\n"
+"Kies uw eigen '-pieceImageDirectory'."
+
+#: engineoutput.c:107 menus.c:630
+#, c-format
+msgid "Engine Output"
+msgstr "Automaatuitvoer"
+
+#: engineoutput.c:117
+#, fuzzy, c-format
+msgid "%s (%d reversible ply)"
+msgid_plural "%s (%d reversible plies)"
+msgstr[0] "omkeerbaar"
+msgstr[1] "omkeerbaar"
+
+#: engineoutput.c:509 engineoutput.c:512 nengineoutput.c:81 nengineoutput.c:88
+msgid "NPS"
+msgstr "NPS"
+
+#: gamelist.c:375
+#, c-format
+msgid "Reading game file (%d)"
+msgstr "Lezen van partijbestand (%d)"
+
+#: gtk/xboard.c:787 xaw/xboard.c:1161
+#, c-format
+msgid "%s: can't cd to CHESSDIR: "
+msgstr ""
+
+#: gtk/xboard.c:796 xaw/xboard.c:1170
+#, c-format
+msgid "Failed to open file '%s'\n"
+msgstr "Kan bestand '%s' niet openen\n"
+
+#: gtk/xboard.c:811 xaw/xboard.c:1179
+msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
+msgstr ""
+
+#: gtk/xboard.c:830 xaw/xboard.c:1211
+#, c-format
+msgid "%s: bad boardSize syntax %s\n"
+msgstr ""
+
+#: gtk/xboard.c:870 xaw/xboard.c:1248
+#, c-format
+msgid "%s: unrecognized boardSize name %s\n"
+msgstr ""
+
+#: gtk/xboard.c:911 xaw/xboard.c:1285
+#, c-format
+msgid "%s: too few colors available; trying monochrome mode\n"
+msgstr ""
+
+#: gtk/xboard.c:1201 xaw/xboard.c:1567
+#, c-format
+msgid "Unable to create font set for %s.\n"
+msgstr ""
+
+#: gtk/xboard.c:1226 xaw/xboard.c:1590
+#, c-format
+msgid "%s: no fonts match pattern %s\n"
+msgstr "%s: er zijn geen lettertypen die overeenkomen met patroon %s\n"
+
+#: gtk/xboard.c:1665 xaw/xboard.c:2080
+msgid "Can't open temp file"
+msgstr "Kan tijdelijk bestand niet openen"
+
+#: gtk/xboard.c:2128
+msgid "Failed to open file"
+msgstr "Kan bestand niet openen"
+
+#: menus.c:134
+msgid "Load game file name?"
+msgstr "Partij laden uit bestand:"
+
+#: menus.c:179
+msgid "Load position file name?"
+msgstr "Positie laden uit bestand:"
+
+#: menus.c:185
+msgid "Save game file name?"
+msgstr "Partij opslaan in bestand:"
+
+#: menus.c:194
+msgid "Save position file name?"
+msgstr "Positie opslaan in bestand:"
+
+#: menus.c:358
+msgid " (with Zippy code)"
+msgstr " (met Zippy-code)"
+
+#: menus.c:363
+#, c-format
+msgid ""
+"%s%s\n"
+"\n"
+"Copyright 1991 Digital Equipment Corporation\n"
+"Enhancements Copyright 1992-2013 Free Software Foundation\n"
+"Enhancements Copyright 2005 Alessandro Scotti\n"
+"\n"
+"%s is free software and carries NO WARRANTY;see the file COPYING for more "
+"information.\n"
+"The GTK build of this version is experimental and unstable\n"
+"\n"
+"Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n"
+"Check out the newest features at: http://www.gnu.org/software/xboard/"
+"whats_new.html\n"
+"\n"
+"Report bugs via email at: <bug-xboard@gnu.org>\n"
+"\n"
+msgstr ""
+"%s%s\n"
+"\n"
+"Copyright 1991 Digital Equipment Corporation\n"
+"Uitbreidingen Copyright 1992-2013 Free Software Foundation\n"
+"Uitbreidingen Copyright 2005 Alessandro Scotti\n"
+"\n"
+"%s is vrije software en kent GEEN GARANTIE;\n"
+"zie het bestand COPYING voor meer informatie.\n"
+"De GTK-versie is experimenteel en nog niet stabiel.\n"
+"\n"
+"Bezoek XBoard op het web: http://www.gnu.org/software/xboard/\n"
+"Voor nieuwe functies zie: http://www.gnu.org/software/xboard/whats_new.html\n"
+"\n"
+"Rapporteer gebreken in het programma aan <bug-xboard@gnu.org>;\n"
+"meld vertaalfouten aan <vertaling@vrijschrift.org>.\n"
+"\n"
+
+#: menus.c:375 menus.c:750
+msgid "About XBoard"
+msgstr "Over XBoard"
+
+#: menus.c:582
+msgid "New Game"
+msgstr "Nieuwe partij"
+
+#: menus.c:583
+msgid "New Shuffle Game ..."
+msgstr "Nieuwe husselpartij..."
+
+# XXX "NEW" is wrong
+#: menus.c:584
+msgid "New Variant ..."
+msgstr "Nieuwe variantpartij..."
+
+#: menus.c:586
+msgid "Load Game"
+msgstr "Partij laden"
+
+#: menus.c:587
+msgid "Load Position"
+msgstr "Positie laden"
+
+#: menus.c:588
+msgid "Next Position"
+msgstr "Volgende positie"
+
+#: menus.c:589
+msgid "Prev Position"
+msgstr "Vorige positie"
+
+#: menus.c:591
+msgid "Save Game"
+msgstr "Partij opslaan"
+
+#: menus.c:592
+msgid "Save Position"
+msgstr "Positie opslaan"
+
+#: menus.c:593
+msgid "Save Games as Book"
+msgstr "Partijen opslaan als boek"
+
+#: menus.c:595
+msgid "Mail Move"
+msgstr "Zet mailen"
+
+#: menus.c:596
+msgid "Reload CMail Message"
+msgstr "CMail-bericht herladen"
+
+#: menus.c:598
+msgid "Quit "
+msgstr "Afsluiten "
+
+#: menus.c:603
+msgid "Copy Game"
+msgstr "Partij kopiëren"
+
+#: menus.c:604
+msgid "Copy Position"
+msgstr "Positie kopiëren"
+
+#: menus.c:605
+msgid "Copy Game List"
+msgstr "Partijenlijst kopiëren"
+
+#: menus.c:607
+msgid "Paste Game"
+msgstr "Partij plakken"
+
+#: menus.c:608
+msgid "Paste Position"
+msgstr "Positie plakken"
+
+#: menus.c:610 menus.c:652
+msgid "Edit Game"
+msgstr "Partij bewerken"
+
+#: menus.c:611 menus.c:653
+msgid "Edit Position"
+msgstr "Positie bewerken"
+
+#: menus.c:612
+msgid "Edit Tags"
+msgstr "Labels bewerken"
+
+#: menus.c:613
+msgid "Edit Comment"
+msgstr "Opmerking bewerken"
+
+#: menus.c:614
+msgid "Edit Book"
+msgstr "Boek bewerken"
+
+#: menus.c:616
+msgid "Revert"
+msgstr "Terugdraaien"
+
+#: menus.c:617
+msgid "Annotate"
+msgstr "Annoteren"
+
+#: menus.c:618
+msgid "Truncate Game"
+msgstr "Partij afkappen"
+
+#: menus.c:620
+msgid "Backward"
+msgstr "Achterwaarts"
+
+#: menus.c:621
+msgid "Forward"
+msgstr "Voorwaarts"
+
+#: menus.c:622
+msgid "Back to Start"
+msgstr "Terug naar begin"
+
+#: menus.c:623
+msgid "Forward to End"
+msgstr "Vooruit naar einde"
+
+#: menus.c:628
+msgid "Flip View"
+msgstr "Bord draaien"
+
+#: menus.c:631
+msgid "Move History"
+msgstr "Zettengeschiedenis"
+
+#: menus.c:632
+msgid "Evaluation Graph"
+msgstr "Evaluatiegrafiek"
+
+#: menus.c:633
+msgid "Game List"
+msgstr "Partijenlijst"
+
+#: menus.c:637
+msgid "Comments"
+msgstr "Opmerkingen"
+
+#: menus.c:638
+msgid "ICS Input Box"
+msgstr "ICS-invoervak"
+
+#: menus.c:639
+msgid "Open Chat Window"
+msgstr "Chatvenster openen"
+
+#: menus.c:641
+msgid "Board..."
+msgstr "Bord..."
+
+#: menus.c:642
+msgid "Game List Tags..."
+msgstr "Partijenlijst-labels..."
+
+#: menus.c:647
+msgid "Machine White"
+msgstr "Automaat heeft wit"
+
+#: menus.c:648
+msgid "Machine Black"
+msgstr "Automaat heeft zwart"
+
+#: menus.c:649
+msgid "Two Machines"
+msgstr "Twee automaten"
+
+#: menus.c:650
+msgid "Analysis Mode"
+msgstr "Analysemodus"
+
+#: menus.c:651
+msgid "Analyze Game"
+msgstr "Partij analyseren"
+
+#: menus.c:654
+msgid "Training"
+msgstr "Training"
+
+#: menus.c:655
+msgid "ICS Client"
+msgstr "ICS-cliënt"
+
+#: menus.c:657
+msgid "Machine Match"
+msgstr "Automaten-match"
+
+#: menus.c:658
+msgid "Pause"
+msgstr "Pauzeren"
+
+#: menus.c:663
+msgid "Accept"
+msgstr "Accepteren"
+
+#: menus.c:664
+msgid "Decline"
+msgstr "Weigeren"
+
+#: menus.c:665
+msgid "Rematch"
+msgstr ""
+
+#: menus.c:667
+msgid "Call Flag"
+msgstr ""
+
+#: menus.c:668
+msgid "Draw"
+msgstr "Remise"
+
+#: menus.c:669
+msgid "Adjourn"
+msgstr ""
+
+#: menus.c:670
+msgid "Abort"
+msgstr "Afbreken"
+
+#: menus.c:671
+msgid "Resign"
+msgstr "Opgeven"
+
+#: menus.c:673
+msgid "Stop Observing"
+msgstr "Stoppen met bekijken"
+
+#: menus.c:674
+msgid "Stop Examining"
+msgstr "Stoppen met bestuderen"
+
+#: menus.c:675
+msgid "Upload to Examine"
+msgstr "Uploaden om te bestuderen"
+
+#: menus.c:677
+msgid "Adjudicate to White"
+msgstr "Winst aan wit toekennen"
+
+#: menus.c:678
+msgid "Adjudicate to Black"
+msgstr "Winst aan zwart toekennen"
+
+#: menus.c:679
+msgid "Adjudicate Draw"
+msgstr "Tot remise besluiten"
+
+#: menus.c:684
+msgid "Load New 1st Engine ..."
+msgstr "Nieuwe 1ste automaat laden..."
+
+#: menus.c:685
+msgid "Load New 2nd Engine ..."
+msgstr "Nieuwe 2de automaat laden..."
+
+#: menus.c:687
+msgid "Engine #1 Settings ..."
+msgstr "Instellingen van automaat 1..."
+
+#: menus.c:688
+msgid "Engine #2 Settings ..."
+msgstr "Instellingen van automaat 2..."
+
+#: menus.c:690
+msgid "Hint"
+msgstr "Hint"
+
+#: menus.c:691
+msgid "Book"
+msgstr "Boek"
+
+#: menus.c:693
+msgid "Move Now"
+msgstr "Nu zetten"
+
+#: menus.c:694
+msgid "Retract Move"
+msgstr "Zet terugnemen"
+
+#: menus.c:700
+msgid "General ..."
+msgstr "Algemeen..."
+
+#: menus.c:702
+msgid "Time Control ..."
+msgstr "Tijdsbeperking..."
+
+#: menus.c:703
+msgid "Common Engine ..."
+msgstr "Gemeenschappelijke automaat..."
+
+#: menus.c:704
+msgid "Adjudications ..."
+msgstr "Beslissingen ..."
+
+#: menus.c:705
+msgid "ICS ..."
+msgstr "ICS ..."
+
+# XXX wedstrijd OF overeenkomen??
+#: menus.c:706
+msgid "Match ..."
+msgstr "Match..."
+
+#: menus.c:707
+msgid "Load Game ..."
+msgstr "Partij laden ..."
+
+#: menus.c:708
+msgid "Save Game ..."
+msgstr "Partij opslaan ..."
+
+#: menus.c:709
+msgid "Game List ..."
+msgstr "Partijenlijst ..."
+
+#: menus.c:710
+msgid "Sounds ..."
+msgstr "Geluiden ..."
+
+#: menus.c:713
+msgid "Always Queen"
+msgstr "Altijd koningin"
+
+#: menus.c:719
+msgid "Flash Moves"
+msgstr "Zetten knipperen"
+
+#: menus.c:721
+msgid "Highlight Dragging"
+msgstr "Slepen markeren"
+
+#: menus.c:724
+msgid "Highlight With Arrow"
+msgstr "Markeren met pijl"
+
+#: menus.c:725
+msgid "Move Sound"
+msgstr "Zetgeluid"
+
+#: menus.c:727
+msgid "Periodic Updates"
+msgstr "Periodieke updates"
+
+#: menus.c:729
+msgid "Popup Exit Message"
+msgstr "Popup-afsluitbericht"
+
+#: menus.c:731
+msgid "Show Coords"
+msgstr "Coördinaten tonen"
+
+#: menus.c:732
+msgid "Hide Thinking"
+msgstr "Denken verbergen"
+
+#: menus.c:736
+msgid "Save Settings Now"
+msgstr "Instellingen nu opslaan"
+
+#: menus.c:737
+msgid "Save Settings on Exit"
+msgstr "Instellingen opslaan bij afsluiten"
+
+#: menus.c:742
+msgid "Info XBoard"
+msgstr "'info xboard'"
+
+#: menus.c:743
+msgid "Man XBoard"
+msgstr "'man xboard'"
+
+#: menus.c:745
+msgid "XBoard Home Page"
+msgstr "Webpagina van XBoard"
+
+#: menus.c:746
+msgid "On-line User Guide"
+msgstr "Online gebruikersgids"
+
+#: menus.c:747
+msgid "Development News"
+msgstr "Ontwikkelingsnieuws"
+
+#: menus.c:748
+msgid "e-Mail Bug Report"
+msgstr "Foutrapportage mailen"
+
+#: nengineoutput.c:78 nengineoutput.c:85
+msgid "engine name"
+msgstr "automaatnaam"
+
+#: nengineoutput.c:80 nengineoutput.c:87
+msgid "move"
+msgstr "zetten"
+
+#: nengineoutput.c:153
+msgid "Engine output"
+msgstr "Automaatuitvoer"
+
+#: nengineoutput.c:157
+msgid ""
+"Mismatch of STRIDE in nengineoutput.c\n"
+"Change and recompile!"
+msgstr ""
+"*** Niet-passende 'STRIDE' in 'nengineoutput.c'.\n"
+"Pas deze aan en hercompileer."
+
+#: nevalgraph.c:68
+msgid "Evaluation graph"
+msgstr "Evaluatiegrafiek"
+
+#: nevalgraph.c:105
+msgid "Eval"
+msgstr ""
+
+#: ngamelist.c:87
+msgid "find position"
+msgstr "positie vinden"
+
+#: ngamelist.c:88
+msgid "narrow"
+msgstr "nauw"
+
+#: ngamelist.c:89
+msgid "thresholds"
+msgstr "grenswaarden"
+
+#: ngamelist.c:90
+msgid "tags"
+msgstr "labels"
+
+#: ngamelist.c:91
+msgid "next"
+msgstr "volgende"
+
+#: ngamelist.c:92
+msgid "close"
+msgstr "sluiten"
+
+#: ngamelist.c:116
+msgid "No game selected"
+msgstr "Geen partij geselecteerd"
+
+#: ngamelist.c:122
+msgid "Can't go forward any further"
+msgstr "Kan niet nog verder vooruitgaan"
+
+#: ngamelist.c:192
+#, c-format
+msgid "Scanning through games (%d)"
+msgstr "Zoeken door partijen (%d)"
+
+#: ngamelist.c:211
+msgid "previous page"
+msgstr "voorgaande pagina"
+
+#: ngamelist.c:214
+msgid "next page"
+msgstr "volgende pagina"
+
+#: ngamelist.c:217
+msgid "no games matched your request"
+msgstr "er zijn geen partijen die overeenkomen met uw verzoek"
+
+#: ngamelist.c:219
+#, c-format
+msgid "%s - %d/%d games (%d-%d-%d)"
+msgstr "%s - %d/%d partijen (%d-%d-%d)"
+
+#: ngamelist.c:274
+msgid "There is no game list"
+msgstr "Er is geen partijenlijst"
+
+#: nhistory.c:109
+msgid "Move list"
+msgstr "Zettenlijst"
+
+#: usystem.c:222
+#, c-format
+msgid "%s: unrecognized color %s\n"
+msgstr "%s: niet-herkende kleur %s\n"
+
+#: usystem.c:230
+#, c-format
+msgid "%s: can't parse foreground color in `%s'\n"
+msgstr "%s: onbegrepen voorgrondkleur in '%s'\n"
+
+#: usystem.c:259
+#, c-format
+msgid "%s: can't parse color names; disabling colorization\n"
+msgstr "%s: onbegrepen kleurnamen; kleuring wordt uitgeschakeld\n"
+
+#: usystem.c:371
+#, c-format
+msgid "ERROR: Unknown user %s (in path %s)\n"
+msgstr "Fout: onbekende gebruiker %s (in pad %s)\n"
+
+#: usystem.c:556
+#, fuzzy
+msgid "Socket support is not configured in"
+msgstr "Ondersteuning voor sockets is niet geconfigureerd"
+
+#: usystem.c:645
+msgid "internal rcmd not implemented for Unix"
+msgstr "interne 'rcmd' is niet geïmplementeerd voor Unix"
+
+#: xaw/xboard.c:477
+#, c-format
+msgid "%s: Can't access XPM directory %s\n"
+msgstr "%s: Kan geen toegang krijgen tot XPM-map %s\n"
+
+#: xaw/xboard.c:498
+#, c-format
+msgid "Available `%s' sizes:\n"
+msgstr "Beschikbare '%s'-groottes:\n"
+
+#: xaw/xboard.c:531
+#, c-format
+msgid "Error: No `%s' files!\n"
+msgstr "Fout: geen '%s'-bestanden!\n"
+
+#: xaw/xboard.c:544
+#, c-format
+msgid ""
+"Warning: No DIR structure found on this system --\n"
+"         Unable to autosize for XPM/XIM pieces.\n"
+"   Please report this error to %s.\n"
+"   Include system type & operating system in message.\n"
+msgstr ""
+
+#: xaw/xboard.c:1291
+#, c-format
+msgid "white pixel = 0x%lx, black pixel = 0x%lx\n"
+msgstr ""
+
+#: xaw/xengineoutput.c:114
+#, c-format
+msgid "Error %d loading icon image\n"
+msgstr "Fout %d tijdens laden van pictogram\n"
+
+#: xaw/xoptions.c:321 xaw/xoptions.c:1015
+msgid "browse"
+msgstr "bladeren"
+
+#: xaw/xoptions.c:387 xaw/xoptions.c:388
+msgid "Ctrl"
+msgstr "Ctrl"
+
+#: xaw/xoptions.c:393 xaw/xoptions.c:394
+msgid "Alt"
+msgstr "Alt"
+
+#: xaw/xoptions.c:399 xaw/xoptions.c:400
+msgid "Shift"
+msgstr "Shift"
+
+#: xaw/xoptions.c:1262
+msgid "OK"
+msgstr "OK"
+
+#: xaw/xoptions.c:1266
+msgid "cancel"
+msgstr "Annuleren"
+
+#~ msgid " "
+#~ msgstr " "
index 52b3d30..2cc7e05 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard master-20110507\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,560 +18,564 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ru\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "версия протокола %d не поддерживается"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "timeControl: неверный параметр %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "searchTime: неверный параметр %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "Вариант %s поддерживается только в режиме ICS"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "Неизвестный вариант %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "Запускается шахматная программа"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "Неправильный формат файла"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "Неправильный формат файла позиции"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "Не подключено ни одной шахматной программы"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "Не могу открыть COM-порт %s"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "Не могу установить связь с %s, порт %s"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "initialMode: неизвестный режим %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "Режим анализа: не указан файл для анализа"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "Для анализа необходима шахматная программа"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "Режим анализа не совместим с режимом ICS"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "В режиме \"Компьютер белыми\" нужна шахматная программа"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "Режим \"Компьютер белыми\" не совместим с режимом ICS"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "В режиме \"Компьютер черными\" нужна шахматная программа (движок)"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "Режим \"Компьютер черными\" не совместим с режимом ICS"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "В режиме \"Два движка\" нужна шахматная программа"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "Режим \"Два движка\" не совместим с режимом ICS"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "Для тренировки необходимо загрузить шахматную партию из файла"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "Ошибка записи на вход сервера ICS"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "Ошибка клавиатуры"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "Получен символ конца файла с клавиатуры"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "Ошибка записи на дисплей"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "Ошибка чтения списка ходов: два заголовка"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "Ошибка чтения списка ходов: вложенные списки"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "Сервер ICS разорвал соединение"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "Ошибка чтения с сервера ICS"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr ""
 "Слишком длинная партия: увеличьте значение MAX_MOVES и перекомпилируйте "
 "программу"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "Ошибка чтения списка ходов: лишняя доска"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "Странный ход \"%s\" получен с сервера ICS"
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr ""
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "Вы играете черными"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "Вы играете белыми"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "Ход белых"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "Ход черных"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "Показанная позиция не соответствует положению в игре"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "Неправильный ход"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "Сыгран последний записанный ход"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "Неверный ход"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "Неправильный ход \"%s\" пытается выполнить движок %s"
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s не поддерживает режим анализа"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "Неправильный ход \"%s\" (не принят движком %s)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "Не удалось запустить %s движок %s на %s: %s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "Подсказка: %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr "Компьютер согласился на ничью"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "Неоднозначный ход с сервера ICS: \"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "Неправильный ход с сервера ICS: \"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "Пропуск в записи ходов"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "Вариант %s не поддерживается %s"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "Ошибка при запуске программы '%s'"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "Ждем первую шахматную программу"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "Ждем вторую шахматную программу"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr ""
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr ""
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "Матч %s против %s: финальный результат %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "Неправильный ход: %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "Неоднозначный ход: %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "Не могу открыть файл \"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "Не удалось создать список партий"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "В этом сообщении больше нет шахматных партий"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "Нет загруженных шахматных партий"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "Достигнуто начало списка"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "Номер партии - вне диапазона"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "Поиск в файлах записей партий не предусмотрен"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "Партия не найдена в файле"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "Неправильная позиция формата FEN в файле"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "Нет записанных ходов"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "Нет загруженных позиций"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "Поиск в файлах позиций не предусмотрен"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "Позиция не найдена в файле"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "Ход черных"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "Ход белых"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr ""
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr ""
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "Вы еще не сделали ход"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "Нет неоконченных партий"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -581,210 +585,210 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "Ошибка запуска cmail"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "Ожидание ответного хода\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "Все еще ваша очередь ходить в этой партии\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "Все еще ваша очередь ходить в обеих партиях\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "Все еще ваш ход во всех %d партиях\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "Все еще ваш ход в партии %s\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "Нет неоконченных партий\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "Можно отсылать почту\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "Все еще ваша очередь ходить в партиях %s\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "Правка комментария"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "Правка комментария к %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "Сейчас не ход белых"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "Сейчас не ход черных"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "Тренировка окончена"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "Тренировка"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "Сыграны все ходы данной партии"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "Предупреждение: вы все еще продолжаете играть"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "Предупреждение: вы все еще наблюдаете за игрой"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "Предупреждение: вы все еще изучаете игру"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "Это поле занято"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "К данному ходу никаких предложений не сделано"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "У вашего соперника еще есть время"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "Вы должны сделать свой ход прежде, чем предлагать ничью"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "Не включен режим изучения шахматных партий"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "Нельзя вернуться к началу пока выбрана \"Пауза\""
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "Ваш ход"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "Подождите своей очереди ходить"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "Подсказок нет"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 #, fuzzy
 msgid "Game list not loaded or empty"
 msgstr "Нет загруженных шахматных партий"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "Ошибка записи на вход движка %s"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "Ошибка: движок %s (%s) завершил работу"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "Ошибка чтения с выхода движка %s (%s)"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "Позиция не отвечает положению в игре"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "Невозможно интерпретировать ход"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "У обоих игроков время вышло"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "У белых упал флажок"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "У черных упал флажок"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "Позиция в буфере обмена не соответствует формату FEN"
 
@@ -896,7 +900,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -964,7 +968,7 @@ msgstr "Периодически обновлять (в режиме анали
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "Думать всегда"
 
@@ -1088,7 +1092,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1160,995 +1164,999 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "Предупреждение: второй движок (%s) не поддерживает это!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "Варианты"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "Max число CPU:"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "Размер хеша (МБ):"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr "Путь к ЭБД:"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr "Кеш ЭБД (МБ):"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr "Глубина книги:"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr "Варьирование:"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr "Своя книга у движка 1"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr "Общие настройки движков"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr "Определять мат"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "Проверять требования движка"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr "Ничья при нехватке материала"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr "Ничья в технич. окончаниях"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "Присудить ничью после"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "Победа/поражение при перевесе в"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "Оценка движка 1 - абсолютная"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "Оценка движка 2 - абсолютная"
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "Присудить победу белым"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr ""
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "Комментарии"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "Следить за игрой"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "Раскрывать доску"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "Следить в фоне"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "Двойная доска"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "Запрашивать запись ходов"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "Спокойная игра"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "График поиска"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr "Автообновление"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr "Предварительный ход"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "1-й ход белых"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "1-й ход черных"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "Звонок"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "Настройки соединения с ICS"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 #, fuzzy
 msgid "No games before year:"
 msgstr "Нет загруженных шахматных партий"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "Параметры загрузки"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "Настройки сохранения"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "Без звука"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "Простой сигнал"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "Послушать"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "Звуки"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr "Черные фигуры"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "Белые поля"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "Черные поля"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "Выделенное поле"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr "Предварит. ход"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr "Монохромная"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "Настройки доски"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "Правка"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "Описание"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr ""
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "Номер позиции:"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 #, fuzzy
 msgid "randomize"
 msgstr "Случайно"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "Новая в смешанные шахматы..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 #, fuzzy
 msgid "Time-Odds factors:"
 msgstr "Фактор времени движков:"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 #, fuzzy
 msgid "Engine #1"
 msgstr "Движок"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 #, fuzzy
 msgid "Engine #2 / Human"
 msgstr "Своя книга у движка 1"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "Ошибка подключения к шахматной программе"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "Отмена"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "Король"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "Общие..."
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "Конь"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Слон"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Ладья"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "Архиепископ"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "Канцлер"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Ферзь"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "Превратить"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr "Стандарт"
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "Вверх"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "Вниз"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "Параметры загрузки"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "Ошибка"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "Неисправимая ошибка"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "Выход"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "Информация"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "Примечание"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Белые"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Пешка"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "Слон (стар.)"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "Пушка"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "Разжаловать"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Пустое поле"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "Очистить доску"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Черные"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "Файл"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "Правка"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr "Вид"
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "Режим"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "Игра"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr "Движок"
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "Настройки"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Справка"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "Файл"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "Фильтр"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "Фильтр"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "Комментарии"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index d06053a..3e490f7 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: XBoard 4.2.7\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: 2003-12-26 16:38+0200\n"
 "Last-Translator: A. Alper Atýcý <alper_atici@yahoo.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -18,559 +18,563 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, fuzzy, c-format
 msgid "Failed to open indirection file %s"
 msgstr "Dosya açýlamadý"
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr ""
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr ""
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr ""
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr ""
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr ""
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr ""
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr ""
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr ""
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr ""
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr ""
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr ""
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr ""
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr ""
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr ""
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr ""
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr ""
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr ""
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr ""
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr ""
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr ""
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr ""
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr ""
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr ""
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr ""
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr ""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr ""
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "Siz Siyah'sýnýz"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "Siz Beyaz'sýnýz"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "Sýra Beyaz'da"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "Sýra Siyah'ta"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr ""
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "Geçersiz hamle"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "Oyun sonu"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "Yanlýþ hamle"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr ""
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr ""
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr ""
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr ""
 
-#: backend.c:8714
+#: backend.c:8844
 #, fuzzy, c-format
 msgid "Hint: %s"
 msgstr "Ýpucu"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr ""
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr ""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr ""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr ""
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr ""
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr ""
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr ""
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr ""
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 #, fuzzy
 msgid "Bad tournament file"
 msgstr "Dosya açýlamadý"
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr ""
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr ""
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr ""
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr ""
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr ""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr ""
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr ""
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr ""
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr ""
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr ""
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr ""
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr ""
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr ""
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr ""
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr ""
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr ""
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr ""
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr ""
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr ""
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr ""
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr ""
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr ""
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr ""
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -580,209 +584,209 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr ""
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr ""
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr ""
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr ""
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr ""
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr ""
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr ""
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr ""
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr ""
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr ""
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr ""
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr ""
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr ""
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr ""
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr ""
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr ""
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr ""
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr ""
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr ""
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr ""
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr ""
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr ""
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr ""
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr ""
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr ""
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr ""
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr ""
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr ""
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 msgid "Game list not loaded or empty"
 msgstr ""
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr ""
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr ""
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr ""
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr ""
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr ""
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "Berabere"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "Beyaz Þah mat"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "Siyah Þah mat"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr ""
 
@@ -892,7 +896,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -961,7 +965,7 @@ msgstr ""
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 #, fuzzy
 msgid "Ponder Next Move"
 msgstr "Sonraki Oyunu Yükle"
@@ -1086,7 +1090,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1159,1010 +1163,1014 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr ""
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr ""
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr ""
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr ""
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr ""
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr ""
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr ""
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr ""
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr ""
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr ""
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr ""
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr ""
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr ""
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr ""
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr ""
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr ""
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr ""
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr ""
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "Oyunu Kaydet"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr ""
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr ""
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr ""
 
-#: dialogs.c:572
+#: dialogs.c:573
 #, fuzzy
 msgid "Auto-Raise Board"
 msgstr "XBoard Hakkýnda"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr ""
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr ""
 
-#: dialogs.c:576
+#: dialogs.c:577
 #, fuzzy
 msgid "Get Move List"
 msgstr "Hamle Listesini Göster"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr ""
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr ""
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr ""
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr ""
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr ""
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr ""
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr ""
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 #, fuzzy
 msgid "ICS Options"
 msgstr "Seçenekler"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 msgid "No games before year:"
 msgstr ""
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 #, fuzzy
 msgid "Load Game Options"
 msgstr "Oyun Yükle"
 
-#: dialogs.c:657
+#: dialogs.c:659
 #, fuzzy
 msgid "Auto-Save Games"
 msgstr "Oyunu Kaydet"
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 #, fuzzy
 msgid "Save Games on File:"
 msgstr "Oyunu Kaydet"
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 #, fuzzy
 msgid "Save Game Options"
 msgstr "Oyunu Kaydet"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr ""
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr ""
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 #, fuzzy
 msgid "User File"
 msgstr "Dosya"
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr ""
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 #, fuzzy
 msgid "Draw:"
 msgstr "Berabere"
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 #, fuzzy
 msgid "Channel:"
 msgstr "iptal"
 
-#: dialogs.c:733
+#: dialogs.c:735
 #, fuzzy
 msgid "Channel 1:"
 msgstr "iptal"
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 #, fuzzy
 msgid "Sound Options"
 msgstr "Seçenekler"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr ""
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr ""
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr ""
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr ""
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr ""
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 #, fuzzy
 msgid "Mono Mode"
 msgstr "Kip"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 #, fuzzy
 msgid "Board Options"
 msgstr "Seçenekler"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr "temizle"
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "Oyunu Düzenle"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr ""
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 #, fuzzy
 msgid "ICS input box"
 msgstr "ICS Ýstemcisi"
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 #, fuzzy
 msgid "Type a move"
 msgstr "Geçersiz hamle"
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr ""
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr ""
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 msgid "randomize"
 msgstr ""
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr ""
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 msgid "Time-Odds factors:"
 msgstr ""
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 msgid "Engine #1"
 msgstr ""
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 msgid "Engine #2 / Human"
 msgstr ""
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr ""
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "iptal"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "Þah"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr ""
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "At"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Fil"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Kale"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 #, fuzzy
 msgid "Archbishop"
 msgstr "Fil"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 #, fuzzy
 msgid "Chancellor"
 msgstr "iptal"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Vezir"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 #, fuzzy
 msgid "Promote"
 msgstr "Terfi"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr ""
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr ""
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr ""
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "Oyun Yükle"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "Hata"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr ""
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr ""
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "Bilgi"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "Not"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Beyaz"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Piyon"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr ""
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr ""
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr ""
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Kareyi Boþalt"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "Tahtayý Temizle"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Siyah"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "Dosya"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 #, fuzzy
 msgid "Edit"
 msgstr "Oyunu Düzenle"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr ""
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "Kip"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "Eylem"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr ""
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "Seçenekler"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Yardým"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "Dosya"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "Dosya adý giriþi"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "Analiz edilecek dosya"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 msgid "Contents of"
 msgstr ""
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 #, fuzzy
 msgid "  next page"
 msgstr "sonraki"
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index d1ced58..17a7d1e 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -5,10 +5,10 @@
 # Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013.
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU xboard-4.7.0.20130224\n"
+"Project-Id-Version: GNU xboard-4.7.2\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
 "POT-Creation-Date: 2013-08-28 21:49-0700\n"
-"PO-Revision-Date: 2013-02-26 22:30+0200\n"
+"PO-Revision-Date: 2013-11-19 13:57+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
 "Language: uk\n"
@@ -16,8 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Lokalize 1.5\n"
-"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
-"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 
 #: args.h:820
 #, c-format
@@ -175,9 +174,7 @@ msgstr "Робота режиму гри комп’ютером білими р
 
 #: backend.c:1690
 msgid "TwoMachines mode requires a chess engine"
-msgstr ""
-"Режимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено "
-"шаховий рушій"
+msgstr "Режимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено шаховий рушій"
 
 #: backend.c:1695
 msgid "TwoMachines mode does not work with ICS mode"
@@ -250,8 +247,7 @@ msgstr ""
 
 #: backend.c:4253 backend.c:9755
 msgid "Game too long; increase MAX_MOVES and recompile"
-msgstr ""
-"Гра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму."
+msgstr "Гра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму."
 
 #: backend.c:4372
 msgid "Error gathering move list: extra board"
@@ -273,8 +269,7 @@ msgstr "Ця дія неможлива у режимі гри або спост
 
 #: backend.c:6029
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
-msgstr ""
-"Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!"
+msgstr "Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!"
 
 #: backend.c:6491
 msgid "You are playing Black"
@@ -339,8 +334,7 @@ msgstr "У %s не передбачено аналізу"
 #: backend.c:8666
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
-msgstr ""
-"Недозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)"
+msgstr "Недозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)"
 
 #: backend.c:8693
 #, c-format
@@ -592,8 +586,7 @@ msgid ""
 "Use Reload CMail Message and make your move again."
 msgstr ""
 "Повідомлення cmail не завантажено.\n"
-"Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш "
-"хід."
+"Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш хід."
 
 #: backend.c:13275
 msgid "No unfinished games"
@@ -904,8 +897,7 @@ msgstr "Номер позиції (-1 або -2 = автоматичне збі
 
 #: dialogs.c:282
 msgid "Rewind Index after this many Games (0 = never):"
-msgstr ""
-"Відновлювати початковий номер після вказаної кількості ігор (0=ніколи):"
+msgstr "Відновлювати початковий номер після вказаної кількості ігор (0=ніколи):"
 
 #: dialogs.c:283
 msgid "Disable own engine books by default"
@@ -1848,8 +1840,7 @@ msgstr "Команда рушія:"
 
 #: dialogs.c:1286
 msgid "(Directory will be derived from engine path when empty)"
-msgstr ""
-"(Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)"
+msgstr "(Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)"
 
 #: dialogs.c:1287
 msgid "UCI"
@@ -2165,9 +2156,8 @@ msgid "Contents of"
 msgstr "Вміст"
 
 #: dialogs.c:2473
-#, fuzzy
 msgid "  next page"
-msgstr "\7f наступна сторінка"
+msgstr "  наступна сторінка"
 
 #: dialogs.c:2495
 msgid "FIRST TYPE DIRECTORY NAME HERE"
@@ -2220,9 +2210,7 @@ msgstr "Не вдалося відкрити файл «%s»\n"
 
 #: gtk/xboard.c:811 xaw/xboard.c:1179
 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size"
-msgstr ""
-"Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з "
-"більшими значеннями BOARD_RANKS або BOARD_FILES"
+msgstr "Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з більшими значеннями BOARD_RANKS або BOARD_FILES"
 
 #: gtk/xboard.c:830 xaw/xboard.c:1211
 #, c-format
@@ -2286,13 +2274,11 @@ msgid ""
 "Enhancements Copyright 1992-2013 Free Software Foundation\n"
 "Enhancements Copyright 2005 Alessandro Scotti\n"
 "\n"
-"%s is free software and carries NO WARRANTY;see the file COPYING for more "
-"information.\n"
+"%s is free software and carries NO WARRANTY;see the file COPYING for more information.\n"
 "The GTK build of this version is experimental and unstable\n"
 "\n"
 "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n"
-"Check out the newest features at: http://www.gnu.org/software/xboard/"
-"whats_new.html\n"
+"Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html\n"
 "\n"
 "Report bugs via email at: <bug-xboard@gnu.org>\n"
 "\n"
@@ -2303,14 +2289,11 @@ msgstr ""
 "© Free Software Foundation, 1992–2012\n"
 "© Alessandro Scotti, 2005\n"
 "\n"
-"%s є вільним програмним забезпеченням, його працездатність не гарантується. "
-"Докладніше про це у файлі COPYING.\n"
+"%s є вільним програмним забезпеченням, його працездатність не гарантується. Докладніше про це у файлі COPYING.\n"
 "Збірка з GTK цієї версії є експериментальною і нестабільною\n"
 "\n"
-"Відвідайте сторінку XBoard у мережі за адресою: http://www.gnu.org/software/"
-"xboard/\n"
-"Ознайомтеся з найсвіжішими можливостями програми: http://www.gnu.org/"
-"software/xboard/whats_new.html\n"
+"Відвідайте сторінку XBoard у мережі за адресою: http://www.gnu.org/software/xboard/\n"
+"Ознайомтеся з найсвіжішими можливостями програми: http://www.gnu.org/software/xboard/whats_new.html\n"
 "\n"
 "Надішліть повідомлення про ваду на адресу: <bug-xboard@gnu.org>\n"
 "\n"
@@ -3039,8 +3022,7 @@ msgstr "скасувати"
 #~ msgstr "XsraSelFile: не вдалося отримати назву поточного каталогу"
 
 #~ msgid "%s: titleWidget geometry error %d %d %d %d %d\n"
-#~ msgstr ""
-#~ "%s: помилка у геометричних параметрах titleWidget — %d %d %d %d %d\n"
+#~ msgstr "%s: помилка у геометричних параметрах titleWidget — %d %d %d %d %d\n"
 
 #~ msgid "Error expanding path name \"%s\"\n"
 #~ msgstr "Помилка під час спроби розгортання адреси каталогу «%s»\n"
@@ -3056,8 +3038,7 @@ msgstr "скасувати"
 #~ msgstr "Найближчий розмір %s: %d\n"
 
 #~ msgid "%s: messageWidget geometry error %d %d %d %d %d\n"
-#~ msgstr ""
-#~ "%s: помилка у геометричних параметрах messageWidget — %d %d %d %d %d\n"
+#~ msgstr "%s: помилка у геометричних параметрах messageWidget — %d %d %d %d %d\n"
 
 #~ msgid "%s: error loading XIM!\n"
 #~ msgstr "%s: помилка завантаження XIM!\n"
@@ -3113,8 +3094,7 @@ msgstr "скасувати"
 #~ msgstr "Некоректне растрове зображення у файлі %s"
 
 #~ msgid "Ran out of memory reading bitmap file %s"
-#~ msgstr ""
-#~ "Під час читання растрового зображення %s було вичерпано обсяг пам’яті"
+#~ msgstr "Під час читання растрового зображення %s було вичерпано обсяг пам’яті"
 
 #~ msgid "Unknown XReadBitmapFile error %d on file %s"
 #~ msgstr "Невідома помилка XReadBitmapFile %d під час обробки файла %s"
@@ -3123,9 +3103,7 @@ msgstr "скасувати"
 #~ msgstr "%s: %s… використовуємо вбудоване\n"
 
 #~ msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n"
-#~ msgstr ""
-#~ "%s: розміри растрового зображення %s дорівнюють %dx%d, а не %dx%d… "
-#~ "використовуємо вбудоване\n"
+#~ msgstr "%s: розміри растрового зображення %s дорівнюють %dx%d, а не %dx%d… використовуємо вбудоване\n"
 
 #~ msgid "----"
 #~ msgstr "----"
index d3dff27..df85d21 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard master-20110507\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,558 +18,562 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr ""
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr ""
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr ""
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr ""
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr ""
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr ""
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr ""
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr ""
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr ""
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr ""
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr ""
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr ""
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr ""
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr ""
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr ""
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr ""
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr ""
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr ""
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr ""
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr ""
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr ""
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr ""
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr ""
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr ""
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr ""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr ""
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr ""
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr ""
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr ""
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr ""
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr ""
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr ""
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr ""
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr ""
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr ""
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr ""
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr ""
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr ""
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr ""
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr ""
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr ""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr ""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr ""
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr ""
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr ""
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr ""
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr ""
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr ""
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr ""
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr ""
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr ""
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr ""
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr ""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr ""
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr ""
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr ""
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr ""
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr ""
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr ""
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr ""
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr ""
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr ""
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr ""
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr ""
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr ""
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr ""
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr ""
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr ""
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr ""
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr ""
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr ""
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -579,209 +583,209 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr ""
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr ""
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr ""
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr ""
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr ""
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr ""
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr ""
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr ""
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr ""
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr ""
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr ""
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr ""
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr ""
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr ""
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr ""
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr ""
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr ""
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr ""
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr ""
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr ""
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr ""
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr ""
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr ""
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr ""
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr ""
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr ""
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr ""
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr ""
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 msgid "Game list not loaded or empty"
 msgstr ""
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr ""
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr ""
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr ""
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr ""
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr ""
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr ""
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr ""
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr ""
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr ""
 
@@ -890,7 +894,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -958,7 +962,7 @@ msgstr ""
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr ""
 
@@ -1079,7 +1083,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1151,991 +1155,995 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr ""
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr ""
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr ""
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr ""
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr ""
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr ""
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr ""
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr ""
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr ""
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr ""
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr ""
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr ""
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr ""
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr ""
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr ""
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr ""
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr ""
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr ""
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "Phân Xử Trắng Thắng"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr ""
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr ""
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr ""
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "Tự Động Hiện Bàn Cờ"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr ""
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr ""
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr ""
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr ""
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr ""
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr ""
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr ""
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr ""
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr ""
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr ""
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 msgid "No games before year:"
 msgstr ""
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "Các Lựa Chọn Tải Ván Cờ"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "Các Lựa Chọn Lưu Ván Cờ"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "Không âm thanh"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "Tiếng tút ngầm định"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "Chơi"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "Âm thanh"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr ""
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr ""
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr ""
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr ""
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr ""
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr ""
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr ""
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "Soạn"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "Các Thẻ"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr ""
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr ""
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 msgid "randomize"
 msgstr ""
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "Tráo Bên..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 #, fuzzy
 msgid "Time-Odds factors:"
 msgstr "Hệ số thời gian lẻ"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 msgid "Engine #1"
 msgstr ""
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 msgid "Engine #2 / Human"
 msgstr ""
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr ""
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "Bỏ"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "Vua"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "Chung..."
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "Mã"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "Tượng"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "Xe"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "Sĩ"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "Xe"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "Hoàng Hậu"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "Phong Cấp"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr ""
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr ""
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr ""
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "Các Lựa Chọn Tải Ván Cờ"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr ""
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr ""
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr ""
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr ""
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr ""
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "Trắng"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "Tốt"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "Tượng"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "Pháo"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr ""
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "Ô Trống"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "Xóa Bàn Cờ"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "Đen"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr ""
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "Soạn"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr ""
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr ""
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr ""
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr ""
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr ""
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "Hướng Dẫn"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "Lọc"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "Lọc"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "Lọc"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "Bình Chú"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index 9330a03..01d1543 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU xboard 4.7.2\n"
+"Project-Id-Version: GNU xboard master-20130828\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,558 +18,562 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr ""
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr ""
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr ""
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr ""
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr ""
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr ""
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr ""
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr ""
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr ""
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr ""
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr ""
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr ""
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr ""
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr ""
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr ""
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr ""
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr ""
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr ""
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr ""
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr ""
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr ""
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr ""
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr ""
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr ""
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr ""
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr ""
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr ""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr ""
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr ""
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr ""
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr ""
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr ""
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr ""
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr ""
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr ""
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr ""
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr ""
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr ""
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr ""
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr ""
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr ""
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr ""
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr ""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr ""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr ""
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr ""
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr ""
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr ""
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr ""
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr ""
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr ""
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr ""
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr ""
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr ""
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr ""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr ""
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr ""
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr ""
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr ""
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr ""
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr ""
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr ""
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr ""
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr ""
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr ""
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr ""
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr ""
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr ""
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr ""
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr ""
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr ""
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr ""
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr ""
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -579,209 +583,209 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr ""
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr ""
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr ""
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr ""
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr ""
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr ""
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr ""
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr ""
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr ""
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr ""
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr ""
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr ""
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr ""
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr ""
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr ""
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr ""
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr ""
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr ""
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr ""
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr ""
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr ""
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr ""
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr ""
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr ""
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr ""
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr ""
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr ""
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr ""
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 msgid "Game list not loaded or empty"
 msgstr ""
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr ""
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr ""
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr ""
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr ""
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr ""
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr ""
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr ""
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr ""
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr ""
 
@@ -889,7 +893,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -957,7 +961,7 @@ msgstr ""
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr ""
 
@@ -1078,7 +1082,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1150,982 +1154,986 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr ""
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr ""
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr ""
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr ""
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr ""
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr ""
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr ""
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr ""
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr ""
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr ""
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr ""
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr ""
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr ""
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr ""
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr ""
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr ""
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr ""
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr ""
 
-#: dialogs.c:556
+#: dialogs.c:557
 msgid "Adjudicate non-ICS Games"
 msgstr ""
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr ""
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr ""
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr ""
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr ""
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr ""
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr ""
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr ""
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr ""
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr ""
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr ""
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr ""
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr ""
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr ""
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr ""
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 msgid "No games before year:"
 msgstr ""
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr ""
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr ""
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr ""
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr ""
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr ""
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr ""
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr ""
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr ""
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr ""
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr ""
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr ""
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr ""
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr ""
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 msgid "Edit book"
 msgstr ""
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr ""
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr ""
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr ""
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 msgid "randomize"
 msgstr ""
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr ""
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 msgid "Time-Odds factors:"
 msgstr ""
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 msgid "Engine #1"
 msgstr ""
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 msgid "Engine #2 / Human"
 msgstr ""
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr ""
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 msgid "Cancel"
 msgstr ""
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr ""
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr ""
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr ""
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr ""
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr ""
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr ""
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr ""
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr ""
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr ""
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr ""
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr ""
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr ""
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 msgid "Game-list options"
 msgstr ""
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr ""
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr ""
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr ""
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr ""
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr ""
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr ""
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr ""
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr ""
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr ""
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr ""
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr ""
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr ""
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr ""
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr ""
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr ""
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr ""
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr ""
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr ""
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr ""
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr ""
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr ""
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 msgid "Files:"
 msgstr ""
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 msgid "Filename:"
 msgstr ""
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 msgid "File type:"
 msgstr ""
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 msgid "Contents of"
 msgstr ""
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index aa4257d..e5d907e 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard master-20110507\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,558 +18,562 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "协议版本 %d 不被支持"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "非法的\"timeControl\"(时间控制)选项 %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "非法的\"searchTime\"(搜索时间)选项 %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "变体 %s 只在ICS模式下支持"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "未知的变体名 %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "启动国际象棋程序"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "棋局文件错误"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "局面文件错误"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "没有象棋程序时无法进行比赛"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "无法打开通讯端口 %s"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "无法连接主机 %s 端口 %s"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "未知的\"initialMode\"(初始模式)选项 %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "\"AnalyzeFile\"(分析文件)模式必须指定一个棋局文件"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "\"Analysis\"(分析)模式必须启动国际象棋引擎"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "\"Analysis\"(分析)模式无法在ICS模式下工作"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "\"MachineWhite\"(电脑执白)模式必须启动国际象棋引擎"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "\"MachineWhite\"(电脑执白)模式无法在ICS模式下运行"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "\"MachineBlack\"(电脑执黑)模式必须启动国际象棋引擎"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "\"MachineBlack\"(电脑执黑)模式无法在ICS模式下运行"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "\"TwoMachines\"(分析)模式必须启动国际象棋引擎"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "\"TwoMachines\"(电脑对弈)模式无法在ICS模式下运行"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "\"Training\"(训练)模式必须指定一个棋局文件"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "发送信息给ICS时出错"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "读取键盘时出错"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "读取键盘时遇到文件尾"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "发送信息给显示器时出错"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "读取着法时出错,出现两个开头"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "读取着法时出错,嵌套错误"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "连接被ICS关闭"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "读取ICS信息时出错"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr "棋局太长,需要增加\"MAX_MOVES\"并重新编译"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "读取着法时出错,超出棋盘"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "无法解析从ICS读到的着法\"%s\""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "say 内部错误,非法的\"moveType\"(着法类型) %d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "你在执黑"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "你在执白"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "轮到白方走棋"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "轮到黑方走棋"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "显示的局面不是当前局面"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "着法错误"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "棋局结束"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "着法错误"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "从%s机器读到不合理着法\"%s\""
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s 不支持分析功能"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "不合理着法\"%s\" (%s国际象棋程序拒绝接受该着法)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "无法启动%s国际象棋程序 %s(在主机 %s 上),%s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "提示 %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr " *.*"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "ICS输出不明确的着法\"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "ICS输出不明确的着法\"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "着法断开"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "变体 %s 不被 %s 所支持"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "无法启动'%s'"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "等待第一个国际象棋程序"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "等待第二个国际象棋程序"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr ""
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr ""
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "比赛 %s vs. %s: 最终比分 %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "不合理着法 %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "不明确的着法 %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "无法打开\"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "无法建立棋局列表"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "这条信息不包含更多的棋局"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "尚未有棋局载入"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "无法再后退了"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "棋局数量超出范围"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "无法搜索棋局文件"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "文件中没有找到棋局"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "文件中的FEN局面错误"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "棋局中没有着法"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "尚未有局面载入"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "无法搜索局面文件"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "文件中没有着到局面"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "轮到黑方走棋"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "轮到白方走棋"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr ""
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr ""
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "一步棋也没走过"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "No unfinished games"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -579,210 +583,210 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "Failed to invoke cmail"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "Waiting for reply from opponent\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "Still need to make move for game\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "Still need to make moves for both games\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "Still need to make moves for all %d games\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "Still need to make a move for game %s\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "No unfinished games\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "Ready to send mail\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "Still need to make moves for games %s\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "编辑注释"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "编辑注释 %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "没有轮到白方走棋"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "没有轮到黑方走棋"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "训练模式已关闭"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "训练模式已打开"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "棋局已经结束"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "注意:你正在进行棋局"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "注意:你正在旁观棋局"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "注意:你正在研究棋局"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "格子已放棋子"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "该着法没有待定的提议"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "对手没有超时"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "必须走完棋才能提和"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "没有分析棋局"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "暂停时不能复原棋局"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "轮到你走棋"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "等待对手走棋"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "没有可用的提示"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 #, fuzzy
 msgid "Game list not loaded or empty"
 msgstr "尚未有棋局载入"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "发送信息到%s国际象棋程序时出错"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "错误:%s国际象棋程序(%s)突然退出了"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "从%s国际象棋程序(%s)接收信息时出错"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "显示的着法不是当前着法"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "无法解析着法"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "双方都超时了"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "白方超时"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "黑方超时"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "剪贴板的FEN局面错误"
 
@@ -894,7 +898,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -962,7 +966,7 @@ msgstr "定期更新(分析模式)"
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "同步思考(N)"
 
@@ -1085,7 +1089,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1157,995 +1161,999 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "警告: 第二个引擎(%s) 不支持此!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "变种"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "最大CPU数"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "Hash 大小(MB)"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr "EGTB 路径"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr "EGTB 大小(MB)"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr "库着法深度"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr "库变例"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr "引擎1有自用库"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr "通用引擎设置"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr "检测将杀(M)"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "验证引擎声明(V)"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr "子力不足时判和(I)"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr "一般和棋判决(T)"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "几着后判决"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "输/赢判决阈值"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "引擎 #1 是绝对分数"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "引擎 #2 是绝对分数"
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "裁决白赢 (W)"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "自动\"kibitz\"(A)"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "自动注释(A)"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "自动旁观(O)"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "自动改变棋盘大小(R)"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "后台观察(v)"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "双棋盘(D)"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "获取着法列表(G)"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "落子无声(Q)"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "可选对手图表(k)"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr "自动刷新图表(R)"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr "预先走棋(P)"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "白方先行(W)"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "黑方先行(B)"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "提示"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "ICS设置"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 #, fuzzy
 msgid "No games before year:"
 msgstr "尚未有棋局载入"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "载入棋局选项"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "保存棋局选项"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "无声"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "默认声音"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "播放"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "声音"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr "黑子"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "白格"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "黑格"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "格子标记"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr "预先走棋标记"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr "黑白"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "棋盘选项"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "编辑(E)"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "编辑标签(T)"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr ""
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "启动位置号码(S)"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 #, fuzzy
 msgid "randomize"
 msgstr "随机"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "洗牌游戏(u)..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 #, fuzzy
 msgid "Time-Odds factors:"
 msgstr "时间倍数"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 #, fuzzy
 msgid "Engine #1"
 msgstr "引擎(N)"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 #, fuzzy
 msgid "Engine #2 / Human"
 msgstr "引擎1有自用库"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "发送信息给国际象棋程序时出错"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "取消(C)"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "王"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "常规选项(G)..."
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "马"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "象"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "车"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "国师"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "宰相"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "后"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "升变"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr ""
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "向上"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "向下"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "载入棋局选项"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "错误"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "严重错误"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "退出"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr ""
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "注释"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "白方"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "兵"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "象"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "炮"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "降级"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "清空格子"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "清空棋盘"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "黑方"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "文件(F)"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "编辑(E)"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr "外观(V)"
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "模式(M)"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "行为(A)"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr "引擎(N)"
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "选项(O)"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "帮助(H)"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "文件(F)"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "过滤器"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "过滤器"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "编辑注释(C) *.*"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index 0b8df9e..0dc1563 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard master-20110411\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,562 +18,566 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "通訊協定版本 %d 不被支持"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "非法的\"timeControl\"(時間控制)選項 %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "非法的\"searchTime\"(搜尋時間)選項 %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "變體 %s 只在ICS模式下支持"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "未知的變體名 %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "啟動國際象棋程式"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "棋局檔案錯誤"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "盤面檔案錯誤"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "沒有象棋程式時無法進行比賽"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "無法打開通訊連接埠 %s"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "無法連接主機 %s 連接埠 %s"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "未知的\"initialMode\"(初始模式)選項 %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "發送訊息給ICS時出錯"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "讀取鍵盤時出錯"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "讀取鍵盤時遇到檔案尾"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "發送訊息給顯示器時出錯"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "讀取著法時出錯,出現兩個開頭"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "讀取著法時出錯,巢狀錯誤"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "連接被ICS關閉"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "讀取ICS訊息時出錯"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "讀取著法時出錯,超出棋盤"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "無法解析從ICS讀到的著法\"%s\""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "say 內部錯誤,非法的\"moveType\"(著法類型) %d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "你在執黑"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "你在執紅"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "輪到紅方走棋"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "輪到黑方走棋"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "顯示的盤面不是當前盤面"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "著法錯誤"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "棋局結束"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "著法錯誤"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "從%s機器讀到不合法著法\"%s\""
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s 不支持分析功能"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "提示 %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr "電腦同意和棋"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "ICS輸出不明確的著法\"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "ICS輸出不明確的著法\"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "著法斷開"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "變體 %s 不被 %s 所支持"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "無法啟動'%s'"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "等待第一個國際象棋程式"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "等待第二個國際象棋程式"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 #, fuzzy
 msgid "Bad tournament file"
 msgstr "棋局檔案錯誤"
 
-#: backend.c:10471
+#: backend.c:10601
 #, fuzzy
 msgid "Waiting for other game(s)"
 msgstr "等待第一個國際象棋程式"
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "不合法著法 %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "不明確的著法 %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "無法打開\"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "無法建立棋局列表"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "這條訊息不包含更多的棋局"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "尚未有棋局載入"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "無法再後退了"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "棋局數量超出範圍"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "無法搜尋棋局檔案"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "檔案中沒有找到棋局"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "檔案中的FEN盤面錯誤"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "棋局中沒有著法"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "尚未有盤面載入"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "無法搜尋盤面檔案"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "檔案中沒有找到盤面"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "輪到黑方走棋"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "輪到紅方走棋"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 #, fuzzy
 msgid "Waiting for access to save file"
 msgstr "等待第二個國際象棋程式"
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 #, fuzzy
 msgid "Saving position"
 msgstr "盤面檔案錯誤"
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "你尚未走棋"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "不存在未完成棋局"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -583,210 +587,210 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "呼叫cmail失敗"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "等待對手回應\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "本棋局仍需走棋\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "兩棋局皆仍需走棋\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "所有 %d 棋局皆仍需走棋\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "棋局 %s 仍需走棋\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "不存在未完成棋局\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "準備送信就緒\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "棋局 %s 仍需走棋\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "編輯註解"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "編輯註解 %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "沒有輪到紅方走棋"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "沒有輪到黑方走棋"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "訓練模式已關閉"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "訓練模式已打開"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "棋局已經結束"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "注意:你正在進行棋局"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "注意:你正在觀棋棋局"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "注意:你正在研究棋局"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "格子已有棋子"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "該著法沒有待定的提議"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "對手沒有超時"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "必須走完棋才能提和"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "沒有分析棋局"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "暫停時不能復原棋局"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "輪到你走棋"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "等待對手走棋"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "沒有可用的提示"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 #, fuzzy
 msgid "Game list not loaded or empty"
 msgstr "尚未有棋局載入"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "發送訊息到%s國際象棋程式時出錯"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "錯誤:%s國際象棋程式(%s)異常終止"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "從%s國際象棋程式(%s)接收訊息時出錯"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "顯示的著法不是當前著法"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "無法解析著法"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "雙方都超時了"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "紅方超時"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "黑方超時"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "剪貼簿的FEN盤面錯誤"
 
@@ -898,7 +902,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -966,7 +970,7 @@ msgstr "定期更新(分析模式)"
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "同步思考(N)"
 
@@ -1089,7 +1093,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1161,996 +1165,1001 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "警告: 第二個引擎(%s) 不支持此!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "變種"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "最大CPU數"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "雜湊表大小(MB)"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr "EGTB 路徑"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr "EGTB 大小(MB)"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr "庫著法深度"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr "庫變例"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr "引擎1有自用庫"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr "通用引擎設定"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr "檢測將殺(M)"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "驗證引擎聲明(V)"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr "子力不足時判和(I)"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr "簡易和棋判決(T)"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "幾著後判和"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "輸/贏判決門檻"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "引擎 #1 是絕對分數"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "引擎 #2 是絕對分數"
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "裁決紅贏 (W)"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "自動\"kibitz\"(A)"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "自動註解(A)"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "自動觀棋(O)"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "自動改變棋盤大小(R)"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "背景觀察(v)"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "雙棋盤(D)"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "取得著法列表(G)"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "落子無聲(Q)"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "可選對手圖表(k)"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr "自動刷新圖表(R)"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+#, fuzzy
+msgid "Quit after game"
+msgstr "等待第一個國際象棋程式"
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr "預先走棋(P)"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "紅方先走(W)"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "黑方先走(B)"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "提示"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "ICS設定"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 #, fuzzy
 msgid "No games before year:"
 msgstr "尚未有棋局載入"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "載入棋局選項"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "儲存棋局選項"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "無聲"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "預設聲音"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "播放"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "聲音"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr "黑子"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "白格"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "黑格"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "格子標記"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr "預先走棋標記"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr "黑白"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "棋盤選項"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "編輯(E)"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "編輯標籤(T)"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 #, fuzzy
 msgid "Engine has no options"
 msgstr "引擎1有自用庫"
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "啟動位置號碼(S)"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 #, fuzzy
 msgid "randomize"
 msgstr "隨機"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "洗牌遊戲(u)..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 #, fuzzy
 msgid "Time-Odds factors:"
 msgstr "時間倍數"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 #, fuzzy
 msgid "Engine #1"
 msgstr "引擎輸出"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 #, fuzzy
 msgid "Engine #2 / Human"
 msgstr "引擎1有自用庫"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "發送訊息給國際象棋程式時出錯"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "取消(C)"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "王"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "一般選項(G)..."
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "馬"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "象"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "車"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "國師"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "宰相"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "后"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "升變"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr ""
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "向上"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "向下"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "載入棋局選項"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "錯誤"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "嚴重錯誤"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "離開"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "資訊"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "註解"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "紅方"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "兵"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "象"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "炮"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "降級"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "清空格子"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "清空棋盤"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "黑方"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "檔案(F)"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "編輯(E)"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr ""
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "模式(M)"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "行為(A)"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr ""
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "選項(O)"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "說明(H)"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "檔案(F)"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "過濾器"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "過濾器"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "編輯註解(C) *.*"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
index 70dc4d5..cf92a29 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU xboard master-20110507\n"
 "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n"
-"POT-Creation-Date: 2013-08-28 21:49-0700\n"
+"POT-Creation-Date: 2013-08-28 22:03-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,558 +18,562 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: args.h:820
+#: args.h:821
 #, c-format
 msgid "%s in settings file\n"
 msgstr ""
 
-#: args.h:830
+#: args.h:831
 #, c-format
 msgid "Bad integer value %s"
 msgstr ""
 
-#: args.h:923 args.h:1164
+#: args.h:924 args.h:1165
 #, c-format
 msgid "Unrecognized argument %s"
 msgstr ""
 
-#: args.h:954
+#: args.h:955
 #, c-format
 msgid "No value provided for argument %s"
 msgstr ""
 
-#: args.h:1014
+#: args.h:1015
 #, c-format
 msgid "Incomplete \\ escape in value for %s"
 msgstr ""
 
-#: args.h:1119
+#: args.h:1120
 #, c-format
 msgid "Failed to open indirection file %s"
 msgstr ""
 
-#: args.h:1136
+#: args.h:1137
 #, c-format
 msgid "Unrecognized boolean argument value %s"
 msgstr ""
 
 #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:744
+#: backend.c:753
 msgid "first"
 msgstr ""
 
 #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings
 #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing
-#: backend.c:747
+#: backend.c:756
 msgid "second"
 msgstr ""
 
-#: backend.c:827
+#: backend.c:837
 #, c-format
 msgid "protocol version %d not supported"
 msgstr "通訊協定版本 %d 不被支持"
 
-#: backend.c:933
+#: backend.c:943
 msgid "You did not specify the engine executable"
 msgstr ""
 
-#: backend.c:989
+#: backend.c:999
 #, c-format
 msgid "bad timeControl option %s"
 msgstr "非法的\"timeControl\"(時間控制)選項 %s"
 
-#: backend.c:1004
+#: backend.c:1014
 #, c-format
 msgid "bad searchTime option %s"
 msgstr "非法的\"searchTime\"(搜尋時間)選項 %s"
 
-#: backend.c:1110
+#: backend.c:1120
 #, c-format
 msgid "Variant %s supported only in ICS mode"
 msgstr "變體 %s 只在ICS模式下支持"
 
-#: backend.c:1128
+#: backend.c:1138
 #, c-format
 msgid "Unknown variant name %s"
 msgstr "未知的變體名 %s"
 
-#: backend.c:1375
+#: backend.c:1386
 msgid "Starting chess program"
 msgstr "啟動國際象棋程式"
 
-#: backend.c:1398
+#: backend.c:1409
 msgid "Bad game file"
 msgstr "棋局檔案錯誤"
 
-#: backend.c:1405
+#: backend.c:1416
 msgid "Bad position file"
 msgstr "盤面檔案錯誤"
 
-#: backend.c:1419
+#: backend.c:1430
 msgid "Pick new game"
 msgstr ""
 
-#: backend.c:1488
+#: backend.c:1499
 msgid ""
 "You restarted an already completed tourney\n"
 "One more cycle will now be added to it\n"
 "Games commence in 10 sec"
 msgstr ""
 
-#: backend.c:1495
+#: backend.c:1506
 #, c-format
 msgid "All games in tourney '%s' are already played or playing"
 msgstr ""
 
-#: backend.c:1502
+#: backend.c:1513
 msgid "Can't have a match with no chess programs"
 msgstr "沒有象棋程式時無法進行比賽"
 
-#: backend.c:1539
+#: backend.c:1550
 #, c-format
 msgid "Could not open comm port %s"
 msgstr "無法打開通訊連接埠 %s"
 
-#: backend.c:1542
+#: backend.c:1553
 #, c-format
 msgid "Could not connect to host %s, port %s"
 msgstr "無法連接主機 %s 連接埠 %s"
 
-#: backend.c:1598
+#: backend.c:1609
 #, c-format
 msgid "Unknown initialMode %s"
 msgstr "未知的\"initialMode\"(初始模式)選項 %s"
 
-#: backend.c:1624
+#: backend.c:1635
 msgid "AnalyzeFile mode requires a game file"
 msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案"
 
-#: backend.c:1651
+#: backend.c:1662
 msgid "Analysis mode requires a chess engine"
 msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎"
 
-#: backend.c:1655
+#: backend.c:1666
 msgid "Analysis mode does not work with ICS mode"
 msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作"
 
-#: backend.c:1666
+#: backend.c:1677
 msgid "MachineWhite mode requires a chess engine"
 msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎"
 
-#: backend.c:1671
+#: backend.c:1682
 msgid "MachineWhite mode does not work with ICS mode"
 msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行"
 
-#: backend.c:1678
+#: backend.c:1689
 msgid "MachineBlack mode requires a chess engine"
 msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎"
 
-#: backend.c:1683
+#: backend.c:1694
 msgid "MachineBlack mode does not work with ICS mode"
 msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行"
 
-#: backend.c:1690
+#: backend.c:1701
 msgid "TwoMachines mode requires a chess engine"
 msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎"
 
-#: backend.c:1695
+#: backend.c:1706
 msgid "TwoMachines mode does not work with ICS mode"
 msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行"
 
-#: backend.c:1706
+#: backend.c:1717
 msgid "Training mode requires a game file"
 msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案"
 
-#: backend.c:1869 backend.c:1924 backend.c:1947 backend.c:2346
+#: backend.c:1880 backend.c:1935 backend.c:1958 backend.c:2357
 msgid "Error writing to ICS"
 msgstr "發送訊息給ICS時出錯"
 
-#: backend.c:1884
+#: backend.c:1895
 msgid "Error reading from keyboard"
 msgstr "讀取鍵盤時出錯"
 
-#: backend.c:1887
+#: backend.c:1898
 msgid "Got end of file from keyboard"
 msgstr "讀取鍵盤時遇到檔案尾"
 
-#: backend.c:2192
+#: backend.c:2203
 #, c-format
 msgid "Unknown wild type %d"
 msgstr ""
 
-#: backend.c:2263 usystem.c:329
+#: backend.c:2274 usystem.c:329
 msgid "Error writing to display"
 msgstr "發送訊息給顯示器時出錯"
 
-#: backend.c:3019
+#: backend.c:3030
 #, c-format
 msgid "your opponent kibitzes: %s"
 msgstr ""
 
-#: backend.c:3548
+#: backend.c:3559
 msgid "Error gathering move list: two headers"
 msgstr "讀取著法時出錯,出現兩個開頭"
 
-#: backend.c:3595
+#: backend.c:3606
 msgid "Error gathering move list: nested"
 msgstr "讀取著法時出錯,巢狀錯誤"
 
-#: backend.c:3699 backend.c:4117 backend.c:4321 backend.c:4880 backend.c:4884
-#: backend.c:6900 backend.c:12082 backend.c:13797 backend.c:13874
-#: backend.c:13920 backend.c:13926 backend.c:13931 backend.c:13936
+#: backend.c:3710 backend.c:4128 backend.c:4332 backend.c:4891 backend.c:4895
+#: backend.c:6919 backend.c:12213 backend.c:13928 backend.c:14005
+#: backend.c:14051 backend.c:14057 backend.c:14062 backend.c:14067
 msgid "vs."
 msgstr ""
 
-#: backend.c:3827
+#: backend.c:3838
 msgid "Illegal move (rejected by ICS)"
 msgstr ""
 
-#: backend.c:4165
+#: backend.c:4176
 msgid "Connection closed by ICS"
 msgstr "連接被ICS關閉"
 
-#: backend.c:4167
+#: backend.c:4178
 msgid "Error reading from ICS"
 msgstr "讀取ICS訊息時出錯"
 
-#: backend.c:4244
+#: backend.c:4255
 #, c-format
 msgid ""
 "Failed to parse board string:\n"
 "\"%s\""
 msgstr ""
 
-#: backend.c:4253 backend.c:9755
+#: backend.c:4264 backend.c:9885
 msgid "Game too long; increase MAX_MOVES and recompile"
 msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯"
 
-#: backend.c:4372
+#: backend.c:4383
 msgid "Error gathering move list: extra board"
 msgstr "讀取著法時出錯,超出棋盤"
 
-#: backend.c:4804 backend.c:4826
+#: backend.c:4815 backend.c:4837
 #, c-format
 msgid "Couldn't parse move \"%s\" from ICS"
 msgstr "無法解析從ICS讀到的著法\"%s\""
 
-#: backend.c:5063
+#: backend.c:5074
 #, c-format
 msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)"
 msgstr "say 內部錯誤,非法的\"moveType\"(著法類型) %d (%d,%d-%d,%d)"
 
-#: backend.c:5133
+#: backend.c:5145
 msgid "You cannot do this while you are playing or observing"
 msgstr ""
 
-#: backend.c:6029
+#: backend.c:6046
 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!"
 msgstr ""
 
-#: backend.c:6491
+#: backend.c:6510
 msgid "You are playing Black"
 msgstr "你在執黑"
 
-#: backend.c:6500 backend.c:6527
+#: backend.c:6519 backend.c:6546
 msgid "You are playing White"
 msgstr "你在執紅"
 
-#: backend.c:6509 backend.c:6535 backend.c:6655 backend.c:6680 backend.c:6696
-#: backend.c:14573
+#: backend.c:6528 backend.c:6554 backend.c:6674 backend.c:6699 backend.c:6715
+#: backend.c:14705
 msgid "It is White's turn"
 msgstr "輪到紅方走棋"
 
-#: backend.c:6513 backend.c:6539 backend.c:6663 backend.c:6686 backend.c:6717
-#: backend.c:14565
+#: backend.c:6532 backend.c:6558 backend.c:6682 backend.c:6705 backend.c:6736
+#: backend.c:14697
 msgid "It is Black's turn"
 msgstr "輪到黑方走棋"
 
-#: backend.c:6552
+#: backend.c:6571
 msgid "Displayed position is not current"
 msgstr "顯示的盤面不是當前盤面"
 
-#: backend.c:6790
+#: backend.c:6809
 msgid "Illegal move"
 msgstr "著法錯誤"
 
-#: backend.c:6857
+#: backend.c:6876
 msgid "End of game"
 msgstr "棋局結束"
 
-#: backend.c:6860
+#: backend.c:6879
 msgid "Incorrect move"
 msgstr "著法錯誤"
 
-#: backend.c:7169 backend.c:7296
+#: backend.c:7257 backend.c:7392
 msgid "Pull pawn backwards to under-promote"
 msgstr ""
 
-#: backend.c:7527
+#: backend.c:7364
+msgid "only marked squares are legal"
+msgstr ""
+
+#: backend.c:7624
 msgid "Swiss tourney finished"
 msgstr ""
 
-#: backend.c:8102
+#: backend.c:8199
 msgid "Invalid pairing from pairing engine"
 msgstr ""
 
-#: backend.c:8235
+#: backend.c:8332
 #, c-format
 msgid "Illegal move \"%s\" from %s machine"
 msgstr "從%s機器讀到不合法著法\"%s\""
 
-#: backend.c:8456
+#: backend.c:8564
 msgid "Bad FEN received from engine"
 msgstr ""
 
-#: backend.c:8600 backend.c:13662 backend.c:13727
+#: backend.c:8730 backend.c:13793 backend.c:13858
 #, c-format
 msgid "%s does not support analysis"
 msgstr "%s 不支持分析功能"
 
-#: backend.c:8666
+#: backend.c:8796
 #, c-format
 msgid "Illegal move \"%s\" (rejected by %s chess program)"
 msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)"
 
-#: backend.c:8693
+#: backend.c:8823
 #, c-format
 msgid "Failed to start %s chess program %s on %s: %s\n"
 msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n"
 
-#: backend.c:8714
+#: backend.c:8844
 #, c-format
 msgid "Hint: %s"
 msgstr "提示 %s"
 
-#: backend.c:8719
+#: backend.c:8849
 #, c-format
 msgid ""
 "Illegal hint move \"%s\"\n"
 "from %s chess program"
 msgstr ""
 
-#: backend.c:8894
+#: backend.c:9024
 msgid "Machine accepts your draw offer"
 msgstr "電腦同意和棋"
 
-#: backend.c:8897
+#: backend.c:9027
 msgid ""
 "Machine offers a draw\n"
 "Select Action / Draw to agree"
 msgstr ""
 
-#: backend.c:8976
+#: backend.c:9106
 msgid "failed writing PV"
 msgstr ""
 
-#: backend.c:9274
+#: backend.c:9404
 #, c-format
 msgid "Ambiguous move in ICS output: \"%s\""
 msgstr "ICS輸出不明確的著法\"%s\""
 
-#: backend.c:9284
+#: backend.c:9414
 #, c-format
 msgid "Illegal move in ICS output: \"%s\""
 msgstr "ICS輸出不明確的著法\"%s\""
 
-#: backend.c:9295
+#: backend.c:9425
 msgid "Gap in move list"
 msgstr "著法斷開"
 
-#: backend.c:9916 dialogs.c:460
+#: backend.c:10046 dialogs.c:461
 #, c-format
 msgid "Variant %s not supported by %s"
 msgstr "變體 %s 不被 %s 所支持"
 
-#: backend.c:10037
+#: backend.c:10167
 #, c-format
 msgid "Startup failure on '%s'"
 msgstr "無法啟動'%s'"
 
-#: backend.c:10068
+#: backend.c:10198
 msgid "Waiting for first chess program"
 msgstr "等待第一個國際象棋程式"
 
-#: backend.c:10073 backend.c:13945
+#: backend.c:10203 backend.c:14076
 msgid "Waiting for second chess program"
 msgstr "等待第二個國際象棋程式"
 
-#: backend.c:10122
+#: backend.c:10252
 msgid "Could not write on tourney file"
 msgstr ""
 
-#: backend.c:10196
+#: backend.c:10326
 msgid ""
 "You cannot replace an engine while it is engaged!\n"
 "Terminate its game first."
 msgstr ""
 
-#: backend.c:10210
+#: backend.c:10340
 msgid "No engine with the name you gave is installed"
 msgstr ""
 
-#: backend.c:10212
+#: backend.c:10342
 msgid ""
 "First change an engine by editing the participants list\n"
 "of the Tournament Options dialog"
 msgstr ""
 
-#: backend.c:10213
+#: backend.c:10343
 msgid "You can only change one engine at the time"
 msgstr ""
 
-#: backend.c:10228 backend.c:10375
+#: backend.c:10358 backend.c:10505
 #, c-format
 msgid "No engine %s is installed"
 msgstr ""
 
-#: backend.c:10248
+#: backend.c:10378
 msgid ""
 "You must supply a tournament file,\n"
 "for storing the tourney progress"
 msgstr ""
 
-#: backend.c:10258
+#: backend.c:10388
 msgid "Not enough participants"
 msgstr ""
 
-#: backend.c:10459
+#: backend.c:10589
 msgid "Bad tournament file"
 msgstr ""
 
-#: backend.c:10471
+#: backend.c:10601
 msgid "Waiting for other game(s)"
 msgstr ""
 
-#: backend.c:10484
+#: backend.c:10614
 msgid "No pairing engine specified"
 msgstr ""
 
-#: backend.c:10961
+#: backend.c:11092
 #, c-format
 msgid "Match %s vs. %s: final score %d-%d-%d"
 msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d"
 
-#: backend.c:11423 backend.c:11454
+#: backend.c:11554 backend.c:11585
 #, c-format
 msgid "Illegal move: %d.%s%s"
 msgstr "不合法著法 %d.%s%s"
 
-#: backend.c:11443
+#: backend.c:11574
 #, c-format
 msgid "Ambiguous move: %d.%s%s"
 msgstr "不明確的著法 %d.%s%s"
 
-#: backend.c:11496 backend.c:12505 backend.c:12698 backend.c:13059
+#: backend.c:11627 backend.c:12636 backend.c:12829 backend.c:13190
 #, c-format
 msgid "Can't open \"%s\""
 msgstr "無法打開\"%s\""
 
-#: backend.c:11508 menus.c:116
+#: backend.c:11639 menus.c:116
 msgid "Cannot build game list"
 msgstr "無法建立棋局列表"
 
-#: backend.c:11593
+#: backend.c:11724
 msgid "No more games in this message"
 msgstr "這條訊息不包含更多的棋局"
 
-#: backend.c:11633
+#: backend.c:11764
 msgid "No game has been loaded yet"
 msgstr "尚未有棋局載入"
 
-#: backend.c:11637 backend.c:12486 ngamelist.c:129
+#: backend.c:11768 backend.c:12617 ngamelist.c:129
 msgid "Can't back up any further"
 msgstr "無法再後退了"
 
-#: backend.c:12058
+#: backend.c:12189
 msgid "Game number out of range"
 msgstr "棋局數量超出範圍"
 
-#: backend.c:12069
+#: backend.c:12200
 msgid "Can't seek on game file"
 msgstr "無法搜尋棋局檔案"
 
-#: backend.c:12127
+#: backend.c:12258
 msgid "Game not found in file"
 msgstr "檔案中沒有找到棋局"
 
-#: backend.c:12255 backend.c:12582
+#: backend.c:12386 backend.c:12713
 msgid "Bad FEN position in file"
 msgstr "檔案中的FEN盤面錯誤"
 
-#: backend.c:12407
+#: backend.c:12538
 msgid "No moves in game"
 msgstr "棋局中沒有著法"
 
-#: backend.c:12482
+#: backend.c:12613
 msgid "No position has been loaded yet"
 msgstr "尚未有盤面載入"
 
-#: backend.c:12543 backend.c:12554
+#: backend.c:12674 backend.c:12685
 msgid "Can't seek on position file"
 msgstr "無法搜尋盤面檔案"
 
-#: backend.c:12561 backend.c:12573
+#: backend.c:12692 backend.c:12704
 msgid "Position not found in file"
 msgstr "檔案中沒有找到盤面"
 
-#: backend.c:12613
+#: backend.c:12744
 msgid "Black to play"
 msgstr "輪到黑方走棋"
 
-#: backend.c:12616
+#: backend.c:12747
 msgid "White to play"
 msgstr "輪到紅方走棋"
 
-#: backend.c:12703 backend.c:13064
+#: backend.c:12834 backend.c:13195
 msgid "Waiting for access to save file"
 msgstr ""
 
-#: backend.c:12705
+#: backend.c:12836
 msgid "Saving game"
 msgstr ""
 
-#: backend.c:12706
+#: backend.c:12837
 msgid "Bad Seek"
 msgstr ""
 
-#: backend.c:13066
+#: backend.c:13197
 msgid "Saving position"
 msgstr ""
 
-#: backend.c:13192
+#: backend.c:13323
 msgid ""
 "You have edited the game history.\n"
 "Use Reload Same Game and make your move again."
 msgstr ""
 
-#: backend.c:13197
+#: backend.c:13328
 msgid ""
 "You have entered too many moves.\n"
 "Back up to the correct position and try again."
 msgstr ""
 
-#: backend.c:13202
+#: backend.c:13333
 msgid ""
 "Displayed position is not current.\n"
 "Step forward to the correct position and try again."
 msgstr ""
 
-#: backend.c:13249
+#: backend.c:13380
 msgid "You have not made a move yet"
 msgstr "你尚未走棋"
 
-#: backend.c:13270
+#: backend.c:13401
 msgid ""
 "The cmail message is not loaded.\n"
 "Use Reload CMail Message and make your move again."
 msgstr ""
 
-#: backend.c:13275
+#: backend.c:13406
 msgid "No unfinished games"
 msgstr "不存在未完成棋局"
 
-#: backend.c:13281
+#: backend.c:13412
 #, c-format
 msgid ""
 "You have already mailed a move.\n"
@@ -579,210 +583,210 @@ msgid ""
 "on the command line."
 msgstr ""
 
-#: backend.c:13296
+#: backend.c:13427
 msgid "Failed to invoke cmail"
 msgstr "呼叫cmail失敗"
 
-#: backend.c:13358
+#: backend.c:13489
 #, c-format
 msgid "Waiting for reply from opponent\n"
 msgstr "等待對手回應\n"
 
-#: backend.c:13380
+#: backend.c:13511
 #, c-format
 msgid "Still need to make move for game\n"
 msgstr "本棋局仍需走棋\n"
 
-#: backend.c:13384
+#: backend.c:13515
 #, c-format
 msgid "Still need to make moves for both games\n"
 msgstr "兩棋局皆仍需走棋\n"
 
-#: backend.c:13388
+#: backend.c:13519
 #, c-format
 msgid "Still need to make moves for all %d games\n"
 msgstr "所有 %d 棋局皆仍需走棋\n"
 
-#: backend.c:13395
+#: backend.c:13526
 #, c-format
 msgid "Still need to make a move for game %s\n"
 msgstr "棋局 %s 仍需走棋\n"
 
-#: backend.c:13401
+#: backend.c:13532
 #, c-format
 msgid "No unfinished games\n"
 msgstr "不存在未完成棋局\n"
 
-#: backend.c:13403
+#: backend.c:13534
 #, c-format
 msgid "Ready to send mail\n"
 msgstr "準備送信就緒\n"
 
-#: backend.c:13408
+#: backend.c:13539
 #, c-format
 msgid "Still need to make moves for games %s\n"
 msgstr "棋局 %s 仍需走棋\n"
 
-#: backend.c:13612
+#: backend.c:13743
 msgid "Edit comment"
 msgstr "編輯註解"
 
-#: backend.c:13614
+#: backend.c:13745
 #, c-format
 msgid "Edit comment on %d.%s%s"
 msgstr "編輯註解 %d.%s%s"
 
-#: backend.c:13669
+#: backend.c:13800
 #, c-format
 msgid "You are not observing a game"
 msgstr ""
 
-#: backend.c:13777
+#: backend.c:13908
 msgid "It is not White's turn"
 msgstr "沒有輪到紅方走棋"
 
-#: backend.c:13858
+#: backend.c:13989
 msgid "It is not Black's turn"
 msgstr "沒有輪到黑方走棋"
 
-#: backend.c:13966
+#: backend.c:14097
 #, c-format
 msgid "Starting %s chess program"
 msgstr ""
 
-#: backend.c:13994 backend.c:15108
+#: backend.c:14125 backend.c:15240
 msgid ""
 "Wait until your turn,\n"
 "or select Move Now"
 msgstr ""
 
-#: backend.c:14128
+#: backend.c:14259
 msgid "Training mode off"
 msgstr "訓練模式已關閉"
 
-#: backend.c:14136
+#: backend.c:14267
 msgid "Training mode on"
 msgstr "訓練模式已打開"
 
-#: backend.c:14139
+#: backend.c:14270
 msgid "Already at end of game"
 msgstr "棋局已經結束"
 
-#: backend.c:14219
+#: backend.c:14350
 msgid "Warning: You are still playing a game"
 msgstr "注意:你正在進行棋局"
 
-#: backend.c:14222
+#: backend.c:14353
 msgid "Warning: You are still observing a game"
 msgstr "注意:你正在觀棋棋局"
 
-#: backend.c:14225
+#: backend.c:14356
 msgid "Warning: You are still examining a game"
 msgstr "注意:你正在研究棋局"
 
-#: backend.c:14292
+#: backend.c:14423
 msgid "Click clock to clear board"
 msgstr ""
 
-#: backend.c:14302
+#: backend.c:14433
 msgid "Close ICS engine analyze..."
 msgstr ""
 
-#: backend.c:14590
+#: backend.c:14722
 msgid "That square is occupied"
 msgstr "格子已有棋子"
 
-#: backend.c:14614 backend.c:14640
+#: backend.c:14746 backend.c:14772
 msgid "There is no pending offer on this move"
 msgstr "該著法沒有待定的提議"
 
-#: backend.c:14676 backend.c:14687
+#: backend.c:14808 backend.c:14819
 msgid "Your opponent is not out of time"
 msgstr "對手沒有超時"
 
-#: backend.c:14753
+#: backend.c:14885
 msgid "You must make your move before offering a draw"
 msgstr "必須走完棋才能提和"
 
-#: backend.c:15090
+#: backend.c:15222
 msgid "You are not examining a game"
 msgstr "沒有分析棋局"
 
-#: backend.c:15094
+#: backend.c:15226
 msgid "You can't revert while pausing"
 msgstr "暫停時不能復原棋局"
 
-#: backend.c:15148 backend.c:15155
+#: backend.c:15280 backend.c:15287
 msgid "It is your turn"
 msgstr "輪到你走棋"
 
-#: backend.c:15206 backend.c:15213 backend.c:15266 backend.c:15273
+#: backend.c:15338 backend.c:15345 backend.c:15398 backend.c:15405
 msgid "Wait until your turn"
 msgstr "等待對手走棋"
 
-#: backend.c:15218
+#: backend.c:15350
 msgid "No hint available"
 msgstr "沒有可用的提示"
 
-#: backend.c:15234 ngamelist.c:355
+#: backend.c:15366 ngamelist.c:355
 #, fuzzy
 msgid "Game list not loaded or empty"
 msgstr "尚未有棋局載入"
 
-#: backend.c:15241
+#: backend.c:15373
 msgid "Book file exists! Try again for overwrite."
 msgstr ""
 
-#: backend.c:15719
+#: backend.c:15851
 #, c-format
 msgid "Error writing to %s chess program"
 msgstr "發送訊息到%s國際象棋程式時出錯"
 
-#: backend.c:15722 backend.c:15753
+#: backend.c:15854 backend.c:15885
 #, c-format
 msgid "%s program exits in draw position (%s)"
 msgstr ""
 
-#: backend.c:15748
+#: backend.c:15880
 #, c-format
 msgid "Error: %s chess program (%s) exited unexpectedly"
 msgstr "錯誤:%s國際象棋程式(%s)異常終止"
 
-#: backend.c:15766
+#: backend.c:15898
 #, c-format
 msgid "Error reading from %s chess program (%s)"
 msgstr "從%s國際象棋程式(%s)接收訊息時出錯"
 
-#: backend.c:16168
+#: backend.c:16301
 #, c-format
 msgid "%s engine has too many options\n"
 msgstr ""
 
-#: backend.c:16324
+#: backend.c:16457
 msgid "Displayed move is not current"
 msgstr "顯示的著法不是當前著法"
 
-#: backend.c:16333
+#: backend.c:16466
 msgid "Could not parse move"
 msgstr "無法解析著法"
 
-#: backend.c:16458 backend.c:16480
+#: backend.c:16591 backend.c:16613
 msgid "Both flags fell"
 msgstr "雙方都超時了"
 
-#: backend.c:16460
+#: backend.c:16593
 msgid "White's flag fell"
 msgstr "紅方超時"
 
-#: backend.c:16482
+#: backend.c:16615
 msgid "Black's flag fell"
 msgstr "黑方超時"
 
-#: backend.c:16613
+#: backend.c:16746
 msgid "Clock adjustment not allowed in auto-flag mode"
 msgstr ""
 
-#: backend.c:17448
+#: backend.c:17585
 msgid "Bad FEN position in clipboard"
 msgstr "剪貼簿的FEN盤面錯誤"
 
@@ -892,7 +896,7 @@ msgstr ""
 msgid "First you must specify an existing tourney file to clone"
 msgstr ""
 
-#: dialogs.c:332 dialogs.c:1320
+#: dialogs.c:332 dialogs.c:1322
 msgid "# no engines are installed"
 msgstr ""
 
@@ -960,7 +964,7 @@ msgstr "定期更新(分析模式)"
 msgid "Play Move(s) of Clicked PV (Analysis)"
 msgstr ""
 
-#: dialogs.c:379 dialogs.c:514 menus.c:728
+#: dialogs.c:379 dialogs.c:515 menus.c:728
 msgid "Ponder Next Move"
 msgstr "同步思考(N)"
 
@@ -1083,7 +1087,7 @@ msgid "Holdings Size:"
 msgstr ""
 
 #: dialogs.c:429
-msgid "fairy"
+msgid "ASEAN"
 msgstr ""
 
 #: dialogs.c:430
@@ -1155,995 +1159,999 @@ msgid "xiangqi (9x10)"
 msgstr ""
 
 #: dialogs.c:447
-msgid " "
+msgid "fairy"
 msgstr ""
 
-#: dialogs.c:448
+#: dialogs.c:449
 msgid "courier (12x8)"
 msgstr ""
 
-#: dialogs.c:465
+#: dialogs.c:466
 #, c-format
 msgid "Warning: second engine (%s) does not support this!"
 msgstr "警告: 第二個引擎(%s) 不支持此!"
 
-#: dialogs.c:488
+#: dialogs.c:489
 #, c-format
 msgid "Only bughouse is not available in viewer mode"
 msgstr ""
 
-#: dialogs.c:489
+#: dialogs.c:490
 #, c-format
 msgid ""
 "All variants not supported by first engine\n"
 "(currently %s) are disabled"
 msgstr ""
 
-#: dialogs.c:490
+#: dialogs.c:491
 msgid "New Variant"
 msgstr "變種"
 
-#: dialogs.c:515
+#: dialogs.c:516
 msgid "Maximum Number of CPUs per Engine:"
 msgstr "最大CPU數"
 
-#: dialogs.c:516
+#: dialogs.c:517
 msgid "Polygot Directory:"
 msgstr ""
 
-#: dialogs.c:517
+#: dialogs.c:518
 msgid "Hash-Table Size (MB):"
 msgstr "雜湊表大小(MB)"
 
-#: dialogs.c:518
+#: dialogs.c:519
 msgid "Nalimov EGTB Path:"
 msgstr "EGTB 路徑"
 
-#: dialogs.c:519
+#: dialogs.c:520
 msgid "EGTB Cache Size (MB):"
 msgstr "EGTB 大小(MB)"
 
-#: dialogs.c:520
+#: dialogs.c:521
 msgid "Use GUI Book"
 msgstr ""
 
-#: dialogs.c:521
+#: dialogs.c:522
 msgid "Opening-Book Filename:"
 msgstr ""
 
-#: dialogs.c:522
+#: dialogs.c:523
 msgid "Book Depth (moves):"
 msgstr "庫著法深度"
 
-#: dialogs.c:523
+#: dialogs.c:524
 msgid "Book Variety (0) vs. Strength (100):"
 msgstr "庫變例"
 
-#: dialogs.c:524
+#: dialogs.c:525
 msgid "Engine #1 Has Own Book"
 msgstr "引擎1有自用庫"
 
-#: dialogs.c:525
+#: dialogs.c:526
 msgid "Engine #2 Has Own Book          "
 msgstr ""
 
-#: dialogs.c:534
+#: dialogs.c:535
 msgid "Common Engine Settings"
 msgstr "通用引擎設定"
 
-#: dialogs.c:540
+#: dialogs.c:541
 msgid "Detect all Mates"
 msgstr "檢測將殺(M)"
 
-#: dialogs.c:541
+#: dialogs.c:542
 msgid "Verify Engine Result Claims"
 msgstr "驗證引擎聲明(V)"
 
-#: dialogs.c:542
+#: dialogs.c:543
 msgid "Draw if Insufficient Mating Material"
 msgstr "子力不足時判和(I)"
 
-#: dialogs.c:543
+#: dialogs.c:544
 msgid "Adjudicate Trivial Draws (3-Move Delay)"
 msgstr "簡易和棋判決(T)"
 
-#: dialogs.c:544
+#: dialogs.c:545
 msgid "N-Move Rule:"
 msgstr ""
 
-#: dialogs.c:545
+#: dialogs.c:546
 msgid "N-fold Repeats:"
 msgstr ""
 
-#: dialogs.c:546
+#: dialogs.c:547
 msgid "Draw after N Moves Total:"
 msgstr "幾著後判和"
 
-#: dialogs.c:547
+#: dialogs.c:548
 msgid "Win / Loss Threshold:"
 msgstr "輸/贏判決門檻"
 
-#: dialogs.c:548
+#: dialogs.c:549
 msgid "Negate Score of Engine #1"
 msgstr "引擎 #1 是絕對分數"
 
-#: dialogs.c:549
+#: dialogs.c:550
 msgid "Negate Score of Engine #2"
 msgstr "引擎 #2 是絕對分數"
 
-#: dialogs.c:556
+#: dialogs.c:557
 #, fuzzy
 msgid "Adjudicate non-ICS Games"
 msgstr "裁決紅贏 (W)"
 
-#: dialogs.c:569
+#: dialogs.c:570
 msgid "Auto-Kibitz"
 msgstr "自動\"kibitz\"(A)"
 
-#: dialogs.c:570
+#: dialogs.c:571
 msgid "Auto-Comment"
 msgstr "自動註解(A)"
 
-#: dialogs.c:571
+#: dialogs.c:572
 msgid "Auto-Observe"
 msgstr "自動觀棋(O)"
 
-#: dialogs.c:572
+#: dialogs.c:573
 msgid "Auto-Raise Board"
 msgstr "自動改變棋盤大小(R)"
 
-#: dialogs.c:573
+#: dialogs.c:574
 msgid "Auto-Create Logon Script"
 msgstr ""
 
-#: dialogs.c:574
+#: dialogs.c:575
 msgid "Background Observe while Playing"
 msgstr "背景觀察(v)"
 
-#: dialogs.c:575
+#: dialogs.c:576
 msgid "Dual Board for Background-Observed Game"
 msgstr "雙棋盤(D)"
 
-#: dialogs.c:576
+#: dialogs.c:577
 msgid "Get Move List"
 msgstr "取得著法列表(G)"
 
-#: dialogs.c:577
+#: dialogs.c:578
 msgid "Quiet Play"
 msgstr "落子無聲(Q)"
 
-#: dialogs.c:578
+#: dialogs.c:579
 msgid "Seek Graph"
 msgstr "可選對手圖表(k)"
 
-#: dialogs.c:579
+#: dialogs.c:580
 msgid "Auto-Refresh Seek Graph"
 msgstr "自動刷新圖表(R)"
 
-#: dialogs.c:580
+#: dialogs.c:581
 msgid "Auto-InputBox PopUp"
 msgstr ""
 
-#: dialogs.c:581
+#: dialogs.c:582
+msgid "Quit after game"
+msgstr ""
+
+#: dialogs.c:583
 msgid "Premove"
 msgstr "預先走棋(P)"
 
-#: dialogs.c:582
+#: dialogs.c:584
 msgid "Premove for White"
 msgstr ""
 
-#: dialogs.c:583
+#: dialogs.c:585
 msgid "First White Move:"
 msgstr "紅方先走(W)"
 
-#: dialogs.c:584
+#: dialogs.c:586
 msgid "Premove for Black"
 msgstr ""
 
-#: dialogs.c:585
+#: dialogs.c:587
 msgid "First Black Move:"
 msgstr "黑方先走(B)"
 
-#: dialogs.c:587
+#: dialogs.c:589
 msgid "Alarm"
 msgstr "提示"
 
-#: dialogs.c:588
+#: dialogs.c:590
 msgid "Alarm Time (msec):"
 msgstr ""
 
-#: dialogs.c:590
+#: dialogs.c:592
 msgid "Colorize Messages"
 msgstr ""
 
-#: dialogs.c:591
+#: dialogs.c:593
 msgid "Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:592
+#: dialogs.c:594
 msgid "S-Shout Text Colors:"
 msgstr ""
 
-#: dialogs.c:593
+#: dialogs.c:595
 msgid "Channel #1 Text Colors:"
 msgstr ""
 
-#: dialogs.c:594
+#: dialogs.c:596
 msgid "Other Channel Text Colors:"
 msgstr ""
 
-#: dialogs.c:595
+#: dialogs.c:597
 msgid "Kibitz Text Colors:"
 msgstr ""
 
-#: dialogs.c:596
+#: dialogs.c:598
 msgid "Tell Text Colors:"
 msgstr ""
 
-#: dialogs.c:597
+#: dialogs.c:599
 msgid "Challenge Text Colors:"
 msgstr ""
 
-#: dialogs.c:598
+#: dialogs.c:600
 msgid "Request Text Colors:"
 msgstr ""
 
-#: dialogs.c:599
+#: dialogs.c:601
 msgid "Seek Text Colors:"
 msgstr ""
 
-#: dialogs.c:606
+#: dialogs.c:608
 msgid "ICS Options"
 msgstr "ICS設定"
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Exact position match"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Shown position is subset"
 msgstr ""
 
-#: dialogs.c:611
+#: dialogs.c:613
 msgid "Same material with exactly same Pawn chain"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Same material"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material range (top board half optional)"
 msgstr ""
 
-#: dialogs.c:612
+#: dialogs.c:614
 msgid "Material difference (optional stuff balanced)"
 msgstr ""
 
-#: dialogs.c:624
+#: dialogs.c:626
 msgid "Auto-Display Tags"
 msgstr ""
 
-#: dialogs.c:625
+#: dialogs.c:627
 msgid "Auto-Display Comment"
 msgstr ""
 
-#: dialogs.c:626
+#: dialogs.c:628
 msgid ""
 "Auto-Play speed of loaded games\n"
 "(0 = instant, -1 = off):"
 msgstr ""
 
-#: dialogs.c:627
+#: dialogs.c:629
 msgid "Seconds per Move:"
 msgstr ""
 
-#: dialogs.c:628
+#: dialogs.c:630
 msgid ""
 "\n"
 "options to use in game-viewer mode:"
 msgstr ""
 
-#: dialogs.c:630
+#: dialogs.c:632
 msgid ""
 "\n"
 "Thresholds for position filtering in game list:"
 msgstr ""
 
-#: dialogs.c:631
+#: dialogs.c:633
 msgid "Elo of strongest player at least:"
 msgstr ""
 
-#: dialogs.c:632
+#: dialogs.c:634
 msgid "Elo of weakest player at least:"
 msgstr ""
 
-#: dialogs.c:633
+#: dialogs.c:635
 #, fuzzy
 msgid "No games before year:"
 msgstr "尚未有棋局載入"
 
-#: dialogs.c:634
+#: dialogs.c:636
 msgid "Minimum nr consecutive positions:"
 msgstr ""
 
-#: dialogs.c:635
+#: dialogs.c:637
 msgid "Search mode:"
 msgstr ""
 
-#: dialogs.c:636
+#: dialogs.c:638
 msgid "Also match reversed colors"
 msgstr ""
 
-#: dialogs.c:637
+#: dialogs.c:639
 msgid "Also match left-right flipped position"
 msgstr ""
 
-#: dialogs.c:645
+#: dialogs.c:647
 msgid "Load Game Options"
 msgstr "載入棋局選項"
 
-#: dialogs.c:657
+#: dialogs.c:659
 msgid "Auto-Save Games"
 msgstr ""
 
-#: dialogs.c:658
+#: dialogs.c:660
 msgid "Own Games Only"
 msgstr ""
 
-#: dialogs.c:659
+#: dialogs.c:661
 msgid "Save Games on File:"
 msgstr ""
 
-#: dialogs.c:660
+#: dialogs.c:662
 msgid "Save Final Positions on File:"
 msgstr ""
 
-#: dialogs.c:661
+#: dialogs.c:663
 msgid "PGN Event Header:"
 msgstr ""
 
-#: dialogs.c:662
+#: dialogs.c:664
 msgid "Old Save Style (as opposed to PGN)"
 msgstr ""
 
-#: dialogs.c:663
+#: dialogs.c:665
 msgid "Include Number Tag in tourney PGN"
 msgstr ""
 
-#: dialogs.c:664
+#: dialogs.c:666
 msgid "Save Score/Depth Info in PGN"
 msgstr ""
 
-#: dialogs.c:665
+#: dialogs.c:667
 msgid "Save Out-of-Book Info in PGN           "
 msgstr ""
 
-#: dialogs.c:672
+#: dialogs.c:674
 msgid "Save Game Options"
 msgstr "儲存棋局選項"
 
-#: dialogs.c:681
+#: dialogs.c:683
 msgid "No Sound"
 msgstr "無聲"
 
-#: dialogs.c:682
+#: dialogs.c:684
 msgid "Default Beep"
 msgstr "預設聲音"
 
-#: dialogs.c:683
+#: dialogs.c:685
 msgid "Above WAV File"
 msgstr ""
 
-#: dialogs.c:684
+#: dialogs.c:686
 msgid "Car Horn"
 msgstr ""
 
-#: dialogs.c:685
+#: dialogs.c:687
 msgid "Cymbal"
 msgstr ""
 
-#: dialogs.c:686
+#: dialogs.c:688
 msgid "Ding"
 msgstr ""
 
-#: dialogs.c:687
+#: dialogs.c:689
 msgid "Gong"
 msgstr ""
 
-#: dialogs.c:688
+#: dialogs.c:690
 msgid "Laser"
 msgstr ""
 
-#: dialogs.c:689
+#: dialogs.c:691
 msgid "Penalty"
 msgstr ""
 
-#: dialogs.c:690
+#: dialogs.c:692
 msgid "Phone"
 msgstr ""
 
-#: dialogs.c:691
+#: dialogs.c:693
 msgid "Pop"
 msgstr ""
 
-#: dialogs.c:692
+#: dialogs.c:694
 msgid "Slap"
 msgstr ""
 
-#: dialogs.c:693
+#: dialogs.c:695
 msgid "Wood Thunk"
 msgstr ""
 
-#: dialogs.c:695
+#: dialogs.c:697
 msgid "User File"
 msgstr ""
 
-#: dialogs.c:717
+#: dialogs.c:719
 msgid "User WAV File:"
 msgstr ""
 
-#: dialogs.c:718
+#: dialogs.c:720
 msgid "Sound Program:"
 msgstr ""
 
-#: dialogs.c:719
+#: dialogs.c:721
 msgid "Try-Out Sound:"
 msgstr ""
 
-#: dialogs.c:720
+#: dialogs.c:722
 msgid "Play"
 msgstr "播放"
 
-#: dialogs.c:721
+#: dialogs.c:723
 msgid "Move:"
 msgstr ""
 
-#: dialogs.c:722
+#: dialogs.c:724
 msgid "Win:"
 msgstr ""
 
-#: dialogs.c:723
+#: dialogs.c:725
 msgid "Lose:"
 msgstr ""
 
-#: dialogs.c:724
+#: dialogs.c:726
 msgid "Draw:"
 msgstr ""
 
-#: dialogs.c:725
+#: dialogs.c:727
 msgid "Unfinished:"
 msgstr ""
 
-#: dialogs.c:726
+#: dialogs.c:728
 msgid "Alarm:"
 msgstr ""
 
-#: dialogs.c:727
+#: dialogs.c:729
 msgid "Challenge:"
 msgstr ""
 
-#: dialogs.c:729
+#: dialogs.c:731
 msgid "Sounds Directory:"
 msgstr ""
 
-#: dialogs.c:730
+#: dialogs.c:732
 msgid "Shout:"
 msgstr ""
 
-#: dialogs.c:731
+#: dialogs.c:733
 msgid "S-Shout:"
 msgstr ""
 
-#: dialogs.c:732
+#: dialogs.c:734
 msgid "Channel:"
 msgstr ""
 
-#: dialogs.c:733
+#: dialogs.c:735
 msgid "Channel 1:"
 msgstr ""
 
-#: dialogs.c:734
+#: dialogs.c:736
 msgid "Tell:"
 msgstr ""
 
-#: dialogs.c:735
+#: dialogs.c:737
 msgid "Kibitz:"
 msgstr ""
 
-#: dialogs.c:736
+#: dialogs.c:738
 msgid "Request:"
 msgstr ""
 
-#: dialogs.c:737
+#: dialogs.c:739
 msgid "Seek:"
 msgstr ""
 
-#: dialogs.c:753
+#: dialogs.c:755
 msgid "Sound Options"
 msgstr "聲音"
 
-#: dialogs.c:774
+#: dialogs.c:776
 msgid "White Piece Color:"
 msgstr ""
 
 #. TRANSLATORS: R = single letter for the color red
-#: dialogs.c:777 dialogs.c:786 dialogs.c:792 dialogs.c:798 dialogs.c:804
-#: dialogs.c:810
+#: dialogs.c:779 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
+#: dialogs.c:812
 msgid "R"
 msgstr ""
 
 #. TRANSLATORS: G = single letter for the color green
-#: dialogs.c:779 dialogs.c:787 dialogs.c:793 dialogs.c:799 dialogs.c:805
-#: dialogs.c:811
+#: dialogs.c:781 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
+#: dialogs.c:813
 msgid "G"
 msgstr ""
 
 #. TRANSLATORS: B = single letter for the color blue
-#: dialogs.c:781 dialogs.c:788 dialogs.c:794 dialogs.c:800 dialogs.c:806
-#: dialogs.c:812
+#: dialogs.c:783 dialogs.c:790 dialogs.c:796 dialogs.c:802 dialogs.c:808
+#: dialogs.c:814
 msgid "B"
 msgstr ""
 
 #. TRANSLATORS: D = single letter to make a color darker
-#: dialogs.c:783 dialogs.c:789 dialogs.c:795 dialogs.c:801 dialogs.c:807
-#: dialogs.c:813
+#: dialogs.c:785 dialogs.c:791 dialogs.c:797 dialogs.c:803 dialogs.c:809
+#: dialogs.c:815
 msgid "D"
 msgstr ""
 
-#: dialogs.c:784
+#: dialogs.c:786
 msgid "Black Piece Color:"
 msgstr "黑子"
 
-#: dialogs.c:790
+#: dialogs.c:792
 msgid "Light Square Color:"
 msgstr "白格"
 
-#: dialogs.c:796
+#: dialogs.c:798
 msgid "Dark Square Color:"
 msgstr "黑格"
 
-#: dialogs.c:802
+#: dialogs.c:804
 msgid "Highlight Color:"
 msgstr "格子標記"
 
-#: dialogs.c:808
+#: dialogs.c:810
 msgid "Premove Highlight Color:"
 msgstr "預先走棋標記"
 
-#: dialogs.c:814
+#: dialogs.c:816
 msgid "Flip Pieces Shogi Style        (Colored buttons restore default)"
 msgstr ""
 
-#: dialogs.c:816
+#: dialogs.c:818
 msgid "Mono Mode"
 msgstr "黑白"
 
-#: dialogs.c:817
+#: dialogs.c:819
 msgid "Line Gap ( -1 = default for board size):"
 msgstr ""
 
-#: dialogs.c:818
+#: dialogs.c:820
 msgid "Use Board Textures"
 msgstr ""
 
-#: dialogs.c:819
+#: dialogs.c:821
 msgid "Light-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:820
+#: dialogs.c:822
 msgid "Dark-Squares Texture File:"
 msgstr ""
 
-#: dialogs.c:821
+#: dialogs.c:823
 msgid "Use external piece bitmaps with their own colors"
 msgstr ""
 
-#: dialogs.c:822
+#: dialogs.c:824
 msgid "Directory with Pieces Images:"
 msgstr ""
 
-#: dialogs.c:872
+#: dialogs.c:874
 msgid "Board Options"
 msgstr "棋盤選項"
 
-#: dialogs.c:925 menus.c:634
+#: dialogs.c:927 menus.c:634
 msgid "ICS text menu"
 msgstr ""
 
-#: dialogs.c:947
+#: dialogs.c:949
 msgid "clear"
 msgstr ""
 
-#: dialogs.c:948 dialogs.c:1036
+#: dialogs.c:950 dialogs.c:1038
 msgid "save changes"
 msgstr ""
 
-#: dialogs.c:1051
+#: dialogs.c:1053
 #, fuzzy
 msgid "Edit book"
 msgstr "編輯(E)"
 
-#: dialogs.c:1051 menus.c:636
+#: dialogs.c:1053 menus.c:636
 msgid "Tags"
 msgstr "編輯標籤(T)"
 
-#: dialogs.c:1193
+#: dialogs.c:1195
 msgid "ICS input box"
 msgstr ""
 
-#: dialogs.c:1225
+#: dialogs.c:1227
 msgid "Type a move"
 msgstr ""
 
-#: dialogs.c:1251
+#: dialogs.c:1253
 msgid "Engine has no options"
 msgstr ""
 
-#: dialogs.c:1253
+#: dialogs.c:1255
 msgid "Engine Settings"
 msgstr ""
 
-#: dialogs.c:1278
+#: dialogs.c:1280
 msgid "Select engine from list:"
 msgstr ""
 
-#: dialogs.c:1281
+#: dialogs.c:1283
 msgid "or specify one below:"
 msgstr ""
 
-#: dialogs.c:1282
+#: dialogs.c:1284
 msgid "Nickname (optional):"
 msgstr ""
 
-#: dialogs.c:1283
+#: dialogs.c:1285
 msgid "Use nickname in PGN player tags of engine-engine games"
 msgstr ""
 
-#: dialogs.c:1284
+#: dialogs.c:1286
 msgid "Engine Directory:"
 msgstr ""
 
-#: dialogs.c:1285
+#: dialogs.c:1287
 msgid "Engine Command:"
 msgstr ""
 
-#: dialogs.c:1286
+#: dialogs.c:1288
 msgid "(Directory will be derived from engine path when empty)"
 msgstr ""
 
-#: dialogs.c:1287
+#: dialogs.c:1289
 msgid "UCI"
 msgstr ""
 
-#: dialogs.c:1288
+#: dialogs.c:1290
 msgid "WB protocol v1 (do not wait for engine features)"
 msgstr ""
 
-#: dialogs.c:1289
+#: dialogs.c:1291
 msgid "Must not use GUI book"
 msgstr ""
 
-#: dialogs.c:1290
+#: dialogs.c:1292
 msgid "Add this engine to the list"
 msgstr ""
 
-#: dialogs.c:1291
+#: dialogs.c:1293
 msgid "Force current variant with this engine"
 msgstr ""
 
-#: dialogs.c:1341
+#: dialogs.c:1343
 msgid "Load first engine"
 msgstr ""
 
-#: dialogs.c:1347
+#: dialogs.c:1349
 msgid "Load second engine"
 msgstr ""
 
-#: dialogs.c:1370
+#: dialogs.c:1372
 msgid "shuffle"
 msgstr ""
 
-#: dialogs.c:1371
+#: dialogs.c:1373
 msgid "Start-position number:"
 msgstr "啟動位置號碼(S)"
 
-#: dialogs.c:1372
+#: dialogs.c:1374
 #, fuzzy
 msgid "randomize"
 msgstr "隨機"
 
-#: dialogs.c:1373
+#: dialogs.c:1375
 msgid "pick fixed"
 msgstr ""
 
-#: dialogs.c:1390
+#: dialogs.c:1392
 msgid "New Shuffle Game"
 msgstr "洗牌遊戲(u)..."
 
-#: dialogs.c:1409
+#: dialogs.c:1411
 msgid "classical"
 msgstr ""
 
-#: dialogs.c:1410
+#: dialogs.c:1412
 msgid "incremental"
 msgstr ""
 
-#: dialogs.c:1411
+#: dialogs.c:1413
 msgid "fixed max"
 msgstr ""
 
-#: dialogs.c:1412
+#: dialogs.c:1414
 msgid "Moves per session:"
 msgstr ""
 
-#: dialogs.c:1413
+#: dialogs.c:1415
 msgid "Initial time (min):"
 msgstr ""
 
-#: dialogs.c:1414
+#: dialogs.c:1416
 msgid "Increment or max (sec/move):"
 msgstr ""
 
-#: dialogs.c:1415
+#: dialogs.c:1417
 #, fuzzy
 msgid "Time-Odds factors:"
 msgstr "時間倍數"
 
-#: dialogs.c:1416
+#: dialogs.c:1418
 #, fuzzy
 msgid "Engine #1"
 msgstr "引擎輸出"
 
-#: dialogs.c:1417
+#: dialogs.c:1419
 #, fuzzy
 msgid "Engine #2 / Human"
 msgstr "引擎1有自用庫"
 
-#: dialogs.c:1457 dialogs.c:1460 dialogs.c:1465 dialogs.c:1466
+#: dialogs.c:1459 dialogs.c:1462 dialogs.c:1467 dialogs.c:1468
 #: gtk/xoptions.c:191
 msgid "Unused"
 msgstr ""
 
-#: dialogs.c:1478
+#: dialogs.c:1480
 msgid "Time Control"
 msgstr ""
 
-#: dialogs.c:1507
+#: dialogs.c:1509
 msgid "Error writing to chess program"
 msgstr "發送訊息給國際象棋程式時出錯"
 
-#: dialogs.c:1574
+#: dialogs.c:1576
 #, fuzzy
 msgid "Cancel"
 msgstr "取消(C)"
 
-#: dialogs.c:1579 dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1581 dialogs.c:1973 dialogs.c:1977
 msgid "King"
 msgstr "王"
 
-#: dialogs.c:1582
+#: dialogs.c:1584
 msgid "Captain"
 msgstr ""
 
-#: dialogs.c:1583
+#: dialogs.c:1585
 msgid "Lieutenant"
 msgstr ""
 
-#: dialogs.c:1584
+#: dialogs.c:1586
 msgid "General"
 msgstr "一般選項(G)..."
 
-#: dialogs.c:1585
+#: dialogs.c:1587
 msgid "Warlord"
 msgstr ""
 
-#: dialogs.c:1587 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1589 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Knight"
 msgstr "馬"
 
-#: dialogs.c:1588 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1590 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Bishop"
 msgstr "象"
 
-#: dialogs.c:1589 dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1591 dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Rook"
 msgstr "車"
 
-#: dialogs.c:1593 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1595 dialogs.c:1974 dialogs.c:1978
 msgid "Archbishop"
 msgstr "國師"
 
-#: dialogs.c:1594 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1596 dialogs.c:1974 dialogs.c:1978
 msgid "Chancellor"
 msgstr "宰相"
 
-#: dialogs.c:1596 dialogs.c:1971 dialogs.c:1975 dialogs.c:1993
+#: dialogs.c:1598 dialogs.c:1973 dialogs.c:1977 dialogs.c:1995
 msgid "Queen"
 msgstr "后"
 
-#: dialogs.c:1600
+#: dialogs.c:1602
 msgid "Defer"
 msgstr ""
 
-#: dialogs.c:1601 dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1603 dialogs.c:1974 dialogs.c:1978
 msgid "Promote"
 msgstr "升變"
 
-#: dialogs.c:1616
+#: dialogs.c:1618
 msgid "Chat partner:"
 msgstr ""
 
-#: dialogs.c:1701
+#: dialogs.c:1703
 msgid "Chat box"
 msgstr ""
 
-#: dialogs.c:1742
+#: dialogs.c:1744
 msgid "factory"
 msgstr ""
 
-#: dialogs.c:1743
+#: dialogs.c:1745
 msgid "up"
 msgstr "向上"
 
-#: dialogs.c:1744
+#: dialogs.c:1746
 msgid "down"
 msgstr "向下"
 
-#: dialogs.c:1762
+#: dialogs.c:1764
 msgid "No tag selected"
 msgstr ""
 
-#: dialogs.c:1793
+#: dialogs.c:1795
 #, fuzzy
 msgid "Game-list options"
 msgstr "載入棋局選項"
 
-#: dialogs.c:1869 dialogs.c:1883
+#: dialogs.c:1871 dialogs.c:1885
 msgid "Error"
 msgstr "錯誤"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Fatal Error"
 msgstr "嚴重錯誤"
 
-#: dialogs.c:1906
+#: dialogs.c:1908
 msgid "Exiting"
 msgstr "離開"
 
-#: dialogs.c:1917
+#: dialogs.c:1919
 msgid "Information"
 msgstr "資訊"
 
-#: dialogs.c:1924
+#: dialogs.c:1926
 msgid "Note"
 msgstr "註解"
 
-#: dialogs.c:1970 dialogs.c:2245 dialogs.c:2248
+#: dialogs.c:1972 dialogs.c:2252 dialogs.c:2255
 msgid "White"
 msgstr "紅方"
 
-#: dialogs.c:1970 dialogs.c:1974 dialogs.c:1993
+#: dialogs.c:1972 dialogs.c:1976 dialogs.c:1995
 msgid "Pawn"
 msgstr "兵"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Elephant"
 msgstr "象"
 
-#: dialogs.c:1971 dialogs.c:1975
+#: dialogs.c:1973 dialogs.c:1977
 msgid "Cannon"
 msgstr "炮"
 
-#: dialogs.c:1972 dialogs.c:1976
+#: dialogs.c:1974 dialogs.c:1978
 msgid "Demote"
 msgstr "降級"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Empty square"
 msgstr "清空格子"
 
-#: dialogs.c:1973 dialogs.c:1977
+#: dialogs.c:1975 dialogs.c:1979
 msgid "Clear board"
 msgstr "清空棋盤"
 
-#: dialogs.c:1974 dialogs.c:2257 dialogs.c:2260
+#: dialogs.c:1976 dialogs.c:2264 dialogs.c:2267
 msgid "Black"
 msgstr "黑方"
 
-#: dialogs.c:2073 menus.c:787
+#: dialogs.c:2075 menus.c:787
 msgid "File"
 msgstr "檔案(F)"
 
-#: dialogs.c:2074 menus.c:788
+#: dialogs.c:2076 menus.c:788
 msgid "Edit"
 msgstr "編輯(E)"
 
-#: dialogs.c:2075 menus.c:789
+#: dialogs.c:2077 menus.c:789
 msgid "View"
 msgstr ""
 
-#: dialogs.c:2076 menus.c:790
+#: dialogs.c:2078 menus.c:790
 msgid "Mode"
 msgstr "模式(M)"
 
-#: dialogs.c:2077 menus.c:791
+#: dialogs.c:2079 menus.c:791
 msgid "Action"
 msgstr "行為(A)"
 
-#: dialogs.c:2078 menus.c:792
+#: dialogs.c:2080 menus.c:792
 msgid "Engine"
 msgstr ""
 
-#: dialogs.c:2079 menus.c:793
+#: dialogs.c:2081 menus.c:793
 msgid "Options"
 msgstr "選項(O)"
 
-#: dialogs.c:2080 menus.c:794
+#: dialogs.c:2082 menus.c:794
 msgid "Help"
 msgstr "說明(H)"
 
-#: dialogs.c:2090
+#: dialogs.c:2092
 msgid "<<"
 msgstr ""
 
-#: dialogs.c:2091
+#: dialogs.c:2093
 msgid "<"
 msgstr ""
 
-#: dialogs.c:2093
+#: dialogs.c:2095
 msgid ">"
 msgstr ""
 
-#: dialogs.c:2094
+#: dialogs.c:2096
 msgid ">>"
 msgstr ""
 
-#: dialogs.c:2364
+#: dialogs.c:2371
 msgid "Directories:"
 msgstr ""
 
-#: dialogs.c:2365
+#: dialogs.c:2372
 #, fuzzy
 msgid "Files:"
 msgstr "檔案(F)"
 
-#: dialogs.c:2366
+#: dialogs.c:2373
 msgid "by name"
 msgstr ""
 
-#: dialogs.c:2367
+#: dialogs.c:2374
 msgid "by type"
 msgstr ""
 
-#: dialogs.c:2370
+#: dialogs.c:2377
 #, fuzzy
 msgid "Filename:"
 msgstr "過濾器"
 
-#: dialogs.c:2371
+#: dialogs.c:2378
 msgid "New directory"
 msgstr ""
 
-#: dialogs.c:2372
+#: dialogs.c:2379
 #, fuzzy
 msgid "File type:"
 msgstr "過濾器"
 
-#: dialogs.c:2447
+#: dialogs.c:2454
 #, fuzzy
 msgid "Contents of"
 msgstr "編輯註解(C) *.*"
 
-#: dialogs.c:2473
+#: dialogs.c:2480
 msgid "  next page"
 msgstr ""
 
-#: dialogs.c:2495
+#: dialogs.c:2502
 msgid "FIRST TYPE DIRECTORY NAME HERE"
 msgstr ""
 
-#: dialogs.c:2496
+#: dialogs.c:2503
 msgid "TRY ANOTHER NAME"
 msgstr ""
 
diff --git a/sounds/roar.wav b/sounds/roar.wav
new file mode 100644 (file)
index 0000000..16b0af7
Binary files /dev/null and b/sounds/roar.wav differ
diff --git a/svg/BlackClaw.svg b/svg/BlackClaw.svg
new file mode 100644 (file)
index 0000000..1dcffea
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteClaw.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2828"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2850"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2872"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2894"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2918"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2940"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2962"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.8704322"
+     inkscape:cx="26.42854"
+     inkscape:cy="46.467809"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="726"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-952.36218)">
+    <g
+       id="g3788"
+       style="fill:#000000">
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccc"
+         id="path2816"
+         d="m 49.667863,1012.1206 2.166994,9.0012 -0.333383,6.3344 -2.333687,8.3346 -4.167298,4.5007 -5.167449,2.5004 -5.334142,0.3334 -6.334292,-3.3339 -3.500529,-4.8341 -1.000152,-7.5011 -2.166995,-4.334 -5.334141,-4.1672 -2.500379,-6.001 2.000304,-6.1675 5.000756,-3.1672 5.500834,-0.8335 6.500984,0.3334 7.667828,1.0002 5.834217,3.0004 3.50053,5.0008 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818"
+         d="m 39.626874,999.80011 -1.847886,-3.07981 0.821283,-5.95429 2.874488,-5.33834 5.338336,-3.07981 5.338334,0.61596 3.901092,3.49045 0,5.74898 -2.669167,5.13301 -4.517054,3.28514 -4.517053,1.0266 -4.722373,-1.84789 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818-3"
+         d="m 70.11698,997.5416 1.847886,3.0798 -0.821283,5.9543 -2.874488,5.3383 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.258526,-5.54356 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818-3-2"
+         d="m 33.569916,981.32129 1.847886,3.07984 -0.821283,5.9543 -2.874488,5.33826 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.74896 2.258526,-5.5436 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818-3-6"
+         d="m 72.375506,1019.9215 2.463848,4.5171 -0.410642,4.7223 -4.106412,4.9277 -5.133015,2.0532 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.669167,-4.7223 4.722375,-2.4639 4.722373,-0.8213 4.311732,1.6426 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908"
+         d="m 34.083217,975.98293 -2.053206,-0.61597 0.821282,-4.51705 2.463847,-2.66917 4.106412,-0.41064 2.053206,0.61596 -3.285129,0.82129 -2.258527,2.46384 -1.847885,4.31174 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908-4"
+         d="m 56.216861,980.17756 -1.915052,-0.96315 1.593184,-4.30582 2.88991,-2.20078 4.115337,0.30866 1.915052,0.96314 -3.37784,0.2383 -2.652056,2.03423 -2.568537,3.92535 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908-4-6"
+         d="m 73.878161,994.50275 0.963152,1.91506 4.30582,-1.59319 2.200779,-2.88991 -0.308659,-4.11533 -0.96314,-1.91506 -0.238295,3.37784 -2.03423,2.65206 -3.92535,2.56854 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908-4-6-3"
+         d="m 77.705679,1018.2026 0.792583,1.9916 4.428292,-1.2118 2.444276,-2.6871 0.05119,-4.1266 -0.792563,-1.9917 -0.531791,3.3443 -2.257627,2.4646 -4.134281,2.2167 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackDolphin.svg b/svg/BlackDolphin.svg
new file mode 100644 (file)
index 0000000..b24af4a
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteDolphin.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2826"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2834"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.5167464"
+     inkscape:cx="49.318911"
+     inkscape:cy="45.354981"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="726"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-952.36218)">
+    <g
+       id="g3632">
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+         id="path2832"
+         d="m 25.422502,1009.2837 3.64721,-5.9885 4.085169,-6.56537 5.708527,-7.19404 4.800386,-5.25188 5.245237,-4.27474 5.082411,-3.5041 1.946123,-0.99064 1.6641,-2.73841 0.962415,-3.52748 -0.632865,-2.14233 -0.672599,-2.98178 -0.538857,-1.55972 1.891848,-0.73376 2.890098,0.70676 3.063572,2.96828 1.833675,3.65165 1.576843,3.8397 0.376031,2.33037 5.103703,2.56023 5.548553,3.53738 3.967814,3.8262 4.264383,4.47761 3.345595,4.71602 2.184518,4.04622 2.111695,4.21583 1.08172,4.303 0.394076,2.7853 -0.774149,3.9553 -1.327296,3.8618 0.358095,6.9663 0.220603,4.9517 -2.02898,1.0799 -1.768755,-2.6475 -3.591278,-8.7269 -2.55102,-1.9435 -2.810742,-3.6758 -2.991865,-3.2423 -0.142145,2.7315 c -1.121073,2.1006 -0.689228,2.1788 -1.581243,2.8704 l -2.69519,1.7911 -2.936977,0.2938 -3.51896,-1.444 2.889234,-3.0578 1.147291,-2.2168 0.26874,-3.0564 -1.420295,-3.2124 -5.299117,-2.2551 -6.091307,-0.9685 -7.726322,-0.423 -6.525511,1.0865 -5.838372,2.972 -5.798638,3.8114 -4.543551,5.0637 -4.138435,5.2015 5.420085,1.0098 4.07875,2.9434 3.376311,4.809 -1.331302,3.3423 -5.333223,-3.9007 -5.221783,-1.6086 -4.260732,0.3486 0.558749,-4.1561 -5.121869,4.8579 -3.891237,0.4048 -4.328943,0.8646 -5.5362864,2.5972 -0.4024811,-1.0225 2.2487192,-3.6566 4.5144665,-3.314 4.7424668,-2.0465 4.062579,-1.1241 3.564969,-4.871 3.145565,-5.7562 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2834"
+         d="m 73.483788,1000.6302 -4.875955,-0.5555 -3.848618,-1.30775 -4.184918,-2.79866 -3.765255,-3.75745 -3.088762,-4.90406 6.521615,3.04205 3.566594,-0.43998 3.552051,0.65635"
+         style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2842"
+         d="m 83.218266,1002.246 1.146534,1.7662"
+         style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path2844"
+         d="m 58.132709,974.47627 2.933349,-0.28601 3.031842,-0.0454 3.111499,0.26395"
+         style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path2860"
+         d="m 73.834376,1008.1422 4.251769,3.5005"
+         style="fill:none;stroke:#ffffff;stroke-width:2.13330363999999983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackHCrown.svg b/svg/BlackHCrown.svg
new file mode 100644 (file)
index 0000000..6c28d67
--- /dev/null
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackPrincess.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview19"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective21" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="matrix(0,1,-1,0,153.07625,-67.67229)"
+     id="layer1">
+    <g
+       transform="matrix(1.2596048,0,0,1.2596048,289.23085,230.95079)"
+       id="g785"
+       style="display:inline">
+      <path
+         d="m -156.47216,-94.874455 -4.26455,-25.678565 13.9998,24.343464"
+         inkscape:connector-curvature="0"
+         id="path759"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -147.53286,-95.88723 2.24615,-30.00621 9.5955,27.886232 z"
+         inkscape:connector-curvature="0"
+         id="path761"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -115.90261,-94.82073 3.71313,-24.84222 -13.39901,23.408891"
+         inkscape:connector-curvature="0"
+         id="path763"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -124.90445,-95.734359 -2.37837,-29.892061 -8.86156,28.106514 z"
+         inkscape:connector-curvature="0"
+         id="path765"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779967;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -119.72211,-75.003615 c 0,2.494743 -7.32288,4.517114 -16.3561,4.517114 -9.03322,0 -16.3561,-2.022371 -16.3561,-4.517114 l 2.32529,-6.475256 -0.0643,-6.631027 -5.81139,-6.453037 4.35812,-3.075207 4.1094,1.001045 5.74678,-2.877825 5.77127,1.347215 5.20349,-1.347215 5.2463,2.877825 4.86129,-1.001045 4.29553,3.075207 -5.81005,6.453037 0.0603,6.631027 z"
+         inkscape:connector-curvature="0"
+         id="path767"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.58779979;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -148.95013,-88.785387 c 2.99191,-1.065977 7.67325,-1.752122 12.93486,-1.752122 4.87905,0 9.25913,0.589996 12.25587,1.525744"
+         inkscape:connector-curvature="0"
+         id="path769"
+         style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:1.58779979;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,-124.72108,-244.63895)"
+         id="path771"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,-73.5917,-244.56074)"
+         id="path773"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,-89.629862,-250.59195)"
+         id="path775"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,-108.61241,-250.61038)"
+         id="path777"
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68314004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -147.82599,-82.093587 c 2.97713,-0.857995 7.16803,-1.392212 11.81072,-1.392212 4.27282,0 8.16296,0.452487 11.07644,1.19342"
+         inkscape:connector-curvature="0"
+         id="path781"
+         style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:1.58779979;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -149.85434,-77.004684 a 1.007001,0.53496927 0 1 1 -2.014,0 1.007001,0.53496927 0 1 1 2.014,0 z"
+         transform="matrix(1,0,0,0.95588235,-0.03933598,-3.491672)"
+         id="path783"
+         style="color:#000000;fill:#ffffcc;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackHSword.svg b/svg/BlackHSword.svg
new file mode 100644 (file)
index 0000000..abb38d1
--- /dev/null
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackHSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="54.904244"
+     inkscape:cy="34.708552"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g3599"
+       transform="matrix(1,0,0,1.1286567,0,-136.71042)">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -270.42482,1041.7792 -10.32341,-9.3014 -54.35055,-0.1786 0,18.9597 53.89325,0 10.78071,-9.4797 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="335.26187"
+         x="1021.9576"
+         height="7.3214288"
+         width="39.642857"
+         id="rect3689"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="342.71426"
+         x="1036.7313"
+         height="19.202518"
+         width="9.0239458"
+         id="rect3693"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3701"
+         d="m -282.35544,1041.779 -52.24134,0"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3777"
+         d="m -343.5,1037.2908 0,7.8572"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3781"
+         d="m -334.21429,1033.1837 0,17.3214"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackLeopard.svg b/svg/BlackLeopard.svg
new file mode 100644 (file)
index 0000000..91bb34e
--- /dev/null
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackKnight.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="41.498447"
+     inkscape:cy="44.13901"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g3645">
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+         id="path2844"
+         d="m -317.73295,1002.1086 10.04546,1.3788 7.87879,3.7424 1.57575,-3.7424 3.34849,-3.54549 3.15151,-1.18182 4.92424,-0.39393 2.36364,2.75754 0.39394,4.5304 -1.57576,3.7424 -1.57575,2.7575 -3.15152,1.1818 1.37879,2.9546 -0.98485,2.7576 -1.18182,1.3788 1.37879,5.909 0.5909,4.5303 -0.39393,5.3182 -1.57576,4.9242 -2.95454,5.5153 -3.9394,3.5453 -3.34848,0.197 -3.54545,2.1667 -0.98485,4.9243 -1.37879,6.6969 -3.74242,3.9394 -4.13636,1.5758 -4.33334,-0.197 -5.12121,-3.1515 -2.36364,-2.5606 0.39394,-2.9545 -1.77273,-3.5455 -1.77272,-4.1364 -0.78788,-2.3636 -4.13637,-3.9394 -4.33333,-2.7576 -4.13636,-5.909 0,-7.288 0.78788,-5.909 1.37879,-5.1212 -2.56061,-3.1516 -0.19697,-5.3181 -2.36363,-3.1516 -0.98485,-4.1363 1.57575,-4.92427 1.9697,-2.75757 1.77273,0.59091 2.95454,2.75758 3.15152,3.74245 0.98484,2.3636 2.56062,0.5909 4.13635,-2.7576 5.71213,-1.1818 4.92423,-0.3939 z"
+         style="fill:#000000;stroke:#000000;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2846"
+         d="m -301.7784,1022.9874 -5.75487,0.2656 -1.33604,0.7452 -4.51354,4.35 3.61418,-1.7986 4.00813,0.4627 2.09794,-0.8734 0.70238,-2.7576 1.18182,-0.3939 z"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccccc"
+         id="path2848"
+         d="m -334.8693,1022.5934 5.71212,0.4627 2.40638,1.1818 1.92695,2.8858 -2.6461,0.085 -2.67208,0.042 -1.74673,-0.8994 -0.89937,-1.3529 -0.30845,-1.8154 1.43076,0.1543 -3.20348,-0.7452 z"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         id="path2850"
+         d="m -318.56357,1039.6016 3.23701,-1.0276 1.42154,0.9421 -1.37879,3.2538 -1.85822,2.3636 -2.08118,0.042 -2.18343,-2.2949 -1.53301,-3.3484 1.02759,-1.0276 3.34849,1.0963 z"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path2854"
+         d="m -308.14094,1049.0989 -3.31497,9.2333 -1.79871,-9.7387 5.11368,1.1227 0,-0.6173 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path2856"
+         d="m -321.31192,1048.8758 -2.30413,8.7967 -1.91018,-2.9897 -0.7024,-4.4022 4.91671,-1.4048 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2858"
+         d="m -311.44668,1062.6898 c 1.06226,-0.731 1.71366,-1.5642 1.79872,-2.3469 l 0.92535,-4.4709 c -1.03934,0.8994 -1.92444,1.953 -2.96377,2.8524 l -1.20782,0.5054 c -0.78907,-0.7043 -2.74549,-0.6155 -2.06441,-1.6873 l -0.47943,3.1348 1.44752,2.2354 2.54384,-0.2229 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2860"
+         d="m -318.77729,1057.2768 -2.10717,1.559 -0.78788,0 -2.43236,-1.756 -0.0688,3.0921 1.86745,2.3041 2.36364,0.6336 1.71322,-1.9268 -0.54816,-3.906 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         id="path2862"
+         d="m -296.85416,1009.0025 1.42154,-3.9989 3.27974,-3.4004 4.40207,-0.069 0.9421,2.9379 -1.05358,3.5881 -1.22455,2.2095 -2.64611,0.8993 -3.34848,-0.197 -1.77273,-1.9697 z"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         id="path2864"
+         d="m -342.74809,1000.3359 2.99729,2.672 1.77273,2.4232 0.54816,3.5714 -2.75758,1.5758 -2.40638,-1.6445 -2.05519,-3.2797 0,-2.3805 1.07034,-2.6293 0.83063,-0.3084 z"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2866"
+         d="m -305.91476,1036.1843 12.40909,-9.2576 10.04545,-6.303 5.71212,-4.5303"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2868"
+         d="m -305.71779,1038.9419 12.21212,-3.5455 8.66667,-0.9848 9.06059,0 2.16668,0.5909"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2870"
+         d="m -304.92991,1042.4874 8.86363,-2.3637 8.86364,-0.7879 5.90908,0.5909 8.66667,1.7728"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2872"
+         d="m -305.91476,1044.851 8.66666,0.5909 7.28788,3.3485"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2874"
+         d="m -331.71779,1037.7601 -8.86364,-4.3333 -6.69696,-2.5607 -7.48485,-1.1818 -8.66667,-0.3939"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2876"
+         d="m -332.11173,1040.9116 -12.01515,-1.7727 -7.87879,0.1969 -10.63636,3.3486 -7.87879,3.7424"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2878"
+         d="m -332.3087,1044.0631 -6.30302,0.7879 -8.66667,3.1515 -7.48485,3.9394 c 0,0 -3.74243,3.3485 -4.53031,3.1515"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2880"
+         d="m -328.17234,1046.4268 -5.71211,2.3636 -5.9091,3.5455 -4.13636,3.9394"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730827;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccccccccccccccc"
+         id="path2852"
+         d="m -314.81361,1048.439 3.60519,0.8186 3.12699,-0.01 c 0.63924,-0.4931 1.12426,-0.1508 1.45505,-0.5481 l -1.25973,6.442 -0.0979,2.9254 -0.74514,3.3592 -2.24894,2.0504 -3.73913,0.2153 -4.55952,0.2636 -3.09631,-0.4736 -1.56653,-1.8231 -1.18941,-2.3543 -1.37714,-4.4627 -1.85392,-4.9183 1.96047,0.2397 4.5303,-1.3787 4.33334,-0.4275 -0.46267,0 3.18503,0.076 0,0.01 z"
+         style="fill:none;stroke:#ffffff;stroke-width:1.72730826999999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackLion.svg b/svg/BlackLion.svg
new file mode 100644 (file)
index 0000000..1ed2cd8
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg3738"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackQueen.svg">
+  <defs
+     id="defs3740">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective3746" />
+    <inkscape:perspective
+       id="perspective3800"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.3532769"
+     inkscape:cx="40.467173"
+     inkscape:cy="50.142845"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="716"
+     inkscape:window-height="487"
+     inkscape:window-x="3"
+     inkscape:window-y="71"
+     inkscape:window-maximized="0"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <sodipodi:guide
+       position="0.17142614,0.85712"
+       orientation="0,744.09448"
+       id="guide4498" />
+    <sodipodi:guide
+       position="744.26591,0.85712"
+       orientation="-1052.3622,0"
+       id="guide4500" />
+    <sodipodi:guide
+       position="744.26591,1053.2193"
+       orientation="0,-744.09448"
+       id="guide4502" />
+    <sodipodi:guide
+       position="0.17142614,1053.2193"
+       orientation="1052.3622,0"
+       id="guide4504" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3743">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0.17142614,-953.2193)">
+    <g
+       id="g4569"
+       transform="matrix(0.97053726,0,0,0.97053726,1.9949493,30.030726)">
+      <path
+         id="path3888"
+         d="m 18.200002,987.30504 2.742858,-6.85715 -1.828571,-4.11428 5.942856,-8.22857 9.142858,-6.4 12.342857,-0.45715 2.285714,-7.31428 7.771429,0 7.314286,4.11428 10.971427,1.82858 -1.371427,5.94285 11.885713,3.2 -1.371428,4.57143 6.857142,6.85714 -2.285713,2.28572 7.314286,10.97143 -2.742858,2.74285 4.571429,10.05711 -0.457144,6.4 0,11.4286 -6.4,-8.2286 0.457144,16.9143 -2.285715,3.2 -6.4,-5.9428 0,9.1428 -5.028571,3.6572 0.914286,-10.0572 -7.314286,12.3429 -4.114285,-5.0286 -4.571429,10.5143 -10.514286,1.3714 -10.057143,-1.3714 -8.685715,-6.8571 -4.571427,-2.2858 -10.971429,6.8572 -0.457144,-12.8 -2.285713,-7.7714 -3.2,2.7428 -5.0285719,-4.1143 0.9142856,-9.1428 -2.2857142,-4.1143 0.9142858,-5.4857 -5.0285716,-3.6572 1.3714287,-3.6571 15.5428566,-13.25716 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="path3890"
+         d="m 36.94286,989.59075 -8.685715,-1.82857 3.657144,1.37143 -5.485715,4.57143 5.485715,-2.74286 3.857141,0.2 1.17143,-1.57143 z"
+         style="fill:#000000;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3892"
+         d="m 59.34286,988.21932 0,-6.4 -0.457144,-7.77143 -1.828571,-5.02857 -3.2,-2.28571 -6.857143,0.91428 -3.657142,4.11429 -1.828571,3.65714"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3894"
+         d="m 54.771431,984.10504 -0.914286,-4.57143 -2.742856,-3.65714 -3.2,0 -1.828573,4.11428 0,0 0.914286,0.45714 -0.914286,-0.45714"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3896"
+         d="m 12.714289,1003.7622 0,0 z"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3898"
+         d="M 11.471431,1004.3764 0.82857386,1002.8479"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3900"
+         d="m 6.3142883,1010.1622 2.2857142,-2.7429 2.2857135,-0.4571 0.457144,-2.7429 0,0"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="path3902"
+         d="m 8.9220373,1018.1269 2.8308047,3.1321 5.565079,0.2674 6.824939,1.4358 5.028571,0.4571 0.457143,0 0,0.4572"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3904"
+         d="m 43.34286,1003.305 -0.457144,8.6858 -3.657142,6.4 -0.914285,7.3142 -5.485715,6.4 -4.114285,6.8572"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3906"
+         d="m 72.600003,997.36218 -3.200001,13.71432 -5.942857,10.9714 -6.857142,8.6857 -5.028572,13.7143"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3908"
+         d="m 66.557145,1040.7193 -0.357143,-7.2428 4.114287,-9.1429 4.571427,-10.0571 2.285715,-10.9715 -0.457142,-7.31425"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3910"
+         d="m 80.371431,996.44789 0,7.31431 0,5.4857 0.914285,7.7714 -4.571427,6.8572 -2.742858,5.4857 -1.371428,6.4"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path3912"
+         d="m 72.14286,976.79075 6.857143,7.31429 8.228571,5.94285 -0.1,20.97141 3.185714,4.0572"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3914"
+         d="m 72.14286,971.30504 7.771429,0.91428 5.028571,2.74286 0,0"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path3916"
+         d="m 19.114289,986.99075 11.885713,-8.37143 4.571429,-2.74285"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path4508"
+         d="m 14.471431,1011.0764 c 8.571429,-1.7857 8.214286,-1.7857 8.214286,-1.7857"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path4510"
+         d="m 15.185717,1013.9336 c 11.785714,-0.3572 11.785714,-0.3572 11.785714,-0.3572"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path4512"
+         d="m 15.542859,1016.4336 c 11.071429,4.2857 11.071429,4.2857 11.071429,4.2857"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackPromoBishop.svg b/svg/BlackPromoBishop.svg
new file mode 100644 (file)
index 0000000..df5dc67
--- /dev/null
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackPromoBishop.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview15"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="115.63849"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective17" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2861">
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path457"
+       d="m 55.21546,11.229857 a 5.2154485,5.2270692 0 0 1 -10.430897,0 5.2154485,5.2270692 0 1 1 10.430897,0 z" />
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path459"
+       inkscape:connector-curvature="0"
+       d="M 35.907425,58.203367 C 33.709813,55.600983 27.938004,54.20094 27.834509,41.315188 27.742075,29.80588 42.868715,17.773397 50.193329,17.67821 57.523654,17.583 72.14423,29.820628 72.165806,41.315188 c 0.02622,13.95243 -5.611021,14.852859 -7.714863,16.888179 z" />
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path461"
+       inkscape:connector-curvature="0"
+       d="m 69.315766,70.339665 c 0,2.158388 -8.648281,3.908094 -19.316459,3.908094 -10.66819,0 -19.316471,-1.749706 -19.316471,-3.908094 0.06829,-1.450802 2.759449,-10.112943 6.706186,-11.445443 6.931028,-2.340042 18.489497,-2.613508 25.675173,0 3.857302,1.402945 6.319871,10.132812 6.251571,11.445443 z" />
+    <path
+       style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path463"
+       inkscape:connector-curvature="0"
+       d="m 35.131354,67.737307 c 3.543362,-0.857773 8.870992,-1.403431 14.828539,-1.403431 6.002673,0 11.365849,0.553958 14.908744,1.422973" />
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path469"
+       inkscape:connector-curvature="0"
+       d="m 9.7679649,84.066302 4.5239711,4.933705 c 2.082446,-1.380292 4.155818,-1.648242 6.836257,-1.648242 l 18.646284,0 c 3.294244,0 7.957334,-4.086424 10.338673,-5.67977 2.349142,1.682334 6.958135,5.67977 10.338673,5.67977 l 19.545817,0 c 2.265965,0 3.637121,0.21467 5.800123,1.648242 L 90.232026,84.16401 C 87.999867,82.458628 79.024912,80.473962 75.08046,80.634393 71.136008,80.794824 63.39618,81.896777 59.919196,80.772564 56.442212,79.648351 53.249061,77.010455 51.83357,75.578552 l -3.610572,0.09771 c -1.763613,1.563783 -4.048493,4.144826 -8.518834,5.096303 -4.470341,0.951476 -10.447841,-0.113862 -14.34174,-0.138171 -3.893912,-0.02443 -12.98049,0.959632 -15.5944591,3.431909 z" />
+    <path
+       style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path491"
+       inkscape:connector-curvature="0"
+       d="m 37.811507,58.504451 c 3.543376,-0.857773 6.021822,-1.403431 11.979356,-1.403431 6.002673,0 8.854713,0.456249 12.397621,1.325264" />
+  </g>
+</svg>
diff --git a/svg/BlackPromoDragon.svg b/svg/BlackPromoDragon.svg
new file mode 100644 (file)
index 0000000..e483ebd
--- /dev/null
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackCrownedRook.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective16" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2837">
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1402"
+       inkscape:connector-curvature="0"
+       d="m 19.988303,23.445622 0,14.198833 8.215969,6.314278 0,24.361717 -6.811166,6.394709 0,8.26495 -6.811165,0 0,6.019891 70.836118,0 0,-6.019891 -6.811161,0 0,-9.423938 -6.811171,-6.3545 0,-23.283156 8.173399,-6.27406 0,-14.198833 -4.917138,0 L 50.144989,10.953295 24.599353,23.445622 z" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1406"
+       y="35.693176"
+       x="23.309896"
+       height="1.2846808"
+       width="53.148762" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1408"
+       y="42.138672"
+       x="30.139942"
+       height="1.2846808"
+       width="39.488659" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1410"
+       y="66.474022"
+       x="30.106775"
+       height="1.2846808"
+       width="39.554974" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1412"
+       y="81.930573"
+       x="23.309896"
+       height="1.2846808"
+       width="53.148762" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1414"
+       y="72.905128"
+       x="24.669277"
+       height="1.2846808"
+       width="50.430004" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1482"
+       inkscape:connector-curvature="0"
+       d="m 30.88249,22.205315 4.08547,0 6.778405,0 16.328359,0 10.97547,0" />
+  </g>
+</svg>
diff --git a/svg/BlackPromoHSword.svg b/svg/BlackPromoHSword.svg
new file mode 100644 (file)
index 0000000..a506ead
--- /dev/null
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackHSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="54.904244"
+     inkscape:cy="34.708552"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g2827">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -270.42482,1039.1007 -10.32341,-10.4981 -54.35055,-0.2016 0,21.399 53.89325,0 10.78071,-10.6993 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2.12476516;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="335.26187"
+         x="1016.7288"
+         height="7.3214288"
+         width="44.743176"
+         id="rect3689"
+         style="fill:#000000;stroke:#000000;stroke-width:2.12476516;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="342.71426"
+         x="1033.4033"
+         height="19.202518"
+         width="10.184937"
+         id="rect3693"
+         style="fill:#000000;stroke:#000000;stroke-width:2.12476516;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3777"
+         d="m -343.5,1034.0348 0,8.8681"
+         style="fill:none;stroke:#ffffff;stroke-width:2.12476516;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3781"
+         d="m -334.21429,1029.3993 0,19.5499"
+         style="fill:none;stroke:#ffffff;stroke-width:2.12476516;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackPromoHorse.svg b/svg/BlackPromoHorse.svg
new file mode 100644 (file)
index 0000000..9ddda1d
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackCrownedBishop.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective16" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2837">
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path900"
+       inkscape:connector-curvature="0"
+       d="M 36.30595,59.417265 24.376483,48.033607 C 20.139397,43.990392 12.237729,46.016232 12.268826,40.407532 12.311717,32.670013 34.907175,27.788378 44.547031,18.103208 l 11.078999,0 c 10.065834,10.160662 32.354717,13.792369 32.370902,22.304324 0.01009,5.621984 -8.151701,3.891832 -12.055165,7.626075 L 64.042286,59.417265 z" />
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path902"
+       inkscape:connector-curvature="0"
+       d="m 68.769536,71.07519 c 0,2.073311 -8.403716,3.754049 -18.770208,3.754049 -10.366505,0 -18.770221,-1.680738 -18.770221,-3.754049 0.06636,-1.393616 2.681415,-9.714324 6.516542,-10.994302 6.735026,-2.247804 17.966632,-2.510491 24.949104,0 3.748221,1.347646 6.141152,9.733411 6.074783,10.994302 z" />
+    <path
+       style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path904"
+       inkscape:connector-curvature="0"
+       d="m 35.551825,68.575408 c 3.44316,-0.823963 8.62013,-1.348112 14.409203,-1.348112 5.832924,0 11.044434,0.532122 14.48714,1.366884" />
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path910"
+       inkscape:connector-curvature="0"
+       d="m 10.905688,84.260767 4.396038,4.739234 c 2.023556,-1.325884 4.038295,-1.583273 6.642934,-1.583273 l 18.118985,0 c 3.201087,0 7.732309,-3.925351 10.046306,-5.455892 2.282711,1.616022 6.761365,5.455892 10.046305,5.455892 l 18.993081,0 c 2.201886,0 3.534267,0.206209 5.636101,1.583273 l 4.308867,-4.645377 C 86.925269,82.716462 78.204117,80.810025 74.37121,80.964133 70.538303,81.11824 63.01735,82.176758 59.638692,81.096858 56.260033,80.016957 53.157182,77.483039 51.781719,76.107577 l -3.508468,0.09386 c -1.71374,1.502144 -3.934006,3.981451 -8.27793,4.895424 -4.343924,0.913972 -10.152387,-0.109374 -13.93617,-0.132725 -3.783796,-0.02347 -12.613414,0.921806 -15.153463,3.296634 z" />
+    <path
+       style="color:#000000;fill:none;stroke:#ffffcc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path912"
+       inkscape:connector-curvature="0"
+       d="m 38.156186,59.706481 c 3.443173,-0.823963 5.851531,-1.348112 11.640592,-1.348112 5.832923,0 8.60431,0.438265 12.047028,1.273026" />
+  </g>
+</svg>
diff --git a/svg/BlackPromoRook.svg b/svg/BlackPromoRook.svg
new file mode 100644 (file)
index 0000000..03a5919
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackRook.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="783"
+     inkscape:window-height="647"
+     id="namedview13"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective15" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2833">
+    <path
+       sodipodi:nodetypes="ccccccccccccccccc"
+       d="m 19.830741,11.000003 1e-6,13.68421 8.259102,6.713817 0,34.381577 -6.846924,6.79933 0,9.57895 -6.846923,0 0,6.84211 71.208007,0 0,-6.84211 -6.84693,0 0,-9.57895 -6.84692,-6.75657 0,-34.467101 8.21631,-6.671053 0,-13.68421 -60.295723,0 z"
+       inkscape:connector-curvature="0"
+       id="path1039"
+       style="color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.99999988;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1074"
+       y="22.911417"
+       x="22.061972"
+       height="1.4222356"
+       width="55.633793" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1076"
+       y="30.047054"
+       x="29.211357"
+       height="1.4222356"
+       width="41.334999" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1078"
+       y="65.668564"
+       x="29.176641"
+       height="1.4222356"
+       width="41.404411" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1080"
+       y="82.780083"
+       x="22.061972"
+       height="1.4222356"
+       width="55.633793" />
+    <rect
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#ffffcc;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect1082"
+       y="72.788261"
+       x="23.484905"
+       height="1.4222356"
+       width="52.787918" />
+  </g>
+</svg>
diff --git a/svg/BlackPromoSword.svg b/svg/BlackPromoSword.svg
new file mode 100644 (file)
index 0000000..f5a9e94
--- /dev/null
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="54.904244"
+     inkscape:cy="56.199236"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g2827">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -316.71407,986.20383 -10.33918,10.32341 -0.19853,54.35056 21.07508,0 0,-53.89326 -10.53737,-10.78071 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2.10862303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1051.0409"
+         x="-338.74722"
+         height="7.3214288"
+         width="44.065918"
+         id="rect3689"
+         style="fill:#000000;stroke:#000000;stroke-width:2.10862303;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1058.4933"
+         x="-322.32513"
+         height="19.202518"
+         width="10.030772"
+         id="rect3693"
+         style="fill:#000000;stroke:#000000;stroke-width:2.10862303;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3777"
+         d="m -321.70324,1059.279 8.73379,0"
+         style="fill:none;stroke:#ffffff;stroke-width:2.10862303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3781"
+         d="m -326.26863,1049.9933 19.25403,0"
+         style="fill:none;stroke:#ffffff;stroke-width:2.10862303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/BlackSword.svg b/svg/BlackSword.svg
new file mode 100644 (file)
index 0000000..71887a1
--- /dev/null
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="BlackSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="54.904244"
+     inkscape:cy="56.199236"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g3839"
+       transform="matrix(1.1115727,0,0,1,35.336676,0)">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -316.7141,986.20383 -9.3014,10.32341 -0.1786,54.35056 18.9597,0 0,-53.89326 -9.4797,-10.78071 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1051.0409"
+         x="-336.53571"
+         height="7.3214288"
+         width="39.642857"
+         id="rect3689"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1058.4933"
+         x="-321.76196"
+         height="19.202518"
+         width="9.0239458"
+         id="rect3693"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3701"
+         d="m -316.7143,998.13445 0,52.24135"
+         style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3777"
+         d="m -321.20249,1059.279 7.85715,0"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3781"
+         d="m -325.30963,1049.9933 17.32143,0"
+         style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteClaw.svg b/svg/WhiteClaw.svg
new file mode 100644 (file)
index 0000000..99c4a68
--- /dev/null
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2828"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2850"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2872"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2894"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2918"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2940"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2962"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.8704322"
+     inkscape:cx="26.42854"
+     inkscape:cy="46.467809"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="726"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-952.36218)">
+    <g
+       id="g3788">
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccc"
+         id="path2816"
+         d="m 49.667863,1012.1206 2.166994,9.0012 -0.333383,6.3344 -2.333687,8.3346 -4.167298,4.5007 -5.167449,2.5004 -5.334142,0.3334 -6.334292,-3.3339 -3.500529,-4.8341 -1.000152,-7.5011 -2.166995,-4.334 -5.334141,-4.1672 -2.500379,-6.001 2.000304,-6.1675 5.000756,-3.1672 5.500834,-0.8335 6.500984,0.3334 7.667828,1.0002 5.834217,3.0004 3.50053,5.0008 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818"
+         d="m 39.626874,999.80011 -1.847886,-3.07981 0.821283,-5.95429 2.874488,-5.33834 5.338336,-3.07981 5.338334,0.61596 3.901092,3.49045 0,5.74898 -2.669167,5.13301 -4.517054,3.28514 -4.517053,1.0266 -4.722373,-1.84789 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818-3"
+         d="m 70.11698,997.5416 1.847886,3.0798 -0.821283,5.9543 -2.874488,5.3383 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.258526,-5.54356 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818-3-2"
+         d="m 33.569916,981.32129 1.847886,3.07984 -0.821283,5.9543 -2.874488,5.33826 -5.338336,3.0798 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.74896 2.258526,-5.5436 4.927695,-2.87454 4.517053,-1.0266 4.722373,1.8479 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         id="path2818-3-6"
+         d="m 72.375506,1019.9215 2.463848,4.5171 -0.410642,4.7223 -4.106412,4.9277 -5.133015,2.0532 -5.748975,-0.2053 -3.490451,-3.9011 0,-5.749 2.669167,-4.7223 4.722375,-2.4639 4.722373,-0.8213 4.311732,1.6426 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908"
+         d="m 34.083217,975.98293 -2.053206,-0.61597 0.821282,-4.51705 2.463847,-2.66917 4.106412,-0.41064 2.053206,0.61596 -3.285129,0.82129 -2.258527,2.46384 -1.847885,4.31174 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908-4"
+         d="m 56.216861,980.17756 -1.915052,-0.96315 1.593184,-4.30582 2.88991,-2.20078 4.115337,0.30866 1.915052,0.96314 -3.37784,0.2383 -2.652056,2.03423 -2.568537,3.92535 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908-4-6"
+         d="m 73.878161,994.50275 0.963152,1.91506 4.30582,-1.59319 2.200779,-2.88991 -0.308659,-4.11533 -0.96314,-1.91506 -0.238295,3.37784 -2.03423,2.65206 -3.92535,2.56854 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2908-4-6-3"
+         d="m 77.705679,1018.2026 0.792583,1.9916 4.428292,-1.2118 2.444276,-2.6871 0.05119,-4.1266 -0.792563,-1.9917 -0.531791,3.3443 -2.257627,2.4646 -4.134281,2.2167 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteDolphin.svg b/svg/WhiteDolphin.svg
new file mode 100644 (file)
index 0000000..c01d573
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteDolphin.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2826"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2834"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.5167464"
+     inkscape:cx="49.318911"
+     inkscape:cy="45.354981"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1280"
+     inkscape:window-height="726"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-952.36218)">
+    <g
+       id="g2848"
+       transform="matrix(0.94718127,0,0,1,5.1441209,0)">
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+         id="path2832"
+         d="m 21.409187,1009.2837 3.850594,-5.9885 4.312974,-6.56537 6.026858,-7.19404 5.068076,-5.25188 5.537733,-4.27474 5.365827,-3.5041 2.054647,-0.99064 1.756897,-2.73841 1.016083,-3.52748 -0.668156,-2.14233 -0.710106,-2.98178 -0.568906,-1.55972 1.997345,-0.73376 3.051262,0.70676 3.23441,2.96828 1.935928,3.65165 1.664774,3.8397 0.397,2.33037 5.388307,2.56023 5.857963,3.53738 4.189076,3.8262 4.502182,4.47761 3.532159,4.71602 2.306336,4.04622 2.229452,4.21583 1.142041,4.303 0.416051,2.7853 -0.817318,3.9553 -1.401312,3.8618 0.378064,6.9663 0.232905,4.9517 -2.142125,1.0799 -1.867388,-2.6475 -3.791542,-8.7269 -2.693276,-1.9435 -2.96748,-3.6758 -3.158704,-3.2423 -0.150072,2.7315 c -1.183588,2.1006 -0.727662,2.1788 -1.669419,2.8704 l -2.845485,1.7911 -3.100755,0.2938 -3.715192,-1.444 3.05035,-3.0578 1.211269,-2.2168 0.283726,-3.0564 -1.499497,-3.2124 -5.594617,-2.2551 -6.430984,-0.9685 -8.157173,-0.423 -6.889401,1.0865 -6.163943,2.972 -6.121994,3.8114 -4.796918,5.0637 -4.369212,5.2015 5.722332,1.0098 4.306198,2.9434 3.564587,4.809 -1.40554,3.3423 -5.630626,-3.9007 -5.512971,-1.6086 -5.433305,0.3486 0.122418,-3.7133 -4.005019,4.6365 -4.1082286,0.1834 -4.5703428,0.8646 -5.8450126,2.5972 -0.4249251,-1.0225 2.37411703,-3.6566 4.76621177,-3.314 5.0069263,-2.0465 4.289125,-1.1241 3.763766,-4.871 3.320975,-5.7562 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2834"
+         d="m 72.150568,1000.6302 -5.147858,-0.5555 -4.063233,-1.30775 -4.418286,-2.79866 -3.975221,-3.75745 -3.261004,-4.90406 6.885287,3.04205 3.765482,-0.43998 3.750128,0.65635"
+         style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2842"
+         d="m 82.427881,1002.246 1.21047,1.7662"
+         style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path2844"
+         d="m 53.83975,975.58326 5.434369,-0.72881 4.135888,-0.0454 3.051264,0.70675"
+         style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path2860"
+         d="m 70.183263,1005.0426 7.527542,4.6075"
+         style="fill:none;stroke:#000000;stroke-width:2.19197774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteHCrown.svg b/svg/WhiteHCrown.svg
new file mode 100644 (file)
index 0000000..07bc6c9
--- /dev/null
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhitePrincess.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview19"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective21" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="matrix(0,1,-1,0,153.16323,-67.585316)"
+     id="layer1">
+    <g
+       transform="matrix(1.2568021,0,0,1.2568021,127.4848,230.75324)"
+       id="g799"
+       style="display:inline">
+      <path
+         d="m -28.079531,-94.874455 -4.264552,-25.678565 13.999806,24.343464"
+         inkscape:connector-curvature="0"
+         id="path704"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -19.140231,-95.88723 2.246154,-30.00621 9.5954992,27.886232 z"
+         inkscape:connector-curvature="0"
+         id="path706"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m 12.490017,-94.82073 3.713129,-24.84222 -13.3990081,23.408891"
+         inkscape:connector-curvature="0"
+         id="path710"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m 3.4881771,-95.734359 -2.37837,-29.892061 -8.8615575,28.106514 z"
+         inkscape:connector-curvature="0"
+         id="path712"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.5913403;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m 8.6705152,-75.003615 c 0,2.494743 -7.3228728,4.517114 -16.3560942,4.517114 -9.033223,0 -16.356097,-2.022371 -16.356097,-4.517114 l 2.325288,-6.475256 -0.06428,-6.631027 -5.811396,-6.453037 4.358127,-3.075207 4.109397,1.001045 5.74678,-2.877825 5.7712718,1.347215 5.203493,-1.347215 5.2462981,2.877825 4.8612915,-1.001045 4.2955236,3.075207 -5.8100516,6.453037 0.060254,6.631027 z"
+         inkscape:connector-curvature="0"
+         id="path714"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -21.892448,-88.229599 c 2.801739,-1.37734 8.142276,-2.30791 14.2698066,-2.30791 6.1644171,0 11.5323386,0.94181 14.3201283,2.33283"
+         inkscape:connector-curvature="0"
+         id="path716"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,3.6715495,-244.63895)"
+         id="path718"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,54.80093,-244.56074)"
+         id="path720"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,38.762768,-250.59195)"
+         id="path722"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -35.496787,129.14731 a 3.776254,3.776254 0 1 1 -7.552508,0 3.776254,3.776254 0 1 1 7.552508,0 z"
+         transform="matrix(0.94504751,0,0,0.94166667,19.780217,-250.61038)"
+         id="path726"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.68689334;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -23.978738,-75.003615 c 0,-2.494728 7.322874,-4.517115 16.3560966,-4.517115 9.0332214,0 16.3560942,2.022387 16.3560942,4.517115"
+         inkscape:connector-curvature="0"
+         id="path728"
+         style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m -21.669514,-81.284079 c 2.856168,-1.31876 8.078159,-2.20172 14.0468726,-2.20172 6.0282874,0 11.2948691,0.90067 14.1316836,2.24134"
+         inkscape:connector-curvature="0"
+         id="path730"
+         style="color:#000000;fill:none;stroke:#000000;stroke-width:1.59134054;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteHSword.svg b/svg/WhiteHSword.svg
new file mode 100644 (file)
index 0000000..90df377
--- /dev/null
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteHSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="53.102954"
+     inkscape:cy="37.188247"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g3595"
+       transform="matrix(1,0,0,1.1243568,0,-132.14157)">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -270.42482,1041.7792 -10.32341,-9.3014 -54.35055,-0.1786 0,18.9597 53.89325,0 10.78071,-9.4797 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="335.26187"
+         x="1021.9576"
+         height="7.3214288"
+         width="39.642857"
+         id="rect3689"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="342.71426"
+         x="1036.7313"
+         height="19.202518"
+         width="9.0239458"
+         id="rect3693"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3701"
+         d="m -282.35544,1041.779 -52.24134,0"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteLeopard.svg b/svg/WhiteLeopard.svg
new file mode 100644 (file)
index 0000000..62e318c
--- /dev/null
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteKnight.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="48.583075"
+     inkscape:cy="56.642455"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="678"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g2853"
+       transform="matrix(0.86365412,0,0,0.86365412,-43.631762,139.94886)">
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+         id="path2844"
+         d="m -315.51293,998.27067 11.63134,1.59646 9.12262,4.33327 1.82452,-4.33327 3.87712,-4.10518 3.64904,-1.36839 5.70164,-0.45613 2.73679,3.19292 0.45613,5.24555 -1.82453,4.3332 -1.82452,3.1929 -3.64905,1.3684 1.59646,3.421 -1.14033,3.1929 -1.36839,1.5965 1.59646,6.8419 0.68419,5.2455 -0.45613,6.1578 -1.82452,5.7016 -3.42098,6.3859 -4.56131,4.1051 -3.87711,0.2281 -4.10518,2.5087 -1.14033,5.7017 -1.59646,7.7542 -4.33324,4.5613 -4.78937,1.8245 -5.01745,-0.228 -5.9297,-3.6491 -2.73678,-2.9648 0.45613,-3.421 -2.05259,-4.1052 -2.05259,-4.7894 -0.91226,-2.7368 -4.78938,-4.5613 -5.01744,-3.1929 -4.78937,-6.8419 0,-8.4385 0.91226,-6.8419 1.59646,-5.9297 -2.96485,-3.6491 -0.22807,-6.1577 -2.73678,-3.6491 -1.14033,-4.7894 1.82452,-5.70161 2.28066,-3.19291 2.05259,0.68419 3.42098,3.19292 3.64905,4.33324 1.14032,2.73677 2.96486,0.6842 4.78937,-3.1929 6.6139,-1.36839 5.70163,-0.45614 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2846"
+         d="m -297.03962,1022.4456 -6.6634,0.3076 -1.54696,0.8628 -5.2261,5.0368 4.18476,-2.0826 4.64089,0.5358 2.42914,-1.0113 0.81327,-3.193 1.3684,-0.4561 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccccc"
+         id="path2848"
+         d="m -335.35462,1021.9895 6.6139,0.5357 2.78628,1.3684 2.23116,3.3414 -3.06384,0.099 -3.09393,0.049 -2.02249,-1.0414 -1.04135,-1.5664 -0.35714,-2.102 1.65663,0.1786 -3.70922,-0.8628 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         id="path2850"
+         d="m -316.47468,1041.6827 3.74804,-1.1898 1.64595,1.0908 -1.59646,3.7675 -2.15158,2.7368 -2.40973,0.049 -2.52813,-2.6572 -1.77503,-3.8771 1.18982,-1.1898 3.87712,1.2694 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccccccccccccccc"
+         id="path2852"
+         d="m -315.642,1050.9344 3.50928,0.9811 4.17435,0.9479 3.62065,-0.01 c 0.74016,-0.5709 1.30175,-0.1746 1.68476,-0.6346 l -1.66536,7.8725 -0.73369,2.7669 -0.86277,4.3031 -1.98369,1.547 -3.91591,0.4561 -5.89962,0.099 -2.96485,-0.9619 -1.81383,-1.9041 -1.17043,-2.726 -1.38779,-3.9267 -2.76688,-6.1082 2.26997,0.2775 5.24551,-1.5964 4.6603,-1.3878 0,-10e-5 0,10e-5 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path2854"
+         d="m -304.76376,1053.2151 -3.3026,9.9767 -1.72553,-10.7405 5.38527,0.9429 -0.35714,-0.1791 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path2856"
+         d="m -320.19263,1052.5997 -2.13217,10.0068 -2.21175,-3.4617 -0.81328,-5.0971 5.1572,-1.448 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2858"
+         d="m -308.23424,1068.4159 c 1.22995,-0.8464 1.98419,-1.8111 2.08268,-2.7174 l 1.07144,-5.1767 c -1.20342,1.0414 -2.22826,2.2613 -3.43167,3.3027 l -1.39849,0.5852 c -0.91365,-0.8155 -3.17893,-0.7127 -2.39033,-1.9537 l -0.55511,3.6297 1.67604,2.5883 2.94544,-0.2581 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2860"
+         d="m -316.72215,1062.1484 -2.43982,1.8051 -0.91227,0 -2.81636,-2.0332 -0.0796,3.5802 2.16226,2.6679 2.73679,0.7336 1.98369,-2.231 -0.6347,-4.5226 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         id="path2862"
+         d="m -291.33799,1006.253 1.64596,-4.6303 3.79752,-3.93723 5.09703,-0.0796 1.09083,3.40163 -1.21991,4.1546 -1.41788,2.5583 -3.06385,1.0413 -3.87711,-0.2281 -2.05259,-2.2806 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         id="path2864"
+         d="m -344.47724,996.21809 3.47048,3.09392 2.05259,2.80569 0.6347,4.1353 -3.19292,1.8245 -2.78628,-1.9041 -2.37964,-3.7975 0,-2.75624 1.23931,-3.04443 0.96176,-0.35714 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2866"
+         d="m -301.829,1037.726 14.36813,-10.7191 11.63133,-7.2981 6.6139,-5.2455"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2868"
+         d="m -301.60093,1040.9189 14.14006,-4.1052 10.03488,-1.1403 10.491,0 2.50873,0.6842"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2870"
+         d="m -300.68867,1045.0241 10.26294,-2.7368 10.26295,-0.9123 6.84196,0.6842 10.03488,2.0526"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2872"
+         d="m -301.829,1047.7609 10.03488,0.6842 8.43842,3.8771"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2874"
+         d="m -331.70557,1039.5505 -10.26295,-5.0174 -7.75422,-2.9649 -8.66649,-1.3684 -10.03488,-0.4561"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2876"
+         d="m -332.1617,1043.1996 -13.912,-2.0526 -9.12262,0.228 -12.31553,3.8772 -9.12262,4.3332"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2878"
+         d="m -332.38977,1046.8486 -7.29809,0.9123 -10.03488,3.649 -8.66649,4.5613 c 0,0 -4.33325,3.8771 -5.24551,3.6491"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path2880"
+         d="m -327.6004,1049.5854 -6.61389,2.7368 -6.84197,4.1052 -4.78937,4.5613"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteLion.svg b/svg/WhiteLion.svg
new file mode 100644 (file)
index 0000000..e5af5af
--- /dev/null
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg3738"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteQueen.svg">
+  <defs
+     id="defs3740">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective3746" />
+    <inkscape:perspective
+       id="perspective3800"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8"
+     inkscape:cx="64.212367"
+     inkscape:cy="62.923419"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="716"
+     inkscape:window-height="487"
+     inkscape:window-x="3"
+     inkscape:window-y="71"
+     inkscape:window-maximized="0"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <sodipodi:guide
+       position="0.17142614,0.85712"
+       orientation="0,744.09448"
+       id="guide4498" />
+    <sodipodi:guide
+       position="744.26591,0.85712"
+       orientation="-1052.3622,0"
+       id="guide4500" />
+    <sodipodi:guide
+       position="744.26591,1053.2193"
+       orientation="0,-744.09448"
+       id="guide4502" />
+    <sodipodi:guide
+       position="0.17142614,1053.2193"
+       orientation="1052.3622,0"
+       id="guide4504" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3743">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0.17142614,-953.2193)">
+    <g
+       id="g4531"
+       transform="matrix(0.97053726,0,0,0.97053726,1.9949493,30.030726)">
+      <path
+         id="path3888"
+         d="m 18.200002,987.30504 2.742858,-6.85715 -1.828571,-4.11428 5.942856,-8.22857 9.142858,-6.4 12.342857,-0.45715 2.285714,-7.31428 7.771429,0 7.314286,4.11428 10.971427,1.82858 -1.371427,5.94285 11.885713,3.2 -1.371428,4.57143 6.857142,6.85714 -2.285713,2.28572 7.314286,10.97143 -2.742858,2.74285 4.571429,10.05711 -0.457144,6.4 0,11.4286 -6.4,-8.2286 0.457144,16.9143 -2.285715,3.2 -6.4,-5.9428 0,9.1428 -5.028571,3.6572 0.914286,-10.0572 -7.314286,12.3429 -4.114285,-5.0286 -4.571429,10.5143 -10.514286,1.3714 -10.057143,-1.3714 -8.685715,-6.8571 -4.571427,-2.2858 -10.971429,6.8572 -0.457144,-12.8 -2.285713,-7.7714 -3.2,2.7428 -5.0285719,-4.1143 0.9142856,-9.1428 -2.2857142,-4.1143 0.9142858,-5.4857 -5.0285716,-3.6572 1.3714287,-3.6571 15.5428566,-13.25716 z"
+         style="fill:#f9f9f9;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         id="path3890"
+         d="m 36.94286,989.59075 -8.685715,-1.82857 3.657144,1.37143 -5.485715,4.57143 5.485715,-2.74286 3.857141,0.2 1.17143,-1.57143 z"
+         style="fill:#000000;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3892"
+         d="m 59.34286,988.21932 0,-6.4 -0.457144,-7.77143 -1.828571,-5.02857 -3.2,-2.28571 -6.857143,0.91428 -3.657142,4.11429 -1.828571,3.65714"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3894"
+         d="m 54.771431,984.10504 -0.914286,-4.57143 -2.742856,-3.65714 -3.2,0 -1.828573,4.11428 0,0 0.914286,0.45714 -0.914286,-0.45714"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3896"
+         d="m 12.714289,1003.7622 0,0 z"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3898"
+         d="M 11.471431,1004.3764 0.82857386,1002.8479"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3900"
+         d="m 6.3142883,1010.1622 2.2857142,-2.7429 2.2857135,-0.4571 0.457144,-2.7429 0,0"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3902"
+         d="m 6.3142883,1017.4765 3.2000006,-0.9143 3.6571421,4.1143 4.571429,0 6.4,2.2857 5.028571,0.4571 0.457143,0 0,0.4572"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3904"
+         d="m 43.34286,1003.305 -0.457144,8.6858 -3.657142,6.4 -0.914285,7.3142 -5.485715,6.4 -4.114285,6.8572"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3906"
+         d="m 72.600003,997.36218 -3.200001,13.71432 -5.942857,10.9714 -6.857142,8.6857 -5.028572,13.7143"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3908"
+         d="m 66.557145,1040.7193 -0.357143,-7.2428 4.114287,-9.1429 4.571427,-10.0571 2.285715,-10.9715 -0.457142,-7.31425"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3910"
+         d="m 80.371431,996.44789 0,7.31431 0,5.4857 0.914285,7.7714 -4.571427,6.8572 -2.742858,5.4857 -1.371428,6.4"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path3912"
+         d="m 72.14286,976.79075 6.857143,7.31429 8.228571,5.94285 -0.1,20.97141 3.185714,4.0572"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3914"
+         d="m 72.14286,971.30504 7.771429,0.91428 5.028571,2.74286 0,0"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path3916"
+         d="m 19.114289,986.99075 11.885713,-8.37143 4.571429,-2.74285"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         transform="translate(-0.17142614,952.93361)"
+         id="path4508"
+         d="m 14.642857,58.142833 c 8.571429,-1.785714 8.214286,-1.785714 8.214286,-1.785714"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         transform="translate(-0.17142614,952.93361)"
+         id="path4510"
+         d="M 15.357143,60.999976 C 27.142857,60.642833 27.142857,60.642833 27.142857,60.642833"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path4512"
+         d="m 15.542859,1016.4336 c 11.071429,4.2857 11.071429,4.2857 11.071429,4.2857"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhitePromoBishop.svg b/svg/WhitePromoBishop.svg
new file mode 100644 (file)
index 0000000..ab93a93
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteBishop.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective16" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     d="m 55.192266,11.163944 a 5.1922815,5.1665922 0 0 1 -10.384563,0 5.1922815,5.1665922 0 1 1 10.384563,0 z"
+     id="path293"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="m 35.970027,57.593966 c -2.187845,-2.572277 -7.934014,-3.956125 -8.03705,-16.692787 -0.09202,-11.376145 14.967422,-23.269413 22.259497,-23.363498 7.29776,-0.09411 21.85339,12.00193 21.874874,23.363498 0.02609,13.791 -5.586093,14.681011 -7.680588,16.692787 z"
+     inkscape:connector-curvature="0"
+     id="path308"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="m 69.229975,69.589847 c 0,2.133412 -8.609865,3.862871 -19.230651,3.862871 -10.620805,0 -19.230675,-1.729459 -19.230675,-3.862871 0.06799,-1.434016 2.747191,-9.995935 6.676405,-11.313027 6.900236,-2.312959 18.407359,-2.583263 25.561118,0 3.840166,1.386714 6.291799,10.015582 6.223803,11.313027 z"
+     inkscape:connector-curvature="0"
+     id="path300"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="m 31.391915,68.632566 c 2.120178,-1.670363 9.65975,-2.90559 18.635579,-2.90559 8.899888,0 16.387721,1.214423 18.580588,2.863284"
+     inkscape:connector-curvature="0"
+     id="path306"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="M 9.2736066,84.219958 13.489016,89 c 2.073196,-1.364321 4.810436,-2.594882 7.478968,-2.594882 l 19.717294,0 c 3.267641,0 6.406491,-2.799742 9.042769,-4.165477 2.908216,1.229164 5.677226,4.165477 9.04275,4.165477 l 20.805133,0 c 2.255902,0 4.101743,1.177894 6.255133,2.594882 l 4.89533,-4.780042 c -2.222249,-1.685656 -6.15317,-4.317929 -9.518695,-4.317929 l -21.757004,0 C 57.150979,79.864738 55.8005,77.746132 53.082247,74.7964 l -6.300479,0 c -1.755773,1.545696 -4.81048,5.13672 -7.45631,5.105629 l -20.397194,0 c -3.535508,0 -7.052299,1.874259 -9.6546574,4.317929 z"
+     inkscape:connector-curvature="0"
+     id="path310"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</svg>
diff --git a/svg/WhitePromoDragon.svg b/svg/WhitePromoDragon.svg
new file mode 100644 (file)
index 0000000..f2e21ad
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteCrownedRook.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview14"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="49.614407"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective16" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2837">
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1388"
+       inkscape:connector-curvature="0"
+       d="m 14.471992,82.594659 71.056004,0 0,6.405345 -71.056004,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1390"
+       inkscape:connector-curvature="0"
+       d="m 21.325261,73.610637 57.349453,0 0,8.977739 -57.349453,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1392"
+       inkscape:connector-curvature="0"
+       d="m 28.146837,67.225346 43.689703,0 6.932502,6.366507 -57.538095,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1394"
+       inkscape:connector-curvature="0"
+       d="m 28.155129,42.633261 43.689731,0 0,24.592098 -43.689745,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1396"
+       inkscape:connector-curvature="0"
+       d="m 19.929584,36.532611 60.140821,0 -8.412112,6.399601 -43.349862,0 z" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1398"
+       inkscape:connector-curvature="0"
+       d="m 19.924707,23.705264 0,12.822282 60.150575,0 0,-12.822282 -12.294795,0 -12.294794,0 -11.014087,0 -12.252105,0 -12.294794,0 z" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path1454"
+       inkscape:connector-curvature="0"
+       d="m 26.531069,23.858503 23.673572,-12.920244 23.673586,12.920244 -6.09774,-0.153239 -12.294794,0 -11.014087,0 -12.252105,0 -5.688432,0.153239 z" />
+  </g>
+</svg>
diff --git a/svg/WhitePromoHSword.svg b/svg/WhitePromoHSword.svg
new file mode 100644 (file)
index 0000000..09fe10a
--- /dev/null
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteHSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="53.102954"
+     inkscape:cy="37.188247"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g2823">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -270.42482,1039.19 -10.32341,-10.4581 -54.35055,-0.2008 0,21.3174 53.89325,0 10.78071,-10.6585 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.12071395;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="335.26187"
+         x="1016.9034"
+         height="7.3214288"
+         width="44.572716"
+         id="rect3689"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.12071395;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         transform="matrix(0,1,-1,0,0,0)"
+         y="342.71426"
+         x="1033.5143"
+         height="19.202518"
+         width="10.146134"
+         id="rect3693"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.12071395;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhitePromoHorse.svg b/svg/WhitePromoHorse.svg
new file mode 100644 (file)
index 0000000..d678fe9
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteCrownedBishop.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview13"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective15" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <path
+     d="m 36.534832,58.968047 c -3.243443,-3.154945 -10.214715,-10.374074 -13.03495,-12.09609 -2.820236,-1.722015 -9.813947,-3.834791 -9.997463,-7.098474 1.572767,-7.2769 19.644618,-8.907618 31.169347,-21.564265 l 10.065462,-0.02979 c 12.744832,12.505359 30.015019,14.896149 31.391548,21.594106 -0.557894,3.635787 -4.567159,4.603962 -8.190134,7.098425 -3.622976,2.494463 -10.263803,8.270149 -14.131036,12.09614 z"
+     inkscape:connector-curvature="0"
+     id="path884"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="m 68.455849,70.439082 c 0,2.040073 -8.263263,3.693867 -18.456498,3.693867 -10.193248,0 -18.456512,-1.653794 -18.456512,-3.693867 0.06525,-1.371275 2.6366,-9.558591 6.407631,-10.81805 6.622461,-2.211769 17.666352,-2.470245 24.532126,0 3.685576,1.326042 6.038513,9.577372 5.973253,10.81805 z"
+     inkscape:connector-curvature="0"
+     id="path886"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="m 32.141016,69.523687 c 2.034814,-1.597278 9.270883,-2.77846 17.885376,-2.77846 8.541618,0 15.728019,1.161284 17.832608,2.738006"
+     inkscape:connector-curvature="0"
+     id="path888"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  <path
+     d="m 10.913106,84.429095 4.045713,4.570906 c 1.989736,-1.304629 4.616785,-2.481355 7.177892,-2.481355 l 18.923549,0 c 3.136099,0 6.148589,-2.677244 8.678735,-3.983226 2.791146,1.175385 5.448685,3.983226 8.678723,3.983226 l 19.9676,0 c 2.165085,0 3.936616,1.126367 6.003322,2.481355 l 4.698258,-4.570906 c -2.132784,-1.6119 -5.905464,-4.129005 -9.135502,-4.129005 l -20.881146,0 c -2.207135,-0.03562 -3.503256,-2.061572 -6.112083,-4.882248 l -6.046837,0 c -1.685097,1.478063 -4.616835,4.911978 -7.156147,4.882248 l -19.576081,0 c -3.393181,0 -6.768399,1.792249 -9.265996,4.129005 z"
+     inkscape:connector-curvature="0"
+     id="path894"
+     style="color:#000000;fill:#ffffcc;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</svg>
diff --git a/svg/WhitePromoRook.svg b/svg/WhitePromoRook.svg
new file mode 100644 (file)
index 0000000..e75c0b3
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="100"
+   height="100"
+   id="svg2833"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteRook.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="487"
+     id="namedview13"
+     showgrid="false"
+     inkscape:zoom="2.36"
+     inkscape:cx="50"
+     inkscape:cy="50"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2833" />
+  <defs
+     id="defs2835">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="100 : 50 : 1"
+       inkscape:persp3d-origin="50 : 33.333333 : 1"
+       id="perspective15" />
+  </defs>
+  <metadata
+     id="metadata2838">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2834">
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect204"
+       inkscape:connector-curvature="0"
+       d="m 14.354056,82.157062 71.291888,0 0,6.842936 -71.291888,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect206"
+       inkscape:connector-curvature="0"
+       d="m 21.230076,72.559283 57.539835,0 0,9.591067 -57.539835,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect208"
+       inkscape:connector-curvature="0"
+       d="m 28.074297,65.737771 43.83474,0 6.955516,6.801444 -57.729105,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect210"
+       inkscape:connector-curvature="0"
+       d="m 28.082617,31.497226 43.834767,0 0,34.240572 -43.834781,0 z" />
+    <path
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect212"
+       inkscape:connector-curvature="0"
+       d="m 19.829765,24.626866 60.340471,0 -8.440038,6.8368 -43.49377,0 z" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       style="color:#000000;fill:#ffffcc;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect214"
+       inkscape:connector-curvature="0"
+       d="m 19.824872,10.923199 0,13.698256 60.350257,0 0,-13.698256 -12.33561,0 -12.335609,0 -11.050651,0 -12.292778,0 -12.335609,0 z" />
+  </g>
+</svg>
diff --git a/svg/WhitePromoSword.svg b/svg/WhitePromoSword.svg
new file mode 100644 (file)
index 0000000..cefeb40
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="35.248447"
+     inkscape:cy="51.239847"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g2823">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -316.26765,986.20384 -10.45897,10.32341 -0.20079,54.35055 21.31911,0 0,-53.89325 -10.65935,-10.78071 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.12079835;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1051.0409"
+         x="-338.556"
+         height="7.3214288"
+         width="44.576263"
+         id="rect3689"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.12079835;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1058.4933"
+         x="-321.94376"
+         height="19.202518"
+         width="10.146942"
+         id="rect3693"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2.12079835;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/svg/WhiteSword.svg b/svg/WhiteSword.svg
new file mode 100644 (file)
index 0000000..cdcc108
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="100"
+   height="100"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="WhiteSword.svg">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+    <inkscape:perspective
+       id="perspective2824"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2838"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="35.248447"
+     inkscape:cy="51.239847"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="792"
+     inkscape:window-height="655"
+     inkscape:window-x="62"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(366.71429,-981.93367)">
+    <g
+       id="g3595"
+       transform="matrix(1.1244463,0,0,1,39.257968,0)">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3687"
+         d="m -316.17839,986.20384 -9.30144,10.32341 -0.17857,54.35055 18.95966,0 0,-53.89325 -9.47965,-10.78071 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1051.0409"
+         x="-336"
+         height="7.3214288"
+         width="39.642857"
+         id="rect3689"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <rect
+         y="1058.4933"
+         x="-321.22629"
+         height="19.202518"
+         width="9.0239458"
+         id="rect3693"
+         style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         id="path3701"
+         d="m -316.17857,998.13446 0,52.24134"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
index 5fe4338..eb006b1 100644 (file)
--- a/usounds.c
+++ b/usounds.c
@@ -76,21 +76,22 @@ extern char *getenv();
 #include "frontend.h"
 
 
-void
+int
 PlaySoundFile (char *name)
 {
   if (*name == NULLCHAR) {
-    return;
+    return 0;
   } else if (strcmp(name, "$") == 0) {
     putc(BELLCHAR, stderr);
   } else {
     char buf[2048];
     char *prefix = "", *sep = "";
-    if(appData.soundProgram[0] == NULLCHAR) return;
+    if(appData.soundProgram[0] == NULLCHAR) return 1;
     if(!strchr(name, '/')) { prefix = appData.soundDirectory; sep = "/"; }
     snprintf(buf, sizeof(buf), "%s '%s%s%s' &", appData.soundProgram, prefix, sep, name);
     system(buf);
   }
+  return 1;
 }
 
 void
@@ -135,6 +136,12 @@ PlayTellSound ()
   PlaySoundFile(appData.soundTell);
 }
 
+int
+Roar ()
+{
+  return PlaySoundFile(appData.soundRoar);
+}
+
 void
 PlaySoundForColor (ColorClass cc)
 {
index af83b60..2334572 100644 (file)
--- a/usystem.c
+++ b/usystem.c
@@ -227,7 +227,7 @@ static int
 parse_cpair (ColorClass cc, char *str)
 {
     if ((textColors[(int)cc].fg=parse_color(str, 0)) == -2) {
-       fprintf(stderr, _("%s: can't parse foreground color in `%s'\n"),
+       fprintf(stderr, _("%s: can't parse foreground color in '%s'\n"),
                programName, str);
        return -1;
     }
@@ -358,6 +358,9 @@ ExpandPathName (char *path)
     }
 
     if (*s == '~') {
+       if(s[1] == '~') { // use ~~ for XBoard's private data directory
+         snprintf(d, 4*MSG_SIZ, DATADIR "%s", s+2);
+       } else
        if (*(s+1) == '/') {
          safeStrCpy(d, getpwuid(getuid())->pw_dir, 4*MSG_SIZ );
          strcat(d, s+1);
diff --git a/winboard/bitmaps/ln33o.bmp b/winboard/bitmaps/ln33o.bmp
new file mode 100644 (file)
index 0000000..1e369b2
Binary files /dev/null and b/winboard/bitmaps/ln33o.bmp differ
diff --git a/winboard/bitmaps/ln33s.bmp b/winboard/bitmaps/ln33s.bmp
new file mode 100644 (file)
index 0000000..4f4b4fe
Binary files /dev/null and b/winboard/bitmaps/ln33s.bmp differ
diff --git a/winboard/bitmaps/ln33w.bmp b/winboard/bitmaps/ln33w.bmp
new file mode 100644 (file)
index 0000000..8498503
Binary files /dev/null and b/winboard/bitmaps/ln33w.bmp differ
diff --git a/winboard/bitmaps/ln49o.bmp b/winboard/bitmaps/ln49o.bmp
new file mode 100644 (file)
index 0000000..70f760e
Binary files /dev/null and b/winboard/bitmaps/ln49o.bmp differ
diff --git a/winboard/bitmaps/ln49s.bmp b/winboard/bitmaps/ln49s.bmp
new file mode 100644 (file)
index 0000000..b9ecc7b
Binary files /dev/null and b/winboard/bitmaps/ln49s.bmp differ
diff --git a/winboard/bitmaps/ln49w.bmp b/winboard/bitmaps/ln49w.bmp
new file mode 100644 (file)
index 0000000..16f45eb
Binary files /dev/null and b/winboard/bitmaps/ln49w.bmp differ
diff --git a/winboard/bitmaps/ln72o.bmp b/winboard/bitmaps/ln72o.bmp
new file mode 100644 (file)
index 0000000..cb23356
Binary files /dev/null and b/winboard/bitmaps/ln72o.bmp differ
diff --git a/winboard/bitmaps/ln72s.bmp b/winboard/bitmaps/ln72s.bmp
new file mode 100644 (file)
index 0000000..f0a88ce
Binary files /dev/null and b/winboard/bitmaps/ln72s.bmp differ
diff --git a/winboard/bitmaps/ln72w.bmp b/winboard/bitmaps/ln72w.bmp
new file mode 100644 (file)
index 0000000..e55a5e8
Binary files /dev/null and b/winboard/bitmaps/ln72w.bmp differ
index bd928ca..259a7d0 100644 (file)
 #define PACKAGE_NAME "WinBoard"\r
 \r
 /* Define to the full name and version of this package. */\r
-#define PACKAGE_STRING "WinBoard 4.7.2"\r
+#define PACKAGE_STRING "WinBoard master-20130828"\r
 \r
 /* Define to the one symbol short name of this package. */\r
 #define PACKAGE_TARNAME "winboard"\r
 \r
 /* Define to the version of this package. */\r
-#define PACKAGE_VERSION "4.7.2"\r
+#define PACKAGE_VERSION "master-20130828"\r
 \r
 /* Define the Windows-specific FILE version info.  this *MUST* be four comma separated 16-bit integers */\r
-#define PACKAGE_FILEVERSION 4,7,2013,828\r
+#define PACKAGE_FILEVERSION 4,7,2013,0829\r
 \r
 #define PTY_ITERATION\r
 \r
index f9171a2..0d04e0f 100644 (file)
 #define BUILT_IN_SOUND_NAMES {\\r
   "Beepbeep", "Ching", "Click", "Cymbal", "Ding", "Drip", \\r
   "Gong", "Laser", "Move", "Penalty", "Phone", "Pop", "Pop2", \\r
-  "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \\r
+  "Roar", "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \\r
   "Alarm", "Challenge", "Channel", "Channel1", "Draw", "Kibitz", \\r
   "Lose", "Request", "Seek", "Shout", "SShout", "Tell", "Unfinished", \\r
   "Win", NULL \\r
 }\r
 \r
 #define SETTINGS_FILE         "winboard.ini"\r
-#define DEBUG_FILE            "winboard.debug"
+#define DEBUG_FILE            "winboard.debug"\r
 \r
 #define ICS_LOGON             "ics.ini"\r
 \r
index 7ad0f61..efa3068 100644 (file)
 #define IDC_NFG_Edit                    1023\r
 #define IDC_EpDrawMoveCount             1023\r
 #define IDC_PolyglotDir                 1023\r
+#define OPT_TagsSave                    1023\r
 #define OPT_ConsoleText                 1024\r
 #define OPT_LightSquareColor            1024\r
 #define OPT_CommandInput                1025\r
 #define OPT_ExtraInfoInMoveHistory      1437\r
 #define OPT_HighlightMoveArrow          1438\r
 #define OPT_AutoLogo                   1439\r
+#define OPT_AutoTags                    1440\r
 #define IDC_BUTTON1                     1440\r
 #define IDC_BrowseForPolyglotDir        1440\r
 #define IDC_BrowseForEGTB               1441\r
 #define OPT_VariantMakruk               1529\r
 #define OPT_VariantSChess               1530\r
 #define OPT_VariantSpartan              1531\r
+#define OPT_VariantASEAN                1532\r
 #define OPT_VariantGrand                1534\r
+#define OPT_VariantLion                 1535\r
+#define OPT_EngineVariant               1560\r
 #define IDC_Files                       1550\r
 #define IDC_Ranks                       1551\r
 #define IDC_Holdings                    1552\r
index a2532a5..e46647d 100644 (file)
@@ -42,7 +42,6 @@
 \r
 /* Imports from winboard.c */\r
 extern HWND hwndMain;\r
-Boolean ParseFEN(Board b, int *stm, char *FEN);\r
 \r
 /* File globals */\r
 static char *copyTemp;\r
@@ -54,7 +53,7 @@ CopyFENToClipboard()
   char *fen = NULL;\r
 \r
   if(gameMode == EditPosition) EditPositionDone(TRUE); // [HGM] mak sure castling rights are set consistently\r
-  fen = PositionToFEN(currentMove, NULL);\r
+  fen = PositionToFEN(currentMove, NULL, 1);\r
   if (!fen) {\r
     DisplayError(_("Unable to convert position to FEN."), 0);\r
     return;\r
@@ -305,7 +304,7 @@ VOID PasteGameOrFENFromClipboard()
   }\r
 \r
   // [HGM] paste any: make still smarter, to allow pasting of games without tags, recognize FEN in stead\r
-  if(!ParseFEN(dummyBoard, &dummy, buf) ) {\r
+  if(!ParseFEN(dummyBoard, &dummy, buf, 0) ) {\r
       PasteGameFromString( buf );\r
   }\r
   else {\r
index 823d7dd..b3cf334 100644 (file)
@@ -118,6 +118,7 @@ EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
   case WM_COMMAND:\r
     switch (LOWORD(wParam)) {\r
     case IDOK:\r
+    case OPT_TagsSave:\r
       if (canEditTags) {\r
        char *p, *q;\r
        /* Read changed options from the dialog box */\r
@@ -133,13 +134,13 @@ EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
        }\r
        *p = NULLCHAR; err = 0;\r
         if(resPtr) *resPtr = strdup(str); else\r
-       if(bookUp) SaveToBook(str); else\r
+       if(bookUp) SaveToBook(str), DisplayBook(currentMove); else\r
        err = ReplaceTags(str, &gameInfo);\r
        if (err) DisplayError(_("Error replacing tags."), err);\r
 \r
        free(str);\r
       }\r
-      TagsPopDown();\r
+      if(LOWORD(wParam) == IDOK) TagsPopDown();\r
       return TRUE;\r
       \r
     case IDCANCEL:\r
index 6a51191..1b8460b 100644 (file)
@@ -112,7 +112,6 @@ VOID NewVariantPopup(HWND hwnd);
 int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY,\r
                   /*char*/int promoChar));\r
 void DisplayMove P((int moveNumber));\r
-Boolean ParseFEN P((Board board, int *blackPlaysFirst, char *fen));\r
 void ChatPopUp P((char *s));\r
 typedef struct {\r
   ChessSquare piece;  \r
@@ -190,6 +189,7 @@ Boolean alwaysOnTop = FALSE;
 RECT boardRect;\r
 COLORREF lightSquareColor, darkSquareColor, whitePieceColor, \r
   blackPieceColor, highlightSquareColor, premoveHighlightColor;\r
+COLORREF markerColor[8] = { 0x00FFFF, 0x0000FF, 0x00FF00, 0xFF0000, 0xFFFF00, 0xFF00FF, 0xFFFFFF, 0x000000 };\r
 HPALETTE hPal;\r
 ColorClass currentColorClass;\r
 \r
@@ -200,7 +200,7 @@ static HBITMAP pieceBitmap[3][(int) BlackPawn]; /* [HGM] nr of bitmaps referred
 static HBRUSH lightSquareBrush, darkSquareBrush,\r
   blackSquareBrush, /* [HGM] for band between board and holdings */\r
   explodeBrush,     /* [HGM] atomic */\r
-  markerBrush,      /* [HGM] markers */\r
+  markerBrush[8],   /* [HGM] markers */\r
   whitePieceBrush, blackPieceBrush, iconBkgndBrush /*, outlineBrush*/;\r
 static POINT gridEndpoints[(BOARD_RANKS + BOARD_FILES + 2) * 2];\r
 static DWORD gridVertexCounts[BOARD_RANKS + BOARD_FILES + 2];\r
@@ -226,8 +226,6 @@ static struct { int x; int y; int mode; } backTextureSquareInfo[BOARD_RANKS][BOA
 #define oldDialog 0 /* cygwin doesn't define _winmajor; mingw does */\r
 #else\r
 \r
-\r
-\r
 #if defined(_winmajor)\r
 #define oldDialog (_winmajor < 4)\r
 #else\r
@@ -2195,6 +2193,7 @@ InsertInPalette(COLORREF color)
 VOID\r
 InitDrawingColors()\r
 {\r
+  int i;\r
   if (pLogPal == NULL) {\r
     /* Allocate enough memory for a logical palette with\r
      * PALETTESIZE entries and set the size and version fields\r
@@ -2226,8 +2225,9 @@ InitDrawingColors()
   blackPieceBrush = CreateSolidBrush(blackPieceColor);\r
   iconBkgndBrush = CreateSolidBrush(GetSysColor(COLOR_BACKGROUND));\r
   explodeBrush = CreateSolidBrush(highlightSquareColor); // [HGM] atomic\r
-  markerBrush = CreateSolidBrush(premoveHighlightColor); // [HGM] markers\r
-  /* [AS] Force rendering of the font-based pieces */\r
+    for(i=0; i<8;i++) markerBrush[i] = CreateSolidBrush(markerColor[i]); // [HGM] markers\r
+\r
+   /* [AS] Force rendering of the font-based pieces */\r
   if( fontBitmapSquareSize > 0 ) {\r
     fontBitmapSquareSize = 0;\r
   }\r
@@ -2301,7 +2301,7 @@ InitDrawingSizes(BoardSize boardSize, int flags)
        && (boardSize < SizePetite || boardSize > SizeBulky) // Archbishop and Chancellor available in entire middle range\r
       || (v == VariantShogi && boardSize != SizeModerate)   // Japanese-style Shogi\r
       ||  v == VariantKnightmate || v == VariantSChess || v == VariantXiangqi || v == VariantSpartan\r
-      ||  v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy ) {\r
+      ||  v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy || v == VariantLion ) {\r
       if(boardSize < SizeMediocre) boardSize = SizePetite; else\r
       if(boardSize > SizeModerate) boardSize = SizeBulky;  else\r
                                    boardSize = SizeMiddling;\r
@@ -2657,6 +2657,9 @@ InitDrawingSizes(BoardSize boardSize, int flags)
     pieceBitmap[0][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "s");\r
     pieceBitmap[1][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "o");\r
     pieceBitmap[2][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "w");\r
+    pieceBitmap[0][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "s");\r
+    pieceBitmap[1][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "o");\r
+    pieceBitmap[2][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "w");\r
 \r
     if(gameInfo.variant == VariantShogi) { /* promoted Gold represemtations */\r
       pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s");\r
@@ -3278,6 +3281,9 @@ BOOL HasHighlightInfo()
     }\r
 \r
     return result;\r
+\r
+\r
+\r
 }\r
 \r
 BOOL IsDrawArrowEnabled()\r
@@ -3469,6 +3475,7 @@ DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc)
             DisplayHoldingsCount(hdc, x, y, flipView, (int) board[row][column]);\r
       else if( column == BOARD_RGHT) /* right align */\r
             DisplayHoldingsCount(hdc, x, y, !flipView, (int) board[row][column]);\r
+      else if( piece == DarkSquare) DisplayHoldingsCount(hdc, x, y, 0, 0);\r
       else\r
       if (appData.monoMode) {\r
         if (piece == EmptySquare) {\r
@@ -3651,7 +3658,7 @@ void DrawSeekDot(int x, int y, int color)
 {\r
        int square = color & 0x80;\r
        HBRUSH oldBrush = SelectObject(hdcSeek, \r
-                       color == 0 ? markerBrush : color == 1 ? darkSquareBrush : explodeBrush);\r
+                       color == 0 ? markerBrush[1] : color == 1 ? darkSquareBrush : explodeBrush);\r
        color &= 0x7F;\r
        if(square)\r
            Rectangle(hdcSeek, boardRect.left+x - squareSize/9, boardRect.top+y - squareSize/9,\r
@@ -3944,8 +3951,7 @@ HDCDrawPosition(HDC hdc, BOOLEAN repaint, Board board)
   for (row = 0; row < BOARD_HEIGHT; row++) {\r
     for (column = 0; column < BOARD_WIDTH; column++) {\r
        if (marker[row][column]) { // marker changes only occur with full repaint!\r
-           HBRUSH oldBrush = SelectObject(hdcmem, \r
-                       marker[row][column] == 2 ? markerBrush : explodeBrush);\r
+           HBRUSH oldBrush = SelectObject(hdcmem, markerBrush[marker[row][column]-1]);\r
            SquareToPos(row, column, &x, &y);\r
            Ellipse(hdcmem, x + squareSize/4, y + squareSize/4,\r
                          x + 3*squareSize/4, y + 3*squareSize/4);\r
@@ -4301,8 +4307,10 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       } else if (PtInRect((LPRECT) &blackRect, pt)) {\r
        ClockClick(!flipClock); break;\r
       }\r
+    if(dragging) { // [HGM] lion: don't destroy dragging info if we are already dragging\r
       dragInfo.start.x = dragInfo.start.y = -1;\r
       dragInfo.from = dragInfo.start;\r
+    }\r
     if(fromX == -1 && frozen) { // not sure where this is for\r
                fromX = fromY = -1; \r
       DrawPosition(forceFullRepaint || FALSE, NULL); /* [AS] */\r
@@ -4322,7 +4330,7 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     if(PromoScroll(pt.x - boardRect.left, pt.y - boardRect.top)) break;\r
     MovePV(pt.x - boardRect.left, pt.y - boardRect.top, boardRect.bottom - boardRect.top);\r
     if ((appData.animateDragging || appData.highlightDragging)\r
-       && (wParam & MK_LBUTTON)\r
+       && (wParam & MK_LBUTTON || dragging == 2)\r
        && dragInfo.from.x >= 0) \r
     {\r
       BOOL full_repaint = FALSE;\r
@@ -4331,7 +4339,7 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
        dragInfo.pos = pt;\r
       }\r
       if (appData.highlightDragging) {\r
-       SetHighlights(fromX, fromY, x, y);\r
+       HoverEvent(highlightInfo.sq[1].x, highlightInfo.sq[1].y, x, y);\r
         if( IsDrawArrowEnabled() && (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT) ) {\r
             full_repaint = TRUE;\r
         }\r
@@ -4466,6 +4474,8 @@ ButtonProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
   return CallWindowProc(buttonDesc[i].wndproc, hwnd, message, wParam, lParam);\r
 }\r
 \r
+static int promoStyle;\r
+\r
 /* Process messages for Promotion dialog box */\r
 LRESULT CALLBACK\r
 Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
@@ -4496,13 +4506,9 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
          PieceToChar(BlackMarshall) != '~')   ) ?\r
               SW_SHOW : SW_HIDE);\r
     /* [HGM] Hide B & R button in Shogi, use Q as promote, N as defer */\r
-    ShowWindow(GetDlgItem(hDlg, PB_Rook),\r
-       gameInfo.variant != VariantShogi ?\r
-              SW_SHOW : SW_HIDE);\r
-    ShowWindow(GetDlgItem(hDlg, PB_Bishop), \r
-       gameInfo.variant != VariantShogi ?\r
-              SW_SHOW : SW_HIDE);\r
-    if(gameInfo.variant == VariantShogi) {\r
+    ShowWindow(GetDlgItem(hDlg, PB_Rook),   !promoStyle ? SW_SHOW : SW_HIDE);\r
+    ShowWindow(GetDlgItem(hDlg, PB_Bishop), !promoStyle ? SW_SHOW : SW_HIDE);\r
+    if(promoStyle) {\r
         SetDlgItemText(hDlg, PB_Queen, "YES");\r
         SetDlgItemText(hDlg, PB_Knight, "NO");\r
         SetWindowText(hDlg, "Promote?");\r
@@ -4523,7 +4529,7 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       promoChar = gameInfo.variant == VariantSuper ? PieceToChar(BlackSilver) : PieceToChar(BlackKing);\r
       break;\r
     case PB_Queen:\r
-      promoChar = gameInfo.variant == VariantShogi ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen));\r
+      promoChar = promoStyle ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen));\r
       break;\r
     case PB_Rook:\r
       promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteRook : BlackRook));\r
@@ -4540,7 +4546,8 @@ Promotion(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteAngel : BlackAngel));\r
       break;\r
     case PB_Knight:\r
-      promoChar = gameInfo.variant == VariantShogi ? '=' : PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight);\r
+      promoChar = gameInfo.variant == VariantShogi ? '=' : promoStyle ? NULLCHAR : \r
+                  ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight));\r
       break;\r
     default:\r
       return FALSE;\r
@@ -4571,8 +4578,9 @@ PromotionPopup(HWND hwnd)
 }\r
 \r
 void\r
-PromotionPopUp()\r
+PromotionPopUp(char choice)\r
 {\r
+  promoStyle = (choice == '+');\r
   DrawPosition(TRUE, NULL);\r
   PromotionPopup(hwndMain);\r
 }\r
@@ -4789,6 +4797,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       nnew = RealizePalette(hdc);\r
       if (nnew > 0) {\r
        paletteChanged = TRUE;\r
+\r
         InvalidateRect(hwnd, &boardRect, FALSE);\r
       }\r
       ReleaseDC(hwnd, hdc);\r
@@ -5131,6 +5140,7 @@ WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
       break;\r
 \r
     case IDM_Rematch:\r
+\r
       RematchEvent();\r
       break;\r
 \r
@@ -6288,6 +6298,7 @@ StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
        SwapEngines(singleList); // temporarily swap first and second, to load a second 'first', ...\r
        ParseArgs(StringGet, &p);\r
        SwapEngines(singleList); // ... and then make it 'second'\r
+\r
        appData.noChessProgram = FALSE;\r
        appData.icsActive = FALSE;\r
       } else if (IsDlgButtonChecked(hDlg, OPT_ChessServer)) {\r
@@ -6865,6 +6876,7 @@ GothicPopUp(char *title, VariantClass variant)
 static char *history[HISTORY_SIZE];\r
 int histIn = 0, histP = 0;\r
 \r
+\r
 VOID\r
 SaveInHistory(char *cmd)\r
 {\r
@@ -6877,6 +6889,7 @@ SaveInHistory(char *cmd)
   histIn = (histIn + 1) % HISTORY_SIZE;\r
   if (history[histIn] != NULL) {\r
     free(history[histIn]);\r
+\r
     history[histIn] = NULL;\r
   }\r
   histP = histIn;\r
@@ -7687,6 +7700,7 @@ DoWriteFile(HANDLE hFile, char *buf, int count, DWORD *outCount,
       else\r
        err = GetLastError();\r
     }\r
+\r
   }\r
   return err;\r
 }\r
@@ -8552,6 +8566,7 @@ HWND gameListOptionsDialog;
 \r
 // low-level front-end: clear text edit / list widget\r
 void\r
+\r
 GLT_ClearList()\r
 {\r
     SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_RESETCONTENT, 0, 0 );\r
@@ -8743,6 +8758,13 @@ EditCommentPopUp(int index, char *title, char *str)
 }\r
 \r
 \r
+int\r
+Roar()\r
+{\r
+  MyPlaySound(&sounds[(int)SoundRoar]);\r
+  return 1;\r
+}\r
+\r
 VOID\r
 RingBell()\r
 {\r
@@ -8900,6 +8922,7 @@ DisplayBlackClock(long timeRemaining, int highlight)
   HDC hdc;\r
   char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : "";\r
 \r
+\r
   if(appData.noGUI) return;\r
   hdc = GetDC(hwndMain);\r
   if (!IsIconic(hwndMain)) {\r
@@ -9918,16 +9941,23 @@ AnimateMove(board, fromX, fromY, toX, toY)
      int toY;\r
 {\r
   ChessSquare piece;\r
+  int x = toX, y = toY;\r
   POINT start, finish, mid;\r
   POINT frames[kFactor * 2 + 1];\r
   int nFrames, n;\r
 \r
+  if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar();\r
+\r
   if (!appData.animate) return;\r
   if (doingSizing) return;\r
   if (fromY < 0 || fromX < 0) return;\r
   piece = board[fromY][fromX];\r
   if (piece >= EmptySquare) return;\r
 \r
+  if(killX >= 0) toX = killX, toY = killY; // [HGM] lion: first to kill square\r
+\r
+again:\r
+\r
   ScreenSquare(fromX, fromY, &start);\r
   ScreenSquare(toX, toY, &finish);\r
 \r
@@ -9966,6 +9996,9 @@ AnimateMove(board, fromX, fromY, toX, toY)
   }\r
   animInfo.pos = finish;\r
   DrawPosition(FALSE, NULL);\r
+\r
+  if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; goto again; } // second leg\r
+\r
   animInfo.piece = EmptySquare;\r
   Explode(board, fromX, fromY, toX, toY);\r
 }\r
index b52ed5a..334a624 100644 (file)
@@ -275,16 +275,17 @@ BEGIN
     EDITTEXT        IDC_GameListFilter,201,136,78,14,ES_AUTOHSCROLL\r
 END\r
 \r
-DLG_EditTags DIALOG DISCARDABLE  6, 18, 167, 140\r
+DLG_EditTags DIALOG DISCARDABLE  6, 18, 223, 140\r
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME\r
 CAPTION "Edit Tags"\r
 FONT 8, "MS Sans Serif"\r
 BEGIN\r
-    PUSHBUTTON      "OK",IDOK,58,122,50,14\r
-    PUSHBUTTON      "Cancel",OPT_TagsCancel,114,122,50,14\r
+    PUSHBUTTON      "OK",IDOK,114,122,50,14\r
+    PUSHBUTTON      "Cancel",OPT_TagsCancel,170,122,50,14\r
+    PUSHBUTTON      "Save",OPT_TagsSave,58,122,50,14\r
     CONTROL         "",OPT_TagsText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | \r
                     ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | \r
-                    WS_HSCROLL | WS_TABSTOP,2,2,162,115\r
+                    WS_HSCROLL | WS_TABSTOP,2,2,218,115\r
     PUSHBUTTON      "&Edit",OPT_EditTags,2,122,50,14\r
 END\r
 \r
@@ -444,7 +445,7 @@ BEGIN
     PUSHBUTTON      "Cancel",IDCANCEL,208,86,50,14\r
 END\r
 \r
-DLG_GeneralOptions DIALOG DISCARDABLE  0, 0, 300, 197\r
+DLG_GeneralOptions DIALOG DISCARDABLE  0, 0, 300, 211\r
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
 CAPTION "General Options"\r
 FONT 8, "MS Sans Serif"\r
@@ -497,8 +498,12 @@ BEGIN
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,160,151,10\r
     CONTROL         "One-Click Move",OPT_SmartMove,\r
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,160,151,10\r
-    DEFPUSHBUTTON   "OK",IDOK,180,178,50,14\r
-    PUSHBUTTON      "Cancel",IDCANCEL,236,178,50,14\r
+    CONTROL         "auto-Display Tags",OPT_AutoTags,\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,174,151,10\r
+    CONTROL         "auto-Display Comment",OPT_AutoComment,\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,174,151,10\r
+    DEFPUSHBUTTON   "OK",IDOK,180,192,50,14\r
+    PUSHBUTTON      "Cancel",IDCANCEL,236,192,50,14\r
 END\r
 \r
 DLG_IcsOptions DIALOGEX 0, 0, 302, 268\r
@@ -708,6 +713,8 @@ BEGIN
                     70,10\r
     CONTROL         "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON,\r
                     9,104,70,10\r
+    CONTROL         "&Mighty Lion",OPT_VariantLion,"Button",BS_AUTORADIOBUTTON,\r
+                    9,114,70,10\r
     CONTROL         "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,80,14,\r
                     70,10\r
     CONTROL         "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,80,24,70,\r
@@ -728,6 +735,8 @@ BEGIN
                     94,70,10\r
     CONTROL         "&makruk",OPT_VariantMakruk,"Button",BS_AUTORADIOBUTTON,80,\r
                     104,70,10\r
+    CONTROL         "&ASEAN",OPT_VariantASEAN,"Button",BS_AUTORADIOBUTTON,80,\r
+                    114,70,10\r
     CONTROL         "&gothic",OPT_VariantGothic,"Button",BS_AUTORADIOBUTTON,154,14,\r
                     70,10\r
     CONTROL         "&capablanca",OPT_VariantCapablanca,"Button",BS_AUTORADIOBUTTON,154,\r
@@ -750,16 +759,25 @@ BEGIN
                     10\r
     CONTROL         "&xiangqi",OPT_VariantXiangqi,"Button",BS_AUTORADIOBUTTON,154,114,70,\r
                     10\r
-    GROUPBOX        "Variant",GPB_Variant,4,4,215,125\r
-    LTEXT           "Board size:",GPB_Board,10,165,40,8,WS_TABSTOP\r
-    LTEXT           "ranks",IDC_Height,77,165,38,8\r
-    EDITTEXT        IDC_Ranks,60,161,14,14,ES_AUTOHSCROLL\r
-    LTEXT           "files",IDC_Width,133,165,80,8\r
-    EDITTEXT        IDC_Files,116,161,14,14,ES_AUTOHSCROLL\r
-    LTEXT           "Holdings with room for:",IDC_Hand,10,183,90,8\r
-    EDITTEXT        IDC_Holdings,93,179,14,14,ES_AUTOHSCROLL\r
-    LTEXT           "pieces",IDC_Pieces,110,183,100,8\r
-    LTEXT           "('-1' means defaults for selected variant)",IDC_Def,10,201,210,8\r
+    CONTROL         "",OPT_EngineVariant+0,"Button",BS_AUTORADIOBUTTON,9,134,70,10\r
+    CONTROL         "",OPT_EngineVariant+1,"Button",BS_AUTORADIOBUTTON,80,134,70,10\r
+    CONTROL         "",OPT_EngineVariant+2,"Button",BS_AUTORADIOBUTTON,154,134,70,10\r
+    CONTROL         "",OPT_EngineVariant+3,"Button",BS_AUTORADIOBUTTON,9,144,70,10\r
+    CONTROL         "",OPT_EngineVariant+4,"Button",BS_AUTORADIOBUTTON,80,144,70,10\r
+    CONTROL         "",OPT_EngineVariant+5,"Button",BS_AUTORADIOBUTTON,154,144,70,10\r
+    CONTROL         "",OPT_EngineVariant+6,"Button",BS_AUTORADIOBUTTON,9,154,70,10\r
+    CONTROL         "",OPT_EngineVariant+7,"Button",BS_AUTORADIOBUTTON,80,154,70,10\r
+    CONTROL         "",OPT_EngineVariant+8,"Button",BS_AUTORADIOBUTTON,154,154,70,10\r
+    GROUPBOX        "Variant",GPB_Variant,4,4,215,165\r
+    LTEXT           "Board size:",GPB_Board,10,183,40,8,WS_TABSTOP\r
+    LTEXT           "ranks",IDC_Height,77,183,38,8\r
+    EDITTEXT        IDC_Ranks,60,179,14,14,ES_AUTOHSCROLL\r
+    LTEXT           "files",IDC_Width,133,183,80,8\r
+    EDITTEXT        IDC_Files,116,179,14,14,ES_AUTOHSCROLL\r
+    LTEXT           "Holdings with room for:",IDC_Hand,10,201,90,8\r
+    EDITTEXT        IDC_Holdings,93,197,14,14,ES_AUTOHSCROLL\r
+    LTEXT           "pieces",IDC_Pieces,110,201,100,8\r
+    LTEXT           "('-1' means defaults for selected variant)",IDC_Def,10,217,210,8\r
     DEFPUSHBUTTON   "OK",IDOK,114,232,50,14\r
     PUSHBUTTON      "Cancel",IDCANCEL,170,232,50,14\r
 END\r
@@ -1900,6 +1918,7 @@ V72O                    BITMAP  MOVEABLE PURE   "bitmaps/v72o.bmp"
 S72O                    BITMAP  MOVEABLE PURE   "bitmaps/s72o.bmp"\r
 L72O                    BITMAP  MOVEABLE PURE   "bitmaps/l72o.bmp"\r
 DK72O                   BITMAP  MOVEABLE PURE   "bitmaps/dk72o.bmp"\r
+LN72O                   BITMAP  MOVEABLE PURE   "bitmaps/ln72o.bmp"\r
 WP72O                   BITMAP  MOVEABLE PURE   "bitmaps/wp72o.bmp"\r
 WN72O                   BITMAP  MOVEABLE PURE   "bitmaps/wn72o.bmp"\r
 WL72O                   BITMAP  MOVEABLE PURE   "bitmaps/wl72o.bmp"\r
@@ -1920,6 +1939,7 @@ V72S                    BITMAP  MOVEABLE PURE   "bitmaps/v72s.bmp"
 S72S                    BITMAP  MOVEABLE PURE   "bitmaps/s72s.bmp"\r
 L72S                    BITMAP  MOVEABLE PURE   "bitmaps/l72s.bmp"\r
 DK72S                   BITMAP  MOVEABLE PURE   "bitmaps/dk72s.bmp"\r
+LN72S                   BITMAP  MOVEABLE PURE   "bitmaps/ln72s.bmp"\r
 WP72S                   BITMAP  MOVEABLE PURE   "bitmaps/wp72s.bmp"\r
 WN72S                   BITMAP  MOVEABLE PURE   "bitmaps/wn72s.bmp"\r
 WL72S                   BITMAP  MOVEABLE PURE   "bitmaps/wl72s.bmp"\r
@@ -1940,6 +1960,7 @@ V72W                    BITMAP  MOVEABLE PURE   "bitmaps/v72w.bmp"
 S72W                    BITMAP  MOVEABLE PURE   "bitmaps/s72w.bmp"\r
 L72W                    BITMAP  MOVEABLE PURE   "bitmaps/l72w.bmp"\r
 DK72W                   BITMAP  MOVEABLE PURE   "bitmaps/dk72w.bmp"\r
+LN72W                   BITMAP  MOVEABLE PURE   "bitmaps/ln72w.bmp"\r
 E49O                    BITMAP  MOVEABLE PURE   "bitmaps/e49o.bmp"\r
 A49O                    BITMAP  MOVEABLE PURE   "bitmaps/a49o.bmp"\r
 AA49O                   BITMAP  MOVEABLE PURE   "bitmaps/as49o.bmp"\r
@@ -1956,6 +1977,7 @@ V49O                    BITMAP  MOVEABLE PURE   "bitmaps/v49o.bmp"
 S49O                    BITMAP  MOVEABLE PURE   "bitmaps/s49o.bmp"\r
 L49O                    BITMAP  MOVEABLE PURE   "bitmaps/l49o.bmp"\r
 DK49O                   BITMAP  MOVEABLE PURE   "bitmaps/dk49o.bmp"\r
+LN49O                   BITMAP  MOVEABLE PURE   "bitmaps/ln49o.bmp"\r
 WP49O                   BITMAP  MOVEABLE PURE   "bitmaps/wp49o.bmp"\r
 WN49O                   BITMAP  MOVEABLE PURE   "bitmaps/wn49o.bmp"\r
 WL49O                   BITMAP  MOVEABLE PURE   "bitmaps/wl49o.bmp"\r
@@ -1976,6 +1998,7 @@ V49S                    BITMAP  MOVEABLE PURE   "bitmaps/v49s.bmp"
 S49S                    BITMAP  MOVEABLE PURE   "bitmaps/s49s.bmp"\r
 L49S                    BITMAP  MOVEABLE PURE   "bitmaps/l49s.bmp"\r
 DK49S                   BITMAP  MOVEABLE PURE   "bitmaps/dk49s.bmp"\r
+LN49S                   BITMAP  MOVEABLE PURE   "bitmaps/ln49s.bmp"\r
 WP49S                   BITMAP  MOVEABLE PURE   "bitmaps/wp49s.bmp"\r
 WN49S                   BITMAP  MOVEABLE PURE   "bitmaps/wn49s.bmp"\r
 WL49S                   BITMAP  MOVEABLE PURE   "bitmaps/wl49s.bmp"\r
@@ -1996,6 +2019,7 @@ V49W                    BITMAP  MOVEABLE PURE   "bitmaps/v49w.bmp"
 S49W                    BITMAP  MOVEABLE PURE   "bitmaps/s49w.bmp"\r
 L49W                    BITMAP  MOVEABLE PURE   "bitmaps/l49w.bmp"\r
 DK49W                   BITMAP  MOVEABLE PURE   "bitmaps/dk49w.bmp"\r
+LN49W                   BITMAP  MOVEABLE PURE   "bitmaps/ln49w.bmp"\r
 A33O                    BITMAP  MOVEABLE PURE   "bitmaps/a33o.bmp"\r
 AA33O                   BITMAP  MOVEABLE PURE   "bitmaps/as33o.bmp"\r
 C33O                    BITMAP  MOVEABLE PURE   "bitmaps/c33o.bmp"\r
@@ -2010,6 +2034,7 @@ W33O                    BITMAP  MOVEABLE PURE   "bitmaps/w33o.bmp"
 M33O                    BITMAP  MOVEABLE PURE   "bitmaps/m33o.bmp"\r
 O33O                    BITMAP  MOVEABLE PURE   "bitmaps/o33o.bmp"\r
 DK33O                   BITMAP  MOVEABLE PURE   "bitmaps/dk33o.bmp"\r
+LN33O                   BITMAP  MOVEABLE PURE   "bitmaps/ln33o.bmp"\r
 WP33O                   BITMAP  MOVEABLE PURE   "bitmaps/wp33o.bmp"\r
 WN33O                   BITMAP  MOVEABLE PURE   "bitmaps/wn33o.bmp"\r
 WL33O                   BITMAP  MOVEABLE PURE   "bitmaps/wl33o.bmp"\r
@@ -2028,6 +2053,7 @@ W33W                    BITMAP  MOVEABLE PURE   "bitmaps/w33w.bmp"
 M33W                    BITMAP  MOVEABLE PURE   "bitmaps/m33w.bmp"\r
 O33W                    BITMAP  MOVEABLE PURE   "bitmaps/o33w.bmp"\r
 DK33W                   BITMAP  MOVEABLE PURE   "bitmaps/dk33w.bmp"\r
+LN33W                   BITMAP  MOVEABLE PURE   "bitmaps/ln33w.bmp"\r
 A33S                    BITMAP  MOVEABLE PURE   "bitmaps/a33s.bmp"\r
 AA33S                   BITMAP  MOVEABLE PURE   "bitmaps/as33s.bmp"\r
 C33S                    BITMAP  MOVEABLE PURE   "bitmaps/c33s.bmp"\r
@@ -2042,6 +2068,7 @@ W33S                    BITMAP  MOVEABLE PURE   "bitmaps/w33s.bmp"
 M33S                    BITMAP  MOVEABLE PURE   "bitmaps/m33s.bmp"\r
 O33S                    BITMAP  MOVEABLE PURE   "bitmaps/o33s.bmp"\r
 DK33S                   BITMAP  MOVEABLE PURE   "bitmaps/dk33s.bmp"\r
+LN33S                   BITMAP  MOVEABLE PURE   "bitmaps/ln33s.bmp"\r
 WP33S                   BITMAP  MOVEABLE PURE   "bitmaps/wp33s.bmp"\r
 WN33S                   BITMAP  MOVEABLE PURE   "bitmaps/wn33s.bmp"\r
 WL33S                   BITMAP  MOVEABLE PURE   "bitmaps/wl33s.bmp"\r
@@ -2208,6 +2235,7 @@ SSHOUT                  WAVE    DISCARDABLE     "sounds/sshout.wav"
 TELL                    WAVE    DISCARDABLE     "sounds/tell.wav"\r
 UNFINISHED              WAVE    DISCARDABLE     "sounds/unfinished.wav"\r
 WIN                     WAVE    DISCARDABLE     "sounds/win.wav"\r
+ROAR                    WAVE    DISCARDABLE     "sounds/roar.wav"\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
index 84733de..6f2adeb 100644 (file)
@@ -210,6 +210,8 @@ GeneralOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
     CHECK_BOX(OPT_HighlightMoveArrow, appData.highlightMoveWithArrow);\r
     CHECK_BOX(OPT_AutoLogo, appData.autoLogo); // [HGM] logo\r
     CHECK_BOX(OPT_SmartMove, appData.oneClick); // [HGM] one-click\r
+    CHECK_BOX(OPT_AutoTags, appData.autoDisplayTags); // [HGM]\r
+    CHECK_BOX(OPT_AutoComment, appData.autoDisplayComment); // [HGM]\r
 \r
 #undef CHECK_BOX\r
 \r
@@ -259,6 +261,8 @@ GeneralOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       appData.highlightMoveWithArrow=IS_CHECKED(OPT_HighlightMoveArrow);\r
       appData.autoLogo             =IS_CHECKED(OPT_AutoLogo); // [HGM] logo\r
       appData.oneClick             =IS_CHECKED(OPT_SmartMove); // [HGM] one-click\r
+      appData.autoDisplayTags      =IS_CHECKED(OPT_AutoTags); // [HGM]\r
+      appData.autoDisplayComment   =IS_CHECKED(OPT_AutoComment); // [HGM]\r
 \r
 #undef IS_CHECKED\r
 \r
@@ -695,6 +699,7 @@ BoardOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       }\r
       DeleteObject(pieces[0]);\r
       DeleteObject(pieces[1]);\r
+\r
       DeleteObject(pieces[2]);\r
       return TRUE;\r
 \r
@@ -838,6 +843,7 @@ int radioButton[] = {
     -1,\r
     -1,\r
     OPT_VariantShogi,\r
+    -1, // Chu\r
     OPT_VariantXiangqi,\r
     OPT_VariantCourier,\r
     OPT_VariantGothic,\r
@@ -853,9 +859,11 @@ int radioButton[] = {
     OPT_VariantGreat,\r
     -1, // Twilight,\r
     OPT_VariantMakruk,\r
+    OPT_VariantASEAN,\r
     OPT_VariantSChess,\r
     OPT_VariantGrand,\r
     OPT_VariantSpartan, // Spartan\r
+    OPT_VariantLion,\r
     -2 // sentinel\r
 };\r
 \r
@@ -863,23 +871,40 @@ VariantClass
 VariantWhichRadio(HWND hDlg)\r
 {\r
   int i=0, j;\r
+  *engineVariant = NULLCHAR;\r
   while((j = radioButton[i++]) != -2) {\r
        if(j == -1) continue; // no menu button\r
        if(IsDlgButtonChecked(hDlg, j) &&\r
           (appData.noChessProgram || strstr(first.variants, VariantName(i-1)))) return (VariantClass) i-1;\r
   }\r
+  for(i=0; i<9; i++) { // check for engine-defined variants\r
+    if(IsDlgButtonChecked(hDlg, OPT_EngineVariant+i) ) {\r
+       GetDlgItemText(hDlg, OPT_EngineVariant+i, engineVariant, MSG_SIZ); // remember name, so we can resolve it later\r
+       return VariantUnknown;\r
+    }\r
+  }\r
   return gameInfo.variant; // If no button checked, keep old\r
 }\r
 \r
 void\r
 VariantShowRadio(HWND hDlg)\r
 {\r
+  char c = *engineVariant;\r
   int i=0, j;\r
   CheckDlgButton(hDlg, radioButton[gameInfo.variant], TRUE);\r
+  *engineVariant = NULLCHAR; // [HGM] kludge to prevent VariantName will always return engineVariant\r
   while((j = radioButton[i++]) != -2) {\r
        if(j == -1) continue; // no menu button\r
        EnableWindow(GetDlgItem(hDlg, j), appData.noChessProgram || strstr(first.variants, VariantName(i-1)));\r
   }\r
+  *engineVariant = c;\r
+  for(i=0; i<9; i++) { // initialize engine-defined variants\r
+    char *v = EngineDefinedVariant(&first, i); // get name of #i\r
+    if(v) { // there is such a variant\r
+       EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), TRUE);     // and enable the button\r
+       SetDlgItemText(hDlg, OPT_EngineVariant+i, v);                  // put its name on button\r
+    } else EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), FALSE); // no such variant; disable button\r
+  }\r
 }\r
 \r
 LRESULT CALLBACK\r
@@ -1397,6 +1422,9 @@ IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
       UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]);\r
       break;\r
 \r
+\r
+\r
+\r
     case OPT_ChooseNormalColor:\r
       ColorizeTextPopup(hDlg, ColorNormal);\r
       UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]);\r
@@ -1775,6 +1803,7 @@ FontsOptionsPopup(HWND hwnd)
 SoundComboData soundComboData[] = {\r
   {N_("Move"), NULL},\r
   {N_("Bell"), NULL},\r
+  {N_("Roar"), NULL},\r
   {N_("ICS Alarm"), NULL},\r
   {N_("ICS Win"), NULL},\r
   {N_("ICS Loss"), NULL},\r
@@ -3003,6 +3032,13 @@ BOOL BrowseForFolder( const char * title, char * path )
     return result;\r
 }\r
 \r
+int\r
+IsMultiFormat(char *s)\r
+{\r
+  char *p = strchr(s, ':');\r
+  return p && p != s+1;\r
+}\r
+\r
 LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
 {\r
   char buf[MAX_PATH];\r
@@ -3018,7 +3054,10 @@ LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM
     /* Initialize the dialog items */\r
     SetDlgItemText( hDlg, IDC_PolyglotDir, appData.polyglotDir );\r
     SetDlgItemInt( hDlg, IDC_HashSize, appData.defaultHashSize, TRUE );\r
+    if(appData.defaultPathEGTB[0])\r
     SetDlgItemText( hDlg, IDC_PathToEGTB, appData.defaultPathEGTB );\r
+    else\r
+    SetDlgItemText( hDlg, IDC_PathToEGTB, appData.egtFormats );\r
     SetDlgItemInt( hDlg, IDC_SizeOfEGTB, appData.defaultCacheSizeEGTB, TRUE );\r
     CheckDlgButton( hDlg, IDC_UseBook, (BOOL) appData.usePolyglotBook );\r
     SetDlgItemText( hDlg, IDC_BookFile, appData.polyglotBook );\r
@@ -3043,7 +3082,11 @@ LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM
       appData.defaultHashSize = GetDlgItemInt(hDlg, IDC_HashSize, NULL, FALSE );\r
       appData.defaultCacheSizeEGTB = GetDlgItemInt(hDlg, IDC_SizeOfEGTB, NULL, FALSE );\r
       GetDlgItemText( hDlg, IDC_PathToEGTB, buf, sizeof(buf) );\r
-      appData.defaultPathEGTB = strdup(buf);\r
+      if(IsMultiFormat(buf)) {\r
+        ASSIGN(appData.egtFormats, buf);\r
+      } else {\r
+        ASSIGN(appData.defaultPathEGTB, buf);\r
+      }\r
       GetDlgItemText( hDlg, IDC_BookFile, buf, sizeof(buf) );\r
       appData.polyglotBook = strdup(buf);\r
       appData.usePolyglotBook = (Boolean) IsDlgButtonChecked( hDlg, IDC_UseBook );\r
index f32fc94..99efab5 100644 (file)
@@ -495,7 +495,7 @@ LRESULT CALLBACK SettingsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa
                if(j == -2) {\r
                          char filter[] =\r
                                "All files\0*.*\0Game files\0*.pgn;*.gam\0Position files\0*.fen;*.epd;*.pos\0"\r
-                               "EXE files\0*.exe\0Tournament files (*.trn)\0*.trn\0"\r
+                               "EXE files\0*.exe;*.jar\0Tournament files (*.trn)\0*.trn\0"\r
                                "BIN Files\0*.bin\0LOG Files\0*.log\0INI Files\0*.ini\0"\r
                                "Image files\0*.bmp\0\0";\r
                          OPENFILENAME ofn;\r
@@ -712,7 +712,7 @@ Option installOptions[] = {
   {   0,  0,    0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") },\r
   {   0,  0,    0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Nickname (optional):") },\r
   {   0,  0,    0, NULL, (void*) &useNick, NULL, NULL, CheckBox, N_("Use nickname in PGN tag") },\r
-  {   0,  0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (*.exe):") },\r
+  {   0,  0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (.exe or .jar):") },\r
   {   0,  0,    0, NULL, (void*) &params, NULL, NULL, TextBox, N_("command-line parameters:") },\r
   {   0,  0,    0, NULL, (void*) &wbOptions, NULL, NULL, TextBox, N_("Special WinBoard options:") },\r
   {   0,  0,    0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("directory:") },\r
index 4b2b915..d3d6ba2 100644 (file)
@@ -183,13 +183,6 @@ extern char *getenv();
 // [HGM] bitmaps: put before incuding the bitmaps / pixmaps, to know how many piece types there are.
 #include "common.h"
 
-#if HAVE_LIBXPM
-#include <X11/xpm.h>
-#define IMAGE_EXT "xpm"
-#else
-#define IMAGE_EXT "xim"
-#endif
-
 #include "bitmaps/icon_white.bm"
 #include "bitmaps/icon_black.bm"
 #include "bitmaps/checkmark.bm"
@@ -430,128 +423,6 @@ String xboardResources[] = {
 /* Max possible square size */
 #define MAXSQSIZE 256
 
-static int xpm_avail[MAXSQSIZE];
-
-#ifdef HAVE_DIR_STRUCT
-
-/* Extract piece size from filename */
-static int
-xpm_getsize (char *name, int len, char *ext)
-{
-    char *p, *d;
-    char buf[10];
-
-    if (len < 4)
-      return 0;
-
-    if ((p=strchr(name, '.')) == NULL ||
-       StrCaseCmp(p+1, ext) != 0)
-      return 0;
-
-    p = name + 3;
-    d = buf;
-
-    while (*p && isdigit(*p))
-      *(d++) = *(p++);
-
-    *d = 0;
-    return atoi(buf);
-}
-
-/* Setup xpm_avail */
-static int
-xpm_getavail (char *dirname, char *ext)
-{
-    DIR *dir;
-    struct dirent *ent;
-    int  i;
-
-    for (i=0; i<MAXSQSIZE; ++i)
-      xpm_avail[i] = 0;
-
-    if (appData.debugMode)
-      fprintf(stderr, "XPM dir:%s:ext:%s:\n", dirname, ext);
-
-    dir = opendir(dirname);
-    if (!dir)
-      {
-         fprintf(stderr, _("%s: Can't access XPM directory %s\n"),
-                 programName, dirname);
-         exit(1);
-      }
-
-    while ((ent=readdir(dir)) != NULL) {
-       i = xpm_getsize(ent->d_name, NAMLEN(ent), ext);
-       if (i > 0 && i < MAXSQSIZE)
-         xpm_avail[i] = 1;
-    }
-
-    closedir(dir);
-
-    return 0;
-}
-
-void
-xpm_print_avail (FILE *fp, char *ext)
-{
-    int i;
-
-    fprintf(fp, _("Available `%s' sizes:\n"), ext);
-    for (i=1; i<MAXSQSIZE; ++i) {
-       if (xpm_avail[i])
-         printf("%d\n", i);
-    }
-}
-
-/* Return XPM piecesize closest to size */
-int
-xpm_closest_to (char *dirname, int size, char *ext)
-{
-    int i;
-    int sm_diff = MAXSQSIZE;
-    int sm_index = 0;
-    int diff;
-
-    xpm_getavail(dirname, ext);
-
-    if (appData.debugMode)
-      xpm_print_avail(stderr, ext);
-
-    for (i=1; i<MAXSQSIZE; ++i) {
-       if (xpm_avail[i]) {
-           diff = size - i;
-           diff = (diff<0) ? -diff : diff;
-           if (diff < sm_diff) {
-               sm_diff = diff;
-               sm_index = i;
-           }
-       }
-    }
-
-    if (!sm_index) {
-       fprintf(stderr, _("Error: No `%s' files!\n"), ext);
-       exit(1);
-    }
-
-    return sm_index;
-}
-#else  /* !HAVE_DIR_STRUCT */
-/* If we are on a system without a DIR struct, we can't
-   read the directory, so we can't collect a list of
-   filenames, etc., so we can't do any size-fitting. */
-int
-xpm_closest_to (char *dirname, int size, char *ext)
-{
-    fprintf(stderr, _("\
-Warning: No DIR structure found on this system --\n\
-         Unable to autosize for XPM/XIM pieces.\n\
-   Please report this error to %s.\n\
-   Include system type & operating system in message.\n"), PACKAGE_BUGREPORT););
-    return size;
-}
-#endif /* HAVE_DIR_STRUCT */
-
-
 /* Arrange to catch delete-window events */
 Atom wm_delete_window;
 void
@@ -949,6 +820,8 @@ PrintArg (ArgType t)
     case ArgTwo:
     case ArgNone:
     case ArgCommSettings:
+    case ArgMaster:
+    case ArgInstall:
       break;
   }
   return p;
@@ -1108,7 +981,7 @@ main (int argc, char **argv)
     debugFP = stderr;
 
     if(argc > 1 && (!strcmp(argv[1], "-v" ) || !strcmp(argv[1], "--version" ))) {
-       printf("%s version %s\n", PACKAGE_NAME, PACKAGE_VERSION);
+      printf("%s version %s\n\n  configure options: %s\n", PACKAGE_NAME, PACKAGE_VERSION, CONFIGURE_OPTIONS);
        exit(0);
     }
 
index 4f54902..d39c604 100644 (file)
@@ -85,16 +85,40 @@ extern char *getenv();
 # define N_(s)  s
 #endif
 
-#include <X11/xpm.h>
+// [HGM] bitmaps of some ICONS used in the engine-outut window
+
+static unsigned char CLEAR_14[28];
+
+static unsigned char WHITE_14[] = {
+0xe0, 0x01, 0x18, 0x06, 0x04, 0x08, 0x02, 0x10, 0x02, 0x10, 0x01, 0x20, 0x01, 0x20,
+0x01, 0x20, 0x01, 0x20, 0x02, 0x10, 0x02, 0x10, 0x04, 0x08, 0x18, 0x06, 0xe0, 0x01
+};
+
+static unsigned char BLACK_14[] = {
+0xe0, 0x01, 0xf8, 0x07, 0xfc, 0x0f, 0xfe, 0x1f, 0xfe, 0x1f, 0xff, 0x3f, 0xff, 0x3f,
+0xff, 0x3f, 0xff, 0x3f, 0xfe, 0x1f, 0xfe, 0x1f, 0xfc, 0x0f, 0xf8, 0x07, 0xe0, 0x01
+};
+
+static unsigned char ANALYZE_14[] = {
+0x80, 0x03, 0x60, 0x0c, 0x10, 0x10, 0x90, 0x10, 0xc8, 0x20, 0x08, 0x20, 0x08, 0x20,
+0x10, 0x10, 0x10, 0x10, 0x68, 0x0c, 0x94, 0x03, 0x0a, 0x00, 0x07, 0x00, 0x00, 0x00
+};
+
+static unsigned char THINK_14[] = {
+0xe0, 0x00, 0x18, 0x03, 0x44, 0x04, 0x42, 0x08, 0x42, 0x08, 0x41, 0x10, 0xe1, 0x13,
+0x41, 0x10, 0x02, 0x08, 0x02, 0x08, 0x04, 0x04, 0x18, 0x03, 0xe0, 0x00, 0x00, 0x00
+};
+
+static unsigned char PONDER_14[] = {
+0x30, 0x03, 0x8c, 0x0c, 0x02, 0x10, 0x01, 0x08, 0x01, 0x10, 0x06, 0x20, 0x04, 0x20,
+0x02, 0x10, 0x04, 0x0c, 0xc8, 0x04, 0x34, 0x03, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00
+};
+
+static unsigned char UNKNOWN_14[] = {
+0xe0, 0x01, 0x58, 0x07, 0xac, 0x0a, 0x56, 0x15, 0xaa, 0x1a, 0x55, 0x35, 0xab, 0x2a,
+0x55, 0x35, 0xab, 0x2a, 0x56, 0x15, 0xaa, 0x1a, 0x54, 0x0d, 0xb8, 0x06, 0xe0, 0x01
+};
 
-// [HGM] pixmaps of some ICONS used in the engine-outut window
-#include "pixmaps/WHITE_14.xpm"
-#include "pixmaps/BLACK_14.xpm"
-#include "pixmaps/CLEAR_14.xpm"
-#include "pixmaps/UNKNOWN_14.xpm"
-#include "pixmaps/THINKING_14.xpm"
-#include "pixmaps/PONDER_14.xpm"
-#include "pixmaps/ANALYZING_14.xpm"
 
 
 /* Module variables */
@@ -104,17 +128,9 @@ static Widget memoWidget;
 
 
 static void
-ReadIcon (char *pixData[], int iconNr, Widget w)
+ReadIcon (unsigned char pixData[], int iconNr, Widget w)
 {
-    int r;
-
-       if ((r=XpmCreatePixmapFromData(xDisplay, XtWindow(w),
-                                      pixData,
-                                      &(icons[iconNr]),
-                                      NULL, NULL /*&attr*/)) != 0) {
-         fprintf(stderr, _("Error %d loading icon image\n"), r);
-         exit(1);
-       }
+    icons[iconNr] = XCreateBitmapFromData(xDisplay, XtWindow(w), (char*) pixData, 14, 14);
 }
 
 void
index 91baa04..1f406cb 100644 (file)
@@ -1271,7 +1271,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent
     XtAddCallback(b_ok, XtNcallback, GenericCallback, (XtPointer)(intptr_t) (30001 + (dlgNr<<16)));
     if(!(option[i].min & NO_CANCEL)) {
       XtSetArg(args[1], XtNfromHoriz, b_ok); // overwrites!
-      b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
+      b_cancel = XtCreateManagedWidget(_("Cancel"), commandWidgetClass, form, args, j);
       XtAddCallback(b_cancel, XtNcallback, GenericCallback, (XtPointer)(intptr_t) (30000 + (dlgNr<<16)));
     }
   }
index 38186c2..4d312f4 100644 (file)
@@ -43,6 +43,7 @@
 -soundTell phone.wav
 -soundChallenge gong.wav
 -soundMove woodthunk.wav
+-soundRoar roar.wav
 -soundIcsAlarm penalty.wav
 -pasteSelection false
 -keepLineBreaksICS false
index d59246f..d631405 100644 (file)
@@ -3429,6 +3429,7 @@ cylinder      Pieces wrap around the board edge
 knightmate    King moves as Knight, and vice versa 
 super         Superchess (shuffle variant with 4 exo-pieces)
 makruk        Thai Chess (shatranj-like, P promotes on 6th rank)
+asean         ASEAN Chess (a modernized version of Makruk)
 spartan       Spartan Chess (black has unorthodox pieces)
 fairy         A catchall variant in which all piece types 
               known to XBoard can participate (8x8)
@@ -4146,7 +4147,6 @@ Here are some other programs you can use with XBoard
 * Fairy-Max::        The Fairy-Max chess engine.
 * HoiChess::         The HoiChess chess engine.
 * Crafty::           The Crafty chess engine.
-* zic2xpm::          The program used to import chess sets from ZIICS.
 @end menu
 
 @node GNU Chess
@@ -4203,45 +4203,6 @@ To use Crafty with XBoard, give the -fcp and -fd options as follows, where
 <crafty's directory> is the directory in which you installed Crafty
 and placed its book and other support files.
 
-@node zic2xpm
-@section zic2xpm
-
-The ``zic2xpm'' program is used to import chess sets from the ZIICS(*)
-program into XBoard. ``zic2xpm'' is part of the XBoard distribution.
-ZIICS is available from:
-
-ftp://ftp.freechess.org/pub/chess/DOS/ziics131.exe
-
-To import ZIICS pieces, do this:
-@table @asis
-@item 1. Unzip ziics131.exe into a directory:
-
-@example
-unzip -L ziics131.exe -d ~/ziics
-@end example
-@item 2. Use zic2xpm to convert a set of pieces to XBoard format.
-
-For example, let's say you want to use the
-FRITZ4 set. These files are named ``fritz4.*'' in the ZIICS distribution.
-
-@example
-mkdir ~/fritz4
-cd ~/fritz4
-zic2xpm ~/ziics/fritz4.*
-@end example
-@item 3. Give XBoard the ``-pixmap'' option when starting up, e.g.:
-
-@example
-xboard -pixmap ~/fritz4
-@end example
-@end table
-
-(*) ZIICS is a separate copyrighted work of Andy McFarland.
-The ``ZIICS pieces'' are copyrighted works of their respective
-creators. Files produced by ``zic2xpm'' are for PERSONAL USE ONLY
-and may NOT be redistributed without explicit permission from
-the original creator(s) of the pieces.
-
 @ifnottex
 @node Copyright
 @unnumbered Copyright
index babb9f0..1616749 100644 (file)
--- a/xboard2.h
+++ b/xboard2.h
@@ -28,4 +28,4 @@ extern int searchTime;
 extern int squareSize, lineGap, defaultLineGap;
 extern int startedFromPositionFile;
 extern char *icsTextMenuString;
-
+extern int hi2X, hi2Y;
diff --git a/zic2xpm.c b/zic2xpm.c
deleted file mode 100644 (file)
index 2fdd078..0000000
--- a/zic2xpm.c
+++ /dev/null
@@ -1,597 +0,0 @@
-/*
-       zic2xpm.c
-
-       Program to convert pieces from ZIICS format to XPM & XIM format.
-       (C version)  By Frank McIngvale <frankm@hiwaay.net>.
-
-       Copyright (C) 1996, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-
-       NOTICE: The piece images distributed with ZIICS are
-           copyrighted works of their original creators.  Images
-            converted with zic2xpm may not be redistributed without
-           the permission of the copyright holders.  Do not contact
-           the authors of zic2xpm or of ZIICS itself to request
-           permission.
-
-       NOTICE:  The format of the ZIICS piece file was gleaned from
-           SHOWSETS.PAS, a part of ZIICS.  Thanks to Andy McFarland
-           (Zek on ICC) for making this source available!  ZIICS is a
-           completely separate and copyrighted work of Andy
-           McFarland.  Use and distribution of ZIICS falls under the
-           ZIICS license, NOT the GNU General Public License.
-
-       NOTICE: The format of the VGA imageblocks was determined
-            by experimentation, and without access to any
-            of Borland Inc.'s BGI library source code.
-
-
-           GNU XBoard is free software: you can redistribute it
-           and/or modify it under the terms of the GNU General Public
-           License as published by the Free Software Foundation,
-           either version 3 of the License, or (at your option) any
-           later version.
-
-           GNU XBoard is distributed in the hope that it will be
-           useful, but WITHOUT ANY WARRANTY; without even the implied
-           warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-           PURPOSE. See the GNU General Public License for more
-           details.
-
-           You should have received a copy of the GNU General Public
-           License along with this program. If not, see
-           http://www.gnu.org/licenses/.
-
-
-       ** If you find a bug in zic2xpm.c, please report it to me,
-          Frank McIngvale (frankm@hiwaay.net) so that I may fix it. **
-*/
-
-/*
-       Usage: zic2xpm file1 [file2 ...]
-
-       We split the ZIICS file(s) into 24 XPM & 24 XIM files with names:
-
-       <piece><type><size>.(xpm|xim).
-
-       Where:
-               piece = p, n, b, r, q, k
-               type = ll, ld, dl, dd
-               size = Piece size.
-
-       Plus 4 files for the light & dark squares.
-
-       This means that you can extract multiple SIZES in one directory
-       without name clashes. Extracting two sets of the SAME
-       size in a directory will cause the second to overwrite
-       the first.
-*/
-
-/*
-   Technical note: Yes, this file is huge. I made it by cramming
-                   `zic2xpm' and `zic2xim' together. This should
-                   be less confusing to use, though.
-*/
-
-#include "config.h"
-#include <stdio.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#endif
-
-#ifndef SEEK_SET
-#define SEEK_SET 0
-#endif
-
-/*
-   XIM file format:
-
-   width       byte
-   height      byte
-
-   Data (1 byte per pixel, row major)
-*/
-
-/*
-   Map colors from ZIICS -> XIM :
-
-   0   0       Dark piece
-   2   1       Dark square
-   15  2       Light piece
-   14  3       Light square
-*/
-
-typedef struct {
-  int zval;            /* ZIICS value */
-  int xval;            /* XIM value */
-} z2xim;
-
-/* Associate VGA color with XPM color/sym */
-
-typedef struct {
-  int cval;            /* VGA pixel value */
-  char xchar;  /* XPM character for this color */
-  char *csym;  /* Symbolic name */
-  char *cdefault; /* Default color */
-} z2xpm;
-
-#define NR_ZIICS_COLORS 4
-#define BUFLEN 100
-
-/* SHOWSETS.PAS (from ZIICS) states that images may only
-   use color numbers 0, 2, 14, and 15 */
-
-z2xim z2xim_tab[NR_ZIICS_COLORS] = {
-  { 0, 0 },
-  { 2, 1 },
-  { 15, 2 },
-  { 14, 3 } };
-
-z2xpm z2xpm_tab[NR_ZIICS_COLORS] = {
-  { 15, 'X', "light_piece", "white" },
-  { 0, ' ', "dark_piece", "black" },
-  { 14, '*', "light_square", "gray" },
-  { 2, '.', "dark_square", "green" } };
-
-void
-fatal (char *str)
-{
-  printf("Fatal error: %s\n", str );
-  exit(1);
-}
-
-z2xim *
-lookup_xim_color (int color)
-{
-  int i;
-
-  for( i=0; i<NR_ZIICS_COLORS; ++i )
-       {
-         if ( z2xim_tab[i].zval == color )
-               return (z2xim_tab + i);
-       }
-
-  fatal("Illegal color in image.");
-
-  /* NOT REACHED */
-  return NULL;                                 /* Make compiler happy */
-}
-
-z2xpm *
-lookup_xpm_color (int color)
-{
-  int i;
-
-  for( i=0; i<NR_ZIICS_COLORS; ++i )
-       {
-         if ( z2xpm_tab[i].cval == color )
-               return (z2xpm_tab + i);
-       }
-
-  fatal("Illegal color in image.");
-
-  /* NOT REACHED */
-  return NULL;                                 /* Make compiler happy */
-}
-
-char *src_name;
-
-int
-up8 (int i)
-{
-  int r;
-
-  r = i % 8;
-  if ( r == 0 )
-       return i;
-
-  return i + 8 - r;
-}
-
-unsigned int
-vga_imagesize (int w, int h)
-{
-  int w8;
-  unsigned int s;
-
-  w8 = up8( w );
-
-  s = 4 + w8/2 * h + 2;
-
-  return s;
-}
-
-unsigned char *
-decode_byte (unsigned char *dest, unsigned char *b, int w)
-{
-  int i, j;
-  unsigned char byte, bit;
-
-  for( i=7; w > 0; --i, --w )
-       {
-         byte = 0;
-
-         /* 1 bit from each plane */
-         for( j=0; j<4; ++j )
-               {
-                 bit = b[j];
-                 bit &= (1 << i);
-                 bit >>= i;
-                 bit <<= 3-j;
-                 byte |= bit;
-               }
-
-         *(dest++) = byte;
-       }
-
-  return dest;
-}
-
-/*
-   W is width of image in PIXELS.
-   SRC is in packed pixel format.
-   DEST is filled with 1 BYTE per PIXEL.
-*/
-unsigned char *
-decode_line (unsigned char *dest, unsigned char *src, int w)
-{
-  unsigned int w8;
-  unsigned int bpp;
-  unsigned char b[4];
-  int i;
-  unsigned char *p;
-
-  p = src;
-  w8 = up8( w );
-
-  /* 4 planes, bpp BYTES per plane */
-  /* Planes are MSB -> LSB */
-  bpp = w8 >> 3;
-
-  while( w > 0 )
-       {
-         for( i=0; i<4; ++i )
-               b[i] = p[i*bpp];
-
-         if ( w > 8 )
-               dest = decode_byte( dest, b, 8 );
-         else
-               dest = decode_byte( dest, b, w );
-
-         w -= 8;
-         ++p;
-       }
-
-  return (src + bpp * 4);
-}
-
-int
-write_xim_header (FILE *fp, int w, int h)
-{
-  fputc( w, fp );
-  fputc( h, fp );
-
-  return 0;
-}
-
-int
-write_xpm_header (FILE *fp, int w, int h)
-{
-  int i;
-  z2xpm *cv;
-
-  fprintf(fp, "/* XPM */\n");
-  fprintf(fp, "/* This file was automatically generated from the file %s\n",
-         src_name );
-  fprintf(fp, "using the program ``zic2xpm''.\n");
-  fprintf(fp, "\n    %s\n    %s\n    %s\n    %s\n    %s\n    %s */\n",
-         "NOTICE: The piece images distributed with ZIICS are",
-         "    copyrighted works of their original creators.  Images",
-          "    converted with zic2xpm may not be redistributed without",
-         "    the permission of the copyright holders.  Do not contact",
-         "    the authors of zic2xpm or of ZIICS itself to request",
-         "    permission.");
-  fprintf( fp, "static char * image_name[] = {\n" );
-  fprintf( fp, "\"%d %d %d 1\",\n", h, w, NR_ZIICS_COLORS );
-
-  cv = z2xpm_tab;
-
-  for( i=0; i<NR_ZIICS_COLORS; ++i, ++cv )
-       {
-         fprintf( fp, "\"%c\tc %s s %s\",\n", cv->xchar,
-                         cv->cdefault, cv->csym );
-       }
-
-  return 0;
-}
-
-void
-create_piece_xim (char *outname, FILE *fpin, int W, int H)
-{
-  FILE *fpout;
-  int w, h, i, j, c;
-  unsigned char *lump, *p, *line;
-  long size;
-  z2xim *ent;
-
-  fpout = fopen( outname, "wb" );
-  if ( !fpout )
-       fatal( "Can't create output file.");
-
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fpin );
-  w = (fgetc(fpin) << 8) | c;
-
-  c = fgetc( fpin );
-  h = (fgetc(fpin) << 8) | c;
-
-  ++w; ++h;
-
-  if ( w != W || h != H )
-       fatal( "Bad header." );
-
-  size = vga_imagesize( w, h ) - 4;
-  lump = (unsigned char*)malloc( size );
-  line = (unsigned char*)malloc( w );
-
-  if ( !lump || !line )
-       fatal( "Out of memory." );
-
-  fread( lump, 1, size, fpin );
-
-  /* Write XIM header */
-  write_xim_header( fpout, w, h );
-
-  p = lump;
-
-  /* Write XIM data */
-  for( i=0; i<h; ++i )
-       {
-         p = decode_line( line, p, w );
-
-         for( j=0; j<w; ++j )
-               {
-                 ent = lookup_xim_color( line[j] );
-                 fputc( ent->xval, fpout );
-               }
-       }
-
-  free( lump );
-  free( line );
-  fclose( fpout );
-}
-
-void
-create_piece_xpm (char *outname, FILE *fpin, int W, int H)
-{
-  FILE *fpout;
-  int w, h, i, j, c;
-  unsigned char *lump, *p, *line;
-  long size;
-  z2xpm *cv;
-
-  fpout = fopen( outname, "wb" );
-  if ( !fpout )
-       fatal( "Can't create output file.");
-
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fpin );
-  w = (fgetc(fpin) << 8) | c;
-
-  c = fgetc( fpin );
-  h = (fgetc(fpin) << 8) | c;
-
-  ++w; ++h;
-
-  if ( w != W || h != H )
-       fatal( "Bad header." );
-
-  size = vga_imagesize( w, h ) - 4;
-  lump = (unsigned char*)malloc( size );
-  line = (unsigned char*)malloc( w );
-
-  if ( !lump || !line )
-       fatal( "Out of memory." );
-
-  fread( lump, 1, size, fpin );
-
-  /* Write XPM header */
-  write_xpm_header( fpout, w, h );
-
-  p = lump;
-
-  /* Write XPM data */
-  for( i=0; i<h; ++i )
-       {
-         p = decode_line( line, p, w );
-
-         fprintf( fpout, "\"" );
-         for( j=0; j<w; ++j )
-               {
-                 cv = lookup_xpm_color( line[j] );
-                 fprintf( fpout, "%c", cv->xchar );
-               }
-         fprintf( fpout, "\",\n" );
-       }
-
-  fprintf( fpout, "};\n" );
-
-  free( lump );
-  free( line );
-  fclose( fpout );
-}
-
-/* The order of the pieces in the ZIICS piece file (from SHOWSETS.PAS) */
-char *pieces = "prkqbn";
-char *pname[] = { "Pawn", "Rook", "King", "Queen", "Bishop", "Knight" };
-
-/* The suborder - Light/Light, Light/Dark, etc. */
-char *prefixes[] = { "ll", "ld", "dl", "dd" };
-
-int
-process_file_xim (char *filename)
-{
-  int w, h, piece, kind, c;
-  int nr_pieces = 6;
-  int nr_kinds = 4;
-  FILE *fp;
-  char buf[BUFLEN];
-
-  src_name = filename;
-
-  fp = fopen( filename, "rb" );
-  if ( !fp )
-       fatal( "Can't open input file." );
-
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fp );
-  w = (fgetc(fp) << 8) | c;
-
-  c = fgetc( fp );
-  h = (fgetc(fp) << 8) | c;
-
-  ++w; ++h;
-
-  if ( w != h )
-       {
-         printf("ERROR: Can only convert square pieces.\n");
-         printf("       (This set is %dx%d)\n", w, h );
-         exit(1);
-       }
-
-  printf("Creating XIM files...\n");
-  printf("File: %s, W=%d, H=%d\n", filename, w, h );
-  fseek( fp, 0, SEEK_SET );
-
-  /* Write .XIM files */
-  for( piece = 0; piece < nr_pieces; ++piece )
-       {
-         printf("%s ", pname[piece] );
-
-         for( kind = 0; kind < nr_kinds; ++kind )
-               {
-                 printf( "." );
-                 /* Form output filename -- <piece><kind><size>.xim */
-                 snprintf(buf, BUFLEN, "%c%s%d.xim", pieces[piece], prefixes[kind], w);
-                 create_piece_xim( buf, fp, w, h );
-               }
-         printf("\n");
-       }
-
-  /* Write the light & dark squares */
-  snprintf( buf, BUFLEN, "lsq%d.xim", w );
-  printf("Light Square" );
-  create_piece_xim( buf, fp, w, h );
-
-  snprintf( buf, BUFLEN, "dsq%d.xim", w );
-  printf("\nDark Square" );
-  create_piece_xim( buf, fp, w, h );
-  printf("\n");
-
-  printf("Successfully converted!!\n" );
-
-  fclose( fp );
-
-  return 0;
-}
-
-int
-process_file_xpm (char *filename)
-{
-  int w, h, piece, kind, c;
-  int nr_pieces = 6;
-  int nr_kinds = 4;
-  FILE *fp;
-  char buf[BUFLEN];
-
-  src_name = filename;
-
-  fp = fopen( filename, "rb" );
-  if ( !fp )
-       fatal( "Can't open input file." );
-
-  /* Header is two ints -- Width then Height, x86 format */
-  c = fgetc( fp );
-  w = (fgetc(fp) << 8) | c;
-
-  c = fgetc( fp );
-  h = (fgetc(fp) << 8) | c;
-
-  ++w; ++h;
-
-  if ( w != h )
-       {
-         printf("ERROR: Can only convert square pieces.\n");
-         printf("       (This set is %dx%d)\n", w, h );
-         exit(1);
-       }
-
-  printf("Creating XPM files...\n");
-  printf("File: %s, W=%d, H=%d\n", filename, w, h );
-  fseek( fp, 0, SEEK_SET );
-
-  /* Write .XPM files */
-  for( piece = 0; piece < nr_pieces; ++piece )
-       {
-         printf("%s ", pname[piece] );
-
-         for( kind = 0; kind < nr_kinds; ++kind )
-               {
-                 printf( "." );
-                 /* Form output filename -- <piece><kind><size>.xpm */
-                 snprintf(buf, BUFLEN, "%c%s%d.xpm", pieces[piece], prefixes[kind], w);
-                 create_piece_xpm( buf, fp, w, h );
-               }
-         printf("\n");
-       }
-
-  /* Write the light & dark squares */
-  snprintf( buf, BUFLEN, "lsq%d.xpm", w );
-  printf("Light Square" );
-  create_piece_xpm( buf, fp, w, h );
-
-  snprintf( buf, BUFLEN, "dsq%d.xpm", w );
-  printf("\nDark Square" );
-  create_piece_xpm( buf, fp, w, h );
-  printf("\n");
-
-  printf("Successfully converted!!\n" );
-
-  fclose( fp );
-
-  return 0;
-}
-
-int
-main (int argc, char **argv)
-{
-  int i;
-
-  if ( argc < 2 )
-       {
-         printf("ZIC2XPM 2.01 - by Frank McIngvale (frankm@hiwaay.net)\n");
-         printf("Copyright (C) 1996 Free Software Foundation, Inc.\n\n");
-         printf("Usage: zic2xpm file1 [file2 ...]\n\n");
-         printf("  Splits each file (ZIICS piece files) into 26 XPM & XIM files\n");
-         printf("  suitable for use in XBoard 3.5 or later.\n");
-         printf("\n* ZIICS is a copyrighted work of Andy McFarland (Zek on ICC) *\n");
-         return 1;
-       }
-
-
-  setbuf( stdout, NULL );
-
-  for( i=1; i<argc; ++i )
-       {
-         process_file_xpm( argv[i] );
-         process_file_xim( argv[i] );
-       }
-
-  fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
-         "NOTICE: The piece images distributed with ZIICS are",
-         "    copyrighted works of their original creators.  Images",
-          "    converted with zic2xpm may not be redistributed without",
-         "    the permission of the copyright holders.  Do not contact",
-         "    the authors of zic2xpm or of ZIICS itself to request",
-         "    permission.");
-  return 0;
-}
diff --git a/zic2xpm.man b/zic2xpm.man
deleted file mode 100644 (file)
index 8f8977d..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-.\" Copyright (C) 1996, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-.\" See section COPYING below.
-.TH zic2xpm 6 "11 Apr 1996" "zic2xpm 2.0" "Games"
-.SH NAME
-zic2xpm \- Tool to convert ZIICS chess pieces into XBoard (XPM/XIM) pieces.
-.SH SYNOPSIS
-zic2xpm
-.B file1 [file2 ...]
-.SH DESCRIPTION
-.B zic2xpm
-converts one or more ZIICS piece files into a format that can
-be used by XBoard.
-If you give more than one filename, be aware that multiple sets
-of the same size cannot exist in one directory. Multiple sets
-of different sizes can exist in a single directory.
-.SH EXAMPLE
-If you wanted to make a directory containing the sets SET2.V32,
-SET2.V40, SET2.V50, and SET2.V56, all of which are located in
-~/ziics, you could do:
-
-.nf
-      mkdir Sets
-      cd Sets
-      zic2xpm ~/ziics/SET2.*
-.fi
-
-You would then run XBoard like this:
-
-.nf
-     xboard -pixmap Sets
-.fi
-.SH BUGS
-Please report any bugs to
-.B frankm@hiwaay.net
-.SH "SEE ALSO"
-.BR
-.BR xboard ( 6 ).
-.SH AUTHOR
-Frank McIngvale (frankm@hiwaay.net)
-.SH COPYING
-Copyright (C) 1996,2009 Free Software Foundation, Inc.
-.PP
-NOTICE: The piece images distributed with ZIICS are
-copyrighted works of their original creators.  Images 
-converted with zic2xpm may not be redistributed without
-the permission of the copyright holders.  Do not contact
-the authors of zic2xpm or of ZIICS itself to request
-permission. 
-.PP
-NOTICE:  The format of the ZIICS piece file was gleaned from
-SHOWSETS.PAS, a part of ZIICS.  Thanks to Andy McFarland
-(Zek on ICC) for making this source available!  ZIICS is a 
-completely separate and copyrighted work of Andy
-McFarland.  Use and distribution of ZIICS falls under the
-ZIICS license, NOT the GNU General Public License.
-.PP
-NOTICE: The format of the VGA imageblocks was determined
-by experimentation, and without access to any
-of Borland Inc.'s BGI library source code.
-.PP
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.  However, the above notices
-MUST BE RETAINED in any copy that you redistribute or modify.
-.PP
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-.PP
-You should have received a copy of the GNU General Public License
-along with this program; if not, see http://www.gnu.org/licenses/.