diff --git a/ChangeLog b/ChangeLog index 012c5d13..bc54f55f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Release Notes DDS 2.8.4 +----------------------- +Added a lower-memory DLL version with a compile flag. This is about +11-14% slower, but uses a lot less memory. For example, for a +single thread on one PC, the memory usage was 24 MB rather than 110 MB. +For 12 threads, the numbers were 89 MB rather than 1.1 GB. + +Added TDC 32-bit and 64-bit Makefiles contributed by Sergio Polini. + +Made the SolveAllChunks functions aliases to SolveAllBoards. + + Release Notes DDS 2.8.3 ----------------------- Fixed bug in Scheduler that caused a crash in case 200 very similar diff --git a/INSTALL b/INSTALL index 0f7d066f..1331b621 100644 --- a/INSTALL +++ b/INSTALL @@ -78,11 +78,14 @@ Microsoft Visual C++ (Windows-like, so no "mV", different "make") Makefile: Makefile_Visual_Windows Compiler: cl + Mingw ----- Makefile: Makefile_mingw Compiler: i686-w64-mingw32-g++ +32-bit and 64-bit variants for the tdc compiler are available. + Cygwin ------ diff --git a/README.md b/README.md index 028b921c..0afa25f8 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ DDS offers a wide range of functions, including par-score calculations. Please refer to the [home page](http://privat.bahnhof.se/wb758135) for details. -The current version is DDS 2.8.3 released in January 2016 and licensed under the Apache 2.0 license in the LICENSE FILE. +The current version is DDS 2.8.4 released in March 2016 and licensed under the Apache 2.0 license in the LICENSE FILE. Release notes are in the ChangeLog file. @@ -86,7 +86,7 @@ The DDS library interface is very well documented. You find the docs, including Bugs ==== -Version 2.8.3 has no known bugs. +Version 2.8.4 has no known bugs. Please report bugs to bo.haglund@bahnhof.se and soren.hein@gmail.com. diff --git a/doc/DLL-dds_x.pdf b/doc/DLL-dds_x.pdf index 91777685..66cbce5d 100644 Binary files a/doc/DLL-dds_x.pdf and b/doc/DLL-dds_x.pdf differ diff --git a/doc/DLL-dds_x.rtf b/doc/DLL-dds_x.rtf index 0d8fd67c..90aeee7b 100644 --- a/doc/DLL-dds_x.rtf +++ b/doc/DLL-dds_x.rtf @@ -1,24 +1,24 @@ {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff0\stshfdbch0\stshfloch37\stshfhich37\stshfbi37\deflang1031\deflangfe1031\themelang1053\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;} -{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Calibri};}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;} -{\f41\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Calibri};}{\f39\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} +{\f115\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Calibri};} -{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f306\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f307\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f309\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f310\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f311\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f312\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f313\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f314\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f316\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f317\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} -{\f319\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f320\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f321\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f322\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} -{\f323\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f324\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f326\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f327\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;} -{\f329\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f330\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f331\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f332\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} -{\f333\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f334\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f646\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f647\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} -{\f649\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f650\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f653\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f654\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} -{\f676\fbidi \fswiss\fcharset238\fprq2 Calibri CE{\*\falt Calibri};}{\f677\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr{\*\falt Calibri};}{\f679\fbidi \fswiss\fcharset161\fprq2 Calibri Greek{\*\falt Calibri};} -{\f680\fbidi \fswiss\fcharset162\fprq2 Calibri Tur{\*\falt Calibri};}{\f683\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic{\*\falt Calibri};}{\f684\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese){\*\falt Calibri};} -{\f696\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f697\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f699\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f700\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;} -{\f701\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f702\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f703\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f704\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);} -{\f705\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f716\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\f717\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\f719\fbidi \froman\fcharset161\fprq2 Cambria Greek;} -{\f720\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\f723\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\f724\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f310\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f311\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f313\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f314\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f315\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f316\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f317\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f318\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f320\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f321\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\f323\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f324\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f325\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f326\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f327\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f328\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f330\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f331\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;} +{\f333\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f334\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f335\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f336\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} +{\f337\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f338\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f650\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f651\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f653\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f654\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f657\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f658\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} +{\f680\fbidi \fswiss\fcharset238\fprq2 Calibri CE{\*\falt Calibri};}{\f681\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr{\*\falt Calibri};}{\f683\fbidi \fswiss\fcharset161\fprq2 Calibri Greek{\*\falt Calibri};} +{\f684\fbidi \fswiss\fcharset162\fprq2 Calibri Tur{\*\falt Calibri};}{\f687\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic{\*\falt Calibri};}{\f688\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese){\*\falt Calibri};} +{\f700\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\f701\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\f703\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\f704\fbidi \froman\fcharset162\fprq2 Cambria Tur;} +{\f707\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\f708\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\f1460\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f1461\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;} +{\f1463\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f1464\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f1465\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f1466\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);} +{\f1467\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f1468\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f1469\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} {\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} @@ -47,13 +47,13 @@ \s3\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 \sbasedon0 \snext0 \slink17 \sqformat heading 3;}{\*\cs10 \additive \sunhideused \spriority1 Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 -\additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\f41\fs32\lang1033\langfe0\kerning32\langnp1033\langfenp0 \sbasedon10 \slink1 \slocked \spriority9 \'dcberschrift 1 Zchn;}{\*\cs16 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 -\b\i\f41\fs28\lang1033\langfe0\langnp1033\langfenp0 \sbasedon10 \slink2 \slocked \ssemihidden \spriority9 \'dcberschrift 2 Zchn;}{\*\cs17 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\f41\fs26\lang1033\langfe0\langnp1033\langfenp0 +\additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\f39\fs32\lang1033\langfe0\kerning32\langnp1033\langfenp0 \sbasedon10 \slink1 \slocked \spriority9 \'dcberschrift 1 Zchn;}{\*\cs16 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 +\b\i\f39\fs28\lang1033\langfe0\langnp1033\langfenp0 \sbasedon10 \slink2 \slocked \ssemihidden \spriority9 \'dcberschrift 2 Zchn;}{\*\cs17 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \b\f39\fs26\lang1033\langfe0\langnp1033\langfenp0 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 \'dcberschrift 3 Zchn;}{\*\ts18\tsrowd\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 \sbasedon11 \snext18 \spriority59 \styrsid1789909 Table Grid;}{ -\s19\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af39\afs16\alang1025 \ltrch\fcs0 \f39\fs16\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 \sbasedon0 \snext19 \slink20 \ssemihidden \sunhideused \styrsid5376200 Balloon Text;} -{\*\cs20 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f39\fs16\lang1033\langfe1053\langnp1033\langfenp1053 \sbasedon10 \slink19 \slocked \ssemihidden \styrsid5376200 Sprechblasentext Zchn;}{\s21\ql \li0\ri0\nowidctlpar +\s19\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af115\afs16\alang1025 \ltrch\fcs0 \f115\fs16\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 \sbasedon0 \snext19 \slink20 \ssemihidden \sunhideused \styrsid5376200 +Balloon Text;}{\*\cs20 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f115\fs16\lang1033\langfe1053\langnp1033\langfenp1053 \sbasedon10 \slink19 \slocked \ssemihidden \styrsid5376200 Sprechblasentext Zchn;}{\s21\ql \li0\ri0\nowidctlpar \tqc\tx4536\tqr\tx9072\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 \sbasedon0 \snext21 \slink22 \sunhideused \styrsid14119459 header;}{\*\cs22 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\langnp1033\langfenp1053 \sbasedon10 \slink21 \slocked \styrsid14119459 Kopfzeile Zchn;}{\s23\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 \snext23 \sqformat \spriority1 \styrsid2849436 No Spacing;}{\s24\ql \li0\ri0\nowidctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 @@ -134,62 +134,62 @@ \rsid930020\rsid940090\rsid943124\rsid1056208\rsid1187219\rsid1190356\rsid1191142\rsid1202844\rsid1212155\rsid1258951\rsid1261441\rsid1313463\rsid1336469\rsid1385888\rsid1386919\rsid1445386\rsid1449865\rsid1469964\rsid1520891\rsid1538933\rsid1579764 \rsid1595222\rsid1596512\rsid1706832\rsid1708722\rsid1716250\rsid1716707\rsid1721597\rsid1770393\rsid1775603\rsid1783690\rsid1789515\rsid1789909\rsid1800033\rsid1839042\rsid1846101\rsid1852854\rsid1900643\rsid1910210\rsid1918919\rsid1921007\rsid2057006 \rsid2060511\rsid2101911\rsid2112235\rsid2112392\rsid2123303\rsid2165691\rsid2181632\rsid2229366\rsid2238558\rsid2244172\rsid2260548\rsid2365273\rsid2369496\rsid2427760\rsid2443070\rsid2446079\rsid2447429\rsid2449260\rsid2493172\rsid2494613\rsid2505631 -\rsid2566533\rsid2568164\rsid2635362\rsid2637590\rsid2641133\rsid2647507\rsid2769001\rsid2833141\rsid2838088\rsid2849436\rsid2884635\rsid2894529\rsid2952804\rsid3023369\rsid3034397\rsid3034548\rsid3036029\rsid3095740\rsid3220430\rsid3228943\rsid3231049 -\rsid3240706\rsid3243212\rsid3301731\rsid3303530\rsid3308555\rsid3342996\rsid3347855\rsid3352595\rsid3547548\rsid3552042\rsid3567911\rsid3752772\rsid3819803\rsid3893966\rsid3937665\rsid3954019\rsid4000336\rsid4002451\rsid4071901\rsid4076363\rsid4091367 -\rsid4155951\rsid4264099\rsid4268479\rsid4272774\rsid4288894\rsid4330566\rsid4350787\rsid4405244\rsid4460289\rsid4460640\rsid4475334\rsid4533879\rsid4538894\rsid4542728\rsid4545218\rsid4602097\rsid4616356\rsid4658062\rsid4675069\rsid4679222\rsid4679726 -\rsid4683401\rsid4738929\rsid4744549\rsid4877901\rsid4981561\rsid5054625\rsid5070438\rsid5113162\rsid5186751\rsid5191231\rsid5248313\rsid5254237\rsid5318615\rsid5320216\rsid5332441\rsid5376200\rsid5388872\rsid5462095\rsid5506187\rsid5519688\rsid5525810 -\rsid5526679\rsid5532374\rsid5594575\rsid5638529\rsid5650157\rsid5653460\rsid5712409\rsid5712463\rsid5767474\rsid5779433\rsid5843075\rsid5862788\rsid5927621\rsid5928646\rsid5974982\rsid5979431\rsid6045873\rsid6047888\rsid6048783\rsid6054214\rsid6058144 -\rsid6099241\rsid6115982\rsid6164997\rsid6170015\rsid6179193\rsid6228168\rsid6246771\rsid6247188\rsid6302457\rsid6309374\rsid6309794\rsid6313661\rsid6317456\rsid6362316\rsid6377474\rsid6384684\rsid6436444\rsid6499600\rsid6516102\rsid6557897\rsid6557970 -\rsid6569652\rsid6570883\rsid6573516\rsid6578564\rsid6580905\rsid6629265\rsid6633554\rsid6641819\rsid6643870\rsid6650094\rsid6699576\rsid6701983\rsid6771888\rsid6845226\rsid6894851\rsid6895698\rsid6901705\rsid6910245\rsid6950962\rsid6957422\rsid6968528 -\rsid7041439\rsid7089377\rsid7167315\rsid7277737\rsid7285964\rsid7302518\rsid7305895\rsid7415269\rsid7421144\rsid7483127\rsid7542885\rsid7545453\rsid7616262\rsid7678768\rsid7683346\rsid7686926\rsid7697883\rsid7759131\rsid7763137\rsid7804526\rsid7807046 -\rsid7880574\rsid7931676\rsid7949161\rsid7952569\rsid7959800\rsid7998566\rsid8000484\rsid8001475\rsid8090374\rsid8129941\rsid8137115\rsid8154048\rsid8194765\rsid8261617\rsid8281290\rsid8290285\rsid8323199\rsid8395240\rsid8408337\rsid8522857\rsid8527940 -\rsid8538722\rsid8541195\rsid8549130\rsid8588264\rsid8592696\rsid8593145\rsid8610523\rsid8616569\rsid8655475\rsid8682482\rsid8799536\rsid8923128\rsid8939615\rsid8983788\rsid8984001\rsid8999377\rsid9000425\rsid9002512\rsid9047914\rsid9069276\rsid9125746 -\rsid9175287\rsid9176944\rsid9249735\rsid9306501\rsid9314635\rsid9315241\rsid9331762\rsid9389132\rsid9401184\rsid9450855\rsid9515364\rsid9515749\rsid9530285\rsid9534906\rsid9572146\rsid9586997\rsid9588289\rsid9589735\rsid9713208\rsid9716036\rsid9716705 -\rsid9731125\rsid9834330\rsid9838060\rsid9845272\rsid9851850\rsid9856546\rsid9898065\rsid9907738\rsid9911854\rsid9974881\rsid10056466\rsid10108539\rsid10122796\rsid10173450\rsid10174318\rsid10176355\rsid10239463\rsid10245607\rsid10290420\rsid10308289 -\rsid10310988\rsid10313626\rsid10376323\rsid10383915\rsid10423813\rsid10426263\rsid10452726\rsid10486826\rsid10487319\rsid10490777\rsid10496751\rsid10567623\rsid10576044\rsid10616963\rsid10631094\rsid10646944\rsid10698169\rsid10774562\rsid10813614 -\rsid10831092\rsid10838587\rsid10843677\rsid10967321\rsid11078728\rsid11089766\rsid11099036\rsid11107656\rsid11149793\rsid11173409\rsid11276707\rsid11277669\rsid11279197\rsid11280091\rsid11294126\rsid11297517\rsid11344057\rsid11351616\rsid11367514 -\rsid11540483\rsid11562205\rsid11762622\rsid11801900\rsid11805493\rsid11868543\rsid11882119\rsid11930665\rsid11946565\rsid11952575\rsid11956256\rsid11958279\rsid12008966\rsid12014436\rsid12065713\rsid12068517\rsid12069216\rsid12071252\rsid12087407 -\rsid12128238\rsid12156867\rsid12210879\rsid12400949\rsid12408664\rsid12460046\rsid12520971\rsid12530193\rsid12595610\rsid12595779\rsid12615130\rsid12649012\rsid12657542\rsid12658578\rsid12658900\rsid12659025\rsid12720965\rsid12732549\rsid12739696 -\rsid12788235\rsid12797083\rsid12854747\rsid12874235\rsid12914880\rsid12915233\rsid12941889\rsid12982360\rsid12983768\rsid12986669\rsid12992185\rsid12998134\rsid13053124\rsid13071121\rsid13072585\rsid13174672\rsid13180120\rsid13200681\rsid13244366 -\rsid13250408\rsid13267252\rsid13316938\rsid13319718\rsid13321745\rsid13331862\rsid13336457\rsid13444065\rsid13452191\rsid13457490\rsid13530431\rsid13593709\rsid13641876\rsid13697230\rsid13701456\rsid13703926\rsid13714332\rsid13771084\rsid13780248 -\rsid13840817\rsid13857996\rsid13902528\rsid13902769\rsid13915886\rsid14090435\rsid14092583\rsid14095979\rsid14098709\rsid14102810\rsid14119459\rsid14169293\rsid14171083\rsid14292727\rsid14295269\rsid14307787\rsid14370947\rsid14429502\rsid14435334 -\rsid14436934\rsid14444034\rsid14498845\rsid14574742\rsid14634080\rsid14636249\rsid14814422\rsid14892228\rsid15031452\rsid15079468\rsid15084961\rsid15088206\rsid15150655\rsid15283250\rsid15291332\rsid15299259\rsid15413752\rsid15420320\rsid15490742 -\rsid15613967\rsid15620535\rsid15664614\rsid15668792\rsid15679176\rsid15744623\rsid15747980\rsid15755105\rsid15757396\rsid15800872\rsid15821976\rsid15824246\rsid15932640\rsid15937974\rsid15939092\rsid15941930\rsid15999168\rsid16002722\rsid16012515 -\rsid16021753\rsid16057925\rsid16132195\rsid16147558\rsid16151628\rsid16189992\rsid16206388\rsid16217378\rsid16276961\rsid16323149\rsid16348565\rsid16386593\rsid16401568\rsid16405367\rsid16456729\rsid16467273\rsid16470149\rsid16530750\rsid16534708 -\rsid16585076\rsid16599140\rsid16609230\rsid16610750\rsid16655487\rsid16662276\rsid16676162\rsid16715055\rsid16720464\rsid16724586\rsid16731528}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440 -\mintLim0\mnaryLim1}{\info{\author Soren Hein}{\operator Soren Hein}{\creatim\yr2014\mo11\dy18\hr12\min16}{\revtim\yr2016\mo1\dy1\hr23\min11}{\printim\yr2016\mo1\dy1\hr23\min11}{\version21}{\edmins0}{\nofpages22}{\nofwords6005}{\nofchars37838} -{\*\company HP}{\nofcharsws43756}{\vern57439}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect +\rsid2566533\rsid2568164\rsid2635362\rsid2637590\rsid2641133\rsid2647507\rsid2769001\rsid2833141\rsid2838088\rsid2849436\rsid2884635\rsid2894529\rsid2952804\rsid3023369\rsid3034397\rsid3034548\rsid3036029\rsid3095740\rsid3167271\rsid3220430\rsid3228943 +\rsid3231049\rsid3240706\rsid3243212\rsid3301731\rsid3303530\rsid3308555\rsid3342996\rsid3347855\rsid3352595\rsid3547548\rsid3552042\rsid3567911\rsid3752772\rsid3819803\rsid3893966\rsid3937665\rsid3954019\rsid4000336\rsid4002451\rsid4071901\rsid4076363 +\rsid4091367\rsid4155951\rsid4264099\rsid4268479\rsid4272774\rsid4288894\rsid4330566\rsid4350787\rsid4405244\rsid4460289\rsid4460640\rsid4475334\rsid4533879\rsid4538894\rsid4542728\rsid4545218\rsid4602097\rsid4616356\rsid4658062\rsid4675069\rsid4679222 +\rsid4679726\rsid4683401\rsid4738929\rsid4744549\rsid4877901\rsid4981561\rsid5054625\rsid5070438\rsid5113162\rsid5186751\rsid5191231\rsid5248313\rsid5254237\rsid5318615\rsid5320216\rsid5332441\rsid5376200\rsid5388872\rsid5462095\rsid5506187\rsid5519688 +\rsid5525810\rsid5526679\rsid5532374\rsid5594575\rsid5638529\rsid5650157\rsid5653460\rsid5712409\rsid5712463\rsid5767474\rsid5779433\rsid5843075\rsid5862788\rsid5927621\rsid5928646\rsid5974982\rsid5979431\rsid6045873\rsid6047888\rsid6048783\rsid6054214 +\rsid6058144\rsid6099241\rsid6115982\rsid6164997\rsid6170015\rsid6179193\rsid6228168\rsid6246771\rsid6247188\rsid6302457\rsid6309374\rsid6309794\rsid6313661\rsid6317456\rsid6362316\rsid6377474\rsid6384684\rsid6436444\rsid6499600\rsid6516102\rsid6557897 +\rsid6557970\rsid6569652\rsid6570883\rsid6573516\rsid6578564\rsid6580905\rsid6629265\rsid6633554\rsid6641819\rsid6643870\rsid6650094\rsid6699576\rsid6701983\rsid6771888\rsid6845226\rsid6894851\rsid6895698\rsid6901705\rsid6910245\rsid6950962\rsid6957422 +\rsid6968528\rsid7041439\rsid7089377\rsid7167315\rsid7277737\rsid7285964\rsid7302518\rsid7305895\rsid7415269\rsid7421144\rsid7483127\rsid7542885\rsid7545453\rsid7616262\rsid7678768\rsid7683346\rsid7686926\rsid7697883\rsid7759131\rsid7763137\rsid7804526 +\rsid7807046\rsid7880574\rsid7931676\rsid7949161\rsid7952569\rsid7959800\rsid7998566\rsid8000484\rsid8001475\rsid8090374\rsid8129941\rsid8137115\rsid8154048\rsid8194765\rsid8261617\rsid8281290\rsid8290285\rsid8323199\rsid8395240\rsid8408337\rsid8522857 +\rsid8527940\rsid8538722\rsid8541195\rsid8549130\rsid8588264\rsid8592696\rsid8593145\rsid8610523\rsid8616569\rsid8655475\rsid8682482\rsid8799536\rsid8923128\rsid8939615\rsid8983788\rsid8984001\rsid8999377\rsid9000425\rsid9002512\rsid9047914\rsid9069276 +\rsid9125746\rsid9175287\rsid9176944\rsid9249735\rsid9306501\rsid9314635\rsid9315241\rsid9331762\rsid9389132\rsid9401184\rsid9450855\rsid9515364\rsid9515749\rsid9530285\rsid9534906\rsid9572146\rsid9586997\rsid9588289\rsid9589735\rsid9713208\rsid9716036 +\rsid9716705\rsid9731125\rsid9834330\rsid9838060\rsid9845272\rsid9851850\rsid9856546\rsid9898065\rsid9907738\rsid9911854\rsid9974881\rsid10056466\rsid10108539\rsid10122796\rsid10173450\rsid10174318\rsid10176355\rsid10239463\rsid10245607\rsid10290420 +\rsid10308289\rsid10310988\rsid10313626\rsid10376323\rsid10383915\rsid10423813\rsid10426263\rsid10452726\rsid10486826\rsid10487319\rsid10490777\rsid10496751\rsid10567623\rsid10576044\rsid10616963\rsid10631094\rsid10646944\rsid10698169\rsid10774562 +\rsid10813614\rsid10831092\rsid10838587\rsid10843677\rsid10967321\rsid11030455\rsid11078728\rsid11089766\rsid11099036\rsid11107656\rsid11149793\rsid11173409\rsid11276707\rsid11277669\rsid11279197\rsid11280091\rsid11294126\rsid11297517\rsid11344057 +\rsid11351616\rsid11367514\rsid11540483\rsid11562205\rsid11762622\rsid11801900\rsid11805493\rsid11868543\rsid11882119\rsid11930665\rsid11946565\rsid11952575\rsid11956256\rsid11958279\rsid12008966\rsid12014436\rsid12065713\rsid12068517\rsid12069216 +\rsid12071252\rsid12087407\rsid12128238\rsid12156867\rsid12210879\rsid12400949\rsid12408664\rsid12460046\rsid12520971\rsid12530193\rsid12595610\rsid12595779\rsid12615130\rsid12649012\rsid12657542\rsid12658578\rsid12658900\rsid12659025\rsid12720965 +\rsid12732549\rsid12739696\rsid12788235\rsid12797083\rsid12854747\rsid12874235\rsid12914880\rsid12915233\rsid12941889\rsid12982360\rsid12983768\rsid12986669\rsid12992185\rsid12998134\rsid13053124\rsid13071121\rsid13072585\rsid13174672\rsid13180120 +\rsid13200681\rsid13244366\rsid13250408\rsid13267252\rsid13316938\rsid13319718\rsid13321745\rsid13331862\rsid13336457\rsid13444065\rsid13452191\rsid13457490\rsid13530431\rsid13593709\rsid13641876\rsid13697230\rsid13701456\rsid13703926\rsid13714332 +\rsid13771084\rsid13780248\rsid13840817\rsid13857996\rsid13902528\rsid13902769\rsid13915886\rsid14090435\rsid14092583\rsid14095979\rsid14098709\rsid14102810\rsid14119459\rsid14169293\rsid14171083\rsid14292727\rsid14295269\rsid14307787\rsid14370947 +\rsid14429502\rsid14435334\rsid14436934\rsid14444034\rsid14498845\rsid14574742\rsid14634080\rsid14636249\rsid14814422\rsid14892228\rsid15031452\rsid15079468\rsid15084961\rsid15088206\rsid15150655\rsid15283250\rsid15291332\rsid15299259\rsid15413752 +\rsid15420320\rsid15490742\rsid15613967\rsid15620535\rsid15664614\rsid15668792\rsid15679176\rsid15744623\rsid15747980\rsid15755105\rsid15757396\rsid15800872\rsid15821976\rsid15824246\rsid15932640\rsid15937974\rsid15939092\rsid15941930\rsid15999168 +\rsid16002722\rsid16012515\rsid16021753\rsid16057925\rsid16132195\rsid16147558\rsid16151628\rsid16189992\rsid16206388\rsid16217378\rsid16276961\rsid16323149\rsid16348565\rsid16386593\rsid16401568\rsid16405367\rsid16456729\rsid16467273\rsid16470149 +\rsid16530750\rsid16534708\rsid16585076\rsid16599140\rsid16609230\rsid16610750\rsid16655487\rsid16662276\rsid16676162\rsid16715055\rsid16720464\rsid16724586\rsid16731528}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0 +\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author Soren Hein}{\operator Soren Hein}{\creatim\yr2014\mo11\dy18\hr12\min16}{\revtim\yr2016\mo3\dy20\hr10\min12}{\printim\yr2016\mo1\dy1\hr23\min11}{\version22}{\edmins0}{\nofpages22}{\nofwords6014} +{\nofchars37891}{\*\company HP}{\nofcharsws43818}{\vern57439}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\hyphhotz425\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120 \dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\splytwnine\ftnlytwnine\htmautsp\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot4538894 \newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0{\*\wgrffmtfilter 2450} \nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14119459 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 { -\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid13452191 \chftnsep +\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3167271 \chftnsep \par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14119459 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 -\insrsid13452191 \chftnsepc +\insrsid3167271 \chftnsepc \par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14119459 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 -\insrsid13452191 \chftnsep +\insrsid3167271 \chftnsep \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14119459 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 -\insrsid13452191 \chftnsepc +\insrsid3167271 \chftnsepc \par }}\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s24\qc \li0\ri0\nowidctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid7483127\charrsid14119459 PAGE \\* MERGEFORMAT}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\lang1024\langfe1024\noproof\langnp1031\insrsid16386593\charrsid16386593 2}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid7483127\charrsid14119459 +\f37\lang1024\langfe1024\noproof\langnp1031\insrsid11030455\charrsid11030455 18}}}\sectd \ltrsect\linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid7483127\charrsid14119459 \par }\pard \ltrpar\s24\ql \li0\ri0\nowidctlpar\tqc\tx4536\tqr\tx9072\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid7483127 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\lang1031\langfe1053\langnp1031\insrsid6650094\charrsid16456729 Bo Haglund, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\lang1031\langfe1053\langnp1031\insrsid2123303\charrsid16456729 Soren Hein, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\lang1031\langfe1053\langnp1031\insrsid6650094\charrsid16456729 Bob Richardson -\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid16720464 Rev Y, 2016-01-01}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid6650094\charrsid14119459 +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid11030455 Rev Z}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid16720464 , 2016-01-01}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid6650094\charrsid14119459 \par Latest DLL issue with this description is available at }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid15824246 HYPERLINK "http://www.bahnhof.se/wb758135/" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid15824246 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5800000068007400740070003a002f002f007700770077002e006200610068006e0068006f0066002e00730065002f00770062003700350038003100330035002f000000795881f43b1d7f48af2c825dc48527630000 -0000a5ab000000000011000000ff008c00507a4900}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid6650094\charrsid15824246 http://www.bahnhof.se/wb758135/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 +0000a5ab000000000011000000ff008c00507a490000}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid6650094\charrsid15824246 http://www.bahnhof.se/wb758135/}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid6650094\charrsid14119459 \par \par \par }\pard\plain \ltrpar\s2\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid1595222 D}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid6650094\charrsid14119459 escription of the DLL functions supported in D}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid5318615 ouble Dummy Problem Solver}{ -\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid270015 2.8}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid13200681 .3}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid6650094\charrsid14119459 +\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid270015 2.8}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid11030455 .4}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\ul\cf1\insrsid6650094\charrsid14119459 \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10576044\charrsid14119459 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 @@ -200,13 +200,13 @@ The callable functions are all preceded with }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs \f37\cf1\insrsid14119459 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13331862 \par \par }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid14119459\charrsid14119459 REF Return \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b020000000800000007000000520065007400750072006e000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Return codes}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 -\ltrch\fcs0 \f37\cf1\insrsid14119459 are given at the end.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10576044 +08d0c9ea79f9bace118c8200aa004ba90b020000000800000007000000520065007400750072006e00000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Return codes}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 +\af1 \ltrch\fcs0 \f37\cf1\insrsid14119459 are given at the end.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10576044 \par \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid13331862 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid1789909 Not all functions are present in all versions of the DLL.}{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\cf1\insrsid8154048 For historical reasons, the function names are not entirely consistent with respect to the input for -mat. Functions accepting binary deals will end on Bin, and those accepting PBN deals will end on PBN in the future. At some point existing function names may be changed as well, so use the new names!}{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\cf1\insrsid6650094 +\f37\cf1\insrsid8154048 For historical reasons, the function names are not entirely consistent with respect to the input form +at. Functions accepting binary deals will end on Bin, and those accepting PBN deals will end on PBN in the future. At some point existing function names may be changed as well, so use the new names!}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6650094 + \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid8395240 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f37\cf1\insrsid8395240\charrsid1800033 The Basic Functions \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid8395240 @@ -300,17 +300,17 @@ ConvertToSidesTextFormat}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2238558 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid14119459\charrsid14119459 - REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt { -\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid14119459 \cell }\pard \ltrpar + REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt +{\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789909 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5767474\charrsid14119459 REF deal \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16530750 dl,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 \par int target, \par int solutions, \par int mode, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12659025\charrsid14119459 REF futureTricks \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *futp, \par int threadIndex\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8154048 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid13267252 Binary }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789909 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 @@ -320,17 +320,18 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid13331862\charrsid13331862 - REF SolveBoardPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid13331862 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000053006f006c007600650042006f00610072006400500042004e000000 -}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveBoardPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid13331862 \cell -}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789909 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid6968528\charrsid14119459 REF dealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { -\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid4616356 dlPBN}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16530750 ,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 + REF SolveBoardPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid13331862 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000053006f006c007600650042006f00610072006400500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveBoardPBN}}}\sectd \ltrsect +\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid13331862 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789909 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6968528\charrsid14119459 REF dealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e00000077}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 +dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid4616356 dlPBN}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16530750 ,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\cf1\insrsid8154048\charrsid14119459 \par int target, \par int solutions, \par int mode, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12659025\charrsid14119459 REF futureTricks \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000bf}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *futp, \par int threadIndex}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f37\fs18\cf1\insrsid8154048\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8154048 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid13267252 PBN}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -341,16 +342,16 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid11107656\charrsid11107656 - REF CalcDDtable \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid11107656 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000430061006c006300440044007400610062006c0065000000}} + REF CalcDDtable \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid11107656 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000430061006c006300440044007400610062006c006500000020}} }{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcDDtable}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid11107656 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5974982 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid6901705 struct}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\insrsid8154048\charrsid6901705 } {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705\charrsid6901705 REF ddTableDeal \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c00000022}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid6901705 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid16456729\charrsid6901705 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 tableDeal, \line struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT } -{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 -\ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000072}}}{\fldrslt {\rtlch\fcs1 +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 * tablep\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid13267252 Binary }{ \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 \cell Solves an initial hand for all possible declarers and denominations (}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid16012515 up to }{\rtlch\fcs1 \af1\afs22 @@ -361,15 +362,15 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid11107656\charrsid11107656 REF CalcDDtablePBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid11107656 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000430061006c006300440044007400610062006c006500500042004e000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcDDtablePBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000430061006c006300440044007400610062006c006500500042004e00000067}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcDDtablePBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid11107656 \cell }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF ddTableDealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e00000065}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 \line }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6968528\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 tableDealPBN, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5974982 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000030}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 * tablep\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 PBN }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14307787\charrsid14119459 @@ -382,21 +383,21 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid11107656\charrsid11107656 - REF CalcAllTables \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid11107656 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e000000430061006c00630041006c006c005400610062006c00650073000000 -}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcAllTables}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid11107656 \cell }{ -\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableDeals \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d000000640064005400610062006c0065004400650061006c0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeals}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\cf1\insrsid16456729 + REF CalcAllTables \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid11107656 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e000000430061006c00630041006c006c005400610062006c006500730000002e}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcAllTables}}}\sectd \ltrsect +\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid11107656 \cell }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 +\ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableDeals \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d000000640064005400610062006c0065004400650061006c007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeals}}}\sectd \ltrsect +\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 dealsp, \par int mode, \par int trumpFilter[5], \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTablesRes \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c00650073005200650073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065007300520065007300000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *resp, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6701983 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6701983\charrsid14119459 REF allParResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c0074007300000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 presp\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 Binary \cell }\pard \ltrpar @@ -408,21 +409,21 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid11107656\charrsid11107656 REF CalcAllTablesPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid11107656 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b020000000800000011000000430061006c00630041006c006c005400610062006c0065007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcAllTablesPBN}}} +08d0c9ea79f9bace118c8200aa004ba90b020000000800000011000000430061006c00630041006c006c005400610062006c0065007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcAllTablesPBN}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid11107656 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8154048 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableDealsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000010000000640064005400610062006c0065004400650061006c007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000010000000640064005400610062006c0065004400650061006c007300500042004e00000014}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *dealsp, \par int mode, \par int trumpFilter[5], }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid70445\charrsid14119459 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTablesRes \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c00650073005200650073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065007300520065007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *resp, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6701983 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6701983\charrsid14119459 REF allParResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c00740073000000c5}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 presp\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 PBN }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -437,14 +438,14 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5320216\charrsid5320216 REF SolveAllBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid5320216 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f00000053006f006c007600650041006c006c0042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f00000053006f006c007600650041006c006c0042006f006100720064007300000022}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid5320216 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8154048 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF boardsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e00000091}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *bop, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14429502 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid14429502\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000016}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid7880574 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574 * }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid7880574 solvedp\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8154048\charrsid14119459 PBN }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -458,14 +459,14 @@ The most basic function, solves a single hand from the beginning or from later p \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5320216\charrsid5320216 REF SolveAllChunksBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid5320216 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000053006f006c007600650041006c006c004300680075006e006b007300420069006e000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunksBin}}} +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000053006f006c007600650041006c006c004300680075006e006b007300420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunksBin}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid5320216 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8154048 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF boards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boards -}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *bop, +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 +boards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *bop, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14429502 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid14429502\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8154048\charrsid14119459 int chunkSize\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -478,13 +479,13 @@ Solves a number of hands in parallel. Multi-threaded.}{\rtlch\fcs1 \af1\afs22 \l \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5320216\charrsid5320216 REF SolveAllChunks \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid5320216 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f00000053006f006c007600650041006c006c004300680075006e006b0073000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunks}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f00000053006f006c007600650041006c006c004300680075006e006b007300000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunks}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid5320216 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid16151628 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16151628\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16151628\charrsid14119459 REF boardsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16151628\charrsid14119459 *bop, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16151628\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16151628\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16151628\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16151628\charrsid14119459 solvedp, }{ \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 @@ -498,14 +499,14 @@ Solves a number of hands in parallel. Multi-threaded.}{\rtlch\fcs1 \af1\afs22 \l \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5320216\charrsid5320216 REF SolveAllChunksPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid5320216 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000053006f006c007600650041006c006c004300680075006e006b007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunksPBN}}} +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000053006f006c007600650041006c006c004300680075006e006b007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunksPBN}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8154048\charrsid5320216 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF boardsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *bop, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14429502 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid14429502\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 solvedp, }{ \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 @@ -519,16 +520,16 @@ Solves a number of hands in parallel. Multi-threaded.}{\rtlch\fcs1 \af1\afs22 \l \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12520971 \page \par \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12658900\charrsid12658900 REF Par \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid12658900 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000040000005000610072000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 Par}}} +\f2\fs18\ul\cf19\insrsid16386593\charrsid12658900 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000004000000500061007200000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 Par}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid12658900 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 tablep, }{ \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6701983\charrsid14119459 REF parResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *presp, \par int vulnerable\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 No format }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14307787\charrsid14119459 @@ -542,11 +543,11 @@ Solves a number of hands in parallel. Multi-threaded.}{\rtlch\fcs1 \af1\afs22 \l \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3567911 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3567911 DealerPar}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3567911\charrsid12658900 \cell }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3567911\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3567911\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3567911\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3567911\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3567911\charrsid14119459 tablep, \par struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "parResultsDealer" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c0065007200000000d00000000000ff002e213120f500}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c0065007200000000d00000000000ff002e213120f50000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid13701456\charrsid16456729 parResultsDealer}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid13701456 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3567911\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3567911\charrsid14119459 presp, @@ -561,11 +562,11 @@ Solves a number of hands in parallel. Multi-threaded.}{\rtlch\fcs1 \af1\afs22 \l \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3567911 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430\charrsid3220430 DealerParBin }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3220430 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 struct } {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "ddTableResults" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c007400730000000011006c00000aff0021080020a700}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c007400730000000011006c00000aff0021080020a70000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 * tablep, \par struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000780000000000ff00e20074208500}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000780000000000ff00e2007420850000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 * presp, @@ -581,7 +582,7 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3567911 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430\charrsid3220430 ConvertToDealerTextFormat}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3220430 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 -{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d006100730074006500720000000068008c0000006d008e0020205300}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d006100730074006500720000000068008c0000006d008e002020530000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 pres, @@ -595,11 +596,11 @@ Text}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid3220430\charrsid14 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid348894 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid15939092 SidesPar}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid348894\charrsid8538722 \cell }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid348894\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894\charrsid14119459 tablep, \par struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "parResultsDealer" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c00650072000000000000000000000000de003c009600}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c00650072000000000000000000000000de003c00960000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3954019\charrsid16456729 parResultsDealer}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894\charrsid14119459 presp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid348894 , @@ -613,11 +614,11 @@ Par results are given for sides with the DealerPar output format.}{\rtlch\fcs1 \ \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid348894 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430\charrsid3220430 SidesParBin}{ \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3220430 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 struct } {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "ddTableResults" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c007400730000000000000000000000002e3137001000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c007400730000000000000000000000002e3137001000f2}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \line }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 * tablep, \par struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid16456729 HYPERLINK \\l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid16456729 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d00610073007400650072000000000004000000000000b5006923a700}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d00610073007400650072000000000004000000000000b5006923a700f1}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid3220430\charrsid16456729 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16456729 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid3220430 sidesRes[2], @@ -633,12 +634,12 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid348894 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430\charrsid3220430 ConvertToSidesTextFormat}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid3220430 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid16057925 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid8682482 HYPERLINK \\l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid8682482 -{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000000f0000e5002c008e0d3a006a00}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +{\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000000f0000e5002c008e0d3a006a00f1}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid16057925\charrsid8682482 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 pres, \par struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid8682482 HYPERLINK \\l "parTextResults" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid8682482 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000700061007200540065007800740052006500730075006c007400730000000000000000f7000000d2003e00f700}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid16057925\charrsid8682482 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000700061007200540065007800740052006500730075006c007400730000000000000000f7000000d2003e00f700f1}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid16057925\charrsid8682482 parTextResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16057925\charrsid16057925 resp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid3220430\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid348894 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8290285 Text}{\rtlch\fcs1 @@ -650,22 +651,22 @@ Example of text output from }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\i \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid8538722 - REF CalcPar \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid8538722 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000008000000430061006c0063005000610072000000}}}{\fldrslt {\rtlch\fcs1 + REF CalcPar \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid8538722 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000008000000430061006c006300500061007200000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcPar}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid8538722 \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid6557970 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705\charrsid6901705 REF ddTableDeal \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c00000013}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid6557970 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482\charrsid6557970 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 tableDeal, \par int vulnerable, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5974982\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15757396 \par * }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 tablep, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6701983 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6701983\charrsid14119459 REF parResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 presp\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14307787 Binary}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 @@ -676,21 +677,21 @@ Solves for both the DD result table and the par contracts}{\rtlch\fcs1 \af1\afs2 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid8538722 - REF CalcParPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid8538722 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b000000430061006c006300500061007200500042004e000000}}}{\fldrslt { + REF CalcParPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid8538722 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b000000430061006c006300500061007200500042004e00000000}}}{\fldrslt { \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 CalcParPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid8538722 \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF ddTableDealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid70445\charrsid14119459 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 tableDealPBN, \par struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid8682482 HYPERLINK \\l "ddTableResults" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid8682482 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000000000307b0f002000043500006800}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid6578564\charrsid8682482 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000000000307b0f00200004350000680000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid6578564\charrsid8682482 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15757396 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 * tablep, \par int vulnerable, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6701983 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6701983\charrsid14119459 REF parResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 presp\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 PBN \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid2769001 As CalcPar, but with PBN input format.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid3034548 }{\rtlch\fcs1 \af1\afs22 @@ -702,18 +703,18 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12520971 \page \par \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid2849436 REF TracePlayBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 -\ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid2849436 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005400720061006300650050006c0061007900420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid2849436 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005400720061006300650050006c0061007900420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 AnalysePlayBin}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid2849436 \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6968528\charrsid14119459 REF deal \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 dl, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6580905\charrsid14119459 REF playTraceBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTraceBin}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTraceBin}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6580905\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid14119459\charrsid14119459 play}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 ,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid14119459\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid14119459\charrsid14119459 REF solvedPlay \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c00610079000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c0061007900000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid14119459\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid14119459\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid14119459\charrsid14119459 solvedp,}{ \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 @@ -727,18 +728,18 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid2849436 - REF TracePlayPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid2849436 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005400720061006300650050006c0061007900500042004e000000}} + REF TracePlayPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid2849436 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d0000005400720061006300650050006c0061007900500042004e00000000}} }{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 AnalysePlayPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid2849436 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6968528\charrsid14119459 REF dealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e00000020}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 dlPBN, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6580905\charrsid14119459 REF playTracePBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracePBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracePBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 playPBN, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid14119459\charrsid14119459 REF solvedPlay \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c00610079000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c0061007900000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 solvedp, \par int thrId\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 PBN }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -753,16 +754,16 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid5979431 REF TraceAllPlaysBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid5979431 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000110000005400720061006300650041006c006c0050006c00610079007300420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 AnalyseAllPlaysBin}}} +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000110000005400720061006300650041006c006c0050006c00610079007300420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 AnalyseAllPlaysBin}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid5979431 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF boards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boards -}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *bop, +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f0061007200640073000000a0}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 +boards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *bop, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6580905\charrsid14119459 REF playTracesBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesBin}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesBin}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *plp, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6580905\charrsid14119459 REF solvedPlays \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c006100790073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c00610079007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 solvedp, \par int chunkSize\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 Binary }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -776,17 +777,17 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid5979431 REF TraceAllPlaysPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid5979431 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000110000005400720061006300650041006c006c0050006c00610079007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 AnalyseAllPlaysPBN}}} +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000110000005400720061006300650041006c006c0050006c00610079007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 AnalyseAllPlaysPBN}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12657542\charrsid5979431 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid70445\charrsid14119459 REF boardsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *bopPBN, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6580905\charrsid14119459 REF playTracesPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesPBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesPBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 plpPBN, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6580905\charrsid14119459 REF solvedPlays \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c006100790073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c00610079007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 *}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8682482 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12657542\charrsid14119459 solvedp, \par int chunkSize\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12657542\charrsid14119459 PBN }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -800,7 +801,7 @@ ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7483127 REF SetMaxThreads \\h }{ -\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005300650074004d006100780054006800720065006100640073000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005300650074004d0061007800540068007200650061006400730000008f}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7483127 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 SetMaxThreads}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid1056208\charrsid5979431 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid1056208 int }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid1056208\charrsid1056208 userThreads}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid1056208\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 @@ -812,10 +813,10 @@ Used at initial start and can also be called with a request for allocating memor \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7483127 REF FreeMemory \\h }{ -\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000046007200650065004d0065006d006f00720079000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7483127 -\\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 FreeMemory}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid1056208\charrsid5979431 -\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid1056208 void}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid1056208\charrsid14119459 \cell -}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid1056208\charrsid14119459 \cell }\pard \ltrpar +\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000046007200650065004d0065006d006f00720079000000de}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid7483127 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 FreeMemory}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid1056208\charrsid5979431 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid1056208 void}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\cf1\insrsid1056208\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid1056208\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8682482 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6771888 Frees }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid8682482 all}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6771888 allocated dynamical memory.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid1056208\charrsid3034548 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid1056208\charrsid14119459 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv @@ -823,10 +824,10 @@ Used at initial start and can also be called with a request for allocating memor \brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2918\clshdrawnil \cellx2810\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3063\clshdrawnil \cellx5873 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1353\clshdrawnil \cellx7226\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2288\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7483127 - REF GetDDSInfo \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000047006500740044004400530049006e0066006f000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 + REF GetDDSInfo \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000047006500740044004400530049006e0066006f00000011}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7483127 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 GetDDSInfo}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7483127\charrsid9069276 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12657542 {\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid1921007\charrsid1921007 - REF DDSInfo \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid1921007 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000044004400530049006e0066006f000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 + REF DDSInfo \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid1921007 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000044004400530049006e0066006f000000c2}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid1921007 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 DDSInfo}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7483127 * info\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14307787 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid7483127\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8682482 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid7483127 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { @@ -957,7 +958,7 @@ Holding\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth1668\clshdrawnil \cellx1560\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3260\clshdrawnil \cellx4820\clvertalt \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4618\clshdrawnil \cellx9438\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid10576044\charrsid14119459 {\*\bkmkstart deal}deal{\*\bkmkend deal}\cell int trump;\cell }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid10239463\charrsid14119459 REF suit \\h \\ -* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000047}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10239463\charrsid14119459 encoding}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid10576044\charrsid14119459 \trowd \irow1\irowband1\ltrrow \ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -966,7 +967,7 @@ Holding\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4618\clshdrawnil \cellx9438\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid10576044\charrsid14119459 \cell int first;\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10239463\charrsid14119459 The hand leading to the trick. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid14119459 REF hand \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e0064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e006400000008}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10239463\charrsid14119459 encoding}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 \par \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid10576044\charrsid14119459 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -975,7 +976,7 @@ Holding\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4618\clshdrawnil \cellx9438\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid10576044\charrsid14119459 \cell int currentTrickSuit[3];\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12659025 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 Up to 3 cards may already have been played to the trick. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 encoding.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid163452 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid163452\charrsid163452 Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid10576044\charrsid14119459 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 @@ -992,13 +993,13 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4618\clshdrawnil \cellx9438\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid10576044\charrsid14119459 \cell unsigned int remainCards[4][4];\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12659025 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5254237 1st}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 index is }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid15757396\charrsid14119459 REF hand \\h \\ -* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e0064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e006400000022}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5254237 , 2nd}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 index is }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid15757396\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}} +\f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000020}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid15757396\charrsid14119459 . }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12983768 remainCards use}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5254237 s }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid12983768 HYPERLINK \\l "holding" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid12983768 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000068006f006c00640069006e006700000016003e23000200a40030340f002f00}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs26\f37\fs22\ul\cf19\insrsid5254237\charrsid12983768 Holding}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000068006f006c00640069006e006700000016003e23000200a40030340f002f0090}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs26\f37\fs22\ul\cf19\insrsid5254237\charrsid12983768 Holding}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12983768 encoding}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5254237 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10576044\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid10576044\charrsid14119459 \trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1018,7 +1019,7 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12659025\charrsid14119459 {\*\bkmkstart dealPBN}dealPBN{\*\bkmkend dealPBN}\cell int trump;\cell }{\field{\*\fldinst { \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000020}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 encoding\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12659025\charrsid14119459 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1026,7 +1027,7 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12659025\charrsid14119459 \cell int first;\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 The hand leading to the trick. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid14119459 REF hand \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e0064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}} +\f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e006400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid9713208 encoding}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12659025\charrsid14119459 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1035,7 +1036,7 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12659025\charrsid14119459 \cell int currentTrickSuit[3];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 Up to 3 cards may already have been played to the trick. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 encoding.\cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12659025\charrsid14119459 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1052,7 +1053,7 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12659025\charrsid14119459 \cell char remainCards[80];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 Remaining cards. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF PBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000004000000500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 PBN}}} +\f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000004000000500042004e00000020}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 PBN}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 encoding.\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12659025\charrsid14119459 \trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv \brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl @@ -1067,10 +1068,10 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid10967321 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid10967321\charrsid14119459 {\*\bkmkstart ddTableDeal}ddTableDeal{\*\bkmkend ddTableDeal}\cell unsigned int cards[4][4]; \cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10967321 Encodes a deal. First index is hand. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid10967321\charrsid14119459 REF hand \\h \\* MERGEFORMAT }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e0064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e006400000017}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10967321 encoding. Second index is suit. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid10967321\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000020}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10967321\charrsid14119459 encoding.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid10967321\charrsid10967321 \cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \b\f37\fs22\cf1\insrsid10967321\charrsid14119459 \trowd \irow1\irowband1\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1087,7 +1088,7 @@ Set to 0 if no card has been played.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12210879 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 {\*\bkmkstart ddTableDealPBN}ddTableDealPBN}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 {\*\bkmkend ddTableDealPBN} }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 \cell char cards[80];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12210879\charrsid14119459 Encodes a deal}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12658578\charrsid14119459 . }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12658578\charrsid14119459 REF PBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000004000000500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000004000000500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 PBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12658578\charrsid14119459 encoding.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12210879\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \b\f37\fs22\cf1\insrsid12210879\charrsid14119459 \trowd \irow1\irowband1\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1112,7 +1113,7 @@ Encodes a deal}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12658578 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid70445\charrsid14119459 \cell }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\lang1031\langfe1053\langnp1031\insrsid70445\charrsid7697883 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705\charrsid6901705 REF ddTableDeal \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\ +\f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c00000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\ * MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\lang1031\langfe1053\langnp1031\insrsid70445\charrsid7697883 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12210879 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\lang1031\langfe1053\langnp1031\insrsid12210879\charrsid7697883 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 @@ -1139,7 +1140,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12210879 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 \cell }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 s}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 truct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid12210879\charrsid14119459 REF ddTableDealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 -\ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 +\ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e00000020}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 deals[}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 X}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 ];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12210879 X = }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid12210879 MAXNOOFTABLES * DDS_STRAINS}{ @@ -1163,7 +1164,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid6968528\charrsid14119459 REF deal \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c00000030}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par [}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 @@ -1174,7 +1175,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell int target}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 [MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 See }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1183,7 +1184,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell int solutions}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 [MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 See }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1192,7 +1193,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell int mode}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 [MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 See }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow5\irowband5\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1213,7 +1214,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4678\clshdrawnil \cellx9498\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid6968528\charrsid14119459 REF dealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 [}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 @@ -1224,7 +1225,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell int target}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 [MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 See }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12210879\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1233,7 +1234,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell int solutions}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 [MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 See }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12210879\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1242,7 +1243,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 \cell int mode}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6968528\charrsid14119459 [MAXNOOFBOARDS];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 See }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid6968528\charrsid14119459 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6968528\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6968528\charrsid14119459 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12210879\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1272,7 +1273,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12720965\charrsid14119459 \cell int suit[13];\cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12659025 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 Suit of the each returned card. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 encoding}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12720965\charrsid14119459 \cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12720965\charrsid14119459 \trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1289,7 +1290,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6968528 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12659025\charrsid14119459 \cell int equals[13];\cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid15283250 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12659025\charrsid14119459 Lower-ranked equals}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid15283250 . } {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid15283250\charrsid12983768 HYPERLINK \\l "holding" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid15283250\charrsid12983768 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000068006f006c00640069006e006700000016003e230002001800000000619818}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs26\f37\fs22\ul\cf19\insrsid15283250\charrsid12983768 Holding}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000800000068006f006c00640069006e006700000016003e2300020018000000006198189d}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs26\f37\fs22\ul\cf19\insrsid15283250\charrsid12983768 Holding}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid15283250 encoding.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid12659025\charrsid15757396 \cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12659025\charrsid14119459 \trowd \irow11\irowband11\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1322,7 +1323,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4694\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid14429502\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14429502 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid14429502\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid14429502\charrsid14119459 REF futureTricks \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 +\af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid14429502\charrsid14119459 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12065713\charrsid11099036 solvedBoard}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12065713\charrsid14119459 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 @@ -1348,9 +1349,9 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5974982 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid5974982\charrsid14119459 int resTable[5][4];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5974982\charrsid14119459 Encodes the solution of a deal for combinations of denomination and declarer. First index is denomination. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid5974982\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5974982\charrsid14119459 encoding. Second index is declarer. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid5974982\charrsid14119459 REF hand \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e0064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +\af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e006400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5974982\charrsid14119459 encoding. Each entry is a number of tricks.\cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow1\irowband1\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl \brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1375,7 +1376,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth4694\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12210879 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 \cell struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid12210879\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 results[}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879 X}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid14119459 ];\cell }{ \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12210879 X = }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12210879\charrsid12210879 MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -1404,7 +1405,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid14429502\charrsid14119459 {\*\bkmkstart parResults}parResults{\*\bkmkend parResults}\cell char parScore[2][16];\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid14429502 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14429502\charrsid14119459 First index is NS/EW. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid14429502\charrsid14119459 REF side \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073006900640065000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Side}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300690064006500000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Side}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14429502\charrsid14119459 encoding.\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1414,7 +1415,7 @@ MAXNOOFTABLES * DDS_STRAINS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\in \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid14429502\charrsid14119459 [2][128];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14429502\charrsid14119459 First index is NS/EW. }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid14429502\charrsid14119459 REF side \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073006900640065000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Side}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300690064006500000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Side}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid14429502\charrsid14119459 encoding.\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1497,7 +1498,7 @@ There are up to 20 declarer/strain combinations per DD table}{\rtlch\fcs1 \af1\a \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3844\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid4330566 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12400949\charrsid14119459 \cell }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12400949 struct } {\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid11276707 HYPERLINK \\l "contractType" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid11276707 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000063006f006e00740072006100630074005400790070006500000000001171430000d500944500258e00}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \cs26\f2\fs20\ul\cf19\insrsid12400949\charrsid11276707 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000063006f006e00740072006100630074005400790070006500000000001171430000d500944500258e0000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \cs26\f2\fs20\ul\cf19\insrsid12400949\charrsid11276707 contractType}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf19\insrsid12400949\charrsid11276707 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf19\insrsid11276707 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12400949 contracts}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid12400949\charrsid14119459 [10];\cell }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid12400949\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid12400949\charrsid14119459 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt @@ -1652,7 +1653,7 @@ contractType}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3844\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid750270\charrsid14119459 \cell int suit[52];\cell }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid750270\charrsid14119459 REF suit \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid750270\charrsid14119459 encoding.\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid11276707\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb @@ -1661,7 +1662,7 @@ contractType}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid750270\charrsid14119459 \cell int rank[52];\cell }\pard \ltrpar \ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid750270 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid750270\charrsid14119459 Encoding 2 .. 14 (}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \i\f37\fs22\cf1\insrsid750270\charrsid14119459 not}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid750270\charrsid14119459 }{\field{\*\fldinst {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid750270\charrsid14119459 REF card \\h \\ -* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000063006100720064000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 +* MERGEFORMAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006300610072006400000000}}}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\ul\cf19\insrsid16386593\charrsid16386593 Card}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid750270\charrsid14119459 encoding).\cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow3\irowband3\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl \brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 @@ -1713,7 +1714,7 @@ String of cards with no space in between, also not between tricks. Each card co \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3844\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 { \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6580905 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid6580905\charrsid14119459 REF playTraceBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 -\f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 +\f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 playTraceBin}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11276707 \par plays[MAXNOOFBOARDS}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 ];\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 @@ -1738,7 +1739,7 @@ String of cards with no space in between, also not between tricks. Each card co \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3844\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 { \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6580905 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 Struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid6580905\charrsid14119459 REF playTracePBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 -\f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 +\f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 playTracePBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11276707 \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 p}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11276707 lays[MAXNOOFBOARDS}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 ]; @@ -1786,7 +1787,7 @@ String of cards with no space in between, also not between tricks. Each card co \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3844\clshdrawnil \cellx9514\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 { \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6580905 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid6580905\charrsid14119459 REF solvedPlay \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 -\f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c00610079000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 +\f2\fs20\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c0061007900000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid11276707 \par solved[MAXNOOFBOARDS}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\cf1\insrsid6580905\charrsid14119459 ];\cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3342996 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid6580905\charrsid14119459 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow2\irowband2\lastrow \ltrrow @@ -1805,14 +1806,14 @@ String of cards with no space in between, also not between tricks. Each card co \b\f37\cf1\insrsid6099241\charrsid14119459 {\*\bkmkend SolveBoard} \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6099241\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid8154048 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid5767474 REF deal \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid5767474 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}} +\f2\fs18\ul\cf19\insrsid16386593\charrsid5767474 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}} \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid8154048 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241 dl,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid8154048 \par int target, \par int solutions, \par int mode, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid12659025 REF futureTricks \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid12659025 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid8154048 *futp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid8154048 \par int threadIndex}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241\charrsid14119459 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\yts18 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 \cell }\pard\plain \ltrpar @@ -1820,7 +1821,7 @@ String of cards with no space in between, also not between tricks. Each card co \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 {\*\bkmkstart SolveBoardPBN}SolveBoardPBN}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid6099241\charrsid14119459 {\*\bkmkend SolveBoardPBN} \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6099241\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF dealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid16731528 d}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid15150655 l} {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid16731528 ,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 @@ -1828,7 +1829,7 @@ dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \l \par int solutions, \par int mode, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF futureTricks \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *futp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel2\rin0\lin0\pararsid6099241\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 int threadIndex}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid6099241\charrsid14119459 @@ -1875,7 +1876,7 @@ rols how many solutions should be returned; and mode }{\rtlch\fcs1 \af1 \ltrch\f \ltrch\fcs0 \f37\cf1\insrsid16530750 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11294126 \par For equivalent cards, only the highest is returned, and lower equivalent cards are encoded in the }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid11294126\charrsid11294126 REF futureTricks \\h }{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\ul\cf19\insrsid11294126 \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid11294126 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b0073000000}} +\f37\ul\cf19\insrsid11294126 \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid11294126 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000066007500740075007200650054007200690063006b007300000000}} }{\fldrslt {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\cf19\insrsid16386593\charrsid16386593 futureTricks}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11294126 structure (see \'93equals\'94). \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid16530750 \par @@ -2031,20 +2032,20 @@ is the responsibility of the programmer using the DLL to ensure that reusing the \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid6557970 {\*\bkmkstart CalcDDtable}CalcDDtable}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241\charrsid6557970 {\*\bkmkend CalcDDtable} \par }\pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6099241\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid6901705 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705\charrsid6901705 REF ddTableDeal \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\ +\f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c00000037}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\ * MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid6901705 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 tableDeal, \line }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000016}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 * tablep}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6099241\yts18 {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 {\*\bkmkstart CalcDDtablePBN}CalcDDtablePBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid6099241\charrsid14119459 {\*\bkmkend CalcDDtablePBN} \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTableDealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\cf1\insrsid6099241\charrsid14119459 tableDealPBN, +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e00000016}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 +\ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241 }{\rtlch\fcs1 \af2\afs18 +\ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 tableDealPBN, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000016}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 * tablep}{\rtlch\fcs1 \af0 \ltrch\fcs0 \f37\cf1\insrsid6099241\charrsid6099241 \cell }\pard\plain \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6099241 \trowd \irow0\irowband0\lastrow \ltrrow\ts18\trgaph108\trleft-108\trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid6099241\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt @@ -2065,16 +2066,16 @@ which must be declared before calling }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\in \par \ltrrow}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid6099241\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 {\*\bkmkstart CalcAllTables}CalcAllTables}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid6099241\charrsid14119459 {\*\bkmkend CalcAllTables} \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTableDeals \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d000000640064005400610062006c0065004400650061006c0073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d000000640064005400610062006c0065004400650061006c00730000000e}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeals}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *dealsp,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 \par int mode, \par int trumpFilter[5], \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTablesRes \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c00650073005200650073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065007300520065007300000073}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *resp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF allParResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c0074007300000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *presp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid1846101 \par }\pard\plain \ltrpar\s3\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel2\rin0\lin0\pararsid5594575\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 @@ -2082,17 +2083,17 @@ which must be declared before calling }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\in \rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 {\*\bkmkstart CalcAllTablesPBN}CalcAllTables}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid6099241 PBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid6099241\charrsid14119459 {\*\bkmkend CalcAllTablesPBN} \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTableDealsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000010000000640064005400610062006c0065004400650061006c007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000010000000640064005400610062006c0065004400650061006c007300500042004e00000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *dealsp, }{ \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 \par int mode, \par int trumpFilter[5], \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF ddTablesRes \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c00650073005200650073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065007300520065007300000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTablesRes}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *resp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8323199\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid6099241\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6099241\charrsid14119459 REF allParResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000061006c006c0050006100720052006500730075006c0074007300000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 allParResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6099241\charrsid14119459 *presp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid1846101\charrsid5594575 \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid6099241 \trowd \irow0\irowband0\lastrow \ltrrow @@ -2114,7 +2115,7 @@ a number of }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13319718 DD table}{\r \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9175287 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6099241 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 The }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid6099241\charrsid6099241 \'93mode\'94}{ \rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 parameter contains the vulnerability (}{\field{\*\fldinst {\rtlch\fcs1 \af2 \ltrch\fcs0 \f37\ul\cf19\insrsid6099241\charrsid6099241 REF vulnerable \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2 \ltrch\fcs0 -\f37\ul\cf19\insrsid16386593\charrsid6099241 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b000000760075006c006e0065007200610062006c0065000000}}}{\fldrslt {\rtlch\fcs1 \af2 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 +\f37\ul\cf19\insrsid16386593\charrsid6099241 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b000000760075006c006e0065007200610062006c006500000000}}}{\fldrslt {\rtlch\fcs1 \af2 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Vulnerable}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 encoding}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid5927621 ; not to be confused with the SolveBoard }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid5927621\charrsid5927621 mode}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 ) for use in the par calculation. It is set to -1 if no par calculation is to be performed. \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid11762622 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 @@ -2122,10 +2123,10 @@ Vulnerable}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrc \ltrch\fcs0 \f37\cf1\insrsid11762622 The parameter }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid11762622\charrsid11762622 \'93trumpFilter\'94}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 describes which, if any, of the }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 5 possibilities}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 that will be }{\rtlch\fcs1 \af1 \ltrch\fcs0 \i\f37\cf1\insrsid11762622\charrsid6099241 excluded}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 from the calculations. They are defined}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 in }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid6099241\charrsid6099241 REF suit \\h \\* MERGEFORMAT }{ -\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid6099241 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000500000073007500690074000000}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 -Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 encoding order, so}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 setting trumpFilter to \{FALSE, FALSE, TRUE, TRUE, TRUE\} - means that values will only be calculated for }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 the trump suits spades and h}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 earts.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13244366 }{ -\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid13244366\charrsid9401184 +\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid6099241 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000007300750069007400000000}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\ul\cf19\insrsid16386593\charrsid16386593 Suit}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 encoding order, so}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 setting trumpFilter to \{ +FALSE, FALSE, TRUE, TRUE, TRUE\} means that values will only be calculated for }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 the trump suits spades and h}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11762622 earts.}{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid13244366 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid13244366\charrsid9401184 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9713208 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6099241 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9175287 The maximum number of DD tables in a CallAllTables call depends on the number of }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid6099241 strains required}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2101911 , see the following table:}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9175287 @@ -2177,35 +2178,35 @@ Maximum number of DD tables\cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intb \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574 SolveAllBoards}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid7880574\charrsid5320216 \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid7880574\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7880574\charrsid14119459 REF boards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boards -}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *bop, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 - +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 +boards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *bop, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\cf1\insrsid7880574\charrsid14119459 \par struct}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574 }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7880574\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574 \par * solvedp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid7880574 \cell }\pard\plain \ltrpar\s3\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel2\rin0\lin0\pararsid5320216\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid5320216 {\*\bkmkstart SolveAllChunksBin}SolveAllChunksBin}{ \rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid7880574\charrsid5320216 {\*\bkmkend SolveAllChunksBin} \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5320216\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7880574\charrsid14119459 REF boards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boards -}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *bop, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 - +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 +boards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *bop, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\cf1\insrsid7880574\charrsid14119459 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5320216\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7880574\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 int chunkSize}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid1846101 \cell }\pard\plain \ltrpar \s3\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel2\rin0\lin0\pararsid5320216\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid5320216 {\*\bkmkstart SolveAllChunksPBN}SolveAllChunksPBN}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid7880574\charrsid5320216 {\*\bkmkend SolveAllChunksPBN} \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5320216\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7880574\charrsid14119459 REF boardsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 -\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *bop, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5320216\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid7880574\charrsid14119459 REF solvedBoards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000073006f006c0076006500640042006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedBoards}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7880574\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574\charrsid14119459 int chunkSize}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid7880574 \par @@ -2218,32 +2219,42 @@ Maximum number of DD tables\cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intb s an alias for SolveAllChunksPBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid5320216 ; don\rquote t use it. \par \par }{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid5320216\charrsid5320216 {\*\bkmkstart SolveAllBoards}SolveAllBoards}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 {\*\bkmkend SolveAllBoards} used to be}{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\cf1\insrsid5320216 an alias for SolveAllChunksPBN with}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 - a chunkSize of 1; however this has been changed in v2.8, and we now recommend only to use SolveAllBoards and not the chunk functions any more; explanation follows.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid5320216 -\par +\f37\cf1\insrsid5320216 an alias for SolveAllChunksPBN with}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 a chunkSize of 1; however this has been changed in v2.8, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 +and as of v2.8.4 it is in fact the other way round. Now SolveAllChunksBin* are aliases to SolveAllBoards, and they ignore the chunk size. Use SolveAllBoards directly instead! +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid5320216 \par The SolveAll* functions invoke SolveBoard several times in parallel in multiple threads, rather than sequentially in a single thread. This increases execution speed. Up to 200 boards are permitted per call.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid4545218 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 -\par It is important to understand the parallelism and the concept of a chunk. -\par -\par If the chunk size is 1, then each of the threads starts out with a single board. If there are four threads, then boards 0, 1, 2 and 3 are initially solved. If thread 2 is finished first, it gets the next available board, in - this case board 4. Perhaps this is a particularly easy board, so thread 2 also finishes this board before any other thread completes. Thread 2 then also gets board 5, and so on. This continues until all boards have been solved. In the end, three of t -he threads will be waiting for the last thread to finish, which causes a bit of inefficiency. +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 For historical reasons, an explanation of chunk size follows. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 If t}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 he chunk size wa}{ +\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 s 1,}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 then each of the threads started}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 out }{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid11030455 with a single board. If there we}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 re four thre}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 ads, then boards 0, 1, 2 and 3 we}{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid15668792 re initially solved. If thread 2 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 was}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 finished first, it }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{ +\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 the next available board, in th}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 is case board 4. Perhaps this wa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 s a particularly easy }{ +\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 board, so thread 2 also finished}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 this board b}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 efore any other thread completed}{ +\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 . Thread 2 then also }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 boa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 +rd 5, and so on. This continued until all boards had}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 been solved. In the end, three of the threads }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 would}{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid15668792 be waiting for the las}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 t thread to finish}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 . \par \par The transposition table in a given thread (see }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid15668792\charrsid15668792 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\ul\cf19\insrsid16386593\charrsid15668792 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 -SolveBoard}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 ) is -generally not reused between board 2, 4 and 5 in thread 2. This only happens if SolveBoard itself determines that the boards are suspiciously similar. +\f37\ul\cf19\insrsid16386593\charrsid15668792 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000013}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 +\f37\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 ) is generally not reused between board +2, 4 and 5 in thread 2. This only happens if SolveBoard itself determines that the boards are suspiciously similar. \par -\par If the chunk size is 2, then initially thread 0 gets boards 0 and 1, thread 1 gets boards 2 and 3, thread 2 gets boards 4 and 5, and thread 3 gets boards 6 and 7. When a thread is finished, it gets two new boards in one go, for instance boards 8 and 9.}{ -\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13593709 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 The transposition table in a given thread is reused within a chunk. +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 If the chunk size wa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 s 2, then initially thread 0 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid15668792 boards 0 and 1, thread 1 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 boards 2 and 3, thread 2 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{ +\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 boards 4 and 5, and thread 3 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 }{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid11030455 boards 6 and 7. When a thread wa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 s finished, it }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 got}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 + two new boards in one go, for instance boards 8 and 9.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13593709 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 The transpo}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 +sition table in a given thread wa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 s reused within a chunk. \par -\par No matter what the chunk size is, the boards are solved in parallel. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 I}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 -f the user knows that boards are grouped in chunks of 2 or 10, it is possible to force the DD solver to use this knowledge. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 -However, this is rather limiting on the user, as the alignment must remain perfect throughout the batch. +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 No matter what the chunk size wa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 s, the boards }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 were}{\rtlch\fcs1 \af1 \ltrch\fcs0 +\f37\cf1\insrsid15668792 solved in parallel. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 I}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 f the user }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 knew}{\rtlch\fcs1 \af1 +\ltrch\fcs0 \f37\cf1\insrsid15668792 that boards are gr}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 ouped in chunks of 2 or 10, it wa}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid15668792 +s possible to force the DD solver to use this knowledge. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7880574 However, this is rather limiting on the user, as the alignment must remain perfect throughout the batch. \par -\par SolveAllBoards now detects repetitions automatically within a batch, whether or not the hands are evenly arranged and whether or not the duplicates are next to each other. This is more flexible and transparent to the user, and the overhead is n -egligible. Therefore, use SolveAllBoards! +\par SolveAllBoards now detec +ts repetitions automatically within a batch, whether or not the hands are evenly arranged and whether or not the duplicates are next to each other. This is more flexible and transparent to the user, and the overhead is negligible. Therefore, use SolveAl +lBoards! \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12658900 \page \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts18\trgaph108\trleft-108\trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid12658900\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt \clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4773\clshdrawnil \cellx4665\clvertalt\clbrdrt\brdrtbl \clbrdrl\brdrtbl \clbrdrb\brdrtbl \clbrdrr\brdrtbl \cltxlrtb\clftsWidth3\clwWidth4773\clshdrawnil @@ -2251,10 +2262,10 @@ egligible. Therefore, use SolveAllBoards! \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid12658900\charrsid12658900 {\*\bkmkstart Par}Par}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid12658900 {\*\bkmkend Par} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12658900\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12658900\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000074}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid12658900\charrsid14119459 *tablep, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12658900\charrsid14119459 REF parResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 -\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c0074007300000030}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid12658900\charrsid14119459 *presp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12658900\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 int vulnerable}{\rtlch\fcs1 \af1 \ltrch\fcs0 @@ -2262,11 +2273,11 @@ egligible. Therefore, use SolveAllBoards! \rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid12658900\charrsid12658900 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12658900\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid12658900\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000013}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid12658900\charrsid14119459 *tablep, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5843075 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parResultsDealer" }{\rtlch\fcs1 \af1 -\ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c0065007200000000000065005600ff0568002a1800f3}} -}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid5843075\charrsid7880574 parResultsDealer}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +\ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c0065007200000000000065005600ff0568002a1800f388} +}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid5843075\charrsid7880574 parResultsDealer}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5843075 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid12658900\charrsid14119459 *presp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid12658900\charrsid14119459 \par int dealer, @@ -2280,11 +2291,11 @@ egligible. Therefore, use SolveAllBoards! \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid11956256 Sides}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid11956256\charrsid12658900 Par}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid11956256 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12128238\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid11956256\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid11956256\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c007400730000006e}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid11956256\charrsid14119459 *tablep, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid11956256 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid11956256\charrsid14119459 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parResultsDealer" }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c006500720000000000000000a400ffff790000200085}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004400650061006c006500720000000000000000a400ffff79000020008558}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\lang1033\langfe1031\langfenp1031\insrsid5843075\charrsid7880574 parResultsDealer}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5843075 *sidesRes[2],}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid11956256\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid11956256\charrsid14119459 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid12128238\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid11956256\charrsid14119459 int vulnerable}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 @@ -2299,22 +2310,22 @@ egligible. Therefore, use SolveAllBoards! \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450 Bin}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid10173450 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789515\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid10173450\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000078}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450\charrsid14119459 *tablep, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16132195\charrsid16132195 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parResultsMaster" }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d00610073007400650072000000000016000fd000bc091a00005400fa}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d00610073007400650072000000000016000fd000bc091a00005400fa20}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid16132195\charrsid7880574 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid16132195\charrsid16132195 * presp,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450\charrsid14119459 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789515\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450\charrsid14119459 int vulnerable}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10173450\charrsid12658900 \cell }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450 SidesParBin}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid10173450\charrsid12658900 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789515\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid10173450\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000072}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450\charrsid14119459 *tablep, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450\charrsid14119459 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16132195\charrsid16132195 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parResultsMaster" }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000001e000ff200ffde0100443000f9}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000001e000ff200ffde0100443000f964}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid16132195\charrsid7880574 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid16132195\charrsid16132195 * presp,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450\charrsid14119459 \par int dealer, @@ -2328,19 +2339,19 @@ egligible. Therefore, use SolveAllBoards! \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid15800872\charrsid15800872 ConvertToDealerTextFormat}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid10173450 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789515\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid16132195\charrsid15800872 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000c323000f5e0000c101003772005c}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000c323000f5e0000c101003772005c00}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid16132195\charrsid7880574 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid16132195\charrsid15800872 *pres,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid10173450\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid10173450 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1789515\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15800872 char *resp}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10173450\charrsid12658900 \cell }{ \rtlch\fcs1 \af2 \ltrch\fcs0 \b\f31506\cf1\insrsid15800872\charrsid15800872 ConvertToSidesTextFormat}{\rtlch\fcs1 \af2 \ltrch\fcs0 \b\f31506\cf1\insrsid15800872 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15800872\charrsid15800872 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parResultsMaster" }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d006100730074006500720000000037290044140004966020453100ec}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d006100730074006500720000000037290044140004966020453100ec00}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid15800872\charrsid7880574 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid15800872\charrsid15800872 *pres,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15800872 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15800872\charrsid15800872 struct }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid4877901\charrsid7880574 HYPERLINK \\l "parTextResults" }{ \rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\lang1033\langfe1031\langfenp1031\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000700061007200540065007800740052006500730075006c0074007300000001492a0000fd00001c00006b6d00fe}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid15800872\charrsid7880574 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000700061007200540065007800740052006500730075006c0074007300000001492a0000fd00001c00006b6d00fe00}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \cs26\f2\fs18\ul\cf19\insrsid15800872\charrsid7880574 parTextResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid15800872\charrsid15800872 *resp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid15800872\charrsid15800872 \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid10173450\charrsid11956256 \trowd \irow3\irowband3\lastrow \ltrrow @@ -2351,7 +2362,7 @@ parTextResults}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\a \f37\cf1\insrsid13072585 Par, DealerPar, SidesPar, DealerParBin and SidesParBin }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12658900 calculate the par score and par contracts of a given double-dummy solution matrix }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid12658900\charrsid12658900 \'93*tablep\'94}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12658900 which would often be the solution of a call to }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid12658900\charrsid12658900 REF CalcDDtable \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid12658900 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000430061006c006300440044007400610062006c0065000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 CalcDDtable}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000430061006c006300440044007400610062006c006500000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 CalcDDtable}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12658900 .}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10290420 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid10290420 Since the input is a table, there is no PBN and non-PBN version}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid13840817 of these}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid10290420 function}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid13840817 s}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid10290420 .}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12854747 @@ -2363,15 +2374,15 @@ Since the input is a table, there is no PBN and non-PBN version}{\rtlch\fcs1 \af \par \par The }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid12658900\charrsid12658900 \'93vulnerable\'94}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12658900 parameter is given using }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid12658900\charrsid12658900 REF vulnerable \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid12658900 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b000000760075006c006e0065007200610062006c0065000000}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Vulnerable}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b000000760075006c006e0065007200610062006c006500000000}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Vulnerable}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid12658900 encoding. \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid14574742 -\par The Par() function uses knowledge of the vulnerability, but not of the dealer. It attempts to return results for both declaring sides. These results can be different i -n some rare cases, for instance when both sides can make 1NT due to the opening lead. +\par The Par() function uses knowledge of the vulnerability, but not of the dealer. It attempts to return results for both declaring sides. These results can be different in + some rare cases, for instance when both sides can make 1NT due to the opening lead. \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2505631 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2838088 The DealerPar}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid14574742 () function also uses knowledge of the }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid14574742\charrsid14574742 \'93 dealer\'94}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid14574742 using }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid14574742\charrsid14574742 REF hand \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\ul\cf19\insrsid16386593\charrsid14574742 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e0064000000}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect +\f37\ul\cf19\insrsid16386593\charrsid14574742 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b020000000800000005000000680061006e006400000058}}}{\fldrslt {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 Hand}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid14574742 encoding. The argument is that in all practical cases, the dealer is known when the vulnerability is known. Therefore all results returned will be for the same side. \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9716036 @@ -2396,9 +2407,9 @@ the par results are given in the same format as for DealerPar(). \ltrch\fcs0 \f37\insrsid14574742 \'94. }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 North and South as declarer make 2 or 3 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 s}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 pades and }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 h}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 earts contracts, 2 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 spades and 2 h }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 earts with an overtrick.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 This is from the NS view}{\rtlch\fcs1 -\af1 \ltrch\fcs0 \f37\insrsid14574742 , shown by \'93NS:\'94 meaning that NS made the first bid}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 . }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 Note -that this information is actually not enough, as it may be that N and S can make a given contract and that either E or W can bid this same contract (for instance 1NT) before N but not before S. So in the rare cases where the NS and EW sides are not the s -ame, the results will take some manual inspection. +\af1 \ltrch\fcs0 \f37\insrsid14574742 , shown by \'93NS:\'94 meaning that NS made the first bid}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 . }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 +Note that this information is actually not enough, as it may be that N and S can make a given contract and that either E or W can bid this same contract (for instance 1NT) before N but not before S. So +in the rare cases where the NS and EW sides are not the same, the results will take some manual inspection. \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1 \ltrch\fcs0 \f3\lang1033\langfe1053\langnp1033\langfenp1053\insrsid14574742 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \ql \fi-360\li360\ri0\nowidctlpar\wrapdefault\faauto\ls3\rin0\lin360\itap0\pararsid14574742 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 \'93}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid9515749 NS:NS 23S,N 23H}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 \'94}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 : Only North makes 3 hearts. @@ -2406,23 +2417,23 @@ ame, the results will take some manual inspection. \rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742 \'94: This time the result is the same when EW open the bidding.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid14574742\charrsid14574742 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3547548 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid14574742 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid2369496 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2369496 DealerPar() and SidesPar() give }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496 each p}{\rtlch\fcs1 \af1 -\ltrch\fcs0 \f37\insrsid2369496\charrsid14171083 ar }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496 contract}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496\charrsid14171083 as a }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496 separate text stri -ng: +\ltrch\fcs0 \f37\insrsid2369496\charrsid14171083 ar }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496 contract}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496\charrsid14171083 as a }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496 +separate text string: \par \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1 \ltrch\fcs0 \f3\lang1033\langfe1053\langnp1033\langfenp1053\insrsid2369496 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ltrpar \qj \fi-360\li360\ri0\nowidctlpar\wrapdefault\faauto\ls3\rin0\lin360\itap0\pararsid2369496 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2369496 \'934S*-EW-1\'94 means that E and W can both sacrifice in four spades doubled, going down one trick. \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1 \ltrch\fcs0 \f3\lang1033\langfe1053\langnp1033\langfenp1053\insrsid2369496 \loch\af3\dbch\af0\hich\f3 \'b7\tab}\'933N-EW\'94 means that E and W can both make exactly 3NT. -\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1 \ltrch\fcs0 \f3\lang1033\langfe1053\langnp1033\langfenp1053\insrsid2369496 \loch\af3\dbch\af0\hich\f3 \'b7\tab}\'934N-W+1\'94 means that only West can make 4NT +1. In the last example, 5NT just making can als -o be considered a par contract, but North-South don\rquote +\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1 \ltrch\fcs0 \f3\lang1033\langfe1053\langnp1033\langfenp1053\insrsid2369496 \loch\af3\dbch\af0\hich\f3 \'b7\tab}\'934N-W+1\'94 + means that only West can make 4NT +1. In the last example, 5NT just making can also be considered a par contract, but North-South don\rquote t have a profitable sacrifice against 4NT, so the par contract is shown in this way. If North-South did indeed have a profitable sacrifice, perhaps 5C*_NS-2, then par contract would have been shown as \'935N-W\'94. Par() would show \'934N-W+1\'94 as \'93W 45N\'94. \par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af1 \ltrch\fcs0 \f3\lang1033\langfe1053\langnp1033\langfenp1053\insrsid2369496 \loch\af3\dbch\af0\hich\f3 \'b7\tab}SidesPar() give the par contract text strings as described above for each side. \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3547548 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2369496 \par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid11099036 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid269493 DealerParBin and SidesParBin are similar to DealerPar }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9000425 -and}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid269493 SidesPar}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9000425 , respectively}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid269493 , except that both functions -give the output results in binary using the }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid269493\charrsid13703926 \'93}{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid7880574 HYPERLINK \\ -l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid7880574 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000bb3100000000000001000000c1fd}}}{\fldrslt {\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 +and}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid269493 SidesPar}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9000425 , respectively}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid269493 +, except that both functions give the output results in binary using the }{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid269493\charrsid13703926 \'93}{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid4877901\charrsid7880574 + HYPERLINK \\l "parResultsMaster" }{\rtlch\fcs1 \af1 \ltrch\fcs0 \cf19\insrsid2101911\charrsid7880574 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000001100000070006100720052006500730075006c00740073004d0061007300740065007200000000bb3100000000000001000000c1fd68}}}{\fldrslt {\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \cs26\b\f2\fs22\ul\cf19\insrsid269493\charrsid7880574 parResultsMaster}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid269493\charrsid13703926 \'94}{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid269493 }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f31506\cf1\insrsid269493\charrsid269493 structure}{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid269493 .}{\rtlch\fcs1 \af2\afs22 \ltrch\fcs0 \b\f2\fs22\cf1\insrsid9000425 }{ \rtlch\fcs1 \af2 \ltrch\fcs0 \f31506\cf1\insrsid5186751 This simplifies the writing of a conversion program to }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f31506\cf1\insrsid14092583 get }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f31506\cf1\insrsid5186751 @@ -2450,30 +2461,30 @@ s in parResultsMaster are used when calling }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f37\ \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid7931676\charrsid6557970 {\*\bkmkstart CalcPar}CalcPar}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid7931676\charrsid6557970 {\*\bkmkend CalcPar} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8538722\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid6901705 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705\charrsid6901705 REF ddTableDeal \\h }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid6901705 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c000000}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c000000640064005400610062006c0065004400650061006c00000058}}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid6901705 \\* MERGEFORMAT }}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDeal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid8538722\charrsid6901705 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722 dl}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid14119459 \par int vulnerable, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000022}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid8538722 * t}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid14119459 p, \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid4071901\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid14119459 REF parResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c0074007300000074}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid4071901 *presp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6058144\charrsid4071901 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\yts18 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid7931676\charrsid7931676 {\*\bkmkstart CalcParPBN}CalcParPBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid7931676 {\*\bkmkend CalcParPBN} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid8538722\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid14119459 REF ddTableDealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c0065004400650061006c00500042004e00000063}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableDealPBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid8538722\charrsid14119459 }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722 dl}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid14119459 , \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid14119459 REF ddTableResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000f000000640064005400610062006c00650052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 ddTableResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid8538722 * t}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid8538722\charrsid14119459 p, \par int vulnerable, \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid8538722\charrsid14119459 REF parResults \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c00740073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000070006100720052006500730075006c0074007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 parResults}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid8538722\charrsid14119459 *presp}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid8538722 \par }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid6058144 \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid4071901\yts18 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid6058144\charrsid7931676 \cell }\pard \ltrpar @@ -2504,26 +2515,26 @@ s in parResultsMaster are used when calling }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f37\ \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid2849436 PlayBin}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid2849436 {\*\bkmkend TracePlayBin} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid2849436\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid14119459 REF deal \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000050000006400650061006c00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 deal}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid14119459 dl, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid14119459 REF playTraceBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTraceBin}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTraceBin}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid14119459 play,}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid14119459 REF solvedPlay \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c00610079000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c0061007900000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 \par int thrId}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid2849436\charrsid2849436 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid3347855\yts18 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid2449260 {\*\bkmkstart TracePlayPBN}Analyse}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid2849436 PlayPBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid2849436\charrsid2849436 {\*\bkmkend TracePlayPBN} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid2849436\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid14119459 REF dealPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { +08d0c9ea79f9bace118c8200aa004ba90b0200000008000000080000006400650061006c00500042004e00000014}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 dealPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { \rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid14119459 dlPBN, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid14119459 REF playTracePBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracePBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000d00000070006c006100790054007200610063006500500042004e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracePBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid14119459 playPBN, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid2849436\charrsid14119459 REF solvedPlay \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c00610079000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000073006f006c0076006500640050006c0061007900000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlay}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid2849436\charrsid14119459 \par int thrId}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\cf1\insrsid2849436\charrsid2849436 \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2849436 \trowd \irow0\irowband0\lastrow \ltrrow @@ -2536,7 +2547,7 @@ s in parResultsMaster are used when calling }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f37\ \par }\pard\plain \ltrpar\s3\qj \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel2\rin0\lin0\itap0\pararsid2849436 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2849436\charrsid2849436 The }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2849436 function returns a list of double-dummy values after each specific played card in a hand. Since the function uses }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid2849436\charrsid2849436 REF SolveBoard \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid2849436 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f006100720064000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000b00000053006f006c007600650042006f00610072006400000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 SolveBoard}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { \rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2849436 , the same comments apply concerning the thread number \'93thrId\'94 and the transposition tables.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2849436\charrsid2849436 \par }\pard\plain \ltrpar\s23\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2849436 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1031\langfe1033\cgrid\langnp1031\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid2849436 @@ -2561,26 +2572,26 @@ s viewpoint (he is the one to the right of the opening leader). There is one mo \b\f37\insrsid2849436 {\*\bkmkend TraceAllPlaysBin} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5979431\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid14119459 REF boards \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f0061007200640073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000700000062006f006100720064007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boards}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *bop, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid14119459 REF playTracesBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300420069006e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesBin}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesBin}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *plp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid14119459 REF solvedPlays \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c006100790073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c006100790073000000cb}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 \par int chunkSize}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\insrsid5979431\charrsid2849436 \cell }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid1190356\yts18 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\lang1033\langfe1031\langfenp1031\insrsid2449260 {\*\bkmkstart TraceAllPlaysPBN}Analyse}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\lang1033\langfe1031\langfenp1031\insrsid2849436\charrsid2849436 AllPlaysPBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\insrsid2849436\charrsid2849436 {\*\bkmkend TraceAllPlaysPBN} \par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid5979431\yts18 {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid14119459 REF boardsPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj { -\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *bopPBN, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000a00000062006f006100720064007300500042004e000000af}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 boardsPBN}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj +{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *bopPBN, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid14119459 REF playTracesPBN \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300500042004e000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesPBN}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e00000070006c0061007900540072006100630065007300500042004e000000f0}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 playTracesPBN}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *plpPBN, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 \par struct }{\field{\*\fldinst {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid5979431\charrsid14119459 REF solvedPlays \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid14119459 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c006100790073000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000c00000073006f006c0076006500640050006c00610079007300000000}}}{\fldrslt {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\ul\cf19\insrsid16386593\charrsid16386593 solvedPlays}}}\sectd \ltrsect \linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid5979431\charrsid14119459 *solvedp, }{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\insrsid5979431\charrsid14119459 \par int chunkSize}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid2849436 \cell }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid2849436 \trowd \irow0\irowband0\lastrow \ltrrow @@ -2596,7 +2607,7 @@ s viewpoint (he is the one to the right of the opening leader). There is one mo \f37\cf1\insrsid10376323 AllPlays* functions invoke SolveBoard several times in parallel in multiple threads, rather than sequentially in a single thread. This increases execution speed. Up to 20 boards are permitted per call. \par \par Concerning chunkSize, exactly the same remarks apply as with }{\field{\*\fldinst {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\ul\cf19\insrsid10376323\charrsid10376323 REF SolveAllChunksBin \\h \\* MERGEFORMAT }{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\ul\cf19\insrsid16386593\charrsid10376323 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000053006f006c007600650041006c006c004300680075006e006b007300420069006e000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 +\f37\ul\cf19\insrsid16386593\charrsid10376323 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000001200000053006f006c007600650041006c006c004300680075006e006b007300420069006e00000000}}}{\fldrslt {\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\ul\cf19\insrsid16386593\charrsid16386593 SolveAllChunksBin}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid10376323 . \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7759131 \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9000425 \page }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid7759131 @@ -2616,20 +2627,18 @@ s viewpoint (he is the one to the right of the opening leader). There is one mo \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid11099036 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid9000425\charrsid11099036 \par }\pard\plain \ltrpar\s1\qj \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0\pararsid11099036 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\insrsid7759131\charrsid7759131 DDS has a preferred memory size per thread, currently about 95 MB, and a maximum memory size per thread, currently abo -ut 160 MB. It will also not use more than 70% of the available memory. It will not create more threads than there are processor cores, as this will only require more memory and will not improve performance. Within these constraints, DDS auto-configures - the number of threads. +\f37\insrsid7759131\charrsid7759131 DDS has a preferred memory size per thread, currently about 95 MB, and a maximum memory size per thread, currently about 160 MB. It will also not use more than 70% of the available memory. It will not create more thr +eads than there are processor cores, as this will only require more memory and will not improve performance. Within these constraints, DDS auto-configures the number of threads. \par \par DDS first detects the number of cores and the available memory. If this doesn't work for some reason, it defaults to 1 thread which is allowed to use the maximum memory size per thread. \par -\par DDS then checks whether a number of threads -equal to the number of cores will fit within the available memory when each thread may use the maximum memory per thread. If there is not enough memory for this, DDS scales back its ambition. If there is enough memory for the preferred memory size, then - DDS still creates a number of threads equal to the number of cores. If there is not even enough memory for this, DDS scales back the number of threads to fit within the memory. +\par DDS then checks whether a number of threads equal to the number of cores will fit within the available memory when each thread may use the maxim +um memory per thread. If there is not enough memory for this, DDS scales back its ambition. If there is enough memory for the preferred memory size, then DDS still creates a number of threads equal to the number of cores. If there is not even enough me +mory for this, DDS scales back the number of threads to fit within the memory. \par \par }\pard \ltrpar\s1\qj \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0\pararsid15088206 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid7759131\charrsid7759131 -The user can suggest to DDS a number of threads by calling SetMaxThreads. DD -S will never create more threads than requested, but it may create fewer if there is not enough memory, calculated as above. Calling SetMaxThreads is optional, not mandatory. DDS will always select a suitab}{\rtlch\fcs1 \af1 \ltrch\fcs0 -\f37\insrsid15088206 le number of threads on its own. +The user can suggest to DDS a number of threads by calling SetMaxThreads. DDS will never create more threads than requested, but it may create fewer if there is not enough memo +ry, calculated as above. Calling SetMaxThreads is optional, not mandatory. DDS will always select a suitab}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid15088206 le number of threads on its own. \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid15088206 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid15088206 \par }\pard\plain \ltrpar\s1\qj \li0\ri0\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0\pararsid15088206 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid15088206\charrsid15088206 It may be possible, }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid15088206 @@ -2638,9 +2647,8 @@ especially on non-Windows systems, to call SetMaxThreads() actively, even though \par SetMaxThreads can be called multiple times even within the same session. So it is theoretically possible to change the number of threads dynamically.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\insrsid3240706 \par \par }{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\cf1\insrsid3240706\charrsid3240706 It is possible to ask DDS to give up its dynamically allocated memory by calling }{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \b\f37\cf1\insrsid3240706\charrsid3240706 FreeMemory}{\rtlch\fcs1 -\ab\af1 \ltrch\fcs0 \f37\cf1\insrsid3240706\charrsid3240706 -. This could be useful for instance if there is a long pause where DDS is not used within a session. DDS will free its memory when the DLL detaches from the user program, so there is no need for the user to call this function before detaching.}{ -\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\cf1\insrsid7483127 +\ab\af1 \ltrch\fcs0 \f37\cf1\insrsid3240706\charrsid3240706 . This could be useful for instance if there is a long pause where DDS is not used within a sess +ion. DDS will free its memory when the DLL detaches from the user program, so there is no need for the user to call this function before detaching.}{\rtlch\fcs1 \ab\af1 \ltrch\fcs0 \f37\cf1\insrsid7483127 \par \par \ltrrow}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0\pararsid7483127\yts18 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f37\lang1033\langfe1031\langfenp1031\insrsid7483127 {\*\bkmkstart GetDDSInfo}GetDDSInfo}{\rtlch\fcs1 \af2\afs18 \ltrch\fcs0 \f2\fs18\cf1\lang1033\langfe1031\langfenp1031\insrsid7483127\charrsid14119459 {\*\bkmkend GetDDSInfo} }{\rtlch\fcs1 \af1 @@ -2848,8 +2856,8 @@ A played card is not held by the right player.}{\rtlch\fcs1 \ab\af1\afs22 \ltrch \clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth5185\clshdrawnil \cellx9438\row \ltrrow}\pard\plain \ltrpar \s1\qc \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel0\rin0\lin0\pararsid14119459 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid3937665 -103\cell }\pard \ltrpar\s1\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel0\rin0\lin0\pararsid14119459 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid3937665 RETURN_THREAD_WAIT\cell -}\pard \ltrpar\s1\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel0\rin0\lin0\pararsid5862788 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5862788 -Returned from multi-threading functions when something went wrong while waiting for all threads to complete.}{\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5862788\charrsid5862788 \cell }\pard\plain \ltrpar +}\pard \ltrpar\s1\ql \li0\ri0\keepn\nowidctlpar\intbl\wrapdefault\faauto\outlinelevel0\rin0\lin0\pararsid5862788 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5862788 Returned from multi-threading +functions when something went wrong while waiting for all threads to complete.}{\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \f37\fs22\cf1\insrsid5862788\charrsid5862788 \cell }\pard\plain \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af1\afs24\alang1025 \ltrch\fcs0 \f1\fs24\lang1033\langfe1053\cgrid\langnp1033\langfenp1053 {\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid3937665\charrsid14119459 \trowd \irow23\irowband23\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid5054625\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 @@ -2943,7 +2951,9 @@ AnalyseAllPlaysPBN}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9572146 .}{\rtl \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid2637590 Rev X, 2014-11-16}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13530431\charrsid13530431 \tab }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13530431 Extended maximum number of tables when calling CalcAllTables}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid13530431\charrsid13530431 .}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid9572146 \tab \par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid16720464 -\par Rev Y, 2016-01-01\tab Update to v2.8.3.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid16720464\charrsid16724586 +\par Rev Y, 2016-01-01\tab Update to v2.8.3. +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455 +\par Rez Z, 2016-03-20\tab Update to v2.8.4.}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f37\cf1\insrsid11030455\charrsid16724586 \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 @@ -3062,18 +3072,18 @@ fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e500000000000000000000000010ca -de5ce144d1010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff02000000000000000000000000000000000000000000000010cade5ce144d101 -10cade5ce144d101000000000000000000000000dc00c2004c004800da004b003200c300d30055004b00d400d200c100d600cc00ce00db003000c500530051003d003d000000000000000000000000000000000032000101ffffffffffffffff03000000000000000000000000000000000000000000000010cade5ce144 -d10110cade5ce144d1010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e500000000000000000000000010ba +4ba28882d1010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff02000000000000000000000000000000000000000000000000934ba28882d101 +10ba4ba28882d101000000000000000000000000310033004b004e00c00041004a004a0044004500ce004300c600d800cd0041004800c800c6003000df0041003d003d000000000000000000000000000000000032000101ffffffffffffffff03000000000000000000000000000000000000000000000000934ba28882 +d10110ba4ba28882d1010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 00000000000000000000000000000000fc00000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f75726365732053656c65637465645374796c653d225c415041536978746845646974696f6e4f66666963654f6e6c696e652e78736c22205374796c654e616d653d22415041222056657273696f6e3d22362220786d6c6e733a 623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e74 -2f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b45384337 -323246322d323341372d343243442d423443412d3144414342424236413534397d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c +2f323030362f6269626c696f677261706879223e3c2f623a536f75726365733e000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b38303844 +443236442d343930322d344230432d383239422d3842343031453839394146437d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c 64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 diff --git a/include/dll.h b/include/dll.h index e7ba49df..f94da845 100644 --- a/include/dll.h +++ b/include/dll.h @@ -26,8 +26,8 @@ #define EXTERN_C #endif -/* Version 2.8.2. Allowing for 2 digit minor versions */ -#define DDS_VERSION 20803 +/* Version 2.8.4. Allowing for 2 digit minor versions */ +#define DDS_VERSION 20804 #define DDS_HANDS 4 diff --git a/src/Init.cpp b/src/Init.cpp index 660eda52..a102c2d6 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -690,7 +690,7 @@ void FreeThreadMem() { for (int k = 0; k < noOfThreads; k++) { - localVar[k].transTable.ResetMemory(); + localVar[k].transTable.ResetMemory(FREE_THREAD_MEM); localVar[k].memUsed = localVar[k].transTable.MemoryInUse() + ThreadMemoryUsed(); } diff --git a/src/Makefiles/Makefile_Visual b/src/Makefiles/Makefile_Visual index 6b03ae08..8ee22fb9 100644 --- a/src/Makefiles/Makefile_Visual +++ b/src/Makefiles/Makefile_Visual @@ -32,7 +32,7 @@ WARN_FLAGS = \ /wd4996 \ /WX -# Here you can turn on warnings. +# Here you can turn on warnings and add /DSMALL_MEMORY_OPTION. # CC_FULL_FLAGS = $(CC_FLAGS) CC_FULL_FLAGS = $(CC_FLAGS) $(WARN_FLAGS) diff --git a/src/Makefiles/Makefile_cygwin b/src/Makefiles/Makefile_cygwin index 1ff71bb7..e538a76b 100644 --- a/src/Makefiles/Makefile_cygwin +++ b/src/Makefiles/Makefile_cygwin @@ -55,7 +55,7 @@ WARN_FLAGS = \ -Wno-unknown-pragmas \ -Wno-long-long -# Here you can turn on warnings. +# Here you can turn on warnings and add -DSMALL_MEMORY_OPTION # CC_FULL_FLAGS = $(CC_FLAGS) CC_FULL_FLAGS = $(CC_FLAGS) $(WARN_FLAGS) diff --git a/src/Makefiles/Makefile_mingw b/src/Makefiles/Makefile_mingw index cd1b0ee2..c81d89c1 100644 --- a/src/Makefiles/Makefile_mingw +++ b/src/Makefiles/Makefile_mingw @@ -57,7 +57,7 @@ WARN_FLAGS = \ -Wno-long-long \ -Wno-format -# Here you can turn on warnings. +# Here you can turn on warnings and add -DSMALL_MEMORY_OPTION # CC_FULL_FLAGS = $(CC_FLAGS) CC_FULL_FLAGS = $(CC_FLAGS) $(WARN_FLAGS) diff --git a/src/Makefiles/Makefile_mingw_tdc32 b/src/Makefiles/Makefile_mingw_tdc32 new file mode 100644 index 00000000..8623138b --- /dev/null +++ b/src/Makefiles/Makefile_mingw_tdc32 @@ -0,0 +1,167 @@ +# This is the DDS Makefile for Windows and the tdm-gcc compiler: +# http://tdm-gcc.tdragon.net/ +# It does assume a Unix-like setup for some commands, +# but if you only want to call "make" with the default target, +# you should be OK. +# Changes relative to the MinGW Makefile contributed by Sergio Polini. + +# If you want to compile a single-threaded version, use +# make DDS_THREADS=none + +# If your exact compiler name is not given here, change it. +CC = x86_64-w64-mingw32-g++ + +# Use this one to get Windows multi-threading +# CC_FLAGS = -O3 -flto -mtune=generic +# Use this one to get OpenMP multi-threading +CC_FLAGS = -O3 -flto -fopenmp -mtune=generic -m32 + +LD_FLAGS = \ + -Wl,--subsystem,windows \ + -Wl,--output-def,$(DLLBASE).def \ + -Wl,--dynamicbase \ + -Wl,--nxcompat \ + -Wl,--no-seh \ + -Wl,--enable-stdcall-fixup + + +# These flags are not turned on be default, but DDS should pass them. +# Turn them on below. +WARN_FLAGS = \ + -Wshadow \ + -Wsign-conversion \ + -pedantic -Wall -Wextra \ + -Wcast-align -Wcast-qual \ + -Wctor-dtor-privacy \ + -Wdisabled-optimization \ + -Winit-self \ + -Wlogical-op \ + -Wmissing-declarations \ + -Wmissing-include-dirs \ + -Wnoexcept \ + -Wold-style-cast \ + -Woverloaded-virtual \ + -Wredundant-decls \ + -Wsign-promo \ + -Wstrict-null-sentinel \ + -Wstrict-overflow=1 \ + -Wswitch-default -Wundef \ + -Werror \ + -Wno-unused \ + -Wno-unknown-pragmas \ + -Wno-long-long \ + -Wno-format + +# Here you can turn on warnings. +# CC_FULL_FLAGS = $(CC_FLAGS) +CC_FULL_FLAGS = $(CC_FLAGS) $(WARN_FLAGS) + +LIB_FLAGS = -mdll -m32 + +DLLBASE = dds +DLL = $(DLLBASE).dll +EXPORTER = Exports.def + +VFILE = ddsres +WINDRES_FLAG = -F pe-i386 + +SOURCE_FILES = \ + dds.cpp \ + ABsearch.cpp \ + ABstats.cpp \ + CalcTables.cpp \ + DealerPar.cpp \ + Init.cpp \ + LaterTricks.cpp \ + Moves.cpp \ + Par.cpp \ + PlayAnalyser.cpp \ + PBN.cpp \ + QuickTricks.cpp \ + Scheduler.cpp \ + SolveBoard.cpp \ + SolverIF.cpp \ + Stats.cpp \ + Timer.cpp \ + TransTable.cpp + +O_FILES = $(subst .cpp,.o,$(SOURCE_FILES)) $(VFILE).o + +ifeq ($(DDS_THREADS),none) +DDS_THR = -DDDS_THREADS_SINGLE +else +DDS_THR = +endif + + +mingw: $(O_FILES) + $(CC) $(LIB_FLAGS) $(CC_FULL_FLAGS) $(O_FILES) $(LD_FLAGS) $(EXPORTER) -o $(DLL) + +%.o: %.cpp + $(CC) $(CC_FULL_FLAGS) $(DDS_THR) -c $< + +$(DLLBASE).res: $(DLLBASE).rc + windres $(DLLBASE).rc $(DLLBASE).res + +$(VFILE).o: $(DLLBASE).rc + windres $(WINDRES_FLAG) $(DLLBASE).rc $(VFILE).o + +depend: + makedepend -Y -- $(CC_FLAGS) -- $(SOURCE_FILES) + +clean: + rm -f $(O_FILES) $(DLL) $(DLLBASE).{lib,def,exp,res} + +install: + test -d ../test || mkdir ../test + test -d ../examples || mkdir ../examples + cp $(DLL) $(DLLBASE).def ../test + cp $(DLL) $(DLLBASE).def ../examples + + +# DO NOT DELETE + +dds.o: ../include/dll.h dds.h debug.h ../include/portab.h TransTable.h +dds.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h Init.h +ABsearch.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +ABsearch.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h threadmem.h +ABsearch.o: QuickTricks.h LaterTricks.h ABsearch.h +ABstats.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +ABstats.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +CalcTables.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +CalcTables.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h SolveBoard.h +CalcTables.o: PBN.h +DealerPar.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +DealerPar.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +Init.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Init.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h threadmem.h Init.h +Init.o: ABsearch.h +LaterTricks.o: dds.h debug.h ../include/portab.h TransTable.h +LaterTricks.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h Scheduler.h +LaterTricks.o: threadmem.h LaterTricks.h +Moves.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Moves.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h ABsearch.h +Par.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Par.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +PlayAnalyser.o: dds.h debug.h ../include/portab.h TransTable.h +PlayAnalyser.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h +PlayAnalyser.o: Scheduler.h threadmem.h SolverIF.h PBN.h +PBN.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +PBN.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h PBN.h +QuickTricks.o: dds.h debug.h ../include/portab.h TransTable.h +QuickTricks.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h Scheduler.h +QuickTricks.o: threadmem.h QuickTricks.h +Scheduler.o: Scheduler.h dds.h debug.h ../include/portab.h TransTable.h +Scheduler.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h +SolveBoard.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +SolveBoard.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h threadmem.h +SolveBoard.o: SolverIF.h SolveBoard.h PBN.h +SolverIF.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +SolverIF.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h Init.h threadmem.h +SolverIF.o: ABsearch.h SolverIF.h +Stats.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Stats.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +Timer.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Timer.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +TransTable.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +TransTable.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h diff --git a/src/Makefiles/Makefile_mingw_tdc64 b/src/Makefiles/Makefile_mingw_tdc64 new file mode 100644 index 00000000..0dc5510d --- /dev/null +++ b/src/Makefiles/Makefile_mingw_tdc64 @@ -0,0 +1,167 @@ +# This is the DDS Makefile for Windows and the tdm-gcc compiler: +# http://tdm-gcc.tdragon.net/ +# It does assume a Unix-like setup for some commands, +# but if you only want to call "make" with the default target, +# you should be OK. +# Changes relative to the MinGW Makefile contributed by Sergio Polini. + +# If you want to compile a single-threaded version, use +# make DDS_THREADS=none + +# If your exact compiler name is not given here, change it. +CC = x86_64-w64-mingw32-g++ + +# Use this one to get Windows multi-threading +# CC_FLAGS = -O3 -flto -mtune=generic +# Use this one to get OpenMP multi-threading +CC_FLAGS = -O3 -flto -fopenmp -mtune=generic + +LD_FLAGS = \ + -Wl,--subsystem,windows \ + -Wl,--output-def,$(DLLBASE).def \ + -Wl,--dynamicbase \ + -Wl,--nxcompat \ + -Wl,--no-seh \ + -Wl,--enable-stdcall-fixup + + +# These flags are not turned on be default, but DDS should pass them. +# Turn them on below. +WARN_FLAGS = \ + -Wshadow \ + -Wsign-conversion \ + -pedantic -Wall -Wextra \ + -Wcast-align -Wcast-qual \ + -Wctor-dtor-privacy \ + -Wdisabled-optimization \ + -Winit-self \ + -Wlogical-op \ + -Wmissing-declarations \ + -Wmissing-include-dirs \ + -Wnoexcept \ + -Wold-style-cast \ + -Woverloaded-virtual \ + -Wredundant-decls \ + -Wsign-promo \ + -Wstrict-null-sentinel \ + -Wstrict-overflow=1 \ + -Wswitch-default -Wundef \ + -Werror \ + -Wno-unused \ + -Wno-unknown-pragmas \ + -Wno-long-long \ + -Wno-format + +# Here you can turn on warnings. +# CC_FULL_FLAGS = $(CC_FLAGS) +CC_FULL_FLAGS = $(CC_FLAGS) $(WARN_FLAGS) + +LIB_FLAGS = -mdll + +DLLBASE = dds +DLL = $(DLLBASE).dll +EXPORTER = Exports.def + +VFILE = ddsres +WINDRES_FLAG = -F pe-x86-64 + +SOURCE_FILES = \ + dds.cpp \ + ABsearch.cpp \ + ABstats.cpp \ + CalcTables.cpp \ + DealerPar.cpp \ + Init.cpp \ + LaterTricks.cpp \ + Moves.cpp \ + Par.cpp \ + PlayAnalyser.cpp \ + PBN.cpp \ + QuickTricks.cpp \ + Scheduler.cpp \ + SolveBoard.cpp \ + SolverIF.cpp \ + Stats.cpp \ + Timer.cpp \ + TransTable.cpp + +O_FILES = $(subst .cpp,.o,$(SOURCE_FILES)) $(VFILE).o + +ifeq ($(DDS_THREADS),none) +DDS_THR = -DDDS_THREADS_SINGLE +else +DDS_THR = +endif + + +mingw: $(O_FILES) + $(CC) $(LIB_FLAGS) $(CC_FULL_FLAGS) $(O_FILES) $(LD_FLAGS) $(EXPORTER) -o $(DLL) + +%.o: %.cpp + $(CC) $(CC_FULL_FLAGS) $(DDS_THR) -c $< + +$(DLLBASE).res: $(DLLBASE).rc + windres $(DLLBASE).rc $(DLLBASE).res + +$(VFILE).o: $(DLLBASE).rc + windres $(WINDRES_FLAG) $(DLLBASE).rc $(VFILE).o + +depend: + makedepend -Y -- $(CC_FLAGS) -- $(SOURCE_FILES) + +clean: + rm -f $(O_FILES) $(DLL) $(DLLBASE).{lib,def,exp,res} + +install: + test -d ../test || mkdir ../test + test -d ../examples || mkdir ../examples + cp $(DLL) $(DLLBASE).def ../test + cp $(DLL) $(DLLBASE).def ../examples + + +# DO NOT DELETE + +dds.o: ../include/dll.h dds.h debug.h ../include/portab.h TransTable.h +dds.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h Init.h +ABsearch.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +ABsearch.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h threadmem.h +ABsearch.o: QuickTricks.h LaterTricks.h ABsearch.h +ABstats.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +ABstats.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +CalcTables.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +CalcTables.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h SolveBoard.h +CalcTables.o: PBN.h +DealerPar.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +DealerPar.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +Init.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Init.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h threadmem.h Init.h +Init.o: ABsearch.h +LaterTricks.o: dds.h debug.h ../include/portab.h TransTable.h +LaterTricks.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h Scheduler.h +LaterTricks.o: threadmem.h LaterTricks.h +Moves.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Moves.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h ABsearch.h +Par.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Par.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +PlayAnalyser.o: dds.h debug.h ../include/portab.h TransTable.h +PlayAnalyser.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h +PlayAnalyser.o: Scheduler.h threadmem.h SolverIF.h PBN.h +PBN.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +PBN.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h PBN.h +QuickTricks.o: dds.h debug.h ../include/portab.h TransTable.h +QuickTricks.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h Scheduler.h +QuickTricks.o: threadmem.h QuickTricks.h +Scheduler.o: Scheduler.h dds.h debug.h ../include/portab.h TransTable.h +Scheduler.o: ../include/dll.h Timer.h ABstats.h Moves.h Stats.h +SolveBoard.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +SolveBoard.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h threadmem.h +SolveBoard.o: SolverIF.h SolveBoard.h PBN.h +SolverIF.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +SolverIF.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h Init.h threadmem.h +SolverIF.o: ABsearch.h SolverIF.h +Stats.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Stats.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +Timer.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +Timer.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h +TransTable.o: dds.h debug.h ../include/portab.h TransTable.h ../include/dll.h +TransTable.o: Timer.h ABstats.h Moves.h Stats.h Scheduler.h diff --git a/src/SolveBoard.cpp b/src/SolveBoard.cpp index 807cbaf7..b62c4e00 100644 --- a/src/SolveBoard.cpp +++ b/src/SolveBoard.cpp @@ -640,7 +640,9 @@ int STDCALL SolveBoardPBN( } -int STDCALL SolveAllBoards(boardsPBN * bop, solvedBoards * solvedp) +int STDCALL SolveAllBoards( + boardsPBN * bop, + solvedBoards * solvedp) { boards bo; int k, i, res; @@ -675,34 +677,11 @@ int STDCALL SolveAllChunksPBN( solvedBoards * solvedp, int chunkSize) { - boards bo; - int k, i, res; - + // Historical aliases. Don't use -- they may go away. if (chunkSize < 1) return RETURN_CHUNK_SIZE; - bo.noOfBoards = bop->noOfBoards; - if (bo.noOfBoards > MAXNOOFBOARDS) - return RETURN_TOO_MANY_BOARDS; - - for (k = 0; k < bop->noOfBoards; k++) - { - bo.mode[k] = bop->mode[k]; - bo.solutions[k] = bop->solutions[k]; - bo.target[k] = bop->target[k]; - bo.deals[k].first = bop->deals[k].first; - bo.deals[k].trump = bop->deals[k].trump; - for (i = 0; i <= 2; i++) - { - bo.deals[k].currentTrickSuit[i] = bop->deals[k].currentTrickSuit[i]; - bo.deals[k].currentTrickRank[i] = bop->deals[k].currentTrickRank[i]; - } - if (ConvertFromPBN(bop->deals[k].remainCards, bo.deals[k].remainCards) != 1) - return RETURN_PBN_FAULT; - } - - res = SolveAllBoardsN(&bo, solvedp, chunkSize, 0); - return res; + return SolveAllBoards(bop, solvedp); } @@ -711,10 +690,11 @@ int STDCALL SolveAllChunks( solvedBoards * solvedp, int chunkSize) { + // Historical aliases. Don't use -- they may go away. + if (chunkSize < 1) + return RETURN_CHUNK_SIZE; - int res = SolveAllChunksPBN(bop, solvedp, chunkSize); - - return res; + return SolveAllBoards(bop, solvedp); } @@ -723,13 +703,11 @@ int STDCALL SolveAllChunksBin( solvedBoards * solvedp, int chunkSize) { - int res; - + // Historical aliases. Don't use -- they may go away. if (chunkSize < 1) return RETURN_CHUNK_SIZE; - res = SolveAllBoardsN(bop, solvedp, chunkSize, 0); - return res; + return SolveAllBoardsN(bop, solvedp, 1, 0); } diff --git a/src/SolverIF.cpp b/src/SolverIF.cpp index 0677e101..84a54ffe 100644 --- a/src/SolverIF.cpp +++ b/src/SolverIF.cpp @@ -205,7 +205,14 @@ int STDCALL SolveBoard( newTrump || (thrp->nodes > SIMILARMAXWINNODES))) { - thrp->transTable.ResetMemory(); + int reason = UNKNOWN_REASON; + if (thrp->nodes > SIMILARMAXWINNODES) + reason = TOO_MANY_NODES; + else if (newDeal && ! similarDeal) + reason = NEW_DEAL; + else if (newTrump) + reason = NEW_TRUMP; + thrp->transTable.ResetMemory(reason); } if (newDeal) diff --git a/src/Timer.cpp b/src/Timer.cpp index 50cb08b3..94312ff8 100644 --- a/src/Timer.cpp +++ b/src/Timer.cpp @@ -162,7 +162,7 @@ void Timer::OutputDetails() fprintf(fp, "%-14s %10d %10lld %10.2f %10.0f %10.2f\n", name[no], count[no], - userCum[no], + static_cast(userCum[no]), static_cast(userCum[no]) / static_cast(count[no]), 1000. * systCum[no], @@ -251,8 +251,8 @@ void Timer::PrintStats() { fprintf(fp, "%-14s %8lld %10lld %6.2f %4.1f %10.0f %6.2f %4.1f\n", TIMER_NAMES[0], - AB_ct, - AB_ucum, + static_cast(AB_ct), + static_cast(AB_ucum), AB_ucum / static_cast(AB_ct), 100. * AB_ucum / all_ucum, 1000. * AB_scum, @@ -263,8 +263,8 @@ void Timer::PrintStats() { fprintf(fp, "%-14s %8lld %10lld %6s %4s %10.0f %6s %4s\n", TIMER_NAMES[0], - AB_ct, - AB_ucum, + static_cast(AB_ct), + static_cast(AB_ucum), "-", "-", 1000. * AB_scum, @@ -292,8 +292,8 @@ void Timer::PrintStats() { fprintf(fp, "%-14s %8lld %10lld %6.2f %4.1f %10.0f %6.2f %4.1f\n", TIMER_NAMES[no], - ct[no], - ucum, + static_cast(ct[no]), + static_cast(ucum), ucum / static_cast(ct[no]), 100. * ucum / all_ucum, 1000. * scum, @@ -304,8 +304,8 @@ void Timer::PrintStats() { fprintf(fp, "%-14s %8lld %10lld %6s %4s %10.0f %6s %4s\n", TIMER_NAMES[no], - ct[no], - ucum, + static_cast(ct[no]), + static_cast(ucum), "-", "-", 1000. * scum, @@ -318,7 +318,7 @@ void Timer::PrintStats() fprintf(fp, "%-14s %8s %10lld %6s %4s %10.0f\n\n\n", "Sum", "", - all_ucum, + static_cast(all_ucum), "", "", 1000. * all_scum); @@ -355,7 +355,7 @@ void Timer::PrintStats() fprintf(fp, "%-14s %8d %10lld %6.2f %4.1f %10.0f %6.2f %4.1f\n", name[TIMER_AB + no], count[no], - AB_userCum[no], + static_cast(AB_userCum[no]), AB_userCum[no] / static_cast(count[no]), 100. * AB_userCum[no] / AB_ucum, 1000. * AB_systCum[no], @@ -367,8 +367,8 @@ void Timer::PrintStats() fprintf(fp, "-----------------------------------\n"); fprintf(fp, "%-14s %8lld %10lld %6s %4s %10.0f\n\n\n", "Sum", - AB_ct, - AB_ucum, + static_cast(AB_ct), + static_cast(AB_ucum), "", "", 1000. * AB_scum); diff --git a/src/TransTable.cpp b/src/TransTable.cpp index 3c97b9b7..10b20eba 100644 --- a/src/TransTable.cpp +++ b/src/TransTable.cpp @@ -23,6 +23,12 @@ const char * players[DDS_HANDS] = /* + This combines a small-memory and a full-memory version that + are implemented completely differently, but they share a common + interface. + + Explanation of full memory version: + There are some constants that only need to be calculated once. In fact they are the same for all instances of the object. In order to save time and memory, they share a @@ -92,8 +98,10 @@ const char * players[DDS_HANDS] = */ bool _constantsSet = false; -unsigned maskBytes[8192][DDS_SUITS][TT_BYTES]; int TTlowestRank[8192]; +#ifndef SMALL_MEMORY_OPTION + unsigned maskBytes[8192][DDS_SUITS][TT_BYTES]; +#endif TransTable::TransTable() @@ -104,6 +112,7 @@ TransTable::TransTable() TransTable::SetConstants(); } +#ifndef SMALL_MEMORY_OPTION poolp = nullptr; pagesDefault = NUM_PAGES_DEFAULT; pagesMaximum = NUM_PAGES_MAXIMUM; @@ -122,6 +131,7 @@ TransTable::TransTable() pageStats.numFrees = 0; pageStats.numHarvests = 0; pageStats.lastCurrent = 0; +#endif TTInUse = 0; @@ -141,17 +151,19 @@ TransTable::~TransTable() void TransTable::SetConstants() { - unsigned winMask[8192]; - unsigned int topBitRank = 1; - winMask[0] = 0; TTlowestRank[0] = 15; // Void +#ifndef SMALL_MEMORY_OPTION + unsigned winMask[8192]; + winMask[0] = 0; +#endif for (unsigned ind = 1; ind < 8192; ind++) { if (ind >= (topBitRank + topBitRank)) /* Next top bit */ topBitRank <<= 1; +#ifndef SMALL_MEMORY_OPTION // winMask is a growing list of 11's. In the end it will // have 26 bits, so 13 groups of two bits. It always // consists of all 11's, then all 00's. @@ -177,12 +189,50 @@ void TransTable::SetConstants() maskBytes[ind][3][1] = (winMask[ind] >> 10) & 0x000000ff; maskBytes[ind][3][2] = (winMask[ind] >> 2) & 0x000000ff; maskBytes[ind][3][3] = (winMask[ind] << 6) & 0x000000ff; +#endif TTlowestRank[ind] = TTlowestRank[ind ^ topBitRank] - 1; } } +#ifdef SMALL_MEMORY_OPTION +void TransTable::Init(int handLookup[][15]) +{ + unsigned int topBitRank = 1; + unsigned int topBitNo = 2; + + for (int s = 0; s < DDS_SUITS; s++) + { + aggp[0].aggrRanks[s] = 0; + aggp[0].winMask[s] = 0; + } + + for (unsigned int ind = 1; ind < 8192; ind++) + { + if (ind >= (topBitRank + topBitRank)) + { + /* Next top bit */ + topBitRank <<= 1; + topBitNo++; + } + aggp[ind] = aggp[ind ^ topBitRank]; + + for (int s = 0; s < 4; s++) + { + aggp[ind].aggrRanks[s] = + (aggp[ind].aggrRanks[s] >> 2) | + (handLookup[s][topBitNo] << 24); + + aggp[ind].winMask[s] = + (aggp[ind].winMask[s] >> 2) | (3 << 24); + } + } + + return; +} + +#else void TransTable::Init(int handLookup[][15]) { // This is very similar to SetConstants, except that it @@ -242,26 +292,305 @@ void TransTable::Init(int handLookup[][15]) ap->aggrBytes[3][3] = (ap->aggrRanks[3] << 6) & 0x000000ff; } } +#endif void TransTable::SetMemoryDefault(int megabytes) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(megabytes); +#else double blockMem = BLOCKS_PER_PAGE * sizeof(winBlockType) / static_cast(1024.); pagesDefault = static_cast((1024 * megabytes) / blockMem); +#endif } void TransTable::SetMemoryMaximum(int megabytes) { +#ifdef SMALL_MEMORY_OPTION + maxmem = static_cast(1000000 * megabytes); +#else double blockMem = BLOCKS_PER_PAGE * sizeof(winBlockType) / static_cast(1024.); pagesMaximum = static_cast((1024 * megabytes) / blockMem); +#endif } +///////////////////////////////////////////////////////////// +// // +// Small memory TT functions. // +// // +///////////////////////////////////////////////////////////// + +#ifdef SMALL_MEMORY_OPTION +void TransTable::MakeTT() +{ + int i; + + if (!TTInUse) + { + TTInUse = 1; + + summem = (WINIT + 1) * sizeof(winCardType) + + (NINIT + 1) * sizeof(nodeCardsType) + + (LSIZE + 1) * 52 * sizeof(posSearchTypeSmall); + wmem = static_cast((WSIZE + 1) * sizeof(winCardType)); + nmem = static_cast((NSIZE + 1) * sizeof(nodeCardsType)); + + maxIndex = static_cast( + (maxmem - summem) / ((WSIZE + 1) * sizeof(winCardType))); + + pw = static_cast(calloc(static_cast(maxIndex + 1), sizeof(struct winCardType *))); + if (pw == NULL) + exit(1); + + + pn = static_cast(calloc(static_cast(maxIndex + 1), sizeof(struct nodeCardsType *))); + if (pn == NULL) + exit(1); + + + for (int k = 1; k <= 13; k++) + for (int h = 0; h < DDS_HANDS; h++) + { + pl[k][h] = static_cast + (calloc(static_cast(maxIndex + 1), + sizeof(posSearchTypeSmall *))); + if (pl[k][h] == NULL) + exit(1); + } + + + for (i = 0; i <= maxIndex; i++) + { + if (pw[i]) + free(pw[i]); + pw[i] = NULL; + } + + for (i = 0; i <= maxIndex; i++) + { + if (pn[i]) + free(pn[i]); + pn[i] = NULL; + } + + for (int k = 1; k <= 13; k++) + { + for (int h = 0; h < DDS_HANDS; h++) + { + for (i = 0; i <= maxIndex; i++) + { + if (pl[k][h][i]) + free(pl[k][h][i]); + pl[k][h][i] = NULL; + } + } + } + + pw[0] = static_cast(calloc(WINIT + 1, sizeof(struct winCardType))); + if (pw[0] == NULL) + exit(1); + + pn[0] = static_cast(calloc(NINIT + 1, sizeof(struct nodeCardsType))); + if (pn[0] == NULL) + exit(1); + + for (int k = 1; k <= 13; k++) + for (int h = 0; h < DDS_HANDS; h++) + { + pl[k][h][0] = static_cast(calloc((LSIZE + 1), + sizeof(struct posSearchTypeSmall))); + if (pl[k][h][0] == NULL) + exit(1); + } + + aggp = static_cast(calloc(8192, sizeof(struct ttAggrType))); + if (aggp == NULL) + exit(1); + + InitTT(); + + for (int k = 1; k <= 13; k++) + aggrLenSets[k] = 0; +#if defined(DDS_TT_STATS) + fprintf(fp, "Report of generated PosSearch nodes per trick level.\n"); + fprintf(fp, "Trick level 13 is highest level with all 52 cards.\n"); + fprintf(fp, "---------------------------------------------------\n"); +#endif + statsResets.noOfResets = 0; + for (int k = 0; k <= 5; k++) + statsResets.aggrResets[k] = 0; + resetText[0] = "Unknown reason"; + resetText[1] = "Too many nodes"; + resetText[2] = "New deal"; + resetText[3] = "New trump"; + resetText[4] = "Memory exhausted"; + resetText[5] = "Free thread memory"; + } + + return; +} + + +void TransTable::Wipe() +{ + int m; + + for (m = 1; m <= wcount; m++) + { + if (pw[m]) + free(pw[m]); + pw[m] = NULL; + } + for (m = 1; m <= ncount; m++) + { + if (pn[m]) + free(pn[m]); + pn[m] = NULL; + } + + for (int k = 1; k <= 13; k++) + { + for (int h = 0; h < DDS_HANDS; h++) + { + for (m = 1; m <= lcount[k][h]; m++) + { + if (pl[k][h][m]) + free(pl[k][h][m]); + pl[k][h][m] = NULL; + } + } + } + + allocmem = summem; + + return; +} + + + +void TransTable::InitTT() +{ + winSetSizeLimit = WINIT; + nodeSetSizeLimit = NINIT; + allocmem = (WINIT + 1) * sizeof(struct winCardType); + allocmem += (NINIT + 1) * sizeof(struct nodeCardsType); + allocmem += (LSIZE + 1) * 52 * sizeof(struct posSearchTypeSmall); + winCards = pw[0]; + nodeCards = pn[0]; + wcount = 0; + ncount = 0; + + nodeSetSize = 0; + winSetSize = 0; + + clearTTflag = false; + windex = -1; + + for (int k = 1; k <= 13; k++) + for (int h = 0; h < DDS_HANDS; h++) + { + posSearch[k][h] = pl[k][h][0]; + lenSetInd[k][h] = 0; + lcount[k][h] = 0; + } +} + + +void TransTable::ResetMemory(int reason) +{ + Wipe(); + + InitTT(); + + for (int k = 1; k <= 13; k++) + { + for (int h = 0; h < DDS_HANDS; h++) + { + rootnp[k][h] = &(posSearch[k][h][0]); + posSearch[k][h][0].suitLengths = 0; + posSearch[k][h][0].posSearchPoint = NULL; + posSearch[k][h][0].left = NULL; + posSearch[k][h][0].right = NULL; + + lenSetInd[k][h] = 1; + } + } + +#if defined(DDS_TT_STATS) + statsResets.noOfResets++; + statsResets.aggrResets[reason]++; +#else + UNUSED(reason); +#endif + + return; +} + +void TransTable::ReturnAllMemory() +{ + + if (!TTInUse) + return; + TTInUse = 0; + +#if defined(DDS_TT_STATS) + PrintResetStats(); + PrintNodeStats(); +#endif + + + Wipe(); + + if (pw[0]) + free(pw[0]); + pw[0] = NULL; + + if (pn[0]) + free(pn[0]); + pn[0] = NULL; + + for (int k = 1; k <= 13; k++) + { + for (int h = 0; h < DDS_HANDS; h++) + { + if (pl[k][h][0]) + free(pl[k][h][0]); + pl[k][h][0] = NULL; + } + } + + if (pw) + free(pw); + pw = NULL; + + if (pn) + free(pn); + pn = NULL; + + if (aggp) + free(aggp); + aggp = NULL; + + return; +} +#endif + + + +///////////////////////////////////////////////////////////// +// // +// Full memory TT functions. // +// // +///////////////////////////////////////////////////////////// + +#ifndef SMALL_MEMORY_OPTION void TransTable::MakeTT() { if (! TTInUse) @@ -322,8 +651,9 @@ void TransTable::ReleaseTT() } -void TransTable::ResetMemory() +void TransTable::ResetMemory(int reason) { + UNUSED(reason); if (poolp == nullptr) return; @@ -391,10 +721,12 @@ void TransTable::ReturnAllMemory() return; } +#endif int TransTable::BlocksInUse() { +#ifndef SMALL_MEMORY_OPTION poolType * pp = poolp; int count = 0; @@ -406,11 +738,19 @@ int TransTable::BlocksInUse() while (pp); return count; +#else + return 0; +#endif } double TransTable::MemoryInUse() { +#ifdef SMALL_MEMORY_OPTION + int ttMem = static_cast(allocmem); + int aggrMem = 8192 * static_cast(sizeof(ttAggrType)); + return (ttMem + aggrMem) / static_cast(1024.); +#else int blockMem = BLOCKS_PER_PAGE * pagesCurrent * static_cast(sizeof(winBlockType)); int aggrMem = 8192 * static_cast(sizeof(aggrType)); @@ -418,6 +758,8 @@ double TransTable::MemoryInUse() static_cast(sizeof(distHashType)); return (blockMem + aggrMem + rootMem) / static_cast(1024.); +#endif + } @@ -439,6 +781,9 @@ TransTable::winBlockType * TransTable::GetNextCardBlock() continue with that. */ +#ifdef SMALL_MEMORY_OPTION + return NULL; +#else if (poolp == nullptr) { // Have to be able to get at least one pool. @@ -470,7 +815,7 @@ TransTable::winBlockType * TransTable::GetNextCardBlock() { if (! TransTable::Harvest()) { - TransTable::ResetMemory(); + TransTable::ResetMemory(UNKNOWN_REASON); poolp->nextBlockNo++; return nextBlockp++; } @@ -496,7 +841,7 @@ TransTable::winBlockType * TransTable::GetNextCardBlock() // Have to try to reclaim memory. if (! TransTable::Harvest()) { - TransTable::ResetMemory(); + TransTable::ResetMemory(UNKNOWN_REASON); poolp->nextBlockNo++; return nextBlockp++; } @@ -517,7 +862,7 @@ TransTable::winBlockType * TransTable::GetNextCardBlock() // and start over. if (! TransTable::Harvest()) { - TransTable::ResetMemory(); + TransTable::ResetMemory(UNKNOWN_REASON); poolp->nextBlockNo++; return nextBlockp++; } @@ -534,7 +879,7 @@ TransTable::winBlockType * TransTable::GetNextCardBlock() { if (! TransTable::Harvest()) { - TransTable::ResetMemory(); + TransTable::ResetMemory(UNKNOWN_REASON); poolp->nextBlockNo++; return nextBlockp++; } @@ -561,11 +906,15 @@ TransTable::winBlockType * TransTable::GetNextCardBlock() poolp->nextBlockNo++; return nextBlockp++; +#endif } bool TransTable::Harvest() { +#ifdef SMALL_MEMORY_OPTION + return false; +#else distHashType * rootptr = TTroot[harvestTrick][harvestHand]; distHashType * ptr; winBlockType * bp; @@ -626,6 +975,7 @@ bool TransTable::Harvest() rootptr = TTroot[harvestTrick][harvestHand]; } +#endif } @@ -663,20 +1013,669 @@ int TransTable::hash8(int * handDist) } -void TransTable::Top4Ranks( - unsigned short aggrTarget[], - unsigned rr[DDS_SUITS]) +///////////////////////////////////////////////////////////// +// // +// Small memory TT functions. // +// // +///////////////////////////////////////////////////////////// + + +#ifdef SMALL_MEMORY_OPTION +nodeCardsType * TransTable::Lookup( + int trick, + int hand, + unsigned short * aggrTarget, + int * handDist, + int limit, + bool * lowerFlag) +{ + bool res; + struct posSearchTypeSmall * pp; + int orderSet[DDS_SUITS]; + struct nodeCardsType * cardsP; + + suitLengths[trick] = + (static_cast(handDist[0]) << 36) | + (static_cast(handDist[1]) << 24) | + (static_cast(handDist[2]) << 12) | + (static_cast(handDist[3])); + + pp = SearchLenAndInsert(rootnp[trick][hand], + suitLengths[trick], false, trick, hand, &res); + + /* Find node that fits the suit lengths */ + if ((pp != NULL) && res) + { + for (int ss = 0; ss < DDS_SUITS; ss++) + { + orderSet[ss] = + aggp[aggrTarget[ss]].aggrRanks[ss]; + } + + if (pp->posSearchPoint == NULL) + cardsP = NULL; + else + { + cardsP = FindSOP(orderSet, limit, pp->posSearchPoint, + hand, lowerFlag); + + if (cardsP == NULL) + return cardsP; + } + } + else + { + cardsP = NULL; + } + return cardsP; +} + + +void TransTable::Add( + int tricks, + int hand, + unsigned short * aggrTarget, + unsigned short * ourWinRanks, + nodeCardsType * first, + bool flag) +{ + BuildSOP(ourWinRanks, aggrTarget, first, suitLengths[tricks], + tricks, hand, tricks, flag); + + if (clearTTflag) + { + ResetMemory(MEMORY_EXHAUSTED); + } + + return; +} +#endif + + +void TransTable::AddWinSet() { - // This is just a service function to reuse some tables. - // It is not part of the transposition table as such. +#ifdef SMALL_MEMORY_OPTION + if (clearTTflag) + { + windex++; + winSetSize = windex; + winCards = &(temp_win[windex]); + } + else if (winSetSize >= winSetSizeLimit) + { + /* The memory chunk for the winCards structure will be exceeded. */ + if (((allocmem + static_cast(wmem)) > maxmem) || (wcount >= maxIndex) || + (winSetSize > SIMILARMAXWINNODES)) + { + /* Already allocated memory plus needed allocation overshot maxmem */ + windex++; + winSetSize = windex; + clearTTflag = true; + winCards = &(temp_win[windex]); + } + else + { + wcount++; + winSetSizeLimit = WSIZE; + pw[wcount] = + static_cast(calloc((WSIZE + 1), sizeof(struct winCardType))); + if (pw[wcount] == NULL) + { + clearTTflag = true; + windex++; + winSetSize = windex; + winCards = &(temp_win[windex]); + } + else + { + allocmem += (WSIZE + 1) * sizeof(struct winCardType); + winSetSize = 0; + winCards = pw[wcount]; + } + } + } + else + winSetSize++; + return; +#endif +} + +void TransTable::AddNodeSet() +{ +#ifdef SMALL_MEMORY_OPTION + if (nodeSetSize >= nodeSetSizeLimit) + { + /* The memory chunk for the nodeCards structure will be exceeded. */ + if (((allocmem + static_cast(nmem)) > maxmem) || (ncount >= maxIndex)) + { + /* Already allocated memory plus needed allocation overshot maxmem */ + clearTTflag = true; + } + else + { + ncount++; + nodeSetSizeLimit = NSIZE; + pn[ncount] = + static_cast(calloc((NSIZE + 1), sizeof(struct nodeCardsType))); + if (pn[ncount] == NULL) + { + clearTTflag = true; + } + else + { + allocmem += (NSIZE + 1) * sizeof(struct nodeCardsType); + nodeSetSize = 0; + nodeCards = pn[ncount]; + } + } + } + else + nodeSetSize++; + return; +#endif +} + +void TransTable::AddLenSet(int trick, int firstHand) +{ +#ifndef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(firstHand); +#else + if (lenSetInd[trick][firstHand] >= LSIZE) + { + /* The memory chunk for the posSearchTypeSmall structure will be exceeded. */ + if (((allocmem + (LSIZE + 1) * sizeof(struct posSearchTypeSmall)) > maxmem) + || (lcount[trick][firstHand] >= maxIndex)) + { + /* Already allocated memory plus needed allocation overshot maxmem */ + clearTTflag = true; + + return; + } + + /* Obtain another memory chunk LSIZE.*/ + + lcount[trick][firstHand]++; + + pl[trick][firstHand][lcount[trick][firstHand]] = + static_cast(calloc(LSIZE + 1, sizeof(struct posSearchTypeSmall))); + + if (pl[trick][firstHand][lcount[trick][firstHand]] == NULL) + + { + clearTTflag = true; + + return; + } + else + { + allocmem += (LSIZE + 1) * sizeof(struct posSearchTypeSmall); + lenSetInd[trick][firstHand] = 0; + posSearch[trick][firstHand] = + pl[trick][firstHand][lcount[trick][firstHand]]; + +#if defined(DDS_TT_STATS) + aggrLenSets[trick]++; +#endif + } + } + else + { + lenSetInd[trick][firstHand]++; +#if defined(DDS_TT_STATS) + aggrLenSets[trick]++; +#endif + } + return; +#endif +} + + +void TransTable::BuildSOP( + unsigned short ourWinRanks[DDS_SUITS], + unsigned short aggrArg[DDS_SUITS], + struct nodeCardsType * first, + long long lengths, + int tricks, + int firstHand, + int depth, + bool flag) +{ + UNUSED(depth); +#ifndef SMALL_MEMORY_OPTION + UNUSED(ourWinRanks); + UNUSED(aggrArg); + UNUSED(first); + UNUSED(lengths); + UNUSED(tricks); + UNUSED(firstHand); + UNUSED(flag); +#else + bool res; + int w; + unsigned short int temp; + struct nodeCardsType * cardsP; + struct posSearchTypeSmall * np; + + int winMask[DDS_SUITS]; + int winOrderSet[DDS_SUITS]; + char low[DDS_SUITS]; + + for (int ss = 0; ss < DDS_SUITS; ss++) + { + w = ourWinRanks[ss]; + if (w == 0) + { + winMask[ss] = 0; + winOrderSet[ss] = 0; + low[ss] = 15; + } + else + { + w = w & (-w); /* Only lowest win */ + temp = static_cast(aggrArg[ss] & (-w)); + low[ss] = static_cast(TTlowestRank[temp]); + + winMask[ss] = aggp[temp].winMask[ss]; + winOrderSet[ss] = aggp[temp].aggrRanks[ss]; + } + } - rr[0] = (aggr[ aggrTarget[0] ].aggrBytes[0][0]) >> 24; - rr[1] = (aggr[ aggrTarget[1] ].aggrBytes[1][0]) >> 16; - rr[2] = (aggr[ aggrTarget[2] ].aggrBytes[2][0]) >> 8; - rr[3] = (aggr[ aggrTarget[3] ].aggrBytes[3][0]); + np = SearchLenAndInsert(rootnp[tricks][firstHand], + lengths, true, tricks, firstHand, &res); + + cardsP = BuildPath(winMask, winOrderSet, + static_cast(first->ubound), static_cast(first->lbound), + static_cast(first->bestMoveSuit), static_cast(first->bestMoveRank), + np, &res); + + + if (res) + { + cardsP->ubound = static_cast(first->ubound); + cardsP->lbound = static_cast(first->lbound); + + if (flag) + { + cardsP->bestMoveSuit = static_cast(first->bestMoveSuit); + cardsP->bestMoveRank = static_cast(first->bestMoveRank); + } + else + { + cardsP->bestMoveSuit = 0; + cardsP->bestMoveRank = 0; + } + + for (int k = 0; k < DDS_SUITS; k++) + cardsP->leastWin[k] = 15 - low[k]; + } +#endif } +struct nodeCardsType * TransTable::BuildPath( + int * winMask, + int * winOrderSet, + int ubound, + int lbound, + char bestMoveSuit, + char bestMoveRank, + struct posSearchTypeSmall * nodep, + bool * result) +{ + /* If result is TRUE, a new SOP has been created and BuildPath returns a + pointer to it. If result is FALSE, an existing SOP is used and BuildPath + returns a pointer to the SOP */ + +#ifndef SMALL_MEMORY_OPTION + UNUSED(winMask); + UNUSED(winOrderSet); + UNUSED(ubound); + UNUSED(lbound); + UNUSED(bestMoveSuit); + UNUSED(bestMoveRank); + UNUSED(nodep); + UNUSED(result); + return NULL; +#else + bool found; + struct winCardType * np, *p2, *nprev, *fnp, *pnp; + struct winCardType temp; + struct nodeCardsType * sopP = 0, *p; + + np = nodep->posSearchPoint; + nprev = NULL; + int suit = 0; + + /* If winning node has a card that equals the next winning card deduced + from the position, then there already exists a (partial) path */ + + if (np == NULL) + { + /* There is no winning list created yet */ + /* Create winning nodes */ + p2 = &(winCards[winSetSize]); + AddWinSet(); + p2->next = NULL; + p2->nextWin = NULL; + p2->prevWin = NULL; + nodep->posSearchPoint = p2; + p2->winMask = winMask[suit]; + p2->orderSet = winOrderSet[suit]; + p2->first = NULL; + np = p2; /* Latest winning node */ + suit++; + while (suit < 4) + { + p2 = &(winCards[winSetSize]); + AddWinSet(); + np->nextWin = p2; + p2->prevWin = np; + p2->next = NULL; + p2->nextWin = NULL; + p2->winMask = winMask[suit]; + p2->orderSet = winOrderSet[suit]; + p2->first = NULL; + np = p2; /* Latest winning node */ + suit++; + } + p = &(nodeCards[nodeSetSize]); + AddNodeSet(); + np->first = p; + *result = true; + return p; + } + else + { + /* Winning list exists */ + while (1) + { + /* Find all winning nodes that correspond to current + position */ + found = false; + while (1) /* Find node amongst alternatives */ + { + if ((np->winMask == winMask[suit]) && + (np->orderSet == winOrderSet[suit])) + { + /* Part of path found */ + found = true; + nprev = np; + break; + } + if (np->next != NULL) + np = np->next; + else + break; + } + if (found) + { + suit++; + if (suit > 3) + { + sopP = UpdateSOP(ubound, lbound, bestMoveSuit, bestMoveRank, + np->first); + + if (np->prevWin != NULL) + { + pnp = np->prevWin; + fnp = pnp->nextWin; + } + else + fnp = nodep->posSearchPoint; + + temp.orderSet = np->orderSet; + temp.winMask = np->winMask; + temp.first = np->first; + temp.nextWin = np->nextWin; + np->orderSet = fnp->orderSet; + np->winMask = fnp->winMask; + np->first = fnp->first; + np->nextWin = fnp->nextWin; + fnp->orderSet = temp.orderSet; + fnp->winMask = temp.winMask; + fnp->first = temp.first; + fnp->nextWin = temp.nextWin; + + *result = false; + return sopP; + } + else + { + np = np->nextWin; /* Find next winning node */ + continue; + } + } + else + break; /* Node was not found */ + } /* End outer while */ + + /* Create additional node, coupled to existing node(s) */ + p2 = &(winCards[winSetSize]); + AddWinSet(); + p2->prevWin = nprev; + if (nprev != NULL) + { + p2->next = nprev->nextWin; + nprev->nextWin = p2; + } + else + { + p2->next = nodep->posSearchPoint; + nodep->posSearchPoint = p2; + } + p2->nextWin = NULL; + p2->winMask = winMask[suit]; + p2->orderSet = winOrderSet[suit]; + p2->first = NULL; + np = p2; /* Latest winning node */ + suit++; + + /* Rest of path must be created */ + while (suit < 4) + { + p2 = &(winCards[winSetSize]); + AddWinSet(); + np->nextWin = p2; + p2->prevWin = np; + p2->next = NULL; + p2->winMask = winMask[suit]; + p2->orderSet = winOrderSet[suit]; + p2->first = NULL; + p2->nextWin = NULL; + np = p2; /* Latest winning node */ + suit++; + } + + /* All winning nodes in SOP have been traversed and new nodes created */ + p = &(nodeCards[nodeSetSize]); + AddNodeSet(); + np->first = p; + *result = true; + return p; + } +#endif +} + +struct TransTable::posSearchTypeSmall * TransTable::SearchLenAndInsert( + struct posSearchTypeSmall * rootp, + long long key, + bool insertNode, + int trick, + int firstHand, + bool * result) +{ + /* Search for node which matches with the suit length combination + given by parameter key. If no such node is found, NULL is + returned if parameter insertNode is FALSE, otherwise a new + node is inserted with suitLengths set to key, the pointer to + this node is returned. + The algorithm used is defined in Knuth "The art of computer + programming", vol.3 "Sorting and searching", 6.2.2 Algorithm T, + page 424. */ + +#ifndef SMALL_MEMORY_OPTION + UNUSED(rootp); + UNUSED(key); + UNUSED(insertNode); + UNUSED(trick); + UNUSED(firstHand); + UNUSED(result); + return NULL; +#else + struct posSearchTypeSmall * np, *p, *sp; + + sp = NULL; + if (insertNode) + sp = &(posSearch[trick][firstHand][lenSetInd[trick][firstHand]]); + + np = rootp; + while (1) + { + if (key == np->suitLengths) + { + *result = true; + return np; + } + else if (key < np->suitLengths) + { + if (np->left != NULL) + np = np->left; + else if (insertNode) + { + p = sp; + AddLenSet(trick, firstHand); + np->left = p; + p->posSearchPoint = NULL; + p->suitLengths = key; + p->left = NULL; + p->right = NULL; + *result = true; + return p; + } + else + { + *result = false; + return NULL; + } + } + else /* key > suitLengths */ + { + if (np->right != NULL) + np = np->right; + else if (insertNode) + { + p = sp; + AddLenSet(trick, firstHand); + np->right = p; + p->posSearchPoint = NULL; + p->suitLengths = key; + p->left = NULL; + p->right = NULL; + *result = true; + return p; + } + else + { + *result = false; + return NULL; + } + } + } +#endif +} + + +struct nodeCardsType * TransTable::UpdateSOP( + int ubound, + int lbound, + char bestMoveSuit, + char bestMoveRank, + nodeCardsType * nodep) +{ + /* Update SOP node with new values for upper and lower + bounds. */ +#ifndef SMALL_MEMORY_OPTION + UNUSED(ubound); + UNUSED(lbound); + UNUSED(bestMoveSuit); + UNUSED(bestMoveRank); + UNUSED(nodep); + return NULL; +#else + if ((lbound > nodep->lbound) || + (nodep->lbound == -1)) + nodep->lbound = static_cast(lbound); + if ((ubound < nodep->ubound) || + (nodep->ubound == -1)) + nodep->ubound = static_cast(ubound); + + nodep->bestMoveSuit = bestMoveSuit; + nodep->bestMoveRank = bestMoveRank; + + return nodep; +#endif +} + + +struct nodeCardsType * TransTable::FindSOP( + int orderSet[], + int limit, + winCardType * nodeP, + int firstHand, + bool * lowerFlag) +{ + struct winCardType * np; + UNUSED(firstHand); + + np = nodeP; + int s = 0; + + while (np) + { + if ((np->winMask & orderSet[s]) == np->orderSet) + { + /* Winning rank set fits position */ + if (s != 3) + { + np = np->nextWin; + s++; + continue; + } + + if (np->first->lbound > limit) + { + *lowerFlag = true; + return np->first; + } + else if (np->first->ubound <= limit) + { + *lowerFlag = false; + return np->first; + } + } + + while (np->next == NULL) + { + np = np->prevWin; + s--; + if (np == NULL) /* Previous node is header node? */ + return NULL; + } + np = np->next; + } + return NULL; +} + + + +///////////////////////////////////////////////////////////// +// // +// Full memory TT functions. // +// // +///////////////////////////////////////////////////////////// + +#ifndef SMALL_MEMORY_OPTION nodeCardsType * TransTable::Lookup( int tricks, int hand, @@ -716,6 +1715,7 @@ nodeCardsType * TransTable::Lookup( return TransTable::LookupCards(&TTentry, lastBlockSeen[tricks][hand], limit, lowerFlag); } +#endif TransTable::winBlockType * TransTable::LookupSuit( @@ -921,6 +1921,7 @@ void TransTable::CreateOrUpdate( } +#ifndef SMALL_MEMORY_OPTION void TransTable::Add( int tricks, int hand, @@ -1004,6 +2005,7 @@ void TransTable::Add( TransTable::CreateOrUpdate(lastBlockSeen[tricks][hand], &TTentry, flag); } +#endif @@ -1211,6 +2213,10 @@ void TransTable::PrintSuits( int trick, int hand) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); +#else distHashType * dp; int handDist[DDS_HANDS]; unsigned char len[DDS_HANDS][DDS_SUITS]; @@ -1245,11 +2251,13 @@ void TransTable::PrintSuits( } } fprintf(fp, "\n"); +#endif } void TransTable::PrintAllSuits() { +#ifndef SMALL_MEMORY_OPTION for (int trick = 11; trick >= 1; trick--) { for (int hand = 0; hand < DDS_HANDS; hand++) @@ -1260,6 +2268,7 @@ void TransTable::PrintAllSuits() TransTable::PrintSuits(trick, hand); } } +#endif } @@ -1348,6 +2357,12 @@ void TransTable::UpdateSuitHist( int hist[], int * num_wraps) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); + UNUSED(hist); + UNUSED(num_wraps); +#else distHashType * dp; * num_wraps = 0; @@ -1366,6 +2381,7 @@ void TransTable::UpdateSuitHist( suitWraps++; } } +#endif } @@ -1373,6 +2389,10 @@ void TransTable::PrintSuitStats( int trick, int hand) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); +#else int hist[DISTS_PER_ENTRY + 1]; int num_wraps; @@ -1381,11 +2401,13 @@ void TransTable::PrintSuitStats( fprintf(fp, "Suit histogram for trick %d, hand %s\n", trick, players[hand]); TransTable::PrintHist(hist, num_wraps, DISTS_PER_ENTRY); +#endif } void TransTable::PrintAllSuitStats() { +#ifndef SMALL_MEMORY_OPTION suitWraps = 0; for (int i = 0; i <= DISTS_PER_ENTRY; i++) suitHist[i] = 0; @@ -1402,11 +2424,13 @@ void TransTable::PrintAllSuitStats() fprintf(fp, "Overall suit histogram\n"); TransTable::PrintHist(suitHist, suitWraps, DISTS_PER_ENTRY); +#endif } void TransTable::PrintSummarySuitStats() { +#ifndef SMALL_MEMORY_OPTION int hist[DISTS_PER_ENTRY + 1]; int count, prod_sum, prod_sumsq, max_len, num_wraps; @@ -1473,6 +2497,7 @@ void TransTable::PrintSummarySuitStats() fprintf(fp, "\n"); } fprintf(fp, "\n"); +#endif } @@ -1481,6 +2506,12 @@ TransTable::winBlockType * TransTable::FindMatchingDist( int hand, int handDistSought[DDS_HANDS]) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); + UNUSED(handDistSought); + return NULL; +#else winBlockType * bp; distHashType * dp; int handDist[DDS_HANDS]; @@ -1507,6 +2538,7 @@ TransTable::winBlockType * TransTable::FindMatchingDist( } } return nullptr; +#endif } @@ -1542,6 +2574,12 @@ void TransTable::PrintEntriesDistAndCards( unsigned short * aggrTarget, int handDist[DDS_HANDS]) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); + UNUSED(aggrTarget); + UNUSED(handDist); +#else char line[40]; unsigned char len[DDS_HANDS][DDS_SUITS]; @@ -1602,6 +2640,7 @@ void TransTable::PrintEntriesDistAndCards( fprintf(fp, "%d matches for suit, none for cards\n\n", n); else fprintf(fp, "\n"); +#endif } @@ -1610,6 +2649,11 @@ void TransTable::PrintEntriesDist( int hand, int handDist[DDS_HANDS]) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); + UNUSED(handDist); +#else unsigned char len[DDS_HANDS][DDS_SUITS]; winBlockType * bp = @@ -1628,6 +2672,7 @@ void TransTable::PrintEntriesDist( } TransTable::PrintEntriesBlock(bp, len); +#endif } @@ -1635,6 +2680,10 @@ void TransTable::PrintEntries( int trick, int hand) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); +#else winBlockType * bp; distHashType * dp; int handDist[DDS_HANDS]; @@ -1652,11 +2701,13 @@ void TransTable::PrintEntries( TransTable::PrintEntriesBlock(bp, lengths); } } +#endif } void TransTable::PrintAllEntries() { +#ifndef SMALL_MEMORY_OPTION for (int trick = 11; trick >= 1; trick--) { for (int hand = 0; hand < DDS_HANDS; hand++) @@ -1667,6 +2718,7 @@ void TransTable::PrintAllEntries() } } fprintf(fp, "\n"); +#endif } @@ -1676,6 +2728,12 @@ void TransTable::UpdateEntryHist( int hist[], int * num_wraps) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); + UNUSED(hist); + UNUSED(num_wraps); +#else distHashType * dp; * num_wraps = 0; @@ -1698,6 +2756,7 @@ void TransTable::UpdateEntryHist( } } } +#endif } @@ -1705,6 +2764,10 @@ void TransTable::PrintEntryStats( int trick, int hand) { +#ifdef SMALL_MEMORY_OPTION + UNUSED(trick); + UNUSED(hand); +#else int hist[BLOCKS_PER_ENTRY + 1]; int num_wraps; @@ -1713,11 +2776,13 @@ void TransTable::PrintEntryStats( fprintf(fp, "Entry histogram for trick %d, hand %s\n", trick, players[hand]); TransTable::PrintHist(hist, num_wraps, BLOCKS_PER_ENTRY); +#endif } void TransTable::PrintAllEntryStats() { +#ifndef SMALL_MEMORY_OPTION suitWraps = 0; for (int i = 0; i <= BLOCKS_PER_ENTRY; i++) suitHist[i] = 0; @@ -1734,6 +2799,7 @@ void TransTable::PrintAllEntryStats() fprintf(fp, "Overall entry histogram\n"); TransTable::PrintHist(suitHist, suitWraps, BLOCKS_PER_ENTRY); +#endif } @@ -1766,6 +2832,7 @@ int TransTable::EffectOfBlockBound( void TransTable::PrintSummaryEntryStats() { +#ifndef SMALL_MEMORY_OPTION int hist[BLOCKS_PER_ENTRY + 1]; int count, prod_sum, prod_sumsq, max_len, num_wraps; @@ -1844,11 +2911,13 @@ void TransTable::PrintSummaryEntryStats() fprintf(fp, "Fullness\t%7.2f%%\n", 100. * cumProd / (BLOCKS_PER_ENTRY * cumCount)); fprintf(fp, "\n"); +#endif } void TransTable::PrintPageSummary() { +#ifndef SMALL_MEMORY_OPTION if (pageStats.numResets == 0) return; @@ -1872,4 +2941,28 @@ void TransTable::PrintPageSummary() "harvest", pageStats.numHarvests, pageStats.numHarvests / static_cast(pageStats.numResets)); +#endif } + +void TransTable::PrintNodeStats() +{ +#ifdef SMALL_MEMORY_OPTION + for (int k = 13; k > 0; k--) + fprintf(fp, "Trick %d: Created nodes: %ld\n", k, + static_cast(aggrLenSets[k - 1])); + fprintf(fp, "\n"); +#endif +} + +void TransTable::PrintResetStats() +{ +#ifdef SMALL_MEMORY_OPTION + fprintf(fp, "Total no of Resets: %d\n", statsResets.noOfResets); + fprintf(fp, "\n"); + + for (int k = 0; k <= 5; k++) + fprintf(fp, "%s: %d\n", resetText[k], statsResets.aggrResets[k]); + fprintf(fp, "\n"); +#endif +} + diff --git a/src/TransTable.h b/src/TransTable.h index f5639d2c..0d880521 100644 --- a/src/TransTable.h +++ b/src/TransTable.h @@ -22,7 +22,23 @@ #include "dds.h" #include "../include/dll.h" - +// ResetMemory reasons +#define UNKNOWN_REASON 0 +#define TOO_MANY_NODES 1 +#define NEW_DEAL 2 +#define NEW_TRUMP 3 +#define MEMORY_EXHAUSTED 4 +#define FREE_THREAD_MEM 5 + + +// For SMALL_MEMORY_OPTION +#define NSIZE 50000 +#define WSIZE 50000 +#define NINIT 60000 +#define WINIT 170000 +#define LSIZE 200 // Per trick and first hand + +// For full memory option #define NUM_PAGES_DEFAULT 15 #define NUM_PAGES_MAXIMUM 25 #define BLOCKS_PER_PAGE 1000 @@ -52,10 +68,46 @@ struct nodeCardsType // 8 bytes }; + class TransTable { private: + // Structures for the small memory option. + + struct winCardType + { + int orderSet; + int winMask; + struct nodeCardsType * first; + struct winCardType * prevWin; + struct winCardType * nextWin; + struct winCardType * next; + }; + + struct posSearchTypeSmall + { + struct winCardType * posSearchPoint; + long long suitLengths; + struct posSearchTypeSmall * left; + struct posSearchTypeSmall * right; + }; + + struct ttAggrType + { + int aggrRanks[DDS_SUITS]; + int winMask[DDS_SUITS]; + }; + + struct statsResetsType + { + int noOfResets; + int aggrResets[6]; + }; + + + // Structures for the full memory option. + struct winMatchType // 52 bytes { unsigned xorSet; @@ -123,9 +175,46 @@ class TransTable FROM_HARVEST }; - memStateType memState; - int timestamp; +#ifdef SMALL_MEMORY_OPTION + // Private data for the small memory version. + + long long aggrLenSets[14]; + struct statsResetsType statsResets; + + struct winCardType temp_win[5]; + int nodeSetSizeLimit; + int winSetSizeLimit; + unsigned long long maxmem; + unsigned long long allocmem; + unsigned long long summem; + int wmem; + int nmem; + int maxIndex; + int wcount; + int ncount; + bool clearTTflag; + int windex; + struct ttAggrType * aggp; + + struct posSearchTypeSmall * rootnp[14][DDS_HANDS]; + struct winCardType ** pw; + struct nodeCardsType ** pn; + struct posSearchTypeSmall ** pl[14][DDS_HANDS]; + struct nodeCardsType * nodeCards; + struct winCardType * winCards; + struct posSearchTypeSmall * posSearch[14][DDS_HANDS]; + int nodeSetSize; /* Index with range 0 to nodeSetSizeLimit */ + int winSetSize; /* Index with range 0 to winSetSizeLimit */ + int lenSetInd[14][DDS_HANDS]; + int lcount[14][DDS_HANDS]; + + const char * resetText[6]; + + long long suitLengths[14]; +#else + // Private data for the full memory version. + memStateType memState; int pagesDefault, pagesCurrent, @@ -146,8 +235,6 @@ class TransTable // distHashType TTroot[TT_TRICKS][DDS_HANDS][256]; distHashType * TTroot[TT_TRICKS][DDS_HANDS]; - int TTInUse; - // It is useful to remember the last block we looked at. winBlockType * lastBlockSeen[TT_TRICKS][DDS_HANDS]; @@ -155,8 +242,66 @@ class TransTable poolType * poolp; winBlockType * nextBlockp; harvestedType harvested; +#endif + + int timestamp; + int TTInUse; + + // Private functions for small memory option. + + void Wipe(); + + void AddWinSet(); + + void AddNodeSet(); + + void AddLenSet(int trick, int firstHand); + + void BuildSOP( + unsigned short ourWinRanks[DDS_SUITS], + unsigned short aggr[DDS_SUITS], + nodeCardsType * first, + long long suitLengths, + int tricks, + int firstHand, + int depth, + bool flag); + + struct nodeCardsType * BuildPath( + int * winMask, + int * winOrderSet, + int ubound, + int lbound, + char bestMoveSuit, + char bestMoveRank, + struct posSearchTypeSmall * nodep, + bool * result); + + struct posSearchTypeSmall * SearchLenAndInsert( + struct posSearchTypeSmall * rootp, + long long key, + bool insertNode, + int trick, + int firstHand, + bool * result); + + struct nodeCardsType * UpdateSOP( + int ubound, + int lbound, + char bestMoveSuit, + char bestMoveRank, + struct nodeCardsType * nodep); + + struct nodeCardsType * FindSOP( + int orderSet[], + int limit, + struct winCardType * nodeP, + int firstHand, + bool * lowerFlag); + // Full memory private functions, and common functions. + void InitTT(); void ReleaseTT(); @@ -165,8 +310,6 @@ class TransTable int hash8(int * handDist); - // int BlocksInUse(); - winBlockType * GetNextCardBlock(); winBlockType * LookupSuit( @@ -278,6 +421,7 @@ class TransTable char hands[DDS_SUITS][DDS_HANDS][TT_LINE_LEN], int used[DDS_SUITS][DDS_HANDS]); + int BlocksInUse(); public: TransTable(); @@ -292,16 +436,12 @@ class TransTable void MakeTT(); - void ResetMemory(); + void ResetMemory(int reason); void ReturnAllMemory(); double MemoryInUse(); - void Top4Ranks( - unsigned short aggrTarget[], - unsigned rr[DDS_SUITS]); - nodeCardsType * Lookup( int trick, int hand, @@ -371,9 +511,9 @@ class TransTable void PrintPageSummary(); + void PrintNodeStats(); - // Could also be made private, see above. - int BlocksInUse(); + void PrintResetStats(); }; #endif diff --git a/src/dds.cpp b/src/dds.cpp index 71e7916c..7cc34340 100644 --- a/src/dds.cpp +++ b/src/dds.cpp @@ -51,6 +51,8 @@ extern "C" BOOL APIENTRY DllMain( #elif (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) || defined(__MAC_OS_X_VERSION_MAX_ALLOWED)) +void DDSInitialize(), DDSFinalize(); + void DDSInitialize(void) { SetMaxThreads(0); diff --git a/src/dds.h b/src/dds.h index 2e156250..e59804b9 100644 --- a/src/dds.h +++ b/src/dds.h @@ -32,8 +32,13 @@ #endif -#define THREADMEM_MAX_MB 160 -#define THREADMEM_DEF_MB 95 +#if defined(SMALL_MEMORY_OPTION) + #define THREADMEM_MAX_MB 30 + #define THREADMEM_DEF_MB 20 +#else + #define THREADMEM_MAX_MB 160 + #define THREADMEM_DEF_MB 95 +#endif #define MAXNOOFTHREADS 16 diff --git a/src/dds.rc b/src/dds.rc index 103b9831..464df709 100644 --- a/src/dds.rc +++ b/src/dds.rc @@ -1,6 +1,6 @@ 1 VERSIONINFO - FILEVERSION 2,8,3,0 - PRODUCTVERSION 2,8,3,0 + FILEVERSION 2,8,4,0 + PRODUCTVERSION 2,8,4,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x40004L @@ -13,12 +13,12 @@ BEGIN BEGIN VALUE "CompanyName", "http://privat.bahnhof.se/wb758135/" VALUE "FileDescription", "dds MinGW" - VALUE "FileVersion", "2.8.3.0" + VALUE "FileVersion", "2.8.4.0" VALUE "InternalName", "dds.dll" VALUE "LegalCopyright", "Copyright © 2006-2014 Bo Haglund / 2014-16 Bo Haglund Soren Hein" VALUE "OriginalFilename", "dds.dll" VALUE "ProductName", "Bridge double dummy solver" - VALUE "ProductVersion", "2.8.3.0" + VALUE "ProductVersion", "2.8.4.0" END END BLOCK "VarFileInfo"