Filewatcher File Search
FTP Search
  
Directory 
  
Content Search 
   
pkg://xattax-1.0-2.src.rpm:29168/xattax.tar.gz  info  downloads

xataxx/ 40711   1750      1           0  5553057043  10510 5ustar  iialanbinxataxx/README100600   1750      1        2371  5553057035  11471 0ustar  iialanbin
I pulled this off  ftp.x.org and tweaked it for Linux. I mailed the patches
back but they bounced. Anyway this is a fun game not to be played by the
easily frustrated.

Original Readme:

To Install :
	edit the Imakefile as appropriate for your system. create a DATADIR
		for the xataxx boards and bitmaps, and define BINDIR if
		you want the game to go somewhere other than the default
		system area.
	"make Makefile" OR "xmkmf"
	make install

	.... and that should be it. Full, gory docs in the manpage.

	This game has a lot that could still happen to it - if you are
interested in working on the code, see the TODO file. Since we are way
overloaded here at CMU, there is somewhat small chance that we'll be
able to get around to chopping items from the list anytime soon. If
you do anything to the code, please let us know back here so we can
merge it into future releases.

	In any case xataxx *is* a finished game as is. Have fun ...


						-jim
						jz1j@andrew.cmu.edu

p.s. the supplied Makefile is for bootstrap purposes ONLY. It is unlikely
	it will work unmodified on your system. "make Makefile" before
	doing anything else.

p.p.s this has only been tested (and heavily) on MIT X11R4 systems. Others
	are caveat emptor, but patches welcome if neccesary :-)
xataxx/TODO100600   1750      1        1221  5010723474  11265 0ustar  iialanbinThese are things that we would love to have time to put in, but,
as we are desperately overloaded college students, don't. If you
send us patches for these, we will love you forever and put your
name in the next release and splat it just *EVERYWHERE*
                                              -jim zelenka

Optimize robot
Better color- more than just cursor
internal board generation
Be able to change board sizes w/out changing data dir, restarting
Keep track of player ratings
clean up event handling on two windows (select on both all the time...)
better graphics on moves
dynamically figure out data in boards.num
four player mode
resizeable window
xataxx/bits.c100600   1750      1       10654  5103153007  11724 0ustar  iialanbin#include <stdio.h>
#include <ctype.h>
#include <X11/Xlib.h>
#include <math.h>
#include <sys/socket.h>
#include <sys/time.h>
#include "struct.h"

#define TITLESIZE (7*X_PIECE_SIZE)

#ifndef FD_SET

#define MAXSELFD	64
typedef long	fd_mask;
#define NFDBITS	(sizeof(fd_mask) * NBBY)	/* bits per mask (power of 2!)*/
#define NFDSHIFT 5				/* Shift based on above */
#ifndef howmany
#define	howmany(x, y)	(((x)+((y)-1))/(y))
#endif howmany

#define	NBBY	8		/* number of bits in a byte */


#define	FD_SETSIZE	64


#define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
#define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
#define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p)	bzero((char *)(p), sizeof(*(p)))

#endif

extern Display *dpy, *odpy, *currdpy;
extern Window win, owin, currwin;
extern GC gc, ogc, currgc;
extern int xsize, ysize, obstacle_color, scr, oscr;
extern int botmode;
extern Pixmap bamp, obamp, currbamp;
extern int xwin,ywin;
Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock;
int oldw, oldb;
Cursor upc, downc, oupc, odownc;
Bool perfection;

int waitferkey();


msec_wait(millsecs)
int millsecs;
{
	struct timeval tv;

	tv.tv_sec = 0;
	tv.tv_usec = millsecs;
	select(0, 0, 0, 0, &tv);
}

waitferkey(tm) /* returns nonzero on timeout, zero on key or click */
int tm;
{
  fd_set readbits, rb2;
  int sock1, sock2, sockh, tsec=0;
  long t1, t2;
  XEvent event;
  Bool ploop = True;
  char c;
  struct timeval timeout;

  timeout.tv_sec = (long) tm;
  timeout.tv_usec = 0;
  FD_ZERO(&readbits);
  sock1 = ConnectionNumber(dpy);
  if (botmode)
    sock2 = ConnectionNumber(odpy);
  if (sock1 > sock2)
    sockh = sock1;
  else
    sockh = sock2;
  if (!botmode)
    sockh = sock1;
  FD_SET(sock1, &readbits);
  if (botmode)
    FD_SET(sock2, &readbits);
  sockh++;
  rb2 = readbits;
 while (ploop) {
  readbits = rb2;
  timeout.tv_sec = ((long) tm - tsec);
  t1 = (long) time((long *) 0);
  if (select (sockh, &readbits, NULL, NULL, &timeout)) {
  t2 = (long) time((long *) 0);
  tsec += (t2-t1);
  if(XCheckWindowEvent(dpy, win, ButtonPressMask | KeyPressMask | ButtonReleaseMask |
  	    ExposureMask, &event)) {
	switch(event.type) {
		case ButtonPress:
		break;
		case ButtonRelease:
			ploop = False;
		break;
		case Expose:
		break;
		case KeyPress:
			XLookupString(&event, &c, 1, NULL, NULL);
			if (c == 'q')
				quit();
			if (isalpha(c) || isspace(c))
			   ploop = False;
		break;
                default:
		break;
	}
  }
  if(botmode)
    if(XCheckWindowEvent(odpy, owin, ButtonPressMask | KeyPressMask | ButtonReleaseMask |
  	    ExposureMask, &event)) {
	switch(event.type) {
		case ButtonPress:
		break;
		case ButtonRelease:
			ploop = False;
		break;
		case Expose:
		break;
		case KeyPress:
			XLookupString(&event, &c, 1, NULL, NULL);
			if (c == 'q')
				quit();
			if (isalpha(c) || isspace(c))
			   ploop = False;
		break;
                default:
		break;
	}
   }
  }
  else { /* we have timedout */
    return(1);
  }
 }
 return(0);
}

quit()
{
	XCloseDisplay(dpy);
	if (botmode)
		XCloseDisplay(odpy);
	exit(0);
}

draw_circle(x,y,color)
     int x,y,color;
{
  Pixmap wmap, bmap;

  if (currdpy == dpy) {
	wmap = mapw;
	bmap = mapb;
  }
  else {
	wmap = omapw;
	bmap = omapb;
  }

  if (color==WHITE)
    XCopyArea(currdpy, wmap, currbamp, currgc,0,0,X_PIECE_SIZE,
	     Y_PIECE_SIZE, x*X_PIECE_SIZE,y*Y_PIECE_SIZE);
  else
    XCopyArea(currdpy, bmap, currbamp, currgc,0,0,X_PIECE_SIZE,
	     Y_PIECE_SIZE, x*X_PIECE_SIZE,y*Y_PIECE_SIZE);
}

draw_obstacle(x,y)
     int x,y;
{
  Pixmap bbl, wbl;

  if (currdpy == dpy) {
	bbl = wblock;
	wbl = bblock;
  }
  else {
	bbl = owblock;
	wbl = obblock;
  }

  if (obstacle_color==WHITE)
    XCopyArea(currdpy, wbl, currbamp, currgc,0,0,X_PIECE_SIZE,
	     Y_PIECE_SIZE, x*X_PIECE_SIZE,y*Y_PIECE_SIZE);
  else
    XCopyArea(currdpy, bbl, currbamp, currgc,0,0,X_PIECE_SIZE,
	     Y_PIECE_SIZE, x*X_PIECE_SIZE,y*Y_PIECE_SIZE);
}

grid(cdpy, cmap, cgc)
Display *cdpy;
Pixmap cmap;
GC cgc;
{
  short x;

  XDrawRectangle(cdpy, cmap, cgc, 0, 0, xwin-1, ywin-1);
  for (x=0;x<return_x_size();x++)
	XDrawLine(cdpy, cmap, cgc, x*X_PIECE_SIZE, 0, x*X_PIECE_SIZE, ywin-1);
  for(x=0;x<return_y_size();x++)
	XDrawLine(cdpy, cmap, cgc, 0, x*Y_PIECE_SIZE, xwin-1, x*Y_PIECE_SIZE);
}

redraw_win(cdpy, cwin, cmap, cgc)
Display *cdpy;
Window cwin;
Pixmap cmap;
GC cgc;
{

  XCopyArea(cdpy, cmap, cwin, cgc, 0, 0, xwin, ywin, 0, 0);
  XFlush(cdpy);
}
xataxx/board.c100600   1750      1       25172  5100746512  12061 0ustar  iialanbin#include <X11/Xlib.h>
#include "struct.h"

extern Display *dpy, *odpy, *currdpy;
extern Window win, owin, currwin;
extern GC gc, ogc, currgc;
extern int xsize, ysize, obstacle_color, scr, oscr, currscr, curr_player;
extern int botmode;
extern Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock, bamp, obamp, currbamp;

#define abs(num) ((num) < 0) ? -(num) : (num);
#define b_look(x,y) board[x*y_board_size+y]

int *board, *bl2;
int x_board_size,y_board_size;
Bool flumping, wflump, fflump, jflump;

/* Allocate game board */
allocate_board(xsize,ysize)
     int xsize,ysize;
{
  int x,y;

  if ((xsize<MIN_BOARD_SIZE)||(xsize>MAX_BOARD_SIZE))
    return(1);
  if ((ysize<MIN_BOARD_SIZE)||(ysize>MAX_BOARD_SIZE))
    return(1);

  x_board_size = xsize;
  y_board_size = ysize;

  board = (int *) malloc(sizeof(int)*x_board_size*y_board_size);
  bl2 = (int *) malloc(sizeof(int)*x_board_size*y_board_size);
  for (x=0;x!=x_board_size;x++)
    for (y=0;y!=y_board_size;y++)
      board[x*y_board_size+y] = EMPTY;

  return(0);
}

#ifdef NEWBOT

/* Copy one board array onto another for look-ahead */
copy_board(bs, bd)
int *bs, *bd;
{
  int x,y;

  for(x=0;x!=xsize;x++)
    for(y=0;y!=ysize;y++)
      bd[x*ysize+y] = bs[x*ysize+y];

  return(0);
}

#endif

/* Add obstruction to current board */
add_obstruction(xpos,ypos)
     int xpos,ypos;
{
  if (!board)
    return(1);

  if ((xpos>x_board_size)||(xpos < 0))
    return(1);
  if ((ypos>y_board_size)||(ypos < 0))
    return(1);

  b_look(xpos,ypos) = OBSTACLE;

  return(0);
}

/* Initialize the player pieces */
place_piece(xpos,ypos,player)
     int xpos,ypos,player;
{
  if ((xpos>x_board_size)||(xpos < 0))
    return(1);
  if ((ypos>y_board_size)||(ypos < 0))
    return(1);

  b_look(xpos,ypos) = player;
  if ((player!=WHITE)&&(player!=BLACK))
    return(1);

  return(1);
}

update_square(x,y,xnew,ynew,player)
int x,y,xnew,ynew,player;
{
  Pixmap smap;

  if ((x>=0)&&(x<x_board_size)&&(y>=0)&&(y<y_board_size))
    if ((b_look(x,y)!=EMPTY)&&(b_look(x,y)!=OBSTACLE)&&b_look(x,y)!=player) {
      b_look(x,y) = player; 
      if (flumping && jflump) {
        if (player == WHITE)
          smap = mapw;
        else
          smap = mapb;
        blat(xnew, ynew, x, y, smap, dpy, scr, gc, win, bamp);
        if (botmode) {
          if (player == WHITE)
	    smap = omapw;
          else
	    smap = omapb;
          blat(xnew, ynew, x, y, smap, odpy, oscr, ogc, owin, obamp);
	}
      }
    }
}

/* Move a piece.
   Return 1 if the piece cannot be moved.
   */
move_piece(xcurr,ycurr,xnew,ynew,player)
     int xcurr,ycurr,xnew,ynew,player;
{
  int xdiff,ydiff,other_player,p;
  Pixmap smap;

  /* Player must own current position */
  if (b_look(xcurr,ycurr) != player)
    return(1);

  /* The new position must be empty */
  if (b_look(xnew,ynew) != EMPTY)
    return(1);

  /* Check the validity of moving to the new position */
  xdiff = abs(xcurr-xnew);
  ydiff = abs(ycurr-ynew);

  /* Simple one square slurp */
  if ((xdiff <= 1)&&(ydiff <=1))
    b_look(xnew,ynew) = player;
  else {
    if ((xdiff <= 2)&&(ydiff <=2)) {
      b_look(xcurr,ycurr) = EMPTY;
      b_look(xnew,ynew) = player;
      redraw_win(dpy, win, bamp, gc);
      if (botmode)
        redraw_win(odpy, owin, obamp, ogc);
    }
    else
      return(1);
  }
  if(flumping) {
    if (player == WHITE)
	smap = mapw;
    else
	smap = mapb;
    blat(xcurr, ycurr, xnew, ynew, smap, dpy, scr, gc, win, bamp);
    if (botmode) {
      if (player == WHITE)
	smap = omapw;
      else
	smap = omapb;
      blat(xcurr, ycurr, xnew, ynew, smap, odpy, oscr, ogc, owin, obamp);
    }
  }
  /* Update the squares around the new one */
  update_square((xnew-1),(ynew-1),xnew,ynew,player);
  update_square((xnew),(ynew-1),xnew,ynew,player);
  update_square((xnew+1),(ynew-1),xnew,ynew,player);
  update_square((xnew+1),(ynew),xnew,ynew,player);
  update_square((xnew+1),(ynew+1),xnew,ynew,player);
  update_square((xnew),(ynew+1),xnew,ynew,player);
  update_square((xnew-1),(ynew+1),xnew,ynew,player);
  update_square((xnew-1),(ynew),xnew,ynew,player);

  return(0);
}

#ifdef NEWBOT

sample_move(xcurr,ycurr,xnew,ynew,player)
     int xcurr,ycurr,xnew,ynew,player;
{
  int xdiff,ydiff,other_player,p;

  /* Player must own current position */
  if (b_look(xcurr,ycurr) != player)
    return(1);

  /* The new position must be empty */
  if (b_look(xnew,ynew) != EMPTY)
    return(1);

  /* Check the validity of moving to the new position */
  xdiff = abs(xcurr-xnew);
  ydiff = abs(ycurr-ynew);

  /* Simple one square slurp */
  if ((xdiff <= 1)&&(ydiff <=1))
    b_look(xnew,ynew) = player;
  else {
    if ((xdiff <= 2)&&(ydiff <=2)) {
      b_look(xcurr,ycurr) = EMPTY;
      b_look(xnew,ynew) = player;
    }
    else
      return(1);
  }
  /* Update the squares around the new one */
  update_square((xnew-1),(ynew-1),xnew,ynew,player);
  update_square((xnew),(ynew-1),xnew,ynew,player);
  update_square((xnew+1),(ynew-1),xnew,ynew,player);
  update_square((xnew+1),(ynew),xnew,ynew,player);
  update_square((xnew+1),(ynew+1),xnew,ynew,player);
  update_square((xnew),(ynew+1),xnew,ynew,player);
  update_square((xnew-1),(ynew+1),xnew,ynew,player);
  update_square((xnew-1),(ynew),xnew,ynew,player);

  return(0);
}

#endif

int b_peek(x,y)
int x,y;
{
  return(board[x*y_board_size+y]);
}

/* Return an array of integers specifying the board */
int *return_board()
{
  return(board);
}

return_x_size()
{
  return(x_board_size);
}

return_y_size()
{
  return(y_board_size);
}

/* Return 1 if the game is at an end. */
end_game()
{
  int x,y;

  for (x=0;x!=x_board_size;x++)
    for (y=0;y!=y_board_size;y++)
      if (b_look(x,y)==EMPTY)
	return(0);
  
  return(1);
}

/* Clean the board */
clean_board()
{
  int x,y;

  for (x=0;x!=x_board_size;x++)
    for (y=0;y!=y_board_size;y++)
      if (b_look(x,y)!=OBSTACLE)
	b_look(x,y) = EMPTY;
}

/* Return the number of pieces belonging to player. */
count_board(player)
     int player;
{
  int x,y,count=0;

  for (x=0;x!=x_board_size;x++)
    for (y=0;y!=y_board_size;y++)
      if (b_look(x,y)==player)
	count++;

  return(count);
}
  
#define do_check(x,y,player) \
  if (((x)>=0)&&((x)<x_board_size)&&((y)>=0)&&((y)<y_board_size)) \
    if (b_look((x),(y))==EMPTY) \
      return(1);

/* Return 1 if player has a valid move at x,y. */
check_move(x,y,player)
     int x,y,player;
{
  do_check(x-1,y-1,player);
  do_check(x,y-1,player);
  do_check(x+1,y-1,player);
  do_check(x+1,y,player);
  do_check(x+1,y+1,player);
  do_check(x,y+1,player);
  do_check(x-1,y+1,player);
  do_check(x-1,y,player);

  do_check(x-2,y-2,player);
  do_check(x-1,y-2,player);
  do_check(x,y-2,player);
  do_check(x+1,y-2,player);
  do_check(x+2,y-2,player);
  do_check(x+2,y-1,player);
  do_check(x+2,y,player);
  do_check(x+2,y+1,player);
  do_check(x+2,y+2,player);
  do_check(x+1,y+2,player);
  do_check(x,y+2,player);
  do_check(x-1,y+2,player);
  do_check(x-2,y+2,player);
  do_check(x-2,y+1,player);
  do_check(x-2,y,player);
  do_check(x-2,y-1,player);
  return(0);
}

/* Return 1 if player has a valid move. */
valid_move(player)
{
  int x,y;

  for (x=0;x!=x_board_size;x++)
    for (y=0;y!=y_board_size;y++)
      if (b_look(x,y)==player)
	if (check_move(x,y,player))
	  return(1);

  return(0);
}

typedef struct {
  int ox,oy;
  int nx,ny;
} thing;

b_look2(x,y)
     int x,y;
{
  if ((x>=0)&&(x<x_board_size)&&(y>=0)&&(y<y_board_size))
    return(b_look(x,y));
  else
    return(OBSTACLE);
}

thing best;
int best_count,oplayer,curr_count;

evaluate(oldx,oldy,newx,newy,oplayer)
{
  if ((newx>=0)&&(newx<x_board_size)&&(newy>=0)&&(newy<y_board_size)) { 
    if (b_look2(newx,newy)==EMPTY) { 
    if (b_look2((newx-1),(newy-1))==oplayer) 
      curr_count++; 
    if (b_look2(newx,(newy-1))==oplayer) 
      curr_count++; 
    if (b_look2((newx+1),(newy-1))==oplayer) 
      curr_count++; 
    if (b_look2((newx+1),newy)==oplayer) 
      curr_count++; 
    if (b_look2((newx+1),(newy+1))==oplayer) 
      curr_count++; 
    if (b_look2(newx,(newy+1))==oplayer) 
      curr_count++; 
    if (b_look2((newx-1),(newy+1))==oplayer) 
      curr_count++; 
    if (b_look2((newx-1),newy)==oplayer) 
      curr_count++; 
    if (curr_count > best_count) { 
      if ((best_count==-1)||(random()&1)) { 
	best.ox = oldx; 
        best.oy = oldy; 
	best.nx = newx; 
	best.ny = newy; 
        best_count = curr_count; 
      } 
    } 
  }
}
}

#ifdef NEWBOT

smart_robot(player)
int player;
{
  int botp, enemp, oppon, bgross, egross, bnet, enet, nx, ny;
  thing b1, b2;

  oppon = (player==WHITE) ? BLACK : WHITE;
  botp = count_board(player);
  enemp = count_board(oppon);
  copy_board(board, bl2);
  best_count = -500;

  for (x=0;x!=x_board_size;x++) {
    for (y=0;y!=y_board_size;y++) {
      if (b_look(x,y)==player) {
        bgross = count_board(player);
	egross = count_board(oppon); /* must get values for nx, ny & loop */
        if ((nx>=0) && (nx<x_board_size) && (ny>=0) && (ny<y_board_size)) {
	  sample_move(x, y, nx, ny, player);
	  robot_move(oppon);
	  bnet = bgross - botp;
	  enet = egross - enemp; 
	  if ((bnet-enet) > best_count) {
	    b1.ox = x;
	    b1.oy = y;
            b1.nx = nx;
	    b1.ny = ny;
            best_count = (bnet-enet);
          }
	}
      }
    }
  }
}

#endif

/* Make a move for player. */
orobot_move(player)
     int player;
{
  int x,y;

  best_count = -1;
  best.ox = -1;
  oplayer = (player==WHITE) ? BLACK : WHITE;

  for (x=0;x!=x_board_size;x++)
    for (y=0;y!=y_board_size;y++) {
      if (b_look(x,y)==player) {
	curr_count=1; evaluate(x,y,(x-1),(y-1),oplayer);
	curr_count=1; evaluate(x,y,(x),(y-1),oplayer);
	curr_count=1; evaluate(x,y,(x+1),(y-1),oplayer);
	curr_count=1; evaluate(x,y,(x+1),(y),oplayer);
	curr_count=1; evaluate(x,y,(x+1),(y+1),oplayer);
	curr_count=1; evaluate(x,y,(x),(y+1),oplayer);
	curr_count=1; evaluate(x,y,(x-1),(y+1),oplayer);
	curr_count=1; evaluate(x,y,(x-1),(y),oplayer);
	
	curr_count= 0; evaluate(x,y,(x-2),(y-2),oplayer);
	curr_count= 0; evaluate(x,y,(x-1),(y-2),oplayer);
	curr_count= 0; evaluate(x,y,(x),(y-2),oplayer);
	curr_count= 0; evaluate(x,y,(x+1),(y-2),oplayer);
	curr_count= 0; evaluate(x,y,(x+2),(y-2),oplayer);
	curr_count= 0; evaluate(x,y,(x+2),(y-1),oplayer);
	curr_count= 0; evaluate(x,y,(x+2),(y),oplayer);
	curr_count= 0; evaluate(x,y,(x+2),(y+1),oplayer);
	curr_count= 0; evaluate(x,y,(x+2),(y+2),oplayer);
	curr_count= 0; evaluate(x,y,(x+1),(y+2),oplayer);
	curr_count= 0; evaluate(x,y,(x),(y+2),oplayer);
	curr_count= 0; evaluate(x,y,(x-1),(y+2),oplayer);
	curr_count= 0; evaluate(x,y,(x-2),(y+2),oplayer);
	curr_count= 0; evaluate(x,y,(x-2),(y+1),oplayer);
	curr_count= 0; evaluate(x,y,(x-2),(y),oplayer);
	curr_count= 0; evaluate(x,y,(x-2),(y-1),oplayer);
      }
    }
  if (best_count==-1)
    return;
  move_piece(best.ox,best.oy,best.nx,best.ny,player);
}








xataxx/boards.num100600   1750      1           4  4753312176  12514 0ustar  iialanbin29

xataxx/colbits.c100600   1750      1       13006  5103153264  12421 0ustar  iialanbin#include <stdio.h>
#include <ctype.h>
#include <X11/Xlib.h>
#include <math.h>
#include <sys/socket.h>
#include <sys/time.h>
#include "struct.h"

#define TITLESIZE (7*X_PIECE_SIZE)

#ifndef FD_SET

#define MAXSELFD	64
typedef long	fd_mask;
#define NFDBITS	(sizeof(fd_mask) * NBBY)	/* bits per mask (power of 2!)*/
#define NFDSHIFT 5				/* Shift based on above */
#ifndef howmany
#define	howmany(x, y)	(((x)+((y)-1))/(y))
#endif howmany

#define	NBBY	8		/* number of bits in a byte */


#define	FD_SETSIZE	64


#define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
#define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
#define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p)	bzero((char *)(p), sizeof(*(p)))

#endif

extern Display *dpy, *odpy, *currdpy;
extern Window win, owin, currwin;
extern GC gc, ogc, currgc;
extern int xsize, ysize, obstacle_color, scr, oscr;
extern int botmode;
extern Pixmap bamp, obamp, currbamp;
extern int xwin,ywin;
extern Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock;
extern int oldw, oldb;
extern Cursor upc, downc, oupc, odownc;
extern Bool perfection;

int waitferkey();

readbitmaps()
{
  unsigned int x, y, xh, yh;
  Pixmap curs, cmask, loader;
  XColor fg,bg,garbage;

  XSync(dpy, True);
  XReadBitmapFile(dpy, win, WHITESTONE, &x, &y, &loader, &xh, &yh);
  mapw = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
  XCopyPlane(dpy, loader, mapw, gc, 0, 0, x, y, 0, 0, 1);
  XFreePixmap(dpy, loader);
  XReadBitmapFile(dpy, win, BLACKSTONE, &x, &y, &loader, &xh, &yh);
  mapb = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
  XCopyPlane(dpy, loader, mapb, gc, 0, 0, x, y, 0, 0, 1);
  XFreePixmap(dpy, loader);
  XReadBitmapFile(dpy, win, BLACKBLOCK, &x, &y, &loader, &xh, &yh);
  bblock = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
  XCopyPlane(dpy, loader, bblock, gc, 0, 0, x, y, 0, 0, 1);
  XFreePixmap(dpy, loader);
  XReadBitmapFile(dpy, win, WHITEBLOCK, &x, &y, &loader, &xh, &yh);
  wblock = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
  XCopyPlane(dpy, loader, wblock, gc, 0, 0, x, y, 0, 0, 1);
  XFreePixmap(dpy, loader);

  fg.pixel = WhitePixel(dpy,scr);
  bg.pixel = BlackPixel(dpy,scr);
  XQueryColor(dpy, DefaultColormap(dpy,scr), &fg);
  XQueryColor(dpy, DefaultColormap(dpy,scr), &bg);
  XAllocNamedColor(dpy, DefaultColormap(dpy,scr), "lime green", &fg, &garbage);
  XAllocNamedColor(dpy, DefaultColormap(dpy,scr), "magenta", &bg, &garbage);

  XReadBitmapFile(dpy, win, UPCURSOR, &x, &y, &curs, &xh, &yh);
  XReadBitmapFile(dpy, win, UPMASK, &x, &y, &cmask, &xh, &yh);

  upc = XCreatePixmapCursor(dpy, curs, cmask, &fg, &bg, xh, yh);
  XFreePixmap(dpy,curs);
  XFreePixmap(dpy,cmask);

  XReadBitmapFile(dpy, win, DOWNCURSOR, &x, &y, &curs, &xh, &yh);
  XReadBitmapFile(dpy, win, DOWNMASK, &x, &y, &cmask, &xh, &yh);
  downc = XCreatePixmapCursor(dpy, curs, cmask, &fg, &bg, xh, yh);
  XFreePixmap(dpy,curs);
  XFreePixmap(dpy,cmask);
  XDefineCursor(dpy,win,upc);
  if (botmode) {
	XSync(odpy, True);
  	fg.pixel = WhitePixel(odpy,oscr);
  	bg.pixel = BlackPixel(odpy,oscr);
  	XQueryColor(odpy, DefaultColormap(odpy,oscr), &fg);
  	XQueryColor(odpy, DefaultColormap(odpy,oscr), &bg);
    XAllocNamedColor(odpy, DefaultColormap(odpy,oscr), "lime green", &fg, &garbage);
    XAllocNamedColor(odpy, DefaultColormap(odpy,oscr), "magenta", &bg, &garbage);
	XReadBitmapFile(odpy, owin, BLACKSTONE, &x, &y, &loader, &x, &y);
  	omapb = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
  	XCopyPlane(odpy, loader, omapb, ogc, 0, 0, x, y, 0, 0, 1);
  	XFreePixmap(odpy, loader);
	XReadBitmapFile(odpy, owin, WHITESTONE, &x, &y, &loader, &x, &y);
  	omapw = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
  	XCopyPlane(odpy, loader, omapw, ogc, 0, 0, x, y, 0, 0, 1);
  	XFreePixmap(odpy, loader);
  	XReadBitmapFile(odpy, owin, BLACKBLOCK, &x, &y, &loader, &x, &y);
  	obblock = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
  	XCopyPlane(odpy, loader, obblock, ogc, 0, 0, x, y, 0, 0, 1);
  	XFreePixmap(odpy, loader);
  	XReadBitmapFile(odpy, owin, WHITEBLOCK, &x, &y, &loader, &x, &y);
  	owblock = XCreatePixmap(odpy, owin, x, y, DefaultDepth(odpy,oscr));
  	XCopyPlane(odpy, loader, owblock, ogc, 0, 0, x, y, 0, 0, 1);
  	XFreePixmap(odpy, loader);

  	XReadBitmapFile(odpy, owin, UPCURSOR, &x, &y, &curs, &xh, &yh);
        XReadBitmapFile(odpy, owin, UPMASK, &x, &y, &cmask, &x, &y);
  	oupc = XCreatePixmapCursor(odpy, curs, cmask, &fg, &bg, xh, yh);
  	XFreePixmap(odpy,curs);
        XFreePixmap(odpy,cmask);
  	XReadBitmapFile(odpy, owin, DOWNCURSOR, &x, &y, &curs, &xh, &yh);
        XReadBitmapFile(odpy, owin, DOWNMASK, &x, &y, &cmask, &x, &y);
  	odownc = XCreatePixmapCursor(odpy, curs, cmask, &fg, &bg, xh, yh);
	XFreePixmap(odpy,curs);
        XFreePixmap(odpy,cmask);
 	XDefineCursor(odpy,owin,oupc);
	XFlush(odpy);
  }
}

show_title()
{
  Pixmap title, otitle, loader;
  int ax, ay, x, y, hx, hy;

  XReadBitmapFile(dpy, win, TITLE, &x, &y, &loader, &hx, &hy);
  title = XCreatePixmap(dpy, win, x, y, DefaultDepth(dpy,scr));
  XCopyPlane(dpy, loader, title, gc, 0, 0, x, y, 0, 0, 1);
  XFreePixmap(dpy, loader);
  if (botmode)
    XReadBitmapFile(odpy, owin, TITLE, &x, &y, &otitle, &hx, &hy);
  ax = ((return_x_size()*X_PIECE_SIZE)-x) / 2;
  ay = ax;
  XCopyArea(dpy, title, win, gc, 0,0, x, y, ax, ay);
  if (botmode)
    XCopyArea(odpy, otitle, owin, ogc, 0,0, x, y, ax, ay);
  show_scores(dpy, win, gc, oldw, oldb);
  if (botmode)
    show_scores(odpy, owin, ogc, oldw, oldb);
}

















xataxx/demo.c100600   1750      1        2352  4753312202  11667 0ustar  iialanbin#include <stdio.h>
#include <X11/Xlib.h>
#include "struct.h"

extern int obstacle_color, oldw, oldb;
extern Display *dpy, *odpy;
extern Window win, owin;
extern int botmode;

#define DEMODELAY 1

demo()
{
  XEvent event;
  int curr_player=WHITE,currx,curry,x,y;
  char mess[100];

  srandom(time(NULL));
  x = return_x_size();
  y = return_y_size();
  place_piece(0,0,WHITE);
  place_piece(x-1,y-1,WHITE);
  place_piece(0,y-1,BLACK);
  place_piece(x-1,0,BLACK);
  obstacle_color = curr_player;
/*
  XNextEvent(dpy,&event);
*/
  redraw_all(curr_player);
  if (botmode) {
    XNextEvent(odpy,&event);
    redraw_all(curr_player);
  }

    redraw_all(curr_player);
    while (!end_game()) {
      robot_move(WHITE);
      if (valid_move(BLACK))
        obstacle_color = BLACK;
      oldw = count_board(WHITE);
      oldb = count_board(BLACK);
      redraw_all(curr_player);
      if(!waitferkey(DEMODELAY))
	return(1);
      robot_move(BLACK);
      if (valid_move(WHITE))
        obstacle_color = WHITE;
      oldw = count_board(WHITE);
      oldb = count_board(BLACK);
      redraw_all(curr_player);
      if(!waitferkey(DEMODELAY))
	return(1);
    }
    oldw = count_board(WHITE);
    oldb = count_board(BLACK);
    redraw_all(curr_player);
    return(0);

}xataxx/display.c100600   1750      1       25252  5103155666  12445 0ustar  iialanbin#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <math.h>
#include "struct.h"

Display *dpy,*odpy,*currdpy;
Window win,owin,currwin;
GC gc,ogc,currgc;
int xsize,ysize,obstacle_color;
extern int botmode;
extern int oldw, oldb;
int scr, oscr, currscr;
extern Cursor upc, downc, oupc, odownc;
Pixmap bamp, obamp, currbamp;
int xwin,ywin, curr_player;
extern Bool flumping;
extern int botlevel;


print_board()
{
  int x,y,*board;
  int i,j;

  x = return_x_size();
  y = return_y_size();

  board = (int *) return_board();

  for (i=0;i!=y;i++) {
    for (j=0;j!=x;j++)
      printf("%d ",board[j*y+i]);
    printf("\n");
  }
}

initialize_display(name)
     char *name;
{
  int scn;
  XSetWindowAttributes attr;
  XGCValues gcvalues;
  XSizeHints hints;
  XClassHint classhint;
  XWMHints wmhint;

  xsize = return_x_size();
  ysize = return_y_size();
  xwin = xsize*X_PIECE_SIZE;
  ywin = ysize*Y_PIECE_SIZE+TEXT_SIZE;
  hints.min_width = xwin;
  hints.max_width = xwin;
  hints.min_height = ywin;
  hints.max_height = ywin;
  hints.flags = PMinSize | PMaxSize;
  classhint.res_name = "xataxx";
  classhint.res_class = "xataxx";
  wmhint.input = True;
  wmhint.flags = InputHint;

  if (xwin < 120) xwin = 120;
  if (!(dpy = XOpenDisplay(NULL))) {
    fprintf(stderr,"Could not open local display.  Bummer, drag.\n");
    exit(1);
  }
  if (botmode) {
    if (!(odpy = XOpenDisplay(name))) {
      fprintf(stderr,"Could not open display %s.  Bummer, drag.\n",name);
      exit(1);
    }
  }
#ifdef DEBUG
	printf("Display(s) open.\n");
#endif
  scn = DefaultScreen(dpy);
  scr = scn;
  win = XCreateWindow(dpy,DefaultRootWindow(dpy),100,100,xwin,ywin,
                            1,DefaultDepth(dpy,scr),InputOutput,CopyFromParent,0,0);
  attr.backing_store = Always;
  attr.event_mask = ButtonPressMask | KeyPressMask | ButtonReleaseMask 
    | ExposureMask | MotionNotify;
  attr.background_pixel = BlackPixel(dpy,scr);
  XChangeWindowAttributes(dpy,win,CWEventMask|CWBackingStore|CWBackPixel,&attr);
  XSetWMHints(dpy, win, &wmhint);
  XSetClassHint(dpy, win, &classhint);
  XSetIconName(dpy,win,"XAtaxx: White");
  XStoreName(dpy,win,"XAtaxx: White");
  XSetNormalHints(dpy, win, &hints);
  XMapWindow(dpy,win);
  gcvalues.foreground = WhitePixel(dpy,scn);
  gcvalues.background = BlackPixel(dpy,scn);
  gc = XCreateGC(dpy,win,GCForeground|GCBackground,&gcvalues);
  XSetFunction(dpy,gc,GXcopy);
  bamp = XCreatePixmap(dpy, win, xwin, ywin, DefaultDepth(dpy,scr));
  if (botmode) {
    scn = DefaultScreen(odpy);
    oscr = scn;
    attr.background_pixel = BlackPixel(odpy,oscr);
    owin = XCreateWindow(odpy,DefaultRootWindow(odpy),
			     100,100,xwin,ywin,
			     1,1,InputOutput,CopyFromParent,0,0);
    XChangeWindowAttributes(odpy,owin,CWEventMask|CWBackingStore|CWBackPixel,&attr);
    XSetWMHints(odpy, owin, &wmhint);
    XSetClassHint(odpy, owin, &classhint);
    XSetIconName(odpy,owin,"XAtaxx: Black");
    XStoreName(odpy,owin,"XAtaxx: Black");
    XSetNormalHints(odpy, owin, &hints);
    XMapWindow(odpy,owin);
    gcvalues.foreground = WhitePixel(odpy,scn);
    gcvalues.background = BlackPixel(odpy,scn);
    ogc = XCreateGC(odpy,owin,GCForeground,&gcvalues);
    XSetFunction(odpy,ogc,GXcopy);
    obamp = XCreatePixmap(odpy, owin, xwin, ywin, DefaultDepth(dpy,scr));
  }

#ifdef DEBUG
	printf("Opt window dealt with.\n");
#endif

  XFlush(dpy);
  if (botmode) {
    XFlush(odpy);
  }
}

wipemap(cdpy, cbamp, cgc, cscr, cwin)
Display *cdpy;
Pixmap cbamp;
int cscr;
GC cgc;
Window cwin;
{
  GC ccgc;

  ccgc = XCreateGC(cdpy, cwin, 0, 0);
  XSetForeground(cdpy, ccgc, BlackPixel(cdpy,cscr));
  XFillRectangle(cdpy, cbamp, ccgc, 0, 0, xwin, ywin);
  XFlush(cdpy);
}

draw_board(board)
     int *board;
{
  int occ,x,y;

  if (currdpy != dpy && !botmode)
    return;
  wipemap(currdpy, currbamp, currgc, currscr, currwin);
  for (y=0;y!=ysize;y++)
    for (x=0;x!=xsize;x++)
      if ((occ=board[x*ysize+y])!=EMPTY) {
	if (occ==WHITE)
	  draw_circle(x,y,WHITE);
	else  {
	  if (occ==BLACK)
	    draw_circle(x,y,BLACK);
	  else
	    draw_obstacle(x,y);
	}
      }
  show_scores(currdpy, currbamp, currgc, oldw, oldb);
  XFlush(currdpy);
}

show_scores(sdpy, swin, sgc, ws, bs)
Display *sdpy;
Window swin;
GC sgc;
int ws, bs;
{
  char mess[100];

  sprintf(mess,"White: %d",ws);
  XDrawString(sdpy,swin,sgc,5,ysize*Y_PIECE_SIZE+20,mess,strlen(mess));
  sprintf(mess,"Black: %d",bs);
  XDrawString(sdpy,swin,sgc,xsize*X_PIECE_SIZE-55,ysize*Y_PIECE_SIZE+20,mess,strlen(mess));
  XFlush(sdpy);
}

popupbutton(button, x, y)
unsigned int button;
int *x, *y;
{
  XEvent evt;
  Bool qqx = True;

  if (currdpy == dpy)
	XDefineCursor(dpy,win,downc);
  else
	XDefineCursor(odpy,owin,odownc);
  while(qqx) {
	while(!XCheckTypedWindowEvent(currdpy, currwin, (ButtonPress|ButtonRelease), &evt));	
	  if (evt.type == ButtonRelease)
	    if(evt.xbutton.button == button)
	      qqx = False;
  }
  *x = evt.xbutton.x;
  *y = evt.xbutton.y;
  if (currdpy == dpy)
	XDefineCursor(dpy,win,upc);
  else
	XDefineCursor(odpy,owin,oupc);
}

#define SELWID 5

piece_sel(x, y, display, win, cgc)
int x,y;
Display *display;
Window *win;
GC cgc;
{
  int qx1, qx2, qy1, qy2;
  int qq;
  GC pgc;
  XGCValues gcvalues;

  gcvalues.function = GXcopy; /*GXinvert*/
  pgc = XCreateGC(display,win,GCFunction,&gcvalues);
  XCopyGC(display,cgc,GCForeground|GCBackground,pgc);
  qx1 = x*X_PIECE_SIZE;
  qy1 = y*Y_PIECE_SIZE;
  qx2 = qx1 + X_PIECE_SIZE;
  qy2 = qy1 + Y_PIECE_SIZE;

  XDrawLine(display, win, pgc, qx1, qy1, qx1+SELWID, qy1);
  XDrawLine(display, win, pgc, qx1, qy1, qx1, qy1+SELWID);
  XDrawLine(display, win, pgc, qx2, qy1, qx2, qy1+SELWID);
  XDrawLine(display, win, pgc, qx1, qy2, qx1+SELWID, qy2);
  XDrawLine(display, win, pgc, qx1, qy2, qx1, qy2-SELWID);
  XDrawLine(display, win, pgc, qx2, qy1, qx2-SELWID, qy1);
  XDrawLine(display, win, pgc, qx2, qy2, qx2, qy2-SELWID);
  XDrawLine(display, win, pgc, qx2, qy2, qx2-SELWID, qy2);
  XFlush(display);
}

inboard(bx, by) /* true if x,y is in the board */
int bx, by;
{
  if (bx >= return_x_size() || by >= return_y_size())
	return(0);
  else
    return(1);
}

play_loop()
{
  XEvent event;
  int currx,curry,cx1,cy1,cx2,cy2,cx3,cy3,down=0,readfds,white,black,x,y;
  char mess[100],c;

  curr_player = WHITE;
  srandom(time(NULL));
  x = return_x_size();
  y = return_y_size();
  place_piece(0,0,WHITE);
  place_piece(x-1,y-1,WHITE);
  place_piece(0,y-1,BLACK);
  place_piece(x-1,0,BLACK);
  obstacle_color = curr_player;
  XNextEvent(dpy,&event);
  redraw_all(curr_player);
  if (botmode) {
    XNextEvent(odpy,&event);
    redraw_all(curr_player);
  }

  while (1) {
    while(!end_game()) {
      select_player(curr_player);
      if (!down) {
        cx1= -1; cy1= -1; cx2= -1; cy2= -1;
      }
      XNextEvent(currdpy,&event);
      switch(event.type) {
      case ButtonPress:
	currx = event.xbutton.x/X_PIECE_SIZE;
	curry = event.xbutton.y/Y_PIECE_SIZE;
	if (event.xbutton.button == 1)
		popupbutton(event.xbutton.button, &cx3, &cy3);
	else
		break;
	cx3 = cx3/X_PIECE_SIZE;
	cy3 = cy3/Y_PIECE_SIZE;	   
	if (cx3 == currx && cy3 == curry && inboard(cx3,cy3)) {
	  if (cx1 >= 0) {
            if(!b_peek(cx3, cy3)) {
	      cx2 = cx3;
              cy2 = cy3;
	      if(!move_piece(cx1,cy1,cx2,cy2,curr_player)) {
  	        if (botmode) {
	          curr_player = (curr_player==WHITE) ? BLACK : WHITE;
	          if (!valid_move(curr_player))
		    curr_player = (curr_player==WHITE) ? BLACK : WHITE;
	        }
	        else {
		  if (valid_move(BLACK))
	            obstacle_color = BLACK;
		  redraw_all(WHITE);
	          redraw_win(currdpy, currwin, currbamp, currgc);
                  if (valid_move(BLACK) && botlevel < 2)
		    msec_wait(557567);
		  robot_move(BLACK);
                  flumping = False;
	            while(!valid_move(WHITE)&&valid_move(BLACK)) {
		      redraw_all(WHITE);
		      orobot_move(BLACK);
	            }
		  flumping = True;
	        }
              } /* matches if(!move_piece(cx1,cy1,cx2,cy2,curr_player))  */
	      obstacle_color = curr_player;
	      down = 0;
	      redraw_all(curr_player);
            }
	    else {
	      if (b_peek(cx3,cy3) == curr_player && inboard(cx3,cy3)) {
		if(cx3 == cx1 && cy3 == cy1) {
		  redraw_all(curr_player);
		  cx1 = -1; cy1 = -1;
		  down=0;
		}
		else {
		  if (inboard(cx3,cy3)) {
		    piece_sel(cx1,cy1, currdpy, currwin, currgc);
		    cx1 = cx3; cy1 = cy3;
			redraw_all(curr_player);
		    piece_sel(cx1,cy1, currdpy, currwin, currgc);
                  }
		}
	      }
            }
          } /* matches if (cx1 >= 0)  */
	  else {
	    if(b_peek(currx, curry) == curr_player) {
		cx1 = cx3;
		cy1 = cy3;
		piece_sel(cx1,cy1, currdpy, currwin, currgc);
		down = 1;
	    }
	  }
	}
        flumping = False;
	while((!count_board(BLACK)) && valid_move(WHITE)) {
	  orobot_move(WHITE);
	  redraw_all(WHITE);
	}
	while((!count_board(WHITE)) && valid_move(BLACK)) {
	  orobot_move(BLACK);
	  redraw_all(BLACK);
	}
        flumping = True;
	break;
      case Expose:
	redraw_win(currdpy, currwin, currbamp, currgc);
	break;
      case KeyPress:
	XLookupString(&event, &c, 1, NULL, NULL);
	if (c == 'q')
		quit();
	break;
      default:
	break;
      } /* matches switch(event.type) { */
    } /* matches while(!end_game()) { */
    white = count_board(WHITE);
    black = count_board(BLACK);
    oldw = white;
    oldb = black;
    if (white > black)
      sprintf(mess,"White is the winner.");
    else {
      if (black > white)
	sprintf(mess,"Black is the winner.");
      else
	sprintf(mess,"The game is a tie.");
    }
  
    select_player(WHITE);
    XDrawString(currdpy,currwin,currgc,5,ysize*Y_PIECE_SIZE+35,mess,strlen(mess));
    XFlush(currdpy);
    if (botmode) {
      select_player(BLACK);
      XDrawString(currdpy,currwin,currgc,5,ysize*Y_PIECE_SIZE+35,mess,strlen(mess));
      XFlush(currdpy);
    }
    XNextEvent(dpy,&event);
    return;
  }
}

init_pieces()
{
  int curr_player=WHITE,x,y;

  /* Place initial pieces */
  x = return_x_size();
  y = return_y_size();
  clean_board();
  place_piece(0,0,WHITE);
  place_piece(x-1,y-1,WHITE);
  place_piece(0,y-1,BLACK);
  place_piece(x-1,0,BLACK);
  curr_player = WHITE;
  obstacle_color = curr_player;
  redraw_all(curr_player);
}

redraw_all(curr_player)
{
  select_player(WHITE);
  oldw = count_board(WHITE);
  oldb = count_board(BLACK);
  draw_board(return_board());
  redraw_win(currdpy, currwin, currbamp, currgc);
  if (botmode) {
    select_player(BLACK);
    draw_board(return_board());
    redraw_win(currdpy, currwin, currbamp, currgc);
  }
  select_player(curr_player);
}  

select_player(curr_player)
     int curr_player;
{
  if (curr_player==WHITE) {
    currdpy = dpy;
    currwin = win;
    currgc = gc;
    currbamp = bamp;
    currscr = scr;
  }
  else {
    currdpy = odpy;
    currwin = owin;
    currgc = ogc;
    currbamp = obamp;
    currscr = oscr;
  }
}




xataxx/input.format100600   1750      1         111  5010725660  13122 0ustar  iialanbin	Xsize, Ysize

	Xobstruct, Yobstruct (Positions of obstructions)
	......
xataxx/lib/ 40711   1750      1           0  5351354060  11251 5ustar  iialanbinxataxx/lib/1.xbd100600   1750      1          66  5010720136  12140 0ustar  iialanbin7 7

3 0
3 1
3 2
0 3
1 3
2 3
4 3
5 3
6 3
3 4
3 5
3 6

xataxx/lib/10.xbd100600   1750      1          56  5010720140  12212 0ustar  iialanbin7 7

2 0
4 0
2 2
4 2
1 3
5 3
2 4
4 4
2 6
4 6

xataxx/lib/11.xbd100600   1750      1          52  5010720140  12207 0ustar  iialanbin7 7

3 1
3 2
1 3
2 3
3 3
4 3
5 3
3 4
3 5

xataxx/lib/12.xbd100600   1750      1         106  5010720140  12230 0ustar  iialanbin7 7

1 1
2 1
3 1
4 1
5 1
1 2
5 2
1 3
5 3
1 4
5 4
1 5
2 5
3 5
4 5
5 5

xataxx/lib/13.xbd100600   1750      1          66  5010720142  12220 0ustar  iialanbin7 7

2 1
3 1
4 1
1 2
5 2
1 3
5 3
1 4
5 4
2 5
3 5
4 5

xataxx/lib/14.xbd100600   1750      1          66  5010720142  12221 0ustar  iialanbin7 7

2 1
4 1
1 2
2 2
4 2
5 2
1 4
2 4
4 4
5 4
2 5
4 5

xataxx/lib/15.xbd100600   1750      1          26  5010720142  12216 0ustar  iialanbin7 7

1 1
5 5
1 5
5 1

xataxx/lib/16.xbd100600   1750      1          66  5010720142  12223 0ustar  iialanbin7 7

1 1
2 1
4 1
5 1
1 2
5 2
1 4
5 4
1 5
2 5
4 5
5 5

xataxx/lib/17.xbd100600   1750      1          32  5010720142  12215 0ustar  iialanbin7 7

3 2
2 3
3 3
4 3
3 4

xataxx/lib/18.xbd100600   1750      1          26  5010720142  12221 0ustar  iialanbin7 7

3 2
2 3
4 3
3 4

xataxx/lib/19.xbd100600   1750      1          46  5010720142  12224 0ustar  iialanbin7 7

3 1
3 2
1 3
2 3
4 3
5 3
3 4
3 5

xataxx/lib/2.xbd100600   1750      1          76  5010720142  12137 0ustar  iialanbin7 7

3 0
1 2
2 2
4 2
5 2
0 3
1 3
5 3
6 3
1 4
2 4
4 4
5 4
3 6

xataxx/lib/20.xbd100600   1750      1         106  5010720142  12231 0ustar  iialanbin7 7

2 0
3 0
4 0
3 1
0 2
6 2
0 3
1 3
5 3
6 3
0 4
6 4
3 5
2 6
3 6
4 6

xataxx/lib/21.xbd100600   1750      1          66  5010720142  12217 0ustar  iialanbin7 7

2 0
4 0
3 1
0 2
6 2
1 3
5 3
0 4
6 4
3 5
2 6
4 6

xataxx/lib/22.xbd100600   1750      1          32  5010720142  12211 0ustar  iialanbin7 7

3 1
1 3
3 3
5 3
3 5

xataxx/lib/23.xbd100600   1750      1          52  5010720142  12214 0ustar  iialanbin7 7

1 1
3 1
5 1
1 3
3 3
5 3
1 5
3 5
5 5

xataxx/lib/24.xbd100600   1750      1           5  5010720142  12173 0ustar  iialanbin7 7

xataxx/lib/25.xbd100600   1750      1          32  5010720144  12216 0ustar  iialanbin7 7

2 2
4 2
3 3
2 4
4 4

xataxx/lib/26.xbd100600   1750      1          52  5010720144  12221 0ustar  iialanbin7 7

1 1
5 1
2 2
4 2
3 3
2 4
4 4
1 5
5 5

xataxx/lib/27.xbd100600   1750      1          66  5010720144  12227 0ustar  iialanbin7 7

2 0
3 0
4 0
2 1
4 1
0 3
6 3
2 5
4 5
2 6
3 6
4 6

xataxx/lib/28.xbd100600   1750      1         146  5010720144  12247 0ustar  iialanbin7 7

1 0
3 0
5 0
0 1
2 1
4 1
6 1
1 2
3 2
5 2
0 3
2 3
4 3
6 3
1 4
3 4
5 4
0 5
2 5
4 5
6 5
1 6
3 6
5 6

xataxx/lib/29.xbd100600   1750      1          46  5010720144  12227 0ustar  iialanbin7 7

1 1
5 1
2 2
4 2
2 4
4 4
1 5
5 5

xataxx/lib/3.xbd100600   1750      1          52  5010720144  12134 0ustar  iialanbin7 7

1 0
5 0
0 1
6 1
3 3
0 5
6 5
1 6
5 6

xataxx/lib/30.xbd100600   1750      1          46  5010720144  12217 0ustar  iialanbin7 7

3 0
2 1
4 1
0 3
6 3
2 5
4 5
3 6

xataxx/lib/31.xbd100600   1750      1          26  5010720144  12216 0ustar  iialanbin7 7

3 0
0 3
6 3
3 6

xataxx/lib/32.xbd100600   1750      1          26  5010720144  12217 0ustar  iialanbin7 7

3 1
1 3
5 3
3 5

xataxx/lib/33.xbd100600   1750      1         116  5010720146  12242 0ustar  iialanbin7 7

2 0
3 0
4 0
0 2
1 2
3 2
5 2
6 2
0 3
6 3
0 4
1 4
3 4
5 4
6 4
2 6
3 6
4 6

xataxx/lib/34.xbd100600   1750      1         102  5010720146  12236 0ustar  iialanbin7 7

2 1
4 1
0 2
1 2
3 2
5 2
6 2
3 3
0 4
1 4
3 4
5 4
6 4
2 5
4 5

xataxx/lib/35.xbd100600   1750      1         102  5010720146  12237 0ustar  iialanbin7 7

2 0
4 0
2 1
4 1
0 2
6 2
0 3
3 3
6 3
0 4
6 4
2 5
4 5
2 6
4 6

xataxx/lib/4.xbd100600   1750      1          56  5010720146  12143 0ustar  iialanbin7 7

2 0
4 0
2 1
4 1
0 3
6 3
2 5
4 5
2 6
4 6

xataxx/lib/5.xbd100600   1750      1          46  5010720146  12143 0ustar  iialanbin7 7

3 0
3 1
0 3
1 3
5 3
6 3
3 5
3 6

xataxx/lib/6.xbd100600   1750      1          46  5010720146  12144 0ustar  iialanbin7 7

3 1
2 2
4 2
1 3
5 3
2 4
4 4
3 5

xataxx/lib/7.xbd100600   1750      1          46  5010720146  12145 0ustar  iialanbin7 7

2 0
4 0
0 2
6 2
0 4
6 4
2 6
4 6

xataxx/lib/8.xbd100600   1750      1          66  5010720150  12143 0ustar  iialanbin7 7

3 0
2 1
4 1
1 2
5 2
0 3
6 3
1 4
5 4
2 5
4 5
3 6

xataxx/lib/9.xbd100600   1750      1          46  5010720150  12142 0ustar  iialanbin7 7

2 1
4 1
1 2
5 2
1 4
5 4
2 5
4 5

xataxx/lib/boards.num100600   1750      1           4  5010720150  13240 0ustar  iialanbin35

xataxx/lib/clearstone.xbm100600   1750      1        1556  5010720150  14211 0ustar  iialanbin#define stone_width 32
#define stone_height 32
static char stone_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x0e, 0x38, 0x00,
   0x80, 0x31, 0xc0, 0x00, 0x40, 0x48, 0x00, 0x01, 0x20, 0x49, 0x00, 0x02,
   0x90, 0x32, 0x00, 0x04, 0x48, 0x04, 0x00, 0x08, 0x24, 0x02, 0x00, 0x10,
   0x14, 0x01, 0x00, 0x10, 0x92, 0x00, 0x00, 0x20, 0x8a, 0x00, 0x00, 0x20,
   0x72, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40,
   0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40,
   0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x20,
   0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x10,
   0x04, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x04,
   0x20, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00,
   0x00, 0x0e, 0x38, 0x00, 0x00, 0xf0, 0x07, 0x00};
xataxx/lib/dkblock.xbm100600   1750      1        1564  5010720150  13462 0ustar  iialanbin#define ltblock_width 32
#define ltblock_height 32
static char ltblock_bits[] = {
   0x55, 0x55, 0x55, 0x55, 0xfe, 0xff, 0xff, 0xbf, 0x57, 0x55, 0x55, 0x15,
   0xaa, 0xaa, 0xaa, 0xaa, 0x57, 0x55, 0x55, 0x15, 0xaa, 0xaa, 0xaa, 0xaa,
   0x17, 0x00, 0x00, 0x14, 0xaa, 0xaa, 0xaa, 0xaa, 0x17, 0x55, 0x55, 0x17,
   0xaa, 0xaa, 0xaa, 0xaa, 0x17, 0x55, 0x55, 0x17, 0xaa, 0xfa, 0xaf, 0xaa,
   0x17, 0x0d, 0x40, 0x17, 0xaa, 0xea, 0xa7, 0xaa, 0x17, 0xed, 0x47, 0x17,
   0xaa, 0xea, 0xa7, 0xaa, 0x17, 0xed, 0x47, 0x17, 0xaa, 0xea, 0xa7, 0xaa,
   0x17, 0xed, 0x47, 0x17, 0xaa, 0x0a, 0xa0, 0xaa, 0x17, 0x05, 0x40, 0x17,
   0xaa, 0xaa, 0xaa, 0xaa, 0x17, 0x55, 0x55, 0x17, 0xaa, 0xaa, 0xaa, 0xaa,
   0x17, 0x55, 0x55, 0x17, 0xaa, 0xff, 0xff, 0xab, 0x57, 0x55, 0x55, 0x15,
   0xaa, 0xaa, 0xaa, 0xaa, 0x57, 0x55, 0x55, 0x15, 0xaa, 0xaa, 0xaa, 0xaa,
   0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa};
xataxx/lib/dksmiley.xbm100600   1750      1        1653  5010720150  13671 0ustar  iialanbin#define dksmiley_width 32
#define dksmiley_height 32
#define dksmiley_x_hot -1
#define dksmiley_y_hot -1
static char dksmiley_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x1f,
   0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10,
   0x04, 0x00, 0x00, 0x10, 0x04, 0x02, 0x20, 0x10, 0x04, 0x02, 0x20, 0x10,
   0x04, 0x02, 0x20, 0x10, 0x04, 0x02, 0x20, 0x10, 0x04, 0x00, 0x00, 0x10,
   0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10,
   0x04, 0x80, 0x00, 0x10, 0x04, 0x80, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10,
   0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10, 0x04, 0xf8, 0x0f, 0x10,
   0x04, 0x0c, 0x18, 0x10, 0x04, 0x06, 0x30, 0x10, 0x04, 0x03, 0x60, 0x10,
   0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10,
   0x04, 0x00, 0x00, 0x10, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
xataxx/lib/dkstone.xbm100600   1750      1        1564  5010720150  13520 0ustar  iialanbin#define dkstone_width 32
#define dkstone_height 32
static char dkstone_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0xaa, 0x1a, 0x00,
   0x00, 0x55, 0x65, 0x00, 0x80, 0x2a, 0x88, 0x01, 0x40, 0x95, 0x22, 0x02,
   0xa0, 0x02, 0x88, 0x04, 0x50, 0xa5, 0x22, 0x0a, 0xa8, 0x08, 0x88, 0x08,
   0x54, 0xa2, 0x22, 0x12, 0xa8, 0x08, 0x88, 0x20, 0x16, 0xa2, 0x22, 0x2a,
   0xaa, 0x08, 0x88, 0x40, 0x14, 0xa2, 0x22, 0x0a, 0x8a, 0x08, 0x88, 0x40,
   0x25, 0xa2, 0x22, 0x0a, 0x8a, 0x08, 0x88, 0x40, 0x25, 0xa2, 0x22, 0x02,
   0x8a, 0x08, 0x88, 0x40, 0x25, 0xa2, 0x22, 0x02, 0x8a, 0x08, 0x88, 0x40,
   0x22, 0xa2, 0x22, 0x00, 0x8a, 0x08, 0x88, 0x20, 0x24, 0xa2, 0x22, 0x00,
   0x88, 0x08, 0x08, 0x10, 0x28, 0xa2, 0x02, 0x00, 0x90, 0x08, 0x00, 0x04,
   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x40, 0x00,
   0x00, 0x02, 0x00, 0x00, 0x00, 0x54, 0x15, 0x00};
xataxx/lib/downcursor.xbm100600   1750      1         517  5010720150  14233 0ustar  iialanbin#define downcursor_width 15
#define downcursor_height 15
#define downcursor_x_hot 7
#define downcursor_y_hot 7
static char downcursor_bits[] = {
   0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xa0, 0x02,
   0xc0, 0x01, 0xfe, 0x3f, 0xc0, 0x01, 0xa0, 0x02, 0x80, 0x00, 0x80, 0x00,
   0x80, 0x00, 0x80, 0x00, 0x00, 0x00};
xataxx/lib/downmask.xbm100600   1750      1         505  5010720150  13646 0ustar  iialanbin#define downmask_width 15
#define downmask_height 15
#define downmask_x_hot 7
#define downmask_y_hot 7
static char downmask_bits[] = {
   0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xf0, 0x07, 0xf0, 0x07,
   0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xf0, 0x07, 0xf0, 0x07, 0xc0, 0x01,
   0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01};
xataxx/lib/ltblock.xbm100600   1750      1        1564  5010720152  13505 0ustar  iialanbin#define dkblock_width 32
#define dkblock_height 32
static char dkblock_bits[] = {
   0x55, 0x55, 0x55, 0x55, 0xfe, 0xff, 0xff, 0xbf, 0x57, 0x55, 0x55, 0x15,
   0xaa, 0xaa, 0xaa, 0xaa, 0x57, 0x55, 0x55, 0x15, 0xaa, 0xaa, 0xaa, 0xaa,
   0x17, 0x00, 0x00, 0x14, 0xaa, 0xaa, 0xaa, 0xaa, 0x17, 0x55, 0x55, 0x17,
   0xaa, 0xaa, 0xaa, 0xaa, 0x17, 0x55, 0x55, 0x17, 0xaa, 0xaa, 0xaa, 0xaa,
   0x17, 0xf5, 0x4f, 0x17, 0xaa, 0x1a, 0xa8, 0xaa, 0x17, 0x15, 0x48, 0x17,
   0xaa, 0x1a, 0xa8, 0xaa, 0x17, 0x15, 0x48, 0x17, 0xaa, 0x1a, 0xa8, 0xaa,
   0x17, 0x15, 0x48, 0x17, 0xaa, 0xfa, 0xaf, 0xaa, 0x17, 0x05, 0x40, 0x17,
   0xaa, 0xaa, 0xaa, 0xaa, 0x17, 0x55, 0x55, 0x17, 0xaa, 0xaa, 0xaa, 0xaa,
   0x17, 0x55, 0x55, 0x17, 0xaa, 0xff, 0xff, 0xab, 0x57, 0x55, 0x55, 0x15,
   0xaa, 0xaa, 0xaa, 0xaa, 0x57, 0x55, 0x55, 0x15, 0xaa, 0xaa, 0xaa, 0xaa,
   0x01, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa};
xataxx/lib/ltsmiley.xbm100600   1750      1        1564  5010720152  13715 0ustar  iialanbin#define ltstone_width 32
#define ltstone_height 32
static char ltstone_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x80, 0xff, 0xff, 0x00,
   0xc0, 0xff, 0xff, 0x01, 0xe0, 0xfd, 0xdf, 0x03, 0xf0, 0xfd, 0xdf, 0x07,
   0xf0, 0xfd, 0xdf, 0x07, 0xf8, 0xfd, 0xdf, 0x0f, 0xf8, 0xff, 0xff, 0x0f,
   0xf8, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0x0f,
   0xf8, 0x7f, 0xff, 0x0f, 0xf8, 0x7f, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0x0f,
   0xf8, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0x0f, 0x78, 0xfc, 0x1f, 0x0f,
   0xf0, 0xfd, 0xdf, 0x07, 0xf0, 0xf9, 0xcf, 0x07, 0xe0, 0x07, 0xf0, 0x03,
   0xc0, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0x00, 0x00, 0xff, 0x7f, 0x00,
   0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
xataxx/lib/ltstone.xbm100600   1750      1        1564  5010720152  13543 0ustar  iialanbin#define ltstone_width 32
#define ltstone_height 32
static char ltstone_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00,
   0x00, 0xfe, 0x1d, 0x00, 0x80, 0xff, 0x77, 0x00, 0xc0, 0x5f, 0xdd, 0x01,
   0xe0, 0xf7, 0x77, 0x03, 0xf0, 0x5d, 0xdd, 0x05, 0xf8, 0xf7, 0x77, 0x07,
   0xf8, 0x5d, 0xdd, 0x0d, 0x7c, 0xf7, 0x77, 0x17, 0xfc, 0x5d, 0xdd, 0x1d,
   0x7c, 0xf7, 0x77, 0x0f, 0xdc, 0x5d, 0xdd, 0x15, 0x7e, 0xf7, 0x77, 0x2f,
   0xde, 0x5d, 0xdd, 0x15, 0x76, 0xf7, 0x77, 0x2f, 0xde, 0x5d, 0xdd, 0x15,
   0x76, 0xf7, 0x77, 0x2b, 0xde, 0x5d, 0xdd, 0x15, 0x74, 0xf7, 0x77, 0x0b,
   0xdc, 0x5d, 0xdd, 0x15, 0x74, 0xf7, 0xf7, 0x0a, 0xd8, 0x5d, 0x5d, 0x05,
   0x70, 0xf7, 0xaf, 0x0a, 0xd0, 0x5d, 0x55, 0x05, 0x60, 0xf7, 0xab, 0x02,
   0xc0, 0x5d, 0x55, 0x01, 0x00, 0xab, 0xaa, 0x00, 0x00, 0x54, 0x15, 0x00,
   0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00};
xataxx/lib/scowlcurs.xbm100600   1750      1         512  5010720152  14047 0ustar  iialanbin#define scowlcurs_width 15
#define scowlcurs_height 15
#define scowlcurs_x_hot 7
#define scowlcurs_y_hot 7
static char scowlcurs_bits[] = {
   0x00, 0x00, 0xfe, 0x3f, 0x02, 0x20, 0x02, 0x20, 0x22, 0x22, 0x72, 0x27,
   0x22, 0x22, 0x02, 0x20, 0xc2, 0x21, 0x22, 0x22, 0x12, 0x24, 0x02, 0x20,
   0x02, 0x20, 0xfe, 0x3f, 0x00, 0x00};
xataxx/lib/scowlcursmask.100600   1750      1         454  5010720152  14221 0ustar  iialanbin#define new_width 15
#define new_height 15
#define new_x_hot 7
#define new_y_hot 7
static char new_bits[] = {
   0x00, 0x80, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf,
   0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbf,
   0xfe, 0xbf, 0xfe, 0xbf, 0x00, 0x80};
xataxx/lib/smilecurs.xbm100600   1750      1         512  5010720152  14031 0ustar  iialanbin#define smilecurs_width 15
#define smilecurs_height 15
#define smilecurs_x_hot 7
#define smilecurs_y_hot 7
static char smilecurs_bits[] = {
   0xe0, 0x03, 0x18, 0x0c, 0x04, 0x10, 0x02, 0x20, 0x22, 0x22, 0x71, 0x47,
   0x21, 0x42, 0x01, 0x40, 0x01, 0x40, 0x11, 0x44, 0x22, 0x22, 0xc2, 0x21,
   0x04, 0x10, 0x18, 0x0c, 0xe0, 0x03};
xataxx/lib/smilecursmask.100600   1750      1         536  5010720152  14204 0ustar  iialanbin#define scowlcursmask_width 15
#define scowlcursmask_height 15
#define scowlcursmask_x_hot 7
#define scowlcursmask_y_hot 7
static char scowlcursmask_bits[] = {
   0xe0, 0x83, 0xf8, 0x8f, 0xfc, 0x9f, 0xfe, 0xbf, 0xfe, 0xbf, 0xff, 0xff,
   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xbf, 0xfe, 0xbf,
   0xfc, 0x9f, 0xf8, 0x8f, 0xe0, 0x83};
xataxx/lib/stone.xbm100600   1750      1        1556  5010720152  13204 0ustar  iialanbin#define stone_width 32
#define stone_height 32
static char stone_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00,
   0x00, 0xaa, 0x1a, 0x00, 0x00, 0xd5, 0x77, 0x00, 0x80, 0x6a, 0xdd, 0x01,
   0x40, 0xfd, 0x77, 0x03, 0xa0, 0x5a, 0xdd, 0x05, 0x50, 0xf7, 0x77, 0x07,
   0xa8, 0x5d, 0xdd, 0x0d, 0x54, 0xf7, 0x77, 0x1f, 0xe8, 0x5d, 0xdd, 0x15,
   0x54, 0xf7, 0x77, 0x3f, 0xea, 0x5d, 0xdd, 0x35, 0x74, 0xf7, 0x77, 0x3f,
   0xda, 0x5d, 0xdd, 0x35, 0x74, 0xf7, 0x77, 0x3f, 0xda, 0x5d, 0xdd, 0x3d,
   0x74, 0xf7, 0x77, 0x3f, 0xda, 0x5d, 0xdd, 0x3d, 0x74, 0xf7, 0x77, 0x3f,
   0xdc, 0x5d, 0xdd, 0x1f, 0x74, 0xf7, 0x77, 0x1f, 0xd8, 0x5d, 0xdd, 0x0f,
   0x70, 0xf7, 0xf7, 0x0f, 0xd0, 0x5d, 0xfd, 0x07, 0x60, 0xf7, 0xff, 0x03,
   0xc0, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x3f, 0x00,
   0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00};
xataxx/lib/stonemask.xbm100600   1750      1        1660  5010720152  14054 0ustar  iialanbin#define stonemask_width 32
#define stonemask_height 32
#define stonemask_x_hot -1
#define stonemask_y_hot -1
static char stonemask_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0x3f, 0x00,
   0x80, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x03, 0xe0, 0xff, 0xff, 0x07,
   0xf0, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0x1f,
   0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x7f,
   0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f,
   0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f,
   0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f,
   0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x3f,
   0xfc, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x0f,
   0xf0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff, 0x01,
   0x00, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0x1f, 0x00};
xataxx/lib/title.xbm100600   1750      1      114636  5010720154  13243 0ustar  iialanbin#define title_width 224
#define title_height 224
#define title_x_hot -1
#define title_y_hot -1
static char title_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
   0x07, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x70,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
   0x1f, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x1c,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
   0xff, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x07,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xff, 0x03, 0x80, 0x03, 0x00, 0xf0, 0x07, 0xc0, 0xff, 0xff, 0x01, 0xf0,
   0x07, 0xc0, 0x07, 0xc0, 0x07, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xc0, 0x01, 0x00, 0x08, 0x0c, 0x40,
   0x00, 0x80, 0x01, 0x08, 0x0c, 0x40, 0x06, 0x40, 0x06, 0x19, 0x00, 0x19,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xc0, 0x01,
   0x00, 0xe4, 0x1f, 0x40, 0xff, 0xff, 0x01, 0xe4, 0x1f, 0x80, 0x0e, 0xa0,
   0x03, 0x3a, 0x80, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xfc, 0x0f, 0xe0, 0x00, 0x00, 0xf4, 0x1f, 0xc0, 0xff, 0xff, 0x01, 0xf4,
   0x1f, 0x80, 0x0e, 0xa0, 0x03, 0x3a, 0x80, 0x0e, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x70, 0x00, 0x00, 0xf2, 0x3f, 0xc0,
   0xff, 0xff, 0x01, 0xf2, 0x3f, 0x00, 0x1d, 0xd0, 0x01, 0x74, 0x40, 0x07,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x38, 0x00,
   0x00, 0x3a, 0x3a, 0x00, 0xa0, 0x03, 0x00, 0x3a, 0x3a, 0x00, 0x1d, 0xd0,
   0x01, 0x74, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xf0, 0x7f, 0x38, 0x00, 0x00, 0x39, 0x7a, 0x00, 0xa0, 0x03, 0x00, 0x39,
   0x7a, 0x00, 0x3a, 0xe8, 0x00, 0xe8, 0xa0, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x1c, 0x00, 0x00, 0x1d, 0x74, 0x00,
   0xa0, 0x03, 0x00, 0x1d, 0x74, 0x00, 0x3a, 0xe8, 0x00, 0xe8, 0xa0, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x0e, 0x00,
   0x80, 0x1c, 0xf4, 0x00, 0xa0, 0x03, 0x80, 0x1c, 0xf4, 0x00, 0x74, 0x74,
   0x00, 0xd0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x80, 0x1f, 0x07, 0x00, 0x80, 0x0e, 0xe8, 0x00, 0xa0, 0x03, 0x80, 0x0e,
   0xe8, 0x00, 0x74, 0x74, 0x00, 0xd0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x03, 0x00, 0x40, 0x0e, 0xe8, 0x01,
   0xa0, 0x03, 0x40, 0x0e, 0xe8, 0x01, 0xe8, 0x3a, 0x00, 0xa0, 0xeb, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x03, 0x00,
   0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0xe8, 0x3b,
   0x00, 0xa0, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x80, 0xc3, 0x07, 0x00, 0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07,
   0xd0, 0x01, 0xd0, 0x1d, 0x00, 0x40, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x80, 0xe3, 0x0f, 0x00, 0x40, 0xff, 0xdf, 0x01,
   0xa0, 0x03, 0x40, 0xff, 0xdf, 0x01, 0xd0, 0x1f, 0x00, 0x40, 0x7f, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0x0f, 0x00,
   0x40, 0x07, 0xc0, 0x01, 0xa0, 0x03, 0x40, 0x07, 0xc0, 0x01, 0xa0, 0x0f,
   0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0xe0, 0xf0, 0x1f, 0x00, 0x40, 0xff, 0xff, 0x01, 0xa0, 0x03, 0x40, 0xff,
   0xff, 0x01, 0xa0, 0x0f, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0x3f, 0x00, 0x40, 0xff, 0xff, 0x01,
   0xa0, 0x03, 0x40, 0xff, 0xff, 0x01, 0xa0, 0x0f, 0x00, 0x80, 0x3e, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x7f, 0x00,
   0x40, 0xff, 0xff, 0x01, 0xa0, 0x03, 0x40, 0xff, 0xff, 0x01, 0xa0, 0x0f,
   0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x38, 0xe0, 0x7f, 0x00, 0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07,
   0xd0, 0x01, 0xd0, 0x1f, 0x00, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x1c, 0xc0, 0xff, 0x00, 0x40, 0x07, 0xd0, 0x01,
   0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0xd0, 0x1d, 0x00, 0x40, 0x77, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x80, 0xff, 0x01,
   0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0xe8, 0x3b,
   0x00, 0xa0, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x0e, 0x00, 0xff, 0x03, 0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07,
   0xd0, 0x01, 0xe8, 0x3a, 0x00, 0xa0, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0x03, 0x40, 0x07, 0xd0, 0x01,
   0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0x74, 0x74, 0x00, 0xd0, 0xd1, 0x01,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xfe, 0x07,
   0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0x74, 0x74,
   0x00, 0xd0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
   0x01, 0x00, 0xfc, 0x0f, 0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07,
   0xd0, 0x01, 0x3a, 0xe8, 0x00, 0xe8, 0xa0, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xf8, 0x1f, 0x40, 0x07, 0xd0, 0x01,
   0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0x3a, 0xe8, 0x00, 0xe8, 0xa0, 0x03,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf8, 0x1f,
   0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07, 0xd0, 0x01, 0x1d, 0xd0,
   0x01, 0x74, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
   0x00, 0x00, 0xf0, 0x3f, 0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07,
   0xd0, 0x01, 0x1d, 0xd0, 0x01, 0x74, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xe0, 0x7f, 0x40, 0x07, 0xd0, 0x01,
   0xa0, 0x03, 0x40, 0x07, 0xd0, 0x81, 0x0e, 0xa0, 0x03, 0x3a, 0x80, 0x0e,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, 0xff,
   0x40, 0x07, 0xd0, 0x01, 0xa0, 0x03, 0x40, 0x07, 0xd0, 0x81, 0x0e, 0xa0,
   0x03, 0x3a, 0x80, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
   0x00, 0x00, 0xc0, 0xff, 0xc0, 0x07, 0xf0, 0x01, 0xe0, 0x03, 0xc0, 0x07,
   0xf0, 0x41, 0x06, 0x40, 0x06, 0x19, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x80, 0xff, 0xc1, 0x07, 0xf0, 0x01,
   0xe0, 0x03, 0xc0, 0x07, 0xf0, 0xc1, 0x07, 0xc0, 0x07, 0x1f, 0x00, 0x1f,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x80, 0xff, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55,
   0x55, 0x55, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x80, 0x08, 0x08, 0x00,
   0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xbf, 0x1a, 0x00,
   0x80, 0x48, 0x3e, 0x0a, 0x83, 0xc3, 0x43, 0x00, 0x30, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00,
   0xfe, 0xff, 0x3f, 0x00, 0x80, 0x07, 0x08, 0x95, 0x44, 0x24, 0xc0, 0x23,
   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa,
   0xaa, 0x0a, 0x00, 0x00, 0xff, 0xaa, 0x6a, 0x00, 0x80, 0x48, 0x08, 0x95,
   0x44, 0xc4, 0x41, 0x24, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x55, 0x55, 0x55, 0x55, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00,
   0x80, 0x48, 0x08, 0x95, 0x44, 0x04, 0x42, 0x24, 0x32, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0xc0,
   0xbf, 0xaa, 0xaa, 0x01, 0x80, 0x47, 0x08, 0x11, 0xcb, 0xe3, 0xc1, 0xc3,
   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x05, 0x00,
   0x00, 0x54, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
   0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x0b, 0x00, 0xf0, 0xab, 0xaa, 0xaa, 0x06,
   0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x45, 0x55, 0x55, 0x55, 0x00, 0xf0,
   0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0,
   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa,
   0xaa, 0x0b, 0x00, 0xf8, 0xaa, 0xaa, 0xaa, 0x0e, 0x00, 0x06, 0x00, 0x08,
   0x00, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x45, 0x55, 0x55, 0x55, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x0f,
   0x00, 0x09, 0x00, 0x08, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x0b, 0x00, 0xf8,
   0xaa, 0x3a, 0xab, 0x0a, 0x80, 0x08, 0x00, 0x08, 0x40, 0x00, 0x11, 0x00,
   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x45, 0xfd,
   0x53, 0x55, 0x00, 0xfc, 0xff, 0x1f, 0xfe, 0x1f, 0x80, 0x08, 0x00, 0x08,
   0x40, 0x00, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xaa, 0x06, 0xaa, 0x0b, 0x00, 0xbc, 0xaa, 0x0a, 0xac, 0x1a,
   0x80, 0x08, 0x00, 0x08, 0x40, 0x00, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x45, 0x05, 0x52, 0x55, 0x00, 0xfc,
   0xff, 0x0f, 0xfc, 0x1f, 0x80, 0xc4, 0x69, 0x08, 0xc0, 0x01, 0x89, 0x63,
   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x06,
   0xaa, 0x0b, 0x00, 0xac, 0x8e, 0x0f, 0xac, 0x1a, 0x80, 0x23, 0x9a, 0x08,
   0x40, 0x00, 0x47, 0x94, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x45, 0x05, 0x52, 0x55, 0x00, 0xfc, 0x07, 0x07, 0xfc, 0x1f,
   0x80, 0x24, 0x8a, 0x08, 0x40, 0x00, 0x41, 0x94, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x06, 0xaa, 0x0b, 0x00, 0xac,
   0x06, 0x07, 0xae, 0x1a, 0x80, 0xe8, 0x89, 0x08, 0x40, 0x00, 0xc1, 0x93,
   0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x45, 0x05,
   0x52, 0x55, 0x00, 0xfc, 0x03, 0x07, 0xfe, 0x1d, 0x80, 0x28, 0x88, 0x08,
   0x40, 0x00, 0x41, 0x90, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xaa, 0x06, 0xaa, 0x0b, 0x00, 0xac, 0x02, 0x07, 0xab, 0x1a,
   0x80, 0x28, 0x8a, 0x08, 0x46, 0x30, 0x41, 0x94, 0x08, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x45, 0xfd, 0x53, 0x55, 0x00, 0xfc,
   0x83, 0x83, 0x7f, 0x1d, 0x00, 0xc7, 0x89, 0xf0, 0x86, 0x37, 0x81, 0x63,
   0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x02,
   0xa8, 0x0b, 0x00, 0xa8, 0x82, 0xc1, 0xe3, 0x0a, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x45, 0x55, 0x55, 0x55, 0x00, 0xf8, 0x07, 0xe0, 0xc0, 0x0d,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x0b, 0x00, 0xa8,
   0x06, 0x00, 0x80, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x45, 0x55,
   0x55, 0x55, 0x00, 0xf0, 0x0f, 0x00, 0x80, 0x05, 0x00, 0x01, 0x00, 0x00,
   0x80, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x0b, 0x00, 0xb0, 0x1a, 0x00, 0xc0, 0x06,
   0x80, 0x40, 0x02, 0x20, 0x42, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe5, 0xff, 0xff, 0x55, 0x00, 0xe0,
   0x3f, 0x00, 0x60, 0x03, 0x80, 0x40, 0x02, 0x20, 0x42, 0x00, 0x01, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa,
   0xaa, 0x0a, 0x00, 0xc0, 0x6a, 0x00, 0xbf, 0x01, 0x80, 0x40, 0x02, 0x20,
   0x42, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x55, 0x55, 0x55, 0x55, 0x00, 0x80, 0x7f, 0x80, 0xd5, 0x00,
   0x80, 0x43, 0x92, 0x73, 0x47, 0x00, 0x47, 0x64, 0x34, 0x0e, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00,
   0xeb, 0x80, 0x6a, 0x00, 0x80, 0x40, 0x42, 0x24, 0x42, 0x00, 0x41, 0x94,
   0x4c, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x55, 0x55,
   0x55, 0x55, 0x00, 0x00, 0xd6, 0x81, 0x35, 0x00, 0x80, 0x40, 0x52, 0x24,
   0x42, 0x00, 0x41, 0x94, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x81, 0x1f, 0x00,
   0x80, 0x40, 0x52, 0x24, 0x42, 0x00, 0x81, 0x92, 0x44, 0x0e, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00,
   0xf0, 0x03, 0x07, 0x00, 0x80, 0x40, 0x52, 0x24, 0x42, 0x04, 0x81, 0x92,
   0x44, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x03, 0x00, 0x80, 0x40, 0x52, 0x24,
   0x42, 0x32, 0x01, 0x91, 0x44, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x00,
   0x00, 0x2f, 0x89, 0x13, 0x81, 0x31, 0x1e, 0x61, 0x45, 0x0e, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00,
   0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf,
   0x3e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xff,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0c, 0x2a, 0x18, 0x00,
   0x00, 0x80, 0xff, 0x57, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xaf, 0xaa, 0x01, 0x00, 0x00,
   0x42, 0x55, 0x20, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
   0xff, 0x03, 0x00, 0x00, 0xa9, 0xaa, 0x4a, 0x00, 0x00, 0xe0, 0x5f, 0x55,
   0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xfc, 0xaa, 0xab, 0x06, 0x00, 0x80, 0x54, 0x05, 0x80, 0x00,
   0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0xfc, 0x0f, 0x00, 0x40,
   0xaa, 0xaa, 0x2a, 0x01, 0x00, 0xf8, 0x57, 0x55, 0x35, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x1a,
   0xb0, 0x1a, 0x00, 0x20, 0x15, 0x00, 0x00, 0x02, 0x00, 0xfc, 0xff, 0xff,
   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xff, 0x0f, 0xe0, 0x3f, 0x00, 0x90, 0xaa, 0xaa, 0xaa, 0x04,
   0x00, 0xfe, 0x81, 0x55, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaf, 0x0e, 0xc0, 0x2b, 0x00, 0x50,
   0x05, 0x00, 0x00, 0x04, 0x00, 0x3e, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f,
   0x00, 0x7e, 0x00, 0x88, 0xaa, 0xaa, 0xaa, 0x08, 0x00, 0x1f, 0x00, 0xfa,
   0xd5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xaf, 0x0a, 0x00, 0xe0, 0x00, 0x48, 0x01, 0x00, 0x00, 0x08,
   0x80, 0x03, 0x00, 0x9e, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x00, 0x00, 0x03, 0xa8,
   0xaa, 0xaa, 0xaa, 0x1a, 0xe0, 0x01, 0x00, 0x07, 0x56, 0x01, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xab, 0x1a,
   0x00, 0x00, 0x0e, 0x46, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x80, 0x03,
   0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0xff, 0x3f, 0xc0, 0x00, 0xf8, 0xa7, 0xaa, 0xaa, 0xaa, 0xc2,
   0x0f, 0xe0, 0xc0, 0x03, 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xea, 0x6f, 0xb0, 0x01, 0x00, 0x50,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0xf8, 0x03, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0xfc,
   0xff, 0x01, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 0xc0, 0x7f, 0x00,
   0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0x1a, 0xb0, 0xaa, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0x01, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0xc0, 0x7f, 0x00, 0x00, 0xa0,
   0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x03, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x3a, 0x00,
   0x0c, 0xe0, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
   0xbe, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0x7f, 0x00, 0x00, 0xf0, 0xfe, 0xa0, 0xaa, 0xaa, 0xaa, 0xc0,
   0xc1, 0x07, 0x00, 0xc0, 0x57, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x6a, 0x00, 0x00, 0xf8, 0x00, 0x07,
   0x00, 0x00, 0x00, 0x30, 0x80, 0x0f, 0xf8, 0xf0, 0xaf, 0x03, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00,
   0x00, 0x5f, 0x00, 0xa4, 0xaa, 0xaa, 0x2a, 0x08, 0x00, 0x1d, 0xde, 0x5f,
   0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0xaa, 0x7f, 0x00, 0x6b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08,
   0x00, 0x3f, 0xfc, 0xff, 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x80, 0x75, 0x00, 0xa8,
   0xaa, 0xaa, 0x2a, 0x08, 0x00, 0x35, 0x80, 0x55, 0xd5, 0x01, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaf,
   0x80, 0x3a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7e, 0x00, 0xff,
   0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0xff, 0xf9, 0x40, 0x35, 0x00, 0x90, 0xaa, 0xaa, 0x0a, 0x04,
   0x00, 0xd6, 0x00, 0x56, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x60, 0xf0, 0x1a, 0x00, 0x20,
   0x00, 0x00, 0x00, 0x02, 0x00, 0xfc, 0x01, 0xbe, 0x6a, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00,
   0x50, 0x0d, 0x00, 0x40, 0xaa, 0xaa, 0x00, 0x01, 0x00, 0x58, 0x87, 0x57,
   0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xac, 0x00, 0xb0, 0x06, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00,
   0x00, 0xf0, 0xff, 0xab, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x58, 0x03, 0x00, 0x00,
   0xa9, 0x0a, 0x40, 0x00, 0x00, 0x60, 0x55, 0x55, 0x0d, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x06,
   0xae, 0x01, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0xc0, 0xaf, 0xaa,
   0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0xe0, 0x9d, 0xf5, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x18, 0x00,
   0x00, 0x80, 0x55, 0xd5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x3e, 0x00, 0x00, 0x00,
   0x70, 0x00, 0x07, 0x00, 0x00, 0x00, 0xbe, 0xfa, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
   0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x20,
   0x04, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa,
   0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0x02, 0xf8, 0x04, 0x1c, 0x0d, 0xcf, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x21, 0x3c, 0x22, 0x93, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x80, 0xab, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x12, 0x21,
   0x44, 0x22, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
   0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0x12, 0x21, 0x44, 0x22, 0x01, 0xc8, 0x00, 0x00, 0x00, 0x00,
   0x80, 0xab, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe2, 0x20, 0x44, 0x1c, 0x81, 0x07,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0b, 0x00, 0x00,
   0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x55, 0x55, 0x55, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x80, 0x8b, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
   0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
   0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x40, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x80, 0x8b, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x88, 0xc0, 0x30,
   0x00, 0x00, 0x01, 0x00, 0x00, 0x55, 0x55, 0x55, 0x17, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00,
   0x00, 0x08, 0x20, 0x49, 0x00, 0x00, 0x01, 0x00, 0x80, 0x8b, 0xfa, 0xa7,
   0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0x10, 0x00, 0x00, 0x08, 0x20, 0x08, 0x00, 0x00, 0x01, 0x00,
   0x00, 0x55, 0x0d, 0x54, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x38, 0x27, 0x72, 0x08, 0x74, 0x1c,
   0x4e, 0x03, 0x01, 0x00, 0x80, 0x8b, 0x0a, 0xa4, 0xaa, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x28,
   0x8a, 0x08, 0x20, 0x08, 0xd1, 0xc4, 0x01, 0x00, 0x00, 0x55, 0x0d, 0x54,
   0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x92, 0x28, 0x8a, 0xe8, 0x24, 0x08, 0x51, 0x20, 0x01, 0x00,
   0x80, 0x8b, 0x0a, 0xa4, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x27, 0x7a, 0x88, 0x24, 0x08,
   0x51, 0x10, 0x01, 0x00, 0x00, 0x55, 0x0d, 0x54, 0x17, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x20,
   0x0a, 0x88, 0x24, 0x08, 0x51, 0x10, 0x01, 0x00, 0x80, 0x8b, 0x0a, 0xa4,
   0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0x91, 0x48, 0x89, 0x48, 0x24, 0x08, 0x51, 0x10, 0x01, 0x00,
   0x00, 0x55, 0x0d, 0x54, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x08, 0x87, 0x70, 0x30, 0x22, 0x08,
   0x4e, 0xe0, 0x00, 0x00, 0x80, 0x8b, 0xfa, 0xa7, 0xaa, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x05, 0x50,
   0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x80, 0x8b, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x17, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00,
   0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x8b, 0xaa, 0xaa,
   0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x01, 0x00, 0x10, 0x20, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x55, 0x55, 0x55, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x20, 0x00, 0x88,
   0x00, 0x00, 0x00, 0x00, 0x80, 0xcb, 0xff, 0xff, 0xab, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
   0x08, 0x20, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55,
   0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x91, 0x0d, 0x84, 0x23, 0xa7, 0x89, 0x0c, 0x00, 0x00, 0x00,
   0x80, 0xab, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x12, 0x44, 0xa4, 0x68, 0x4a,
   0x12, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x12,
   0x42, 0xa4, 0x28, 0x3a, 0x12, 0x00, 0x00, 0x00, 0x80, 0xab, 0xaa, 0xaa,
   0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x51, 0x12, 0xc2, 0xa3, 0x27, 0x4a, 0x12, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x51, 0x10, 0x41, 0xa0, 0x20, 0x8a,
   0x12, 0x00, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x51, 0x10,
   0x51, 0xa4, 0x28, 0x8a, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xc0, 0x48, 0x10, 0x8f, 0x13, 0x27, 0x8a, 0x2c, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x09, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x20,
   0x80, 0x48, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0x02, 0x20, 0x80, 0x48, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x20, 0x80, 0x48, 0x80, 0x44,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6a, 0xa0,
   0x88, 0x44, 0xce, 0x45, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0xe0, 0x9b, 0xb8, 0x88, 0x43, 0x91, 0x24, 0x98, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x8a, 0xa4, 0x88, 0x40, 0x91, 0x1c,
   0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x8a, 0xa2,
   0x88, 0x40, 0x91, 0x24, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x20, 0x8a, 0xa2, 0x88, 0x40, 0x91, 0x44, 0x8a, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x8a, 0xa2, 0x88, 0x40, 0x91, 0x44,
   0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x8a, 0x1c,
   0x8f, 0x20, 0x4e, 0x44, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
xataxx/lib/upcursor.xbm100600   1750      1         473  5010720156  13717 0ustar  iialanbin#define cursor_width 15
#define cursor_height 15
#define cursor_x_hot 0
#define cursor_y_hot 0
static char cursor_bits[] = {
   0x03, 0x00, 0x0d, 0x00, 0x3a, 0x00, 0xd6, 0x00, 0xac, 0x03, 0x54, 0x0d,
   0xa8, 0x1a, 0x58, 0x35, 0xb0, 0x7e, 0x50, 0x55, 0xe0, 0x7f, 0x60, 0x55,
   0xc0, 0x7f, 0x80, 0x35, 0x00, 0x1f};
xataxx/lib/upmask.xbm100600   1750      1         473  5010720160  13330 0ustar  iialanbin#define upmask_width 15
#define upmask_height 15
#define upmask_x_hot 0
#define upmask_y_hot 0
static char upmask_bits[] = {
   0x1f, 0x00, 0x7f, 0x00, 0xff, 0x01, 0xff, 0x07, 0xff, 0x1f, 0xfe, 0x3f,
   0xfe, 0x7f, 0xfc, 0x7f, 0xfc, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf0, 0x7f,
   0xf0, 0x7f, 0xc0, 0x7f, 0xc0, 0x7f};
xataxx/main.c100600   1750      1        6757  5351356161  11713 0ustar  iialanbin#include <stdio.h>
#include <X11/Xlib.h>
#include <math.h>
#include "struct.h"
#include "patchlevel.h"

extern Bool flumping, wflump, fflump, jflump, perfection;
int botmode; /* 1 for 2 player, 0 for 1 vs bot */
int boards;
int botlevel;

char *itoa(); /* gross version */
char *rand_board();
int get_num_boards();

char disp[90];
Bool fb;
char fbd[90];

showopts()
{
	fprintf(stderr, "Syntax: xataxx <-jnw> <-d displayname> <-l level number>\n");
	fprintf(stderr, "	-d display name: name of opponents xhosted display.\n");
	fprintf(stderr, "	-j zot only on moves\n");
	fprintf(stderr, "	-l level number: number of look-ahead turns for robot (0-9).\n");
	fprintf(stderr, "	-n no zotting\n");
	fprintf(stderr, "	-p make it perfect\n");
	fprintf(stderr, "	-w will zot always\n");
}

process_flags(arg, n)
char **arg;
int n;
{
	int x;

	for(x=1;x<strlen(arg[n]);x++) {
		switch(arg[n][x]) {
			case 'b':
  				strcpy(fbd, arg[n+1]);
  				strcat(fbd, BOARDEXT);  
				fb = False;
				break;
			case 'd':
				botmode=1;
				strcpy(disp, arg[n+1]);
				if (arg[n+1][strlen(arg[n+1])-2] != ':')
					strcat(disp, ":0");
				break;
			case 'f':
				fflump = False;
				break;
			case 'h':
				showopts();
				exit(0);
				break;
			case 'l':
				botlevel = arg[n+1][0] - '0';
				if (botlevel < 0 || botlevel > 9) {
					showopts();
					exit(0);
				}
				break;
			case 'j':
				jflump = False;
				break;
			case 'n':
				wflump = False;
				break;
			case 'p':
				perfection = True;
				break;
			case 'w':
				wflump = True;
				jflump = True;
				flumping = True;
				break;
			default:
				showopts();
				exit(0);
				break;
		}
	}
}

main(argc,argv)
int argc;
char *argv[];
{
  int n, q;

  botmode = 0;
  botlevel = 2;
  flumping = True;
  wflump = True;
  fflump = True;
  jflump = False;
  perfection = False;

  fb = True;
  if (argc>1)
    for(n=1;n<argc;n++) {
      if (argv[n][0] == '-')
      process_flags(argv, n);
    }

  chdir(DATADIR);

  boards = get_num_boards();

/* Load the input board */
  if (fb) {
    if (load_board(rand_board()))
      exit(1);
  }
  else {
    if (load_board(fbd)) {
      fprintf(stderr, "You twit- that's not a valid board #.\n");
      fprintf(stderr, "If you're gonna try that, talk to Jim to find out how.\n");
      exit(1);
    }
  }

/* Start up the windows */
  initialize_display(disp);

  readbitmaps();

  show_title();

  while(1) {
    if (waitferkey(8)) {
      if (!demo())
      waitferkey(5);
      show_title();
    }
    else {
      init_pieces();
      play_loop();
    }
    if (load_board(rand_board()))
      exit(1);
  }
}

char *rand_board()
{
  int bd;
  static char fname[200];

  srandom(time(NULL));
  bd = random()%boards;
  bd++;
  strcpy(fname, itoa(bd));
  strcat(fname, BOARDEXT);  
  return(fname);
}

char *itoa(x) /* gross version - replace this hack ASAP */
int x;
{     
  int z1, z2, z3, z4, z=0;
  static char nn[6];

  z1 = (int) (x)/1000;
  z2 = (int) (x)/100-(10*z1);
  z3 = (int) (x)/10-(100*z1)-(10*z2);
  z4 = (int) (x)-(1000*z1)-(100*z2)-(10*z3);

  if (z1)
    nn[z++]=(z1+'0');
  if (z2)
    nn[z++]=(z2+'0');
  if (z3)
    nn[z++]=(z3+'0');
  if (z4)
    nn[z++]=(z4+'0');
  nn[z++]='\0';
  return(nn);
}

int get_num_boards()
{
  FILE *bdfile;
  int bdx;

  if((bdfile = fopen(BOARDNUMFILE, "r")) == NULL) {
    fprintf(stderr, "Cannot open %s for reading.\n", BOARDNUMFILE);
    exit(1);
  }
  boards = 0;
  fscanf(bdfile, "%d", &bdx);
  fclose(bdfile);
  if (bdx<1) {
    fprintf(stderr, "Invalid number of allowable boards.\n");
    exit(1);
  }
  return(bdx);
}

xataxx/nubot.c100600   1750      1       15223  4753312212  12114 0ustar  iialanbin#include <stdio.h>
#include <X11/Xlib.h>
#include "struct.h"

#define MAXMOVES (700)

typedef struct {
    int ox,oy;
    int nx,ny;
    char jump;
} zthing;

int *tboard[10];

#define square(bd, x, y) (bd[(x)*y_board_size+(y)])

extern int b_look2(); /* return EMPTY, BLACK, WHITE, or OBSTACLE */
extern int x_board_size, y_board_size;
extern int *board, *bl2;
extern int botlevel;

void init_nubot()
{
    register int i, x, y;
    int *bd;

    for (i=0; i<10; i++) {
	bd = (int *) malloc(sizeof(int)*x_board_size*y_board_size);

	for (x=0;x!=x_board_size;x++)
	    for (y=0;y!=y_board_size;y++)
		bd[x*y_board_size+y] = EMPTY;
	tboard[i] = bd;
    }
}

void fcopy_board(bd1, bd2)
int *bd1, *bd2;
{
    bcopy(bd1, bd2, sizeof(int)*x_board_size*y_board_size);  
}

int b_lookr(x, y, bd)
int x, y;
int *bd;
{
    if ((x>=0)&&(x<x_board_size)&&(y>=0)&&(y<y_board_size))
	return(bd[x*y_board_size+y]);
    else
	return(OBSTACLE);
}

void apply_move(player, bd, mv)
int player;
int *bd;
zthing *mv;
{
    register int ix, iy;
    int sq;

    square(bd, mv->nx, mv->ny) = player;
    if ((mv->nx-mv->ox < 2) && (mv->nx-mv->ox > -2) && (mv->ny-mv->oy < 2) && (mv->ny-mv->oy > -2)) {
	/* leave orig alone */
    }
    else {
	square(bd, mv->ox, mv->oy) = EMPTY;
    };

    for (ix=(-1); ix<=1; ix++)
	for (iy=(-1); iy<=1; iy++) {
	    sq = square(bd, mv->nx+ix, mv->ny+iy);
	    if (sq!=EMPTY && sq!=OBSTACLE) 
		square(bd, mv->nx+ix, mv->ny+iy) = player;
	}
}

int valueb(player, oplayer, bd) /* estimate the value of the board for player. oplayer should be the opposite color */
int player, oplayer;
int *bd;
{
    register int ix, iy;
    int good=0, bad=0, empty=0;
    int sq;

    for (ix=0; ix<x_board_size; ix++)
	for (iy=0; iy<y_board_size; iy++) {
	    sq = square(bd, ix, iy);
	    if (sq == player) good++;
	    else if (sq == oplayer) bad++;
	    else if (sq == EMPTY) empty++;
	}

    if (empty==0) {
	if (good>bad) return (10000);
	else return (-10000);
    };
    if (good==0) return (-10000);
    if (bad==0) return (10000);
    return (good-bad);
}

list_moves(player, bd, movel)
int player;
int *bd;
zthing *movel;
{
    register int posx, posy;
    int moves=0;

#define do_check(jflag, x, y, player) \
    if (b_lookr((x), (y), bd)==EMPTY) { \
    movel[moves].nx = (x); \
    movel[moves].ny = (y); \
    movel[moves].ox = (posx); \
    movel[moves].oy = (posy); \
    movel[moves].jump = (jflag); \
    moves++; \
    }

    for (posx=0; posx<x_board_size; posx++)
	for (posy=0; posy<y_board_size; posy++) 
	    if (b_lookr((posx), (posy), bd)==player) {
		do_check(0,posx-1,posy-1,player);
		do_check(0,posx,posy-1,player);
		do_check(0,posx+1,posy-1,player);
		do_check(0,posx+1,posy,player);
		do_check(0,posx+1,posy+1,player);
		do_check(0,posx,posy+1,player);
		do_check(0,posx-1,posy+1,player);
		do_check(0,posx-1,posy,player);

		do_check(1,posx-2,posy-2,player);
		do_check(1,posx-1,posy-2,player);
		do_check(1,posx,posy-2,player);
		do_check(1,posx+1,posy-2,player);
		do_check(1,posx+2,posy-2,player);
		do_check(1,posx+2,posy-1,player);
		do_check(1,posx+2,posy,player);
		do_check(1,posx+2,posy+1,player);
		do_check(1,posx+2,posy+2,player);
		do_check(1,posx+1,posy+2,player);
		do_check(1,posx,posy+2,player);
		do_check(1,posx-1,posy+2,player);
		do_check(1,posx-2,posy+2,player);
		do_check(1,posx-2,posy+1,player);
		do_check(1,posx-2,posy,player);
		do_check(1,posx-2,posy-1,player);
	    }

    movel[moves].ox = (-1);
}

/* Make a move for player. If no move possible, just return. */
robot_move(player)
int player;
{
    static int initted = 0;
    zthing movel[MAXMOVES];
    int vall[MAXMOVES];
    register int ix;
    int temp, bestval = (-10000);
    int oplayer;
    zthing *best;
    int numbest, numglides, gomove;

    if (!initted) {
	init_nubot();
	initted = 1;
    }

    oplayer = (player==WHITE) ? BLACK : WHITE;

    list_moves(player, board, movel);

    if (movel[0].ox==(-1)) return; /* there are no legal moves */

    if (botlevel==0) {
	for (ix=0; movel[ix].ox!=(-1); ix++);
	ix = random() % ix;
	best = &(movel[ix]);
	
	move_piece(best->ox,best->oy,best->nx,best->ny,player);
	return;
    };
    
    for (ix=0; movel[ix].ox!=(-1); ix++) {
	fcopy_board(board, tboard[0]);
	apply_move(player, tboard[0], &(movel[ix]));
	vall[ix] = -veb(oplayer, tboard[0], 1, 10000);
	if (vall[ix] > bestval) bestval = vall[ix];
    }

    do {
	for (ix=0; movel[ix].ox!=(-1) && (vall[ix]!=bestval || random()%2); ix++);
    } while (movel[ix].ox==(-1));

    numbest = 0;
    numglides = 0;
    for (ix=0; movel[ix].ox!=(-1); ix++) {
/*
	printf("%d: %d,%d -- %d,%d %c (val %d)\n", ix, movel[ix].ox, movel[ix].oy, movel[ix].nx, movel[ix].ny, movel[ix].jump ? 'J' : 'G', vall[ix]);
*/
	if (vall[ix]==bestval) {
	    numbest++;
	    if (!movel[ix].jump) numglides++;
	}
    }
    
    if (numglides) {
	gomove = (random() % numglides) + 1;
/*
	printf("%d moves (%d glides); took %d'th glide ", numbest, numglides, gomove);
*/
	for (ix=0; gomove && movel[ix].ox!=(-1); ix++)
	    if (vall[ix]==bestval && (!movel[ix].jump)) gomove--;

    }
    else {
	gomove = (random() % numbest) + 1;
/*
	printf("%d moves (%d glides); took %d'th move ", numbest, numglides, gomove);
*/
	for (ix=0; gomove && movel[ix].ox!=(-1); ix++)
	    if (vall[ix]==bestval) gomove--;

    }

    ix--;
/*
    printf("(ix=%d) \n", ix);
*/
    best = &(movel[ix]);
/*
    printf("Move is %d,%d -- %d,%d (val %d vs %d)\n", best->ox,best->oy,best->nx,best->ny, vall[ix], bestval);
*/
    move_piece(best->ox,best->oy,best->nx,best->ny,player);
}

int veb(player, given, depth, dee) /* return the value of given board for one player */
int player;
int *given;
int depth;
int dee;
{
    int x,y;
    int oplayer;
    zthing movel[MAXMOVES];
    int vall;
    int temp, bestval = (-10000);
    register int ix;

    oplayer = (player==WHITE) ? BLACK : WHITE;

    if (depth == botlevel) {
	int val = valueb(player, oplayer, given);
	return val;
    }

    list_moves(player, given, movel);
    
    if (movel[0].ox==(-1)) return -10000; /* there are no legal moves */

    for (ix=0; movel[ix].ox!=(-1); ix++) {
	fcopy_board(given, tboard[depth]);
	apply_move(player, tboard[depth], &(movel[ix]));
	vall = -veb(oplayer, tboard[depth], depth+1, -bestval);
	if (vall > bestval) bestval = vall;
	if (bestval >= dee) return bestval;
    }

    return bestval;
}

dump_board(bd)
int *bd;
{
    register int ix, iy;
    int sq;
    for (iy=0; iy<y_board_size; iy++) {
	for (ix=0; ix<x_board_size; ix++) {
	    sq = square(bd, ix, iy);
	    switch (sq) {
		case EMPTY:
		    printf("- ");
		    break;
		case WHITE:
		    printf("W ");
		    break;
		case BLACK:
		    printf("B ");
		    break;
		case OBSTACLE:
		    printf("# ");
		    break;
	    }
	};
	printf("\n");
    }
    printf("\n");
}
xataxx/parse.c100600   1750      1        2142  4754607414  12067 0ustar  iialanbin#include <stdio.h>
#include <strings.h>
#include "struct.h"

#define return_fail(str) { \
  fprintf(stderr,"%s\n",str); \
  return(1); \
}

load_board(file)
     char *file;
{
  FILE *fp;
  char line[1024],*tok;
  int x_board_size,y_board_size,xpos,ypos;

  if (!(fp = fopen(file,"r"))) {
    fprintf(stderr,"Could not open board file %s\n",file);
    return(1);
  }

  /* Read board size */
  fgets(line,1024,fp);
  if (!(tok= (char *) strtok(line,TOKS)))
    return_fail("Could not read board size");
  x_board_size = atoi(tok);
  if (!(tok=(char *) strtok(NULL,TOKS)))
    return_fail("Could not read board size");
  y_board_size = atoi(tok);

  if (allocate_board(x_board_size,y_board_size))
    return_fail("Invalid board size");

  /* Now for the obstructions */
  for (fgets(line,1024,fp),fgets(line,1024,fp);
       (tok= (char *) strtok(line,TOKS));fgets(line,1024,fp)) {
    xpos = atoi(tok);
    if (!(tok=(char *) strtok(NULL,TOKS)))
      return_fail("Invalid pair in obstructions");
    ypos = atoi(tok);
    if (add_obstruction(xpos,ypos))
      return_fail("Obstruction out of range");
  }

  return(0);
}
xataxx/patchlevel.h100600   1750      1          65  5102367233  13041 0ustar  iialanbinstatic char *patchlevel = "xataxx 1.0 patchlevel 1";
xataxx/struct.h100600   1750      1        1550  5103160766  12301 0ustar  iialanbin#define EMPTY 0
#define WHITE 1
#define BLACK 2
#define OBSTACLE 3

#define TOKS " \t,\n"
#define MIN_BOARD_SIZE 1
#define MAX_BOARD_SIZE 1024

#define X_PIECE_SIZE 32
#define Y_PIECE_SIZE 32

#define TEXT_SIZE 50

#ifndef DATADIR
#define DATADIR "/usr/games/lib/xataxx"
#endif

#define BLACKSTONE perfection ? "dksmiley.xbm":"dkstone.xbm"
#define WHITESTONE perfection ? "ltsmiley.xbm":"ltstone.xbm"
#define BLACKBLOCK "dkblock.xbm"
#define WHITEBLOCK "ltblock.xbm"
#define TITLE	   "title.xbm"
#define UPCURSOR   perfection ? "smilecurs.xbm":"upcursor.xbm"
#define DOWNCURSOR perfection ? "scowlcurs.xbm":"downcursor.xbm"
#define UPMASK	   perfection ? "smilecursmask.xbm":"upmask.xbm"
#define DOWNMASK   perfection ? "scowlcursmask.xbm":"downmask.xbm"

#define BOARDEXT   ".xbd"
#define BOARDNUMFILE  "boards.num"

#ifndef True
#define True 1
#define False 0
#endif



xataxx/xataxx.man100600   1750      1        7666  5103160634  12626 0ustar  iialanbin.TH XAtaxx 6 "9 April 1991"
.SH NAME
XAtaxx \- a strategy game
.SH SYNOPIS
.B xataxx
[
.B \-l
.I number
]
[
.B \-j
]
[
.B \-n
]
[
.B \-p
]
[
.B \-d
.I player-two-display
]
.IP \fB\-l:\fR 8
Specifies the number of moves the robot will look ahead.  Accepted
values are 0 through 9.  A good level is two or three.  Searching too
far ahead slows the game horrendously.
.IP \fB\-j:\fR
Zots only the piece moved.
.IP \fB\-n:\fR
Turns off zotting completely.
.IP \fB\-d:\fR
Allows play against a second person instead of the computer.  A player
2 display must be specified and player 2 must be xhosted to your
machine.  Starting xataxx without a player 2 display automatically
calls the robot player.  On a typical Andrew machine his display name
must be entered as machine-name:0.  Thus, if Jello Biafra was logged
into armstrong.res.andrew.cmu.edu, and his friend Eeyore was on
circe.weh.andrew.cmu.edu, Eeyore should type 'xhost armstrong.res', and
Jello should type 'xataxx circe.weh:0'.
.IP \fB\-p:\fR
Make it perfect. (obscure Wizard of Time reference)
.SH DESCRIPTION
.sp
\fIXAtaxx\fP is a strategy game based on Ataxx, a popular arcade video
game.  It is a game of position and movement.  The object is to have
the most pieces of your color on the board at the end of the game.
.SH STARTING
You must be running the X Windowing system to run \fBXAtaxx\fP.  When
you start up \fBXAtaxx\fP, you should see a title screen.  Clicking on
the title screen causes it to change to the game board.  The board you
see should be square, with two black pieces in diagonal corners, two
white pieces in diagonal corners, and variously placed obstacles.  At
the bottom of the window should be a listing of the number of pieces,
or globs, each player has.
.SH PLAYING
The game has two types of movement.  There is a move, and a jump.  To
move a glob, click on a glob of your color and click on an adjacent
empty square.  Your piece will split off a new glob to occupy that
square.  To jump , click on a piece, and click on an empty space that
is separated from the source glob by one other space.  Your piece will
jump to the new spot, over whatever obstacles, friendly pieces, or
enemy pieces are in the way.  You may not move or jump onto an obstacle
or another glob.  When you land next to a glob or many globs of the
opponents color, your glob will split off pieces and take over those
adjacent globs.  If there are no possible movements for a player, he
forefeits his turn.  The winner of the game is the person who has the
most globs on the screen when no more movements can be made.  The
winner and scores will be displayed at the bottom of the window.
Clicking in the window will reset the board, and waiting will display
the title screen.  Waiting even longer will cause the game to go into
demo mode, with two robot players playing each other.  Clicking on the
demo game will bring back the title screen.
.SH QUITTING
Hitting 'q' while either the end of a game, the title screen, or a demo
is showing will exit the game.
.SH WARNINGS
The game currently buffers clicks and key presses.  Clicking too many
times can put you into unfortunate positions or reset the board to
start before you have a chance to see the scores.
.SH "RECENT CHANGES"
The zotting options have been added.
The bug which caused the game to lock up has been
fixed (it now really understands whose turn it is,
and whether a move is impossible for a player)
Goofy color errors on monochrome suns have been fixed
Various bogosities in the bitmap code have been
wiped from the face of the earth
.br
A smarter robot, and its options have been added.
.SH BUGS
Still could be. Mail to jz1j@andrew.cmu.edu
.SH AUTHORS
\fBCode by\fP:
.nf
.in +1i
Steven Gifford <sg10+@andrew.cmu.edu>
Jim Zelenka <jz1j+@andrew.cmu.edu>
Andrew Plotkin <ap1i+@andrew.cmu.edu>
.in -1i
\fBBitmaps by\fP:
.in +1i
Benjamin Peal <bp14+@andrew.cmu.edu>
Elliott C. Evans <ee0r+@andrew.cmu.edu>
.SH SPECIAL THANKS
\fBBug Tracing\fP:
.nf
.in + 1i
Jay Schmidgall <shmdgljd@rchvmw3.vnet.ibm.com>
xataxx/zot.c100600   1750      1        2511  4753312234  11561 0ustar  iialanbin#include <stdio.h>
#include <X11/Xlib.h>
#include <math.h>
#include "struct.h"

extern Display *dpy, *odpy, *currdpy;
extern Window win, owin, currwin;
extern GC gc, ogc, currgc;
extern int xsize, ysize, obstacle_color;
extern int botmode;
extern Pixmap mapw, mapb, omapw, omapb, wblock, bblock, owblock, obblock;
extern Bool flumping, wflump, fflump, jflump;

blat(sx, sy, dx, dy, cmaps, cdpy, cscr, cgc, cwin, cmap)
int sx, sy, dx, dy;
Pixmap cmaps;
Display *cdpy;
int cscr;
GC cgc;
Window cwin;
Pixmap cmap;
{
	GC bgc;

	if (!wflump)
		return;
	zot(dx, dy, cmaps, cdpy, cscr, cgc, cwin, cmap);
}

zot(dox, doy, cmaps, cdpy, cscr, cgc, cwin, cmap)
int dox, doy;
Pixmap cmaps;
Display *cdpy;
int cscr;
GC cgc;
Window cwin;
Pixmap cmap;
{
   int x1, x2, y1, y2, dx, dy, wid, hei;

   dx = dox * X_PIECE_SIZE;
   dy = doy * Y_PIECE_SIZE;
   x1 = dx + X_PIECE_SIZE / 2;
   x2 = x1+1;
   y1 = dy + Y_PIECE_SIZE / 2;
   y2 = x1+1;
   wid = x2 - x1;
   hei = y2 - y1;
   while (x1 > dx || y1 > dy || x2 < (dx+X_PIECE_SIZE-1) || y2 < (dy+Y_PIECE_SIZE-1)) {
	XCopyArea(cdpy, cmaps, cmap, cgc, (x1-dx), (y1-dy), wid, hei, x1, y1);
	if (x1 > dx) x1--;
	if (y1 > dy) y1--;
	if (x2 < (dx+X_PIECE_SIZE-1)) x2++;
	if (y2 < (dy+Y_PIECE_SIZE-1)) y2++;
	wid = x2 - x1;
	hei = y2 - y1;
	if (fflump)
	  msec_wait(2000);
	redraw_win(cdpy, cwin, cmap, cgc);
   }
}








xataxx/Imakefile100600   1750      1        1132  5351354562  12415 0ustar  iialanbin# Imakefile for XAtaxx

# you may want to uncomment and fill in the next line if you are not installing
# in the system default BINDIR
# BINDIR =

# !%^#*
DEPLIBS =

/* DATADIR is where the boards and bitmaps will be installed */
DATADIR	= lib

LOCAL_LIBRARIES = $(XLIB) 
SRCS	= bits.c board.c colbits.c demo.c display.c main.c nubot.c parse.c zot.c
OBJS	= bits.o board.o colbits.o demo.o display.o main.o nubot.o parse.o zot.o
DEFINES = -DDATADIR=\"${DATADIR}\"
ComplexProgramTarget(xataxx)

install:: install.lib

install.lib:
	for i in lib//**/*; do \
		(set -x; install -c $$i $(DATADIR)); \
	done
xataxx/Makefile100600   1750      1       25344  5351354615  12276 0ustar  iialanbin# Makefile generated by imake - do not edit!
# $XConsortium: imake.c,v 1.65 91/07/25 17:50:17 rws Exp $

# -------------------------------------------------------------------------
# Makefile generated from "Imake.tmpl" and </tmp/IIf.a00747>
# $Header: /home/x_cvs/mit/config/Imake.tmpl,v 1.8 1993/01/08 10:11:36 dawes Exp $
# $XConsortium: Imake.tmpl,v 1.139 91/09/16 08:52:48 rws Exp $
#
# Platform-specific parameters may be set in the appropriate <vendor>.cf
# configuration files.  Site-specific parameters should be set in the file
# site.def.  Full rebuilds are recommended if any parameters are changed.
#
# If your C preprocessor does not define any unique symbols, you will need
# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
# "make World" the first time).
#

# -------------------------------------------------------------------------
# site-specific configuration parameters that need to come before
# the platform-specific parameters - edit site.def to change

# $Header: /home/x_cvs/mit/config/site.def,v 1.52 1993/02/08 22:11:12 dawes Exp $
# site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $

# -------------------------------------------------------------------------
# platform-specific configuration parameters - edit x386.cf to change

# $Header: /home/x_cvs/mit/config/x386.cf,v 1.59 1993/02/08 22:11:15 dawes Exp $
# platform:  $XConsortium: x386.cf,v 1.7 91/08/16 19:30:10 gildea Exp $

# operating system:  		Linux 	(Usenet)

# -------------------------------------------------------------------------
# site-specific configuration parameters that go after
# the platform-specific parameters - edit site.def to change

# $Header: /home/x_cvs/mit/config/site.def,v 1.52 1993/02/08 22:11:12 dawes Exp $
# site:  $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $

            SHELL = 	/bin/sh

              TOP = .
      CURRENT_DIR = .

               AR = ar clq
  BOOTSTRAPCFLAGS =
               CC = 		gcc -fwritable-strings -fomit-frame-pointer
               AS = as

              LEX = 		flex

             YACC = 		bison -y

         COMPRESS = compress
              CPP = 		/lib/cpp $(STD_CPP_DEFINES)
    PREPROCESSCMD = 	/lib/cpp $(STD_CPP_DEFINES)
          INSTALL = 	install
               LD = ld
             LINT = lint
      LINTLIBFLAG = -C
         LINTOPTS = -axz
               LN = ln -s
             MAKE = make
               MV = mv
               CP = cp

           RANLIB = ranlib
  RANLIBINSTFLAGS =

               RM = rm -f
            TROFF = psroff
         MSMACROS = -ms
              TBL = tbl
              EQN = eqn
     STD_INCLUDES =
  STD_CPP_DEFINES = -traditional 		-D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE 	-Dlinux
      STD_DEFINES = 		-D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE 	-Dlinux
 EXTRA_LOAD_FLAGS =
  EXTRA_LIBRARIES =
             TAGS = ctags

    PROTO_DEFINES = -DFUNCPROTO=11 -DNARROWPROTO

     INSTPGMFLAGS = -s

     INSTBINFLAGS = -m 0755
     INSTUIDFLAGS = -m 4755
     INSTLIBFLAGS = -m 0644
     INSTINCFLAGS = -m 0444
     INSTMANFLAGS = -m 0444
     INSTDATFLAGS = -m 0444
    INSTKMEMFLAGS = -m 4755

      PROJECTROOT = 	/usr/X386

     TOP_INCLUDES = -I$(INCROOT)

      CDEBUGFLAGS = -O2
        CCOPTIONS = -m486 -DNO_ASM
    ANSICCOPTIONS =

      ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES)
       ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(DEFINES)
           CFLAGS = $(ANSICCOPTIONS) $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
        LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)

           LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)

        LDOPTIONS = $(ANSICCOPTIONS) $(CDEBUGFLAGS) $(CCOPTIONS) $(LOCAL_LDFLAGS) -L$(USRLIBDIR)

   LDCOMBINEFLAGS = 	-r
      DEPENDFLAGS =

        MACROFILE = x386.cf
           RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut

    IMAKE_DEFINES =

         IRULESRC = $(CONFIGDIR)
        IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)

     ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules 			$(IRULESRC)/Project.tmpl $(IRULESRC)/site.def 			$(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)

# -------------------------------------------------------------------------
# $Header: /home/x_cvs/mit/config/Project.tmpl,v 1.10 1993/02/06 05:14:49 dawes Exp $
# X Window System Build Parameters
# $XConsortium: Project.tmpl,v 1.138.1.1 92/11/11 09:49:19 rws Exp $

# -------------------------------------------------------------------------
# X Window System make variables; this need to be coordinated with rules

          PATHSEP = /
        USRLIBDIR = 	/usr/X386/lib
           BINDIR = 	/usr/X386/bin
          INCROOT = 	/usr/X386/include
     BUILDINCROOT = $(TOP)
      BUILDINCDIR = $(BUILDINCROOT)/X11
      BUILDINCTOP = ..
           INCDIR = $(INCROOT)/X11
           ADMDIR = /usr/adm
           LIBDIR = $(USRLIBDIR)/X11
        CONFIGDIR = $(LIBDIR)/config
       LINTLIBDIR = $(USRLIBDIR)/lint

          FONTDIR = $(LIBDIR)/fonts
         XINITDIR = $(LIBDIR)/xinit
           XDMDIR = $(LIBDIR)/xdm
           TWMDIR = $(LIBDIR)/twm
          MANPATH = 	/usr/X386/man
    MANSOURCEPATH = $(MANPATH)/man
        MANSUFFIX = 1x
     LIBMANSUFFIX = 3x
           MANDIR = 	$(MANSOURCEPATH)1
        LIBMANDIR = $(MANSOURCEPATH)3
           NLSDIR = $(LIBDIR)/nls
        PEXAPIDIR = $(LIBDIR)/PEX
      XAPPLOADDIR = $(LIBDIR)/app-defaults
       FONTCFLAGS = -t
       LINKKITDIR = 	$(USRLIBDIR)/Server

     INSTAPPFLAGS = $(INSTDATFLAGS)

            IMAKE = imake
           DEPEND = makedepend
              RGB = rgb

            FONTC = bdftopcf

        MKFONTDIR = mkfontdir
        MKDIRHIER = 	/bin/sh $(BINDIR)/mkdirhier

        CONFIGSRC = $(TOP)/config
       DOCUTILSRC = $(TOP)/doc/util
        CLIENTSRC = $(TOP)/clients
          DEMOSRC = $(TOP)/demos
           LIBSRC = $(TOP)/lib
          FONTSRC = $(TOP)/fonts
       INCLUDESRC = $(TOP)/X11
        SERVERSRC = $(TOP)/server
          UTILSRC = $(TOP)/util
        SCRIPTSRC = $(UTILSRC)/scripts
       EXAMPLESRC = $(TOP)/examples
       CONTRIBSRC = $(TOP)/../contrib
           DOCSRC = $(TOP)/doc
           RGBSRC = $(TOP)/rgb
        DEPENDSRC = $(SCRIPTSRC)
         IMAKESRC = $(CONFIGSRC)
         XAUTHSRC = $(LIBSRC)/Xau
          XLIBSRC = $(LIBSRC)/X
           XMUSRC = $(LIBSRC)/Xmu
       TOOLKITSRC = $(LIBSRC)/Xt
       AWIDGETSRC = $(LIBSRC)/Xaw
       OLDXLIBSRC = $(LIBSRC)/oldX
      XDMCPLIBSRC = $(LIBSRC)/Xdmcp
      BDFTOSNFSRC = $(FONTSRC)/bdftosnf
      BDFTOSNFSRC = $(FONTSRC)/clients/bdftosnf
      BDFTOPCFSRC = $(FONTSRC)/clients/bdftopcf
     MKFONTDIRSRC = $(FONTSRC)/clients/mkfontdir
         FSLIBSRC = $(FONTSRC)/lib/fs
    FONTSERVERSRC = $(FONTSRC)/server
     EXTENSIONSRC = $(TOP)/extensions
         XILIBSRC = $(EXTENSIONSRC)/lib/xinput
        PEXLIBSRC = $(EXTENSIONSRC)/lib/PEXlib
      PHIGSLIBSRC = $(EXTENSIONSRC)/lib/PEX

  DEPEXTENSIONLIB = $(USRLIBDIR)/libXext.a
     EXTENSIONLIB = 			 -lXext

          DEPXLIB = $(DEPEXTENSIONLIB) $(USRLIBDIR)/libX11.a
             XLIB = $(EXTENSIONLIB) 			 -lX11

      DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
         XAUTHLIB = 			 -lXau
      DEPXDMCPLIB = $(USRLIBDIR)/libXdmcp.a
         XDMCPLIB = 			 -lXdmcp

        DEPXMULIB = $(USRLIBDIR)/libXmu.a
           XMULIB = 			 -lXmu

       DEPOLDXLIB = $(USRLIBDIR)/liboldX.a
          OLDXLIB = 			 -loldX

      DEPXTOOLLIB = $(USRLIBDIR)/libXt.a
         XTOOLLIB = 			 -lXt

        DEPXAWLIB = $(USRLIBDIR)/libXaw.a
           XAWLIB = 			 -lXaw

        DEPXILIB = $(USRLIBDIR)/libXi.a
           XILIB = 			 -lXi

       DEPPEXLIB = $(USRLIBDIR)/libPEX5.a
          PEXLIB = 			 -lPEX5

        DEPPHIGSLIB = $(USRLIBDIR)/libphigs.a
           PHIGSLIB = 			 -lphigs

       DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a
          XBSDLIB = 			 -lXbsd

 LINTEXTENSIONLIB = $(LINTLIBDIR)/llib-lXext.ln
         LINTXLIB = $(LINTLIBDIR)/llib-lX11.ln
          LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
        LINTXTOOL = $(LINTLIBDIR)/llib-lXt.ln
          LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
           LINTXI = $(LINTLIBDIR)/llib-lXi.ln
          LINTPEX = $(LINTLIBDIR)/llib-lPEX5.ln
        LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln

          DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)

         DEPLIBS1 = $(DEPLIBS)
         DEPLIBS2 = $(DEPLIBS)
         DEPLIBS3 = $(DEPLIBS)

# -------------------------------------------------------------------------
# Imake rules for building libraries, programs, scripts, and data files
# $Header: /home/x_cvs/mit/config/Imake.rules,v 1.8 1993/02/03 13:01:58 dawes Exp $
# rules:  $XConsortium: Imake.rules,v 1.123 91/09/16 20:12:16 rws Exp $

# -------------------------------------------------------------------------
# start of Imakefile

# Imakefile for XAtaxx

# you may want to uncomment and fill in the next line if you are not installing
# in the system default BINDIR
# BINDIR =

# !%^#*
DEPLIBS =

DATADIR	= lib

LOCAL_LIBRARIES = $(XLIB)
SRCS	= bits.c board.c colbits.c demo.c display.c main.c nubot.c parse.c zot.c
OBJS	= bits.o board.o colbits.o demo.o display.o main.o nubot.o parse.o zot.o
DEFINES = -DDATADIR=\"${DATADIR}\"

 PROGRAM = xataxx

all:: xataxx

xataxx: $(OBJS) $(DEPLIBS)
	$(RM) $@
	$(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS)

install:: xataxx
	@if [ -d $(DESTDIR)$(BINDIR) ]; then set +x; \
	else (set -x; $(MKDIRHIER) $(DESTDIR)$(BINDIR)); fi
	$(INSTALL) -c $(INSTPGMFLAGS)  xataxx $(DESTDIR)$(BINDIR)

install.man:: xataxx.man
	@if [ -d $(DESTDIR)$(MANDIR) ]; then set +x; \
	else (set -x; $(MKDIRHIER) $(DESTDIR)$(MANDIR)); fi
	$(INSTALL) -c $(INSTMANFLAGS) xataxx.man $(DESTDIR)$(MANDIR)/xataxx.$(MANSUFFIX)

depend::
	$(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)

lint:
	$(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
lint1:
	$(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)

clean::
	$(RM) $(PROGRAM)

install:: install.lib

install.lib:
	for i in lib/*; do 		(set -x; install -c $$i $(DATADIR)); 	done

# -------------------------------------------------------------------------
# common rules for all Makefiles - do not edit

emptyrule::

clean::
	$(RM_CMD) "#"*

Makefile::
	-@if [ -f Makefile ]; then set -x; \
	$(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
	else exit 0; fi
	$(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)

tags::
	$(TAGS) -w *.[ch]
	$(TAGS) -xw *.[ch] > TAGS

# -------------------------------------------------------------------------
# empty rules for directories that do not have SUBDIRS - do not edit

install::
	@echo "install in $(CURRENT_DIR) done"

install.man::
	@echo "install.man in $(CURRENT_DIR) done"

install.linkkit::
	@echo "install.linkkit in $(CURRENT_DIR) done"

Makefiles::

includes::

# -------------------------------------------------------------------------
# dependencies generated by makedepend

Results 1 - 1
Help - FTP Sites List - Software Dir.
Searching half a billion files worldwide
© 1997-2009 MARUHN Internet Solutions