Ticket #183: draqo-dfa.diff

File draqo-dfa.diff, 40.2 KB (added by arend, 3 years ago)

Supersedes dfa.patch in #148

  • doc/patterns.texi

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/doc/patterns.texi,v
    retrieving revision 1.19
    diff -u -p -r1.19 patterns.texi
     
    13971397@file{patterns.h}) by a standalone program @file{mkpat.c}, and the resulting  
    13981398@file{.c} files are compiled and linked into the main GNU Go executable. 
    13991399 
     1400IMPORTANT: After any change in patterns, which uses DFA pattern matching, one 
     1401should optimize pattern databases, in which the changes was made. This is done 
     1402by running a part of @file{optimize} script in @file{patterns} directory. Run 
     1403only parts of this script, which refers to desired databases, because it takes 
     1404a very long time to execute. 
     1405 
    14001406Each pattern is compiled to a header, and a sequence of elements, 
    14011407which are (notionally) checked sequentially at every position and 
    14021408orientation of the board. These elements are relative to the pattern 
  • engine/matchpat.c

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/engine/matchpat.c,v
    retrieving revision 1.75
    diff -u -p -r1.75 matchpat.c
     
    642642static int 
    643643scan_for_patterns(dfa_rt_t *pdfa, int l, int *dfa_pos, int *pat_list) 
    644644{ 
    645   int delta; 
    646645  int state = 1; /* initial state */ 
    647646  int row = 0; /* initial row */ 
    648647  int id = 0; /* position in id_list */ 
     
    657656    } 
    658657 
    659658    /* go to next state */ 
    660     delta = pdfa->states[state].next[dfa_pos[spiral[row][l]]]; 
    661     state += delta; 
     659    state = pdfa->states[state].next[dfa_pos[spiral[row][l]]]; 
    662660    row++; 
    663   } while (delta != 0); /* while not on error state */ 
     661  } while (state != 0); /* while not on error state */ 
    664662 
    665663  return id; 
    666664} 
  • patterns/Makefile.am

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/Makefile.am,v
    retrieving revision 1.39
    diff -u -p -r1.39 Makefile.am
     
    33 
    44DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp 
    55DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \ 
    6        owl_vital_apats.dtr 
     6       owl_vital_apats.dtr attack.dtr defense.dtr conn.dtr \ 
     7       barriers.dtr endgame.dtr handicap.dtr influence.dtr \ 
     8       patterns.dtr 
    79 
    810EXTRA_DIST = $(DSP)\ 
    911        $(DTR)\ 
     
    121123takamoku.db : $(srcdir)/takamoku.sgf joseki$(EXEEXT) 
    122124        ./joseki JT $(srcdir)/takamoku.sgf >takamoku.db 
    123125 
    124 patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db mkpat$(EXEEXT) 
    125         ./mkpat -b pat -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db \ 
    126                -o patterns.c 
     126patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db $(srcdir)/patterns.dtr mkpat$(EXEEXT) 
     127        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/patterns.dtr pat \ 
     128               -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db -o patterns.c 
    127129 
    128130josekidb.c : $(DBBUILT) mkpat$(EXEEXT) 
    129131        ./mkpat -C joseki $(DBBUILT_INPUT) -o josekidb.c 
    130132 
    131 apatterns.c : $(srcdir)/attack.db mkpat$(EXEEXT) 
    132         ./mkpat -X attpat -i $(srcdir)/attack.db -o apatterns.c 
    133  
    134 dpatterns.c : $(srcdir)/defense.db mkpat$(EXEEXT) 
    135         ./mkpat defpat -i $(srcdir)/defense.db -o dpatterns.c 
    136  
    137 conn.c : $(srcdir)/conn.db mkpat$(EXEEXT) 
    138         ./mkpat -c conn -i $(srcdir)/conn.db -o conn.c 
    139  
    140 endgame.c : $(srcdir)/endgame.db mkpat$(EXEEXT) 
    141         ./mkpat -b endpat -i $(srcdir)/endgame.db -o endgame.c 
     133apatterns.c : $(srcdir)/attack.db $(srcdir)/attack.dtr mkpat$(EXEEXT) 
     134        ./mkpat $(DFAFLAGS) -X -t $(srcdir)/attack.dtr attpat \ 
     135               -i $(srcdir)/attack.db -o apatterns.c 
     136 
     137dpatterns.c : $(srcdir)/defense.db $(srcdir)/defense.dtr mkpat$(EXEEXT) 
     138        ./mkpat $(DFAFLAGS) -t $(srcdir)/defense.dtr defpat \ 
     139               -i $(srcdir)/defense.db -o dpatterns.c 
     140 
     141conn.c : $(srcdir)/conn.db $(srcdir)/conn.dtr mkpat$(EXEEXT) 
     142        ./mkpat $(DFAFLAGS) -c -t $(srcdir)/conn.dtr conn \ 
     143               -i $(srcdir)/conn.db -o conn.c 
     144 
     145endgame.c : $(srcdir)/endgame.db $(srcdir)/endgame.dtr mkpat$(EXEEXT) 
     146        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/endgame.dtr endpat \ 
     147               -i $(srcdir)/endgame.db -o endgame.c 
    142148 
    143149eyes.c: $(srcdir)/eyes.db mkeyes$(EXEEXT) 
    144150        ./mkeyes < $(srcdir)/eyes.db >eyes.c 
    145151 
    146 influence.c : $(srcdir)/influence.db mkpat$(EXEEXT) 
    147         ./mkpat -c influencepat -i $(srcdir)/influence.db -o influence.c 
    148  
    149 barriers.c : $(srcdir)/barriers.db mkpat$(EXEEXT) 
    150         ./mkpat -c -b barrierspat -i $(srcdir)/barriers.db -o barriers.c 
     152influence.c : $(srcdir)/influence.db $(srcdir)/influence.dtr mkpat$(EXEEXT) 
     153        ./mkpat $(DFAFLAGS) -c -t $(srcdir)/influence.dtr influencepat \ 
     154               -i $(srcdir)/influence.db -o influence.c 
     155 
     156barriers.c : $(srcdir)/barriers.db $(srcdir)/barriers.dtr mkpat$(EXEEXT) 
     157        ./mkpat $(DFAFLAGS) -c -b -t $(srcdir)/barriers.dtr barrierspat \ 
     158               -i $(srcdir)/barriers.db -o barriers.c 
    151159 
    152160aa_attackpat.c : $(srcdir)/aa_attackpats.db $(srcdir)/aa_attackpats.dtr mkpat$(EXEEXT) 
    153161        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/aa_attackpats.dtr aa_attackpat \ 
     
    169177               -i $(srcdir)/owl_defendpats.db -o owl_defendpat.c 
    170178 
    171179fusekipat.c : $(srcdir)/fuseki.db mkpat$(EXEEXT) 
    172         ./mkpat -b fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c 
     180        ./mkpat -b -m fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c 
    173181 
    174182fuseki9.c : $(srcdir)/fuseki9.dbz uncompress_fuseki$(EXEEXT) 
    175183        ./uncompress_fuseki 9 $(srcdir)/fuseki9.dbz c >fuseki9.c 
     
    180188fuseki19.c : $(srcdir)/fuseki19.dbz uncompress_fuseki$(EXEEXT) 
    181189        ./uncompress_fuseki 19 $(srcdir)/fuseki19.dbz c >fuseki19.c 
    182190 
    183 handipat.c : $(srcdir)/handicap.db mkpat$(EXEEXT) 
    184         ./mkpat -b handipat -i $(srcdir)/handicap.db -o handipat.c 
     191handipat.c : $(srcdir)/handicap.db $(srcdir)/handicap.dtr mkpat$(EXEEXT) 
     192        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/handicap.dtr handipat \ 
     193               -i $(srcdir)/handicap.db -o handipat.c 
    185194 
    186195 
    187196ETAGS_ARGS = --language none --regex '/^Pattern[ \t]+[a-zA-Z0-9]+/' $(DB_TO_TAG)\ 
  • patterns/Makefile.in

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/Makefile.in,v
    retrieving revision 1.60
    diff -u -p -r1.60 Makefile.in
     
    8080 
    8181DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp 
    8282DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \ 
    83        owl_vital_apats.dtr 
     83       owl_vital_apats.dtr attack.dtr defense.dtr conn.dtr \ 
     84       barriers.dtr endgame.dtr handicap.dtr influence.dtr \ 
     85       patterns.dtr 
    8486 
    8587 
    8688EXTRA_DIST = $(DSP)\ 
     
    526528takamoku.db : $(srcdir)/takamoku.sgf joseki$(EXEEXT) 
    527529        ./joseki JT $(srcdir)/takamoku.sgf >takamoku.db 
    528530 
    529 patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db mkpat$(EXEEXT) 
    530         ./mkpat -b pat -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db \ 
    531                -o patterns.c 
     531patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db $(srcdir)/patterns.dtr mkpat$(EXEEXT) 
     532        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/patterns.dtr pat \ 
     533               -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db -o patterns.c 
    532534 
    533535josekidb.c : $(DBBUILT) mkpat$(EXEEXT) 
    534536        ./mkpat -C joseki $(DBBUILT_INPUT) -o josekidb.c 
    535537 
    536 apatterns.c : $(srcdir)/attack.db mkpat$(EXEEXT) 
    537         ./mkpat -X attpat -i $(srcdir)/attack.db -o apatterns.c 
    538  
    539 dpatterns.c : $(srcdir)/defense.db mkpat$(EXEEXT) 
    540         ./mkpat defpat -i $(srcdir)/defense.db -o dpatterns.c 
    541  
    542 conn.c : $(srcdir)/conn.db mkpat$(EXEEXT) 
    543         ./mkpat -c conn -i $(srcdir)/conn.db -o conn.c 
    544  
    545 endgame.c : $(srcdir)/endgame.db mkpat$(EXEEXT) 
    546         ./mkpat -b endpat -i $(srcdir)/endgame.db -o endgame.c 
     538apatterns.c : $(srcdir)/attack.db $(srcdir)/attack.dtr mkpat$(EXEEXT) 
     539        ./mkpat $(DFAFLAGS) -X -t $(srcdir)/attack.dtr attpat \ 
     540               -i $(srcdir)/attack.db -o apatterns.c 
     541 
     542dpatterns.c : $(srcdir)/defense.db $(srcdir)/defense.dtr mkpat$(EXEEXT) 
     543        ./mkpat $(DFAFLAGS) -t $(srcdir)/defense.dtr defpat \ 
     544               -i $(srcdir)/defense.db -o dpatterns.c 
     545 
     546conn.c : $(srcdir)/conn.db $(srcdir)/conn.dtr mkpat$(EXEEXT) 
     547        ./mkpat $(DFAFLAGS) -c -t $(srcdir)/conn.dtr conn \ 
     548               -i $(srcdir)/conn.db -o conn.c 
     549 
     550endgame.c : $(srcdir)/endgame.db $(srcdir)/endgame.dtr mkpat$(EXEEXT) 
     551        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/endgame.dtr endpat \ 
     552               -i $(srcdir)/endgame.db -o endgame.c 
    547553 
    548554eyes.c: $(srcdir)/eyes.db mkeyes$(EXEEXT) 
    549555        ./mkeyes < $(srcdir)/eyes.db >eyes.c 
    550556 
    551 influence.c : $(srcdir)/influence.db mkpat$(EXEEXT) 
    552         ./mkpat -c influencepat -i $(srcdir)/influence.db -o influence.c 
    553  
    554 barriers.c : $(srcdir)/barriers.db mkpat$(EXEEXT) 
    555         ./mkpat -c -b barrierspat -i $(srcdir)/barriers.db -o barriers.c 
     557influence.c : $(srcdir)/influence.db $(srcdir)/influence.dtr mkpat$(EXEEXT) 
     558        ./mkpat $(DFAFLAGS) -c -t $(srcdir)/influence.dtr influencepat \ 
     559               -i $(srcdir)/influence.db -o influence.c 
     560 
     561barriers.c : $(srcdir)/barriers.db $(srcdir)/barriers.dtr mkpat$(EXEEXT) 
     562        ./mkpat $(DFAFLAGS) -c -b -t $(srcdir)/barriers.dtr barrierspat \ 
     563               -i $(srcdir)/barriers.db -o barriers.c 
    556564 
    557565aa_attackpat.c : $(srcdir)/aa_attackpats.db $(srcdir)/aa_attackpats.dtr mkpat$(EXEEXT) 
    558566        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/aa_attackpats.dtr aa_attackpat \ 
     
    574582               -i $(srcdir)/owl_defendpats.db -o owl_defendpat.c 
    575583 
    576584fusekipat.c : $(srcdir)/fuseki.db mkpat$(EXEEXT) 
    577         ./mkpat -b fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c 
     585        ./mkpat -b -m fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c 
    578586 
    579587fuseki9.c : $(srcdir)/fuseki9.dbz uncompress_fuseki$(EXEEXT) 
    580588        ./uncompress_fuseki 9 $(srcdir)/fuseki9.dbz c >fuseki9.c 
     
    585593fuseki19.c : $(srcdir)/fuseki19.dbz uncompress_fuseki$(EXEEXT) 
    586594        ./uncompress_fuseki 19 $(srcdir)/fuseki19.dbz c >fuseki19.c 
    587595 
    588 handipat.c : $(srcdir)/handicap.db mkpat$(EXEEXT) 
    589         ./mkpat -b handipat -i $(srcdir)/handicap.db -o handipat.c 
     596handipat.c : $(srcdir)/handicap.db $(srcdir)/handicap.dtr mkpat$(EXEEXT) 
     597        ./mkpat $(DFAFLAGS) -b -t $(srcdir)/handicap.dtr handipat \ 
     598               -i $(srcdir)/handicap.db -o handipat.c 
    590599# Tell versions [3.59,3.63) of GNU make to not export all variables. 
    591600# Otherwise a system limit (for SysV at least) may be exceeded. 
    592601.NOEXPORT: 
  • patterns/dfa.c

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/dfa.c,v
    retrieving revision 1.42
    diff -u -p -r1.42 dfa.c
     
    416416    exit(EXIT_FAILURE); 
    417417  } 
    418418 
    419   assert(dfa_minmax_delta(pdfa, -1, 1) > -32768); 
    420   if (dfa_minmax_delta(pdfa, -1, 0)  > 32768) { 
    421     fprintf(of, "#error too many states"); 
    422     fprintf(stderr, "Error: The dfa states are too disperse. Can't fit delta into a short.\n"); 
    423     exit(EXIT_FAILURE); 
    424   } 
    425  
    426419  if (pdfa->last_index + 1 > 65535) { 
    427420    fprintf(of, "#error too many states"); 
    428421    fprintf(stderr, "Error: Too many index entries. Can't fit delta into a short.\n"); 
     
    439432    fprintf(of, "{{"); 
    440433    for (j = 0; j < 4; j++) { 
    441434      int n = pdfa->states[i].next[j]; 
    442       assert((n == 0) || (abs(n - i) < 32768)); 
    443       fprintf(of, "%d", n ? n - i : 0); 
     435      assert((n >= 0) && (n <= 65535)); 
     436      fprintf(of, "%d", n); 
    444437      if (j != 3) 
    445438        fprintf(of, ","); 
    446439    } 
     
    778771} 
    779772 
    780773 
    781 /* 
    782  * Returns max or min jump distance from state to next[next_index] for 
    783  * all states.  If next_index < 0, then max/min for all for states. 
    784  */ 
    785  
    786 int  
    787 dfa_minmax_delta(dfa_t *pdfa, int next_index, int isMin) 
    788 { 
    789  
    790   int ret, i, j; 
    791   assert(next_index <= 3); 
    792   
    793   if (isMin) 
    794     ret = 99999; 
    795   else 
    796     ret = -1; 
    797  
    798   for (i = 0; i <= pdfa->last_state; i++) { 
    799     for (j = 0; j < 4; j++) { 
    800       if (j == next_index || next_index < 0) {  
    801         int next = pdfa->states[i].next[j]; 
    802         if (!next) 
    803           continue; 
    804         if (isMin) { 
    805           if (ret > next - i) 
    806             ret = next - i; 
    807         } 
    808         else { 
    809           if (ret < next - i) 
    810             ret = next - i; 
    811         } 
    812       } 
    813     } 
    814   } 
    815  
    816   return ret; 
    817 } 
    818  
    819774#define DFA_ALIGN       2 
    820775 
    821776/* 
     
    947902dfa_finalize(dfa_t *pdfa)  
    948903{ 
    949904  int j; 
    950   int next_bin = aux_count; 
    951   int last_bin = aux_count + DFA_BINS - 1; 
     905  int next_bin; 
     906  int last_bin; 
     907  aux_count += DFA_BINS; /* To avoid negative values of aux_count. */ 
     908  next_bin = aux_count; 
     909  last_bin = aux_count + DFA_BINS - 1; 
    952910  while (next_bin + 1 != last_bin) { 
    953911    for (j = aux_count + 1; j <= last_bin; j += 2) { 
    954912      if (j+1 == next_bin) 
     
    11901148    if (j == pat->minj) 
    11911149      borders &= ~WEST_EDGE; 
    11921150     
    1193     assert(m + i < DFA_MAX_BOARD * 3 && m + i < DFA_MAX_BOARD * 3); 
     1151    assert(m + i < DFA_MAX_BOARD * 4 && n + j < DFA_MAX_BOARD * 4); 
    11941152    str[k] = work_space[m + i][n + j]; 
    11951153    assert(strchr("XOxo.,a!?$#|-+", str[k])); 
    11961154     
  • patterns/dfa.h

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/dfa.h,v
    retrieving revision 1.32
    diff -u -p -r1.32 dfa.h
     
    6565/* DFA state. */ 
    6666typedef struct state_rt 
    6767{ 
    68   short next[4]; 
    69   short att; 
     68  unsigned short next[4]; /* Next state to jump to. */ 
     69  short att;              /* An index in the attributes table. */ 
    7070} state_rt_t; 
    7171 
    7272typedef struct dfa_rt 
  • patterns/mkpat.c

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/mkpat.c,v
    retrieving revision 1.158
    diff -u -p -r1.158 mkpat.c
     
    5555        -p = compile general pattern database (the default)\n\ 
    5656        -c = compile connections database\n\ 
    5757        -C = compile a corner pattern database\n\ 
     58  Usage of DFA (cannot be used with a corner pattern database):\n\ 
    5859        -D = compile a DFA database (allows fast matching)\n\ 
    5960        -d <iterations> = don't generate database, but optimize a DFA\n\ 
    6061                          transformation file instead\n\ 
     
    9192#define DB_GENERAL      ((int) 'p') 
    9293#define DB_CONNECTIONS  ((int) 'c') 
    9394#define DB_CORNER       ((int) 'C') 
    94 #define DB_DFA          ((int) 'D') 
     95#define USE_DFA         ((int) 'D') 
    9596#define OPTIMIZE_DFA    ((int) 'd') 
    9697 
    9798/* code assumes that ATT_O and ATT_X are 1 and 2 (in either order) 
     
    150151 
    151152static int ci = -1, cj = -1;    /* position of origin (first piece element) 
    152153                                   relative to top-left */ 
     154static int fixed_pat_anchor = 0; /* if anchor for checked pattern is fixed */ 
    153155static int patno;               /* current pattern */ 
    154156static int discard_pattern = 0; /* Set to nonzero to discard a pattern (if e.g. 
    155157                                 * it is too large or duplicated). */ 
     
    482484 
    483485/* options */ 
    484486int verbose = 0;               /* -v */ 
    485 static int database_type = 0;  /* -p (default), -c, -f, -C, -D or -T */ 
     487static int database_type = 0;  /* -p (default), -c or -C */ 
     488static int use_dfa = 0;        /* -D or -d */ 
    486489static int anchor = 0;         /* Whether both O and/or X may be anchors. 
    487490                                * -b for both. -X for only X. 
    488491                                */ 
     
    536539{ 
    537540  struct hint_data *hint; 
    538541 
    539   if (database_type == DB_DFA || database_type == OPTIMIZE_DFA) { 
     542  if (use_dfa) { 
    540543    for (hint = first_hint; hint; hint = hint->next) { 
    541544      if (!strcmp(hint->name, pattern_name)) 
    542545        return hint->transformation_hint; 
    543546    } 
    544547  } 
    545548 
    546   return database_type == OPTIMIZE_DFA ? -1 : 0; 
     549  return use_dfa == OPTIMIZE_DFA ? -1 : 0; 
    547550} 
    548551 
    549552 
     
    695698  if (verbose) 
    696699    fprintf(stderr, "Add   :%s\n", pattern[index].name); 
    697700 
    698   if (database_type == DB_DFA) { 
     701  if (use_dfa == USE_DFA) { 
    699702    float ratio; 
    700703 
    701704    dfa_rotate_string(strrot, str, transformation_hint); 
     
    718721    int rot_start = 0; 
    719722    int rot_stop = pattern[index].trfno; 
    720723 
    721     assert(database_type == OPTIMIZE_DFA); 
     724    assert(use_dfa == OPTIMIZE_DFA); 
    722725 
    723726    if (rot_stop == 5) { 
    724727      rot_start = 2; 
     
    889892    } 
    890893 
    891894    if (off == ATT_Q) { 
     895      fixed_pat_anchor = 1; 
    892896      off = ATT_O; 
    893897      ci = maxi; 
    894898      cj = j; 
     
    897901    } 
    898902 
    899903    if (off == ATT_Y) { 
     904      fixed_pat_anchor = 1; 
    900905      off = ATT_X; 
    901906      ci = maxi; 
    902907      cj = j; 
     
    10981103    ci = 0; 
    10991104    cj = 0; 
    11001105  } 
    1101   else if (choose_best_anchor && !discard_pattern) {  
     1106  else if (choose_best_anchor && !discard_pattern 
     1107           && (!fixed_pat_anchor || database_type != DB_CONNECTIONS)) { 
    11021108 
    11031109    /* Try to find a better anchor if 
    11041110     * the -m option is set. 
     
    17751781  int used_nodes = 0; 
    17761782 
    17771783  assert(ci != -1 && cj != -1); 
    1778   assert(database_type == DB_DFA || transformation_hint == 0); 
     1784  assert(use_dfa == USE_DFA || transformation_hint == 0); 
    17791785 
    17801786  /* sort the elements so that least-likely elements are tested first. */ 
    17811787  gg_sort(elements, el, sizeof(struct patval_b), compare_elements); 
     
    18161822       * elements for all possible transformations). 
    18171823       */ 
    18181824      if ((database_type == DB_GENERAL || database_type == DB_CONNECTIONS) 
    1819           && ci-1 <= x && x <= ci+1 && cj-1 <= y && y <= cj+1) 
     1825          && !use_dfa && ci-1 <= x && x <= ci+1 && cj-1 <= y && y <= cj+1) 
    18201826        continue; 
    18211827#endif /* GRID_OPT == 1 */ 
    18221828 
     
    18241830       * they might be needed for goal checking or by callback function, so 
    18251831       * we check it before discarding an element. 
    18261832       */ 
    1827       if (database_type == DB_DFA) 
     1833      if (use_dfa) 
    18281834        continue; 
    18291835    } /* If the element is discardable. */ 
    18301836 
     
    23842390  fprintf(outfile, "  -1,\n");  /* fixed_for_size */ 
    23852391  fprintf(outfile, "  %d,\n", fixed_anchor); 
    23862392  fprintf(outfile, "  %s\n", prefix); 
    2387   if (database_type == DB_DFA) 
     2393  if (use_dfa) 
    23882394    fprintf(outfile, " ,& dfa_%s\n", prefix); /* pointer to the wired dfa */ 
    23892395  else 
    23902396    fprintf(outfile, " , NULL\n"); /* pointer to a possible dfa */ 
     
    24342440 
    24352441      case 'p': 
    24362442      case 'c': 
    2437       case 'f': 
    24382443      case 'C': 
    2439       case 'D': 
    2440       case 'd': 
    24412444        if (database_type) { 
    24422445          fprintf(stderr, "Error : More than one database type specified (-%c and -%c)\n", 
    24432446                  database_type, i); 
    24442447          return 1; 
    24452448        } 
     2449        if (i == 'C' && use_dfa) { 
     2450          fprintf(stderr, "Error : Cannot use DFA with a corner pattern database\n"); 
     2451          return 1; 
     2452        } 
    24462453        database_type = i; 
     2454        break; 
     2455 
     2456      case 'd': 
     2457      case 'D': 
     2458        use_dfa = i; 
    24472459        if (i == 'd') { 
    24482460          iterations = strtol(gg_optarg, NULL, 10); 
    24492461          if (iterations < 0) { 
     
    24512463            return 1; 
    24522464          } 
    24532465        } 
     2466        if (database_type == 'C') { 
     2467          fprintf(stderr, "Error : Cannot use DFA with a corner pattern database\n"); 
     2468          return 1; 
     2469        } 
    24542470        break; 
    24552471 
    24562472      case 'O': 
     
    24922508 
    24932509    if (!input_files) 
    24942510      input_file_names[input_files++] = stdin_name; 
    2495     if (output_file_name && database_type != OPTIMIZE_DFA) { 
     2511    if (output_file_name && use_dfa != OPTIMIZE_DFA) { 
    24962512      output_FILE = fopen(output_file_name, "wb"); 
    24972513      if (output_FILE == NULL) { 
    24982514        fprintf(stderr, "Error : Cannot write to file %s\n", output_file_name); 
    24992515        return 1; 
    25002516      } 
    25012517    } 
    2502     if (transformations_file_name 
    2503         && (database_type == DB_DFA || database_type == OPTIMIZE_DFA)) { 
     2518    if (transformations_file_name && use_dfa) { 
    25042519      transformations_FILE = fopen(transformations_file_name, "r"); 
    25052520      if (transformations_FILE) { 
    25062521        parse_transformations_file(transformations_FILE); 
    25072522        fclose(transformations_FILE); 
    25082523      } 
    2509       else if (database_type == DB_DFA) { 
     2524      else if (use_dfa == USE_DFA) { 
    25102525        fprintf(stderr, "Error : Cannot read file %s\n", 
    25112526                transformations_file_name); 
    25122527        return 1; 
     
    25242539 
    25252540  prefix = argv[gg_optind]; 
    25262541 
    2527   if (database_type == DB_DFA) { 
     2542  if (use_dfa == USE_DFA) { 
    25282543    dfa_init(); 
    25292544    new_dfa(&dfa, "mkpat's dfa"); 
    25302545  } 
    25312546  else if (database_type == DB_CORNER) 
    25322547    corner_init(); 
    25332548 
    2534   if (database_type == OPTIMIZE_DFA) { 
     2549  if (use_dfa == OPTIMIZE_DFA) { 
    25352550    if (transformations_file_name == NULL) { 
    25362551      fprintf(stderr, "error : transformation file required (use -t option)\n"); 
    25372552      return 1; 
     
    28172832      else if (line[0] == ':') { 
    28182833        if (state == 2 || state == 3) { 
    28192834          finish_pattern(line); 
     2835          fixed_pat_anchor = 0; 
    28202836           
    28212837          if (!discard_pattern) { 
    2822             if (database_type == DB_DFA || database_type == OPTIMIZE_DFA) 
     2838            if (use_dfa) 
    28232839              write_to_dfa(patno); 
    28242840            if (database_type == DB_CORNER) 
    28252841              corner_add_pattern(); 
    2826             else if (database_type != OPTIMIZE_DFA) 
     2842            else if (use_dfa != OPTIMIZE_DFA) 
    28272843              write_elements(output_FILE); 
    28282844          } 
    28292845 
     
    29162932    fprintf(stderr, "%d / %d patterns have edge-constraints\n", 
    29172933            pats_with_constraints, patno); 
    29182934 
    2919   if (database_type != OPTIMIZE_DFA) { 
     2935  if (use_dfa != OPTIMIZE_DFA) { 
    29202936    /* Forward declaration, which autohelpers might need. */ 
    29212937    if (database_type != DB_CORNER) 
    29222938      fprintf(output_FILE, "static struct pattern %s[%d];\n\n", prefix, patno + 1); 
     
    29332949 
    29342950    write_patterns(output_FILE); 
    29352951 
    2936     if (database_type == DB_DFA) { 
     2952    if (use_dfa) { 
    29372953      fprintf(stderr, "---------------------------\n"); 
    29382954 
    29392955      dfa_finalize(&dfa); 
     
    29762992              current_file); 
    29772993    } 
    29782994  } 
    2979   else {        /* database_type == OPTIMIZE_DFA */ 
     2995  else {        /* use_dfa == OPTIMIZE_DFA */ 
    29802996    int k; 
    29812997    int *optimized_variations; 
    29822998 
     
    29893005    optimized_variations = dfa_patterns_optimize_variations(&dfa_pats, 
    29903006                                                            iterations); 
    29913007    for (k = 0; k < patno; k++) { 
    2992       fprintf(transformations_FILE, "%s\t%d\n", pattern_names[k], 
    2993               optimized_variations[k]); 
     3008      int var = optimized_variations[k]; 
     3009      if (pattern[k].trfno == 5) 
     3010        var += 2; 
     3011      fprintf(transformations_FILE, "%s\t%d\n", pattern_names[k], var); 
    29943012    } 
    29953013 
    29963014    free(optimized_variations); 
  • (a) /dev/null vs. (b) patterns/attack.dtr

    a b  
     1Attack1 0 
     2Attack2 0 
     3Attack4 2 
     4Attack5 0 
     5Attack6 6 
     6Attack10        0 
     7Attack11        6 
     8Attack13        1 
     9Attack14        2 
     10Attack15        0 
     11Attack16        5 
     12Attack17        0 
     13Attack18        6 
     14Attack19        4 
  • (a) /dev/null vs. (b) patterns/barriers.dtr

    a b  
     1Barrier1        1 
     2Barrier1b       1 
     3Barrier2        1 
     4Barrier3        1 
     5Barrier4a       3 
     6Barrier4b       4 
     7Barrier5        0 
     8Barrier6        7 
     9Barrier6b       0 
     10Barrier7        0 
     11Barrier8        1 
     12Barrier9        1 
     13Barrier10       0 
     14Barrier11       0 
     15Barrier12       6 
     16Barrier13       0 
     17Barrier14       0 
     18Barrier15       6 
     19Barrier16       5 
     20Barrier16b      6 
     21Barrier17       6 
     22Barrier18       6 
     23Barrier19       0 
     24Barrier20       0 
     25Barrier21       1 
     26Barrier22       0 
     27Barrier22a      6 
     28Barrier22b      0 
     29Barrier23       5 
     30Barrier24       0 
     31Barrier25       6 
     32Barrier26       5 
     33Barrier27       0 
     34Barrier28       0 
     35Barrier29       7 
     36Barrier30       0 
     37Barrier31       0 
     38Barrier32       7 
     39Barrier33       0 
     40Barrier34       7 
     41Barrier34b      0 
     42Barrier35       0 
     43Barrier36       0 
     44Barrier37       7 
     45Barrier38       7 
     46Barrier39       6 
     47Barrier40       0 
     48Barrier41a      3 
     49Barrier41b      3 
     50Barrier42       7 
     51Barrier43       6 
     52Barrier44       0 
     53Barrier45       0 
     54Barrier46       6 
     55Barrier47       0 
     56Barrier48       0 
     57Barrier49       0 
     58Barrier50       0 
     59Barrier51       5 
     60Barrier52       7 
     61Barrier53       7 
     62Barrier54       0 
     63Barrier55       6 
     64Barrier56       6 
     65Barrier56b      0 
     66Barrier57       6 
     67Barrier58       4 
     68Barrier59       1 
     69Barrier60a      3 
     70Barrier60b      3 
     71Barrier61       0 
     72Barrier62       6 
     73Barrier63       0 
     74Barrier64       0 
     75Barrier65       6 
     76Barrier66       7 
     77Barrier67       0 
     78Intrusion1      7 
     79Intrusion1a     7 
     80Intrusion1b     3 
     81Intrusion1c     3 
     82Intrusion1d     3 
     83Intrusion2      3 
     84Intrusion3      7 
     85Intrusion4      0 
     86Intrusion5a     7 
     87Intrusion5b     0 
     88Intrusion6      7 
     89Intrusion7b     6 
     90Intrusion8a     6 
     91Intrusion8b     1 
     92Intrusion9      1 
     93Intrusion10     7 
     94Intrusion11     0 
     95Intrusion12a    0 
     96Intrusion12b    0 
     97Intrusion13     7 
     98Intrusion14     0 
     99Intrusion15     7 
     100Intrusion16     0 
     101Intrusion17     6 
     102Intrusion18     1 
     103Intrusion19     6 
     104Intrusion20     0 
     105Intrusion21     0 
     106Intrusion21b    6 
     107Intrusion22     0 
     108Intrusion23     0 
     109Intrusion24     0 
     110Intrusion25     7 
     111Intrusion26     7 
     112Intrusion27     6 
     113Intrusion28     0 
     114Intrusion29     6 
     115Intrusion30     7 
     116Intrusion30a    0 
     117Intrusion31     7 
     118Intrusion32     7 
     119Intrusion33     5 
     120Intrusion34     0 
     121Intrusion35     7 
     122Intrusion36     1 
     123Intrusion37     1 
     124Intrusion38     7 
     125Intrusion39     1 
     126Intrusion40     5 
     127Intrusion41     5 
     128Intrusion42     7 
     129Intrusion43     4 
     130Intrusion44a    3 
     131Intrusion44b    4 
     132Intrusion45     7 
     133Intrusion46     0 
     134Intrusion47     6 
     135Intrusion48     5 
     136Intrusion49     0 
     137Intrusion50     6 
     138Intrusion51a    0 
     139Intrusion51b    0 
     140Intrusion52     6 
     141Intrusion53     1 
     142Intrusion54     4 
     143Intrusion55     7 
     144Intrusion56     7 
     145Intrusion57     3 
     146Intrusion58     7 
     147Intrusion59     2 
     148Intrusion60     7 
     149Intrusion61     3 
     150Intrusion62     0 
     151Intrusion63     0 
     152Nonterritory1   0 
     153Nonterritory1b  6 
     154Nonterritory1c  6 
     155Nonterritory2   4 
     156Nonterritory3   4 
     157Nonterritory4   7 
     158Nonterritory5   7 
     159Nonterritory6   7 
     160Nonterritory7   0 
     161Nonterritory7b  0 
     162Nonterritory7c  7 
     163Nonterritory8   0 
     164Nonterritory8b  0 
     165Nonterritory9   0 
     166Nonterritory10  5 
     167Nonterritory11  7 
     168Nonterritory12  1 
     169Nonterritory13  0 
     170Nonterritory14  5 
     171Nonterritory15  2 
     172Nonterritory16  7 
     173Nonterritory17  6 
     174Nonterritory17b 0 
     175Nonterritory18a 0 
     176Nonterritory18b 0 
     177Nonterritory19  3 
     178Nonterritory20  7 
     179Nonterritory21  3 
     180Nonterritory22  3 
     181Nonterritory23  1 
     182Nonterritory24  0 
     183Nonterritory25  6 
     184Nonterritory26  0 
     185Nonterritory27  1 
     186Nonterritory28  0 
     187Nonterritory29  0 
     188Nonterritory30  0 
     189Nonterritory31  7 
     190Nonterritory32  1 
     191Nonterritory33  0 
     192Nonterritory34  0 
     193Nonterritory35  3 
     194Nonterritory36  0 
     195Nonterritory37  1 
     196Nonterritory38  6 
     197Nonterritory39  1 
     198Nonterritory40  3 
     199Nonterritory41  5 
     200Nonterritory42  6 
     201Nonterritory43  0 
     202Nonterritory44  7 
     203Nonterritory45  2 
     204Nonterritory46  6 
     205Nonterritory47  1 
     206Nonterritory48  6 
     207Nonterritory49  0 
     208Nonterritory50  6 
     209Nonterritory51  0 
     210Nonterritory52  6 
     211Nonterritory53  1 
     212Nonterritory54  3 
     213Nonterritory55  7 
     214Nonterritory56  6 
     215Nonterritory57  3 
     216Nonterritory58  3 
     217Nonterritory59  0 
     218Nonterritory60  6 
  • (a) /dev/null vs. (b) patterns/conn.dtr

    a b  
     1CB1b    0 
     2CB2b    0 
     3CB3b    2 
     4CB3c    1 
     5CB7     1 
     6CB11b   3 
     7CB15b   0 
     8CB16    2 
     9CB17    0 
     10CB18    1 
     11EC1     0 
     12EC1b    0 
     13EC3a    0 
     14CC101   1 
     15CC103   1 
     16CC104   6 
     17CC105   1 
     18CC106   2 
     19CC107   6 
     20CC108   2 
     21CC109   5 
     22CC401   0 
     23CC402   0 
     24CC501   1 
     25CC502   1 
     26CC502b  1 
     27CC503   0 
     28CC504   1 
     29CC505   1 
     30CC506   0 
     31CC506b  6 
     32CC507   3 
     33CC508   0 
     34CC509   3 
     35CC511   1 
  • (a) /dev/null vs. (b) patterns/defense.dtr

    a b  
     1Def1    1 
     2Def2    0 
     3Def4    0 
     4Def5    0 
     5Def6    0 
     6Def9    5 
     7Def10   7 
     8Def12   6 
     9Def16   4 
     10Def17   4 
     11Def21   2 
     12Def25   6 
     13Def26   3 
     14Def28   1 
     15Def29   0 
     16Def39   0 
     17Def44   0 
     18Def45   3 
     19Def49   3 
     20Def50   0 
     21Def52   4 
     22Def55   6 
     23Def56   0 
     24Def57   3 
     25Def58   0 
     26Def59   0 
     27Def60   0 
     28Def61   7 
     29Def62   7 
     30Def63   1 
     31Def68   0 
     32Def69   5 
     33Def70   7 
  • (a) /dev/null vs. (b) patterns/endgame.dtr

    a b  
     1EE1     0 
     2EE1a    0 
     3EE2     0 
     4EE2b    0 
     5EE2c    0 
     6EE4     7 
     7EE5     3 
     8EE6     0 
     9EE7     7 
     10EE101   0 
     11EE102   0 
     12EE103   0 
     13EE104   0 
     14EE105   0 
     15EE106   7 
     16EE107   4 
     17EE108   0 
     18EE109   0 
     19EE110   0 
     20EE201   7 
     21EE201b  7 
     22EE202   0 
     23EE203   0 
     24EE204   0 
     25EE205   0 
     26EE206   0 
     27EE301   0 
     28EE302   0 
     29EE303   0 
     30EE401   3 
     31EE402   0 
     32EE403   0 
     33EE404   3 
     34EE404b  7 
     35EE405   7 
     36EE406   6 
     37EE407   7 
     38EE408   7 
     39EE409   3 
     40EE410   7 
     41EE411   0 
     42EE412   0 
     43EE413   0 
     44EE414   7 
     45EE415   4 
     46EE416   7 
     47EE501   0 
     48EE502   0 
     49EE504   3 
     50EE601   0 
     51EE801   0 
     52EE802   7 
     53EE803   1 
     54EE804   0 
     55EE805   7 
     56EE806   0 
     57EE851   7 
     58EE901   0 
     59EE902   0 
     60EE903   0 
     61EE1002  0 
     62EE1003  0 
     63EF101   0 
     64EF102   0 
     65CE1     3 
     66CE2     1 
     67CE3     1 
     68CE4a    1 
     69CE4b    1 
     70CE6     0 
     71CE9     7 
     72CE12    1 
     73CE13    0 
     74CE14    0 
     75CE15    0 
     76CE15b   0 
     77CE16    0 
     78CE16b   0 
     79CE17    6 
     80CE18    6 
     81CE19    0 
     82CE20a   1 
     83CE20b   1 
     84CE20c   1 
     85CE21    7 
     86CE22    1 
     87CE23    7 
     88CE24    1 
     89CE26    0 
     90CE27    1 
     91CE28    6 
     92CE28b   6 
     93CE29    0 
     94CE31    2 
     95CE32    6 
     96CE33    6 
     97CE34    2 
     98EY1     5 
     99EY2     1 
     100EY3     2 
     101EY4     1 
     102EY5     1 
  • (a) /dev/null vs. (b) patterns/handicap.dtr

    a b  
     1H1      0 
     2H2      0 
     3H3      0 
     4H4      0 
     5H5      0 
     6H6      0 
     7H7      0 
     8H10     7 
     9H11     7 
     10H12     7 
     11H13     7 
     12H14     3 
     13H15     3 
     14H16     7 
     15H17     7 
     16H18     3 
     17H19     3 
     18H20     4 
     19H21     4 
     20H22     7 
     21H23     3 
     22H24     3 
     23H30     7 
     24H31     0 
     25H32     0 
     26H40     3 
     27H41     3 
     28H42     6 
     29H43     6 
     30H44     6 
     31H45     6 
     32H50     6 
     33H51     5 
     34H52     0 
     35H53     7 
     36H60     0 
     37H61     0 
     38H62     0 
     39H63     0 
     40H70     3 
     41H71     3 
     42H80     3 
     43H81     6 
     44H82     1 
     45H83     1 
     46H84     1 
     47H85     1 
     48H86     1 
     49H87     6 
  • (a) /dev/null vs. (b) patterns/influence.dtr

    a b  
     1Enhance1        1 
     2Enhance2        0 
     3Enhance3        3 
     4Enhance4        0 
     5Enhance5        6 
     6Enhance6        0 
     7Enhance7        4 
     8Enhance8        7 
     9Enhance9        4 
     10Enhance10       7 
     11Enhance11       0 
     12Enhance12       3 
     13Enhance13       3 
     14Enhance14       0 
     15Enhance15       0 
     16Enhance16       1 
     17Enhance17       1 
     18Enhance18       0 
     19Enhance19       0 
     20Enhance20       3 
     21Enhance21       0 
     22Enhance22       4 
     23Enhance23       3 
     24Enhance24       0 
     25Enhance25       4 
     26Enhance26       2 
     27Invade1 3 
     28Invade2 2 
     29Invade3 2 
     30Invade4 3 
     31Invade4b        3 
     32Invade4c        3 
     33Invade5 2 
     34Invade6 3 
     35Invade6b        3 
     36Invade6c        3 
     37Invade7a        0 
     38Invade7b        1 
     39Invade7c        1 
     40Invade7d        6 
     41Invade8 5 
     42Invade9 5 
     43Invade10        3 
     44Invade11        3 
     45Invade12        2 
     46Invade13        0 
     47Invade14        7 
     48Invade15        3 
     49Invade16        2 
     50Invade17        3 
  • (a) /dev/null vs. (b) patterns/patterns.dtr

    a b  
     1CC1     6 
     2CC2     1 
     3CC3     1 
     4CC4     6 
     5CC5     1 
     6CC6     3 
     7CC7     1 
     8CC8     6 
     9CC9     0 
     10CC10    0 
     11CC10b   0 
     12CC11    4 
     13CC12    6 
     14CC13    3 
     15CC13b   3 
     16CC14    1 
     17CC15    6 
     18CC16    4 
     19CC17    6 
     20CC19    0 
     21CC20    0 
     22CC21    0 
     23CC22    0 
     24CC23    0 
     25CC24    6 
     26CC25    6 
     27CC26    2 
     28CC27    1 
     29CC28    1 
     30CC29    1 
     31CC30    1 
     32CC31    1 
     33CC32    1 
     34CC33    7 
     35CC34    1 
     36CC35    1 
     37CC36    7 
     38CC37    7 
     39CC38    7 
     40CC39    0 
     41CC40    1 
     42CC41    0 
     43CC42    0 
     44CC43    0 
     45CC44    3 
     46CC45    6 
     47CC46    0 
     48CC47    6 
     49CC48    6 
     50CC49    1 
     51CC50    7 
     52CC51    5 
     53CC52a   7 
     54CC52b   3 
     55CC53    5 
     56CC54    0 
     57CC55    0 
     58CC57    0 
     59CC58    0 
     60CC59    0 
     61CC60    3 
     62CC61    1 
     63CC62    0 
     64CC63    0 
     65CC64    0 
     66CC65    2 
     67CC66    2 
     68CC67    6 
     69CC68    5 
     70CC69    0 
     71CC70    1 
     72CC71    1 
     73CC72    0 
     74CC73    0 
     75CC74    6 
     76CC74b   6 
     77CC75    4 
     78CC76    6 
     79CC77    3 
     80CC78    1 
     81CC79    4 
     82CC80    2 
     83CC81    7 
     84CC82    0 
     85CC83    1 
     86CC84    3 
     87CC85    6 
     88CC86    6 
     89CC87    5 
     90CC88    1 
     91EC1     0 
     92EC2     7 
     93EC4     7 
     94EC5     7 
     95EC6     7 
     96EC7     0 
     97EC8     7 
     98EC8a    0 
     99EC9     0 
     100EC10    0 
     101EC11    0 
     102EC12    7 
     103EC13    0 
     104EC14    6 
     105EC15    0 
     106EC16    0 
     107EC16a   0 
     108EC17    7 
     109EC18    7 
     110EC19    0 
     111EC20    0 
     112EC21    0 
     113EC22    2 
     114EC23    3 
     115EC24    0 
     116EC25    0 
     117EC26    0 
     118EC27    6 
     119EC28    6 
     120EC29    3 
     121EC30    0 
     122EC31    0 
     123EC32    0 
     124EC33    0 
     125EC34    6 
     126EC35    7 
     127EC36    6 
     128EC42    0 
     129EC43    7 
     130EC44    0 
     131EC45    0 
     132EC46    7 
     133EC47    0 
     134EC48    0 
     135EC49    0 
     136EC50    0 
     137EC51    0 
     138EC52    0 
     139EC53    0 
     140EC54    6 
     141EC55    0 
     142EC56    0 
     143EC57    0 
     144EC58    7 
     145EC59    0 
     146EC60    6 
     147EC60a   6 
     148EC61    6 
     149EC62    7 
     150EC63    0 
     151EC64    7 
     152EC65    6 
     153EC66    7 
     154EC67    0 
     155EC68    7 
     156EC69    1 
     157EC70    0 
     158EC71    7 
     159EC73    7 
     160EC74    0 
     161EC75    6 
     162EC76    7 
     163EC77    4 
     164EC78    7 
     165EC79    0 
     166EC80    0 
     167EC81    7 
     168EC101   0 
     169EC102   0 
     170EC103   0 
     171EC104   0 
     172EC105   7 
     173EC106   0 
     174EC107   0 
     175EC108   0 
     176EC109   0 
     177EC110   0 
     178EC201   3 
     179EC202   3 
     180EC203   3 
     181EC204   3 
     182EC205   3 
     183EC206   0 
     184EC207   0 
     185EC208   0 
     186EC209   0 
     187EC210   0 
     188EC211   7 
     189EC212   7 
     190EC213   0 
     191EC214   6 
     192EC215   0 
     193EC216   0 
     194EC217   7 
     195EC218   7 
     196CS1     1 
     197CS2     6 
     198CS3     4 
     199CS4     3 
     200CS5     6 
     201CS6     6 
     202CS7     1 
     203CS8     1 
     204CS9     6 
     205CS10    0 
     206CS11    4 
     207CS12    6 
     208CS13    0 
     209CS14    0 
     210CS15    7 
     211CS16    7 
     212CS17    6 
     213CS18    0 
     214CS19    6 
     215CS20a   1 
     216CS20b   1 
     217CS21    5 
     218CS22    7 
     219CS23    0 
     220CS24    4 
     221CS25    1 
     222CS26    5 
     223ES1     0 
     224ES2     7 
     225ES3a    0 
     226ES3b    0 
     227EB4     7 
     228EB5     0 
     229EB6     0 
     230EB7     4 
     231EB8     7 
     232EB9     7 
     233EB10    6 
     234EB11    0 
     235EB102   7 
     236EB104   0 
     237EB105   0 
     238EB106   0 
     239EB107   7 
     240EB108   0 
     241EB109   7 
     242EB110   7 
     243EB111   7 
     244EB112   0 
     245EB113   3 
     246EB114   7 
     247EB201   0 
     248EB202   6 
     249EB203   5 
     250EB204   7 
     251EB205   0 
     252EB206   0 
     253EB207   0 
     254EB208   2 
     255EB209   7 
     256EB210   7 
     257EB211   7 
     258EB301   7 
     259EB302   0 
     260EB303   0 
     261EB304   7 
     262EB305   7 
     263EB306   6 
     264EB307   6 
     265EB308   7 
     266EB309   0 
     267EB310   0 
     268EB311   7 
     269EB312   7 
     270EB313   0 
     271EB314   6 
     272EB315   7 
     273EB316   0 
     274EB317   6 
     275EB401   0 
     276EB402   0 
     277EB403   0 
     278EB404   7 
     279EB405   7 
     280EB406   7 
     281EB407   7 
     282EB408   0 
     283EB409   0 
     284EB410   7 
     285EB411   7 
     286EB412   0 
     287EB501   5 
     288EB501a  2 
     289EB502   7 
     290EB503   7 
     291EB504   0 
     292EB505   0 
     293EB506   6 
     294EB507   7 
     295EB507a  7 
     296EB508   7 
     297EB509   7 
     298EB510   7 
     299EB511   0 
     300EB512   7 
     301EB513   2 
     302EB514   2 
     303EB515   7 
     304EB516   0 
     305EB517   7 
     306EB518   0 
     307EB519   3 
     308EB520   3 
     309EB521   7 
     310EB601   7 
     311EB602   2 
     312EB603   3 
     313EB604   6 
     314EB605   6 
     315EB606   0 
     316EB608   7 
     317EB609   0 
     318EB610   0 
     319EB611   6 
     320EB612   0 
     321EB615   0 
     322EB615b  0 
     323EB616   0 
     324EB617   0 
     325EB618   0 
     326EB619   0 
     327EB624   7 
     328EB626   7 
     329EB627   7 
     330EB628   0 
     331EB629   0 
     332EB630   0 
     333EB631   0 
     334EB632   0 
     335EB633   0 
     336EB634   0 
     337EB635   7 
     338EB637   7 
     339EB638   0 
     340EB639   0 
     341EB640a  0 
     342EB640b  7 
     343EB640c  0 
     344EB641a  7 
     345EB641b  7 
     346EB641c  6 
     347EB642   6 
     348EB643   6 
     349EB701   1 
     350EB702a  0 
     351EB702b  0 
     352EB703   6 
     353EB704   0 
     354EB705   7 
     355EB706   7 
     356EB707   7 
     357EB708   3 
     358EB709   5 
     359EB709b  5 
     360EB710   7 
     361EB711   7 
     362EB712   0 
     363EB712b  0 
     364EB713   7 
     365EB714   0 
     366EB715   0 
     367EB716   0 
     368EB717   0 
     369EB718   0 
     370EB719   0 
     371EB801   0 
     372EB802   6 
     373EB803   7 
     374EB804   7 
     375EB805   7 
     376EB806   7 
     377EB808   0 
     378EB909   3 
     379EB910   1 
     380EB911   6 
     381EB912   2 
     382EB913   0 
     383EB913b  0 
     384EB914   0 
     385EB915   0 
     386EB917   0 
     387EB918   6 
     388EB919   0 
     389EB920   0 
     390EB921   0 
     391EB922   3 
     392EB923   7 
     393EB924   0 
     394EB924a  0 
     395EB924b  0 
     396EB925   0 
     397EB1001  0 
     398EB1003  2 
     399EB1004  5 
     400EB1005  5 
     401EB1006  7 
     402EB1007  0 
     403EB1008  0 
     404EB1008b 0 
     405EB1008c 0 
     406EB1009  5 
     407EB1011  0 
     408EB1012  0 
     409EB1013  0 
     410EB1014  0 
     411EB1015  7 
     412EB1016  0 
     413EB1017  0 
     414EB1018  7 
     415EB1019  7 
     416EB1020  2 
     417EB1021  0 
     418EB1022  7 
     419EB1101  0 
     420EB1201  3 
     421EB1202  7 
     422EB1203  0 
     423EB1301  1 
     424EB1302  1 
     425EB1303  5 
     426EB1304  0 
     427EB1305  0 
     428EB1306  0 
     429EB1307  0 
     430EB1308  7 
     431EB1309  7 
     432EB1310  0 
     433EB1311  7 
     434EB1401  7 
     435EB1402  7 
     436EB1403  7 
     437EB1404a 6 
     438EB1404c 6 
     439EB1405  0 
     440EB1501  0 
     441EB1502  0 
     442EB1503  0 
     443EB1601  0 
     444EB1603  7 
     445EB1604  7 
     446EB1605  7 
     447EB1606  0 
     448EB1606b 0 
     449EB1607  3 
     450EB1608  6 
     451EB1609  3 
     452EB1610  7 
     453EB1611  0 
     454EB1701  0 
     455EB1702  0 
     456EB1702b 0 
     457EB1703  4 
     458EB1704  0 
     459EB1705  4 
     460EB1706  4 
     461EB1707  0 
     462EB1708  6 
     463EB1709  0 
     464EB1710  5 
     465EB1711  5 
     466EB1801  0 
     467EB1802  7 
     468EB1803  4 
     469EB1804  7 
     470EB1805  6 
     471EB1806  7 
     472EB1807  1 
     473EB1808  0 
     474EB1808a 0 
     475EB1809  7 
     476EB1810  0 
     477EB1901  7 
     478EB1902  6 
     479EB1903  0 
     480EB1904  7 
     481EB1905  7 
     482EB1906  6 
     483EB2001  0 
     484EB2002  6 
     485EB2003  6 
     486CB1     3 
     487CB2     6 
     488CB3     6 
     489CB4     1 
     490CB5     2 
     491CB6     7 
     492CB7     2 
     493CB8     7 
     494CB9     6 
     495CB10    5 
     496CB12    0 
     497CB13    4 
     498CB14    1 
     499CB14a   1 
     500CB14b   1 
     501CB15    6 
     502CB101   6 
     503CB103   6 
     504CB104   0 
     505CB105   6 
     506CB105b  6 
     507CB106   0 
     508CB207   6 
     509CB209   6 
     510CB210   1 
     511CB217   3 
     512CB217a  3 
     513CB277   5 
     514CB327   3 
     515CB328   3 
     516CB202   6 
     517CB212   3 
     518CB213   3 
     519CB216   7 
     520CB219   0 
     521CB220   0 
     522CB221   0 
     523CB223   1 
     524CB231   6 
     525CB232   0 
     526CB236   1 
     527CB240   5 
     528CB241a  0 
     529CB241b  1 
     530CB244   6 
     531CB245   4 
     532CB247   0 
     533CB262   6 
     534CB271   7 
     535CB275   6 
     536CB281   0 
     537CB288   1 
     538CB296   2 
     539CB297   2 
     540CB298   1 
     541CB307   7 
     542CB309   1 
     543CB310   7 
     544CB313   2 
     545CB323   6 
     546CB329a  0 
     547CB335   1 
     548CB339   3 
     549CB205   1 
     550CB225   1 
     551CB235   6 
     552CB251   7 
     553CB256   7 
     554CB257   6 
     555CB260   6 
     556CB267   2 
     557CB289   5 
     558CB203   6 
     559CB204   1 
     560CB204b  1 
     561CB206   1 
     562CB214   7 
     563CB215   7 
     564CB218   7 
     565CB224   1 
     566CB226   1 
     567CB227   5 
     568CB228   4 
     569CB229   2 
     570CB230   1 
     571CB233   6 
     572CB234   1 
     573CB237   6 
     574CB238   1 
     575CB239   1 
     576CB241c  6 
     577CB242   5 
     578CB243   1 
     579CB243b  1 
     580CB246   5 
     581CB248   6 
     582CB250   6 
     583CB252   0 
     584CB254   3 
     585CB255   3 
     586CB258   6 
     587CB259   6 
     588CB261   2 
     589CB263   5 
     590CB263b  5 
     591CB264   1 
     592CB265   3 
     593CB266   7 
     594CB268   6 
     595CB269   1 
     596CB270   3 
     597CB272   4 
     598CB273   7 
     599CB274   0 
     600CB276   0 
     601CB278   0 
     602CB279   0 
     603CB280   7 
     604CB282   3 
     605CB283   4 
     606CB284   3 
     607CB285   1 
     608CB286   1 
     609CB287   4 
     610CB290   6 
     611CB291   2 
     612CB292   0 
     613CB293   2 
     614CB294   5 
     615CB295   2 
     616CB299   1 
     617CB300   0 
     618CB301   7 
     619CB302   2 
     620CB303   7 
     621CB304   3 
     622CB305   2 
     623CB306   7 
     624CB308   1 
     625CB311   6 
     626CB312   5 
     627CB314   7 
     628CB315   0 
     629CB316   6 
     630CB317   4 
     631CB318   1 
     632CB319   3 
     633CB320   0 
     634CB321   1 
     635CB322   1 
     636CB322a  1 
     637CB324   1 
     638CB325   4 
     639CB326   6 
     640CB330   1 
     641CB331   1 
     642CB332   6 
     643CB333   0 
     644CB334   6 
     645CB337   1 
     646CB338   1 
     647CB338b  3 
     648CB340   7 
     649CB341   3 
     650CB342   7 
     651CB343   2 
     652CB344a  0 
     653CB344b  0 
     654CB344c  0 
     655ED1     0 
     656ED2     0 
     657ED3     0 
     658ED4     7 
     659ED6     0 
     660ED7     0 
     661ED8     7 
     662ED9     0 
     663ED10    0 
     664ED11    3 
     665ED12    0 
     666ED13    0 
     667ED14    6 
     668ED15    0 
     669ED16    0 
     670ED17    7 
     671ED18    0 
     672ED19    0 
     673ED20    0 
     674ED21    6 
     675ED22    7 
     676ED22b   7 
     677ED23    7 
     678ED24    6 
     679ED25    7 
     680ED26    7 
     681ED27    6 
     682ED28    0 
     683ED29    1 
     684ED30    0 
     685ED31    7 
     686ED31b   3 
     687ED31c   0 
     688ED32    0 
     689ED33    3 
     690ED34    0 
     691ED35    0 
     692ED36    0 
     693ED37    3 
     694ED38    3 
     695ED39    0 
     696ED40    1 
     697ED41    7 
     698ED42    7 
     699ED43    7 
     700ED44    7 
     701ED45    7 
     702ED46    1 
     703ED47    7 
     704ED48    6 
     705ED49    0 
     706ED49b   7 
     707ED50    0 
     708ED51    7 
     709ED52    0 
     710ED53    7 
     711ED54    0 
     712ED55    0 
     713ED56    3 
     714ED57    7 
     715ED58    6 
     716ED59    6 
     717ED61    0 
     718ED62    3 
     719ED63    0 
     720ED64    7 
     721ED65    3 
     722ED68    1 
     723ED69    3 
     724ED70    5 
     725ED71    6 
     726ED72    7 
     727ED73    7 
     728ED74    4 
     729ED75    4 
     730ED76    3 
     731ED77    7 
     732ED78    3 
     733ED79    7 
     734ED80    0 
     735ED81    0 
     736ED82    4 
     737ED83    1 
     738ED84    4 
     739ED85    7 
     740ED86    7 
     741ED87    0 
     742ED87a   0 
     743ED88    7 
     744ED89    7 
     745ED90    3 
     746ED91    7 
     747ED92    0 
     748ED93    7 
     749ED94    6 
     750ED95    0 
     751ED96    0 
     752ED97    0 
     753ED98    6 
     754ED99a   0 
     755ED100   7 
     756ED101   3 
     757CD1     7 
     758CD3     0 
     759CD7     1 
     760CD28    5 
     761CD31    2 
     762CD39    4 
     763CD40    1 
     764CD43    0 
     765CD48    5 
     766CD49    4 
     767CD55    3 
     768CD56    7 
     769CD64    0 
     770CD67    0 
     771CD76    2 
     772CD77    4 
     773CD79    0 
     774CD82    4 
     775CD83    0 
     776CD87    0 
     777CD88    6 
     778CD89    4 
     779CD90    5 
     780CD91    6 
     781CD92    7 
     782CD92a   7 
     783CD92b   7 
     784CD93    2 
     785CD94    2 
     786CD94b   4 
     787CD95    1 
     788CD96    6 
     789CD99    0 
     790CD102   1 
     791CD104a  4 
     792CD104b  4 
     793CD105   6 
     794CD107   0 
     795CD108   7 
     796CD109   0 
     797EJ1     6 
     798EJ2     5 
     799EJ2b    0 
     800EJ3     0 
     801EJ4     7 
     802EJ6     0 
     803EJ7     7 
     804EJ7b    7 
     805EJ8     0 
     806EJ9     0 
     807EJ12    6 
     808EJ13    0 
     809EJ13b   6 
     810EJ14    0 
     811EJ15    6 
     812EJ17    7 
     813EJ18    0 
     814EJ19    0 
     815EJ20    0 
     816EJ21    0 
     817EJ22    0 
     818EJ23    0 
     819EJ24    5 
     820EJ25    7 
     821EJ26    0 
     822EJ27    0 
     823EJ28    6 
     824EJ29    0 
     825EJ30    3 
     826EJ31    0 
     827EJ32    7 
     828EJ33    0 
     829EJ34    7 
     830EJ35    3 
     831EJ37    6 
     832EJ39    7 
     833EJ40    7 
     834EJ41    0 
     835EJ42    3 
     836EJ43    5 
     837EJ44    6 
     838EJ45    0 
     839EJ46    6 
     840EJ47    0 
     841EJ49b   6 
     842EJ50    0 
     843EJ51    3 
     844EJ52    0 
     845EJ53    7 
     846EJ54    6 
     847EJ55    7 
     848EJ56    7 
     849EJ57    0 
     850EJ58    7 
     851EJ59    0 
     852EJ60    0 
     853EJ62a   4 
     854EJ62b   4 
     855EJ63a   0 
     856EJ63    0 
     857EJ64    0 
     858EJ65    0 
     859EJ66    0 
     860EJ67    6 
     861EJ68    0 
     862EJ69    0 
     863EJ71    6 
     864EJ72    0 
     865EJ73    6 
     866EJ74    6 
     867EJ75    7 
     868EJ76    5 
     869EJ77    0 
     870EJ78    7 
     871EJ79    4 
     872EJ80    4 
     873EJ81    0 
     874EJ81b   7 
     875EJ81c   7 
     876EJ82    0 
     877EJ84    7 
     878EJ85    0 
     879EJ86    5 
     880EJ87    0 
     881EJ88    7 
     882EJ89    7 
     883EJ90    0 
     884EJ91    7 
     885EJ92    7 
     886EJ93    3 
     887EJ94    0 
     888EJ95    7 
     889EJ96    7 
     890EJ97    5 
     891EJ98    0 
     892EJ99    0 
     893EJ100   0 
     894EJ101   0 
     895S1      3 
     896S2      3 
     897S3      7 
     898S4      0 
     899S5      6 
     900S6      7 
     901S6b     0 
     902S6c     0 
     903S7      7 
     904S8      0 
     905S9      0 
     906S10     7 
     907S10b    0 
     908S10c    7 
     909S10d    0 
     910S11     0 
     911S12     7 
     912S13     0 
     913S14b    2 
     914HH1     1 
     915HH2     1 
     916HH3     0 
     917HH4     0 
     918HH5     3 
     919HH6     7 
     920HH7     5 
     921HH8     0 
     922HH9     6 
     923HH10    1 
     924HH11    6 
     925HH12    1 
     926HH13    6 
     927HH14    7 
     928HH15    3 
     929HH16    7 
     930HH17    7 
     931Reinforce1      0 
     932Reinforce2      0 
     933Reinforce3      0 
     934Reinforce4      4 
     935Reinforce5      4 
     936Reinforce102    0 
     937LE1     3 
     938LE2     7 
     939LE3     5 
     940LE5     0 
     941LE6     5 
     942LE8     0 
     943LE9     0 
     944LE10    0 
     945LE12    7 
     946LE13    7 
     947LE15    1 
     948LE16    2 
     949RE1     5 
     950RE2     7 
     951RE3     0 
     952RE5     1 
     953RE6     7 
     954RE7     3 
     955RE8     7 
     956RE9     0 
     957RE10    0 
     958RE12    0 
     959RE13    0 
     960RE14    4 
     961Th1     0 
     962Th2     0 
     963Th3     7 
     964Th4     0 
     965Th5     6 
     966Th6     6 
     967Th7     6 
     968Th8     0 
     969Th9     6 
     970Th10    1 
     971Th11    1 
     972Th12    1 
     973Th13    0 
     974Th14    1 
     975Th15    7 
     976Th16    0 
     977Th17    7 
     978Th18    7 
     979Th19    6 
     980Th20    3 
     981Th21    6 
     982Th22    7 
     983Th23    0 
     984Th24    0 
     985M1      0 
     986M2      0 
     987M3      7 
     988M4      0 
     989M5      6 
     990M6      6 
     991M7      6 
     992M8      6 
     993Conn101 1 
     994Conn102 1 
     995Conn103 6 
     996Conn104 6 
     997Conn105 0 
     998Conn106 6 
     999Conn201 1 
     1000Conn202 5 
     1001Conn203 1 
     1002Conn204 7 
     1003Conn205 7 
     1004Conn206 6 
     1005Conn207 1 
     1006Conn301 6 
     1007Conn302 6 
     1008Conn303 2 
     1009Conn304 2 
     1010Conn305 2 
     1011Conn306 4 
     1012Conn307 7 
     1013Conn308 6 
     1014Conn309 6 
     1015Conn310 1 
     1016Conn311 2 
     1017Conn312 5 
     1018Conn313 1 
     1019Conn314 6 
     1020Conn315 5 
     1021Conn401 4 
     1022Conn402 4 
     1023Conn403 6 
     1024Conn501 1 
     1025Conn502 6 
     1026Conn503 6 
     1027Conn504 6 
     1028Conn505 6 
     1029Conn506 0 
     1030Conn507 6 
     1031Conn508 5 
     1032Conn509 6 
     1033Conn509b        6 
     1034Conn510 1 
     1035Conn601 1 
     1036Conn602 6 
     1037Conn603 1 
     1038Conn603b        1 
     1039Conn604 6 
     1040Conn605 6 
     1041Conn606 6 
     1042Conn607 1 
     1043Conn608 1 
     1044Conn609 7 
     1045Conn610 0 
     1046Conn611 7 
     1047Conn701 6 
     1048Conn702 3 
     1049Conn703 4 
     1050Conn704 6 
     1051Conn705 6 
     1052Conn706 0 
     1053Conn707 0 
     1054Conn708 1 
     1055Conn801 7 
     1056Cut101  0 
     1057Cut201  0 
     1058Cut302  5 
     1059Cut303  5 
     1060Cut304  1 
     1061Cut501  7 
     1062Cut601  0 
     1063AS1     0 
     1064AS2     0 
     1065AS3     7 
     1066AS4     6 
     1067AS5     7 
     1068AS6     6 
     1069AS7     0 
     1070Shape1  6 
     1071Shape2  1 
     1072Shape3  0 
     1073Shape4  6 
     1074Shape5  6 
     1075Shape6  3 
     1076Shape6b 3 
     1077Shape7  3 
     1078Shape8a 3 
     1079Shape8b 3 
     1080Shape8c 3 
     1081Shape8d 7 
     1082Shape9a 0 
     1083Shape9b 0 
     1084Shape9c 0 
     1085Shape10 1 
     1086Shape11 6 
     1087Shape12 6 
     1088Shape12b        7 
     1089Shape13 0 
     1090Shape14 1 
     1091Shape15 1 
     1092Shape16 5 
     1093Shape17 4 
     1094Shape18 6 
     1095Shape18b        6 
     1096Shape18c        7 
     1097Shape19 6 
     1098Shape20 1 
     1099Shape21 6 
     1100Shape22 4 
     1101Shape23 7 
     1102Shape24 7 
     1103Shape25 7 
     1104Shape26 1 
     1105Shape27 7 
     1106Shape28 3 
     1107Shape29 2 
     1108Shape30 0 
     1109Shape31 0 
     1110Shape32 1 
     1111Shape33 6 
     1112Shape34 7 
     1113Shape35 2 
     1114Shape36 2 
     1115Shape37 2 
     1116Shape38 0 
     1117Shape39 3 
     1118Shape40 3 
     1119Shape41 3 
     1120Shape42 6 
     1121Shape43 0 
     1122Shape44 6 
     1123Shape45 1 
     1124Shape46 0 
     1125Shape47 1 
     1126Shape48 0 
     1127Shape49 7 
     1128Shape50 0 
     1129Shape51 0 
     1130Shape53 0 
     1131Shape54 0 
     1132Shape55 1 
     1133Shape56 7 
     1134Shape57 1 
     1135Shape58 3 
     1136Shape59 0 
     1137Shape60 7 
     1138Shape60b        7 
     1139Shape60c        0 
     1140Shape61 5 
     1141Shape62 7 
     1142Shape63 7 
     1143Shape64 0 
     1144Shape65 0 
     1145Shape66 1 
     1146Shape67 3 
     1147Shape68 7 
     1148Shape69 7 
     1149Shape70 7 
     1150Shape71 7 
     1151Shape72 7 
     1152Shape73 1 
     1153Shape73b        1 
     1154Shape74 4 
     1155Shape75 0 
     1156Shape76 5 
     1157Shape77 0 
     1158Shape78 0 
     1159Shape79 6 
     1160Shape80 4 
     1161Shape81 6 
     1162Shape82 4 
     1163Shape83 1 
     1164Shape84 5 
     1165Shape85 5 
     1166Shape86 0 
     1167Shape87 1 
     1168Shape88 0 
     1169Sente1  4 
     1170Sente1b 4 
     1171Sente1c 4 
     1172Sente1d 1 
     1173Sente2  1 
     1174Sente3  0 
     1175Sente4  0 
     1176Sente5  1 
     1177Sente6  6 
     1178Sente7  0 
     1179Sente8  0 
     1180Sente9  1 
     1181Sente10 0 
     1182Sente11 6 
     1183Sente13 3 
     1184Sente13b        3 
     1185Sente13c        6 
     1186Sente13d        7 
     1187Sente13e        2 
     1188Sente14 5 
     1189Sente15 5 
     1190Sente16 0 
     1191Sente17 0 
     1192Sente18 0 
     1193Sente19 5 
     1194Sente20 5 
     1195Sente21 5 
     1196Sente22 0 
     1197Sente23 6 
     1198Sente24 0 
     1199DD1     1 
     1200DD2     2 
     1201DD2b    2 
     1202DD3     1 
     1203DD4     1 
     1204DD5     1 
     1205DD6     1 
     1206DD7     0 
     1207DD8     2 
     1208DD8b    4 
     1209DD9     2 
     1210DD10    0 
     1211DD11    1 
     1212DD12    6 
     1213DD13    1 
     1214Temp1   0 
     1215Temp5   0 
     1216Temp6   6 
     1217Temp7a  7 
     1218Temp7b  7 
     1219Temp8   3 
     1220Temp9   0