!]DJPJ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHINone"#$%*7>@AHMPV_agkpF,chessIOBlaw: square i x ! i = x where inRange (0,63) i && inRange (0,15) x0chessIOzMove a nibble. Note that this function, while convenient, isn't very fast as it needs to lookup the source nibble value.<chessIO bitwise XOR;  !"#$%&'()*+,-./0123456789:; !"#$%&'()/ *+,-.0123456789:;Basic data types and functions related to the game of chess(c) Mario Lang, 2019BSD3mlang@blind.guru experimentalNone"#$%&'*-7=>?@AHMPVX_agkp* SchessIO active colorUchessIOnumber of the full movechessIO=The starting position as given by the FEN string "rnbqkbnrpppppppp8888 PPPPPPPP/RNBQKBNR w KQkq - 0 1".chessIO3Construct a position from Forsyth-Edwards-Notation.chessIO/Convert a position to Forsyth-Edwards-Notation.chessIOJParse a move in the format used by the Universal Chess Interface protocol.chessIOLConvert a move to the format used by the Universal Chess Interface protocol.JchessIO<Validate that a certain move is legal in the given position.chessIO#Apply a move to the given position.[This function checks if the move is actually legal and throws and error if it isn't. See - for a version that omits the legality check.chessIOAn unsafe version of . Only use this if you are sure the given move can be applied to the position. This is useful if the move has been generated by the moves function.chessIO9Generate a list of possible moves for the given position.chessIOReturns K if # is in check in the given position.jMNOPQRTUSVZYkc[WX\]^_`abdefghijlmnopqrstuvwxyz{|}~jVZYkc[WX\]^_`abdefghijlmnopqrstuvwxyz{|}~MNORSUTPQNone"#$%*7>@AHMPV_agkp.<None"#$%*7>@AHMPVX_agkp2bchessIOA Polyglot opening book.chessIO(Create a PolyglotBook from a ByteString.chessIO Pick a random ply from the book.chessIO:Probe the book for all plies known for the given position.None"#$%&'*7>@AHMPV_agkp3None"#$%*7>@AHMPV_agkpG]LchessIO+restrict search to the specified moves onlyMchessIO(time (in milliseconds) left on the clockNchessIO'time increment per move in millisecondsOchessIO(number of moves to the next time controlPchessIO search until 3 gets called%chessIOWSet the starting position of the current game, also clearing any pre-existing history.&chessIOMStart a UCI engine with the given executable name and command line arguments.'chessIO=Start a UCI engine with the given timeout for initialisation._If the engine takes more then the given microseconds to answer to the initialisation request, Q: is returned and the external process will be terminated.(chessIO5Wait until the engine is ready to take more commands.2chessIO'Instruct the engine to begin searching.3chessIOStop a search in progress.5chessIO(Set a spin option to a particular value.MBounds are validated. Make sure you don't set a value which is out of range.7chessIO7Return the final position of the currently active game.8chessIOAdd a Move to the game history.AThis function checks if the move is actually legal, and throws a  if it isn't.9chessIOQuit the engine.%chessIOthe game previously in progress<      !$#"%&'()*+,-./0123456789:< !"#&'  $456(7%8   21)*+,-./039:None"#$%*7>@AHMPV_agkpJ+RSTUVWXYZ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc&chessIO-0.3.1.1-GgzkbDZIkauBpQLHbGfz8sGame.Chess.QuadBitboard Game.ChessGame.Chess.Polyglot.HashGame.Chess.Polyglot.BookGame.Chess.PGNGame.Chess.UCI Paths_chessIOWord4W4 QuadBitboardQBBblackpbqnbkrqk BlackKing BlackQueen BlackRook BlackBishop BlackKnight BlackPawn WhiteKing WhiteQueen WhiteRook WhiteBishop WhiteKnight WhitePawnNoPieceoccupiedpnrwhitepawnsknightsbishopsrooksqueenskingswPawnswKnightswBishopswRookswQueenswKingsbPawnsbKnightsbBishopsbRooksbQueensbKingsemptystandardsquare! setNibbletoStringmovemove'whiteKingsideCastlewhiteQueensideCastleblackKingsideCastleblackQueensideCastle enPassantwhitePromotionblackPromotionwhitePromotion'blackPromotion'$fShowQuadBitboard$fSemigroupQuadBitboard$fMonoidQuadBitboard$fIsStringQuadBitboard$fBinaryQuadBitboard$fFiniteBitsWord4 $fEnumWord4$fBoundedWord4$fEqQuadBitboard $fBitsWord4 $fEqWord4$fIntegralWord4 $fIxWord4 $fNumWord4 $fOrdWord4 $fReadWord4 $fRealWord4 $fShowWord4CastleKingside QueensidePlyPositioncolor halfMoveClock moveNumberSqA1B1C1D1E1F1G1H1A2B2C2D2E2F2G2H2A3B3C3D3E3F3G3H3A4B4C4D4E4F4G4H4A5B5C5D5E5F5G5H5A6B6C6D6E6F6G6H6A7B7C7D7E7F7G7H7A8B8C8D8E8F8G8H8ColorBlackWhite PieceTypePawnKnightBishopRookQueenKing strictSAN relaxedSANfromSANtoSAN unsafeToSANstartpospieceAtopponentisDarkisLightfromFENtoFEN fromPolyglotfromUCItoUCIdoPly unsafeDoPly legalPliesinCheckcastlingRightscanCastleKingsidecanCastleQueenside$fSANTokenWord8$fSANTokenChar $fIsSquareInt $fIsSquareSq $fEqPosition $fShowPly $fShowFrom $fEqSANStatus$fReadSANStatus$fShowSANStatus $fEqPieceType $fIxPieceType$fOrdPieceType$fShowPieceType $fEqColor $fIxColor $fOrdColor $fShowColor $fEqPiece $fShowPiece $fBoundedSq$fEnumSq$fEqSq$fIxSq$fOrdSq$fShowSq$fEqPly $fEqCastle $fIxCastle $fOrdCastle $fShowCastle $fEqDirection$fShowDirection hashPositionpieceKey castleKeyturnKey PolyglotBook defaultBooktwicfromByteStringreadPolyglotFile bookForestbookPly bookPlies$fStorableBookEntry $fEqBookEntry$fShowBookEntry$fEqPolyglotBookRAVOrderOutcomeWinDraw UndecidedGamePGNgameFromForest readPGNFilehPutPGN breadthFirst depthFirstpgnDocgameDoc$fPrettyOutcome $fEqOutcome $fShowOutcome $fEqPlyData $fShowPlyData$fEqPGN $fMonoidPGN$fSemigroupPGN SearchParamOptionCheckBoxComboBox SpinButtonOStringButton comboBoxValuecomboBoxValuesspinButtonValuespinButtonMinBoundspinButtonMaxBoundBounds UpperBound LowerBoundScore CentiPawnsMateInInfoPVDepthSelDepthElapsedMultiPVNodesNPSTBHitsHashFullCurrMoveCurrMoveNumberString UCIException IllegalMoveEnginenameauthoroptions setPositionstartstart'isready searchmovestimeleft timeincrement movestogomovetimenodesdepthinfinite searchingsearchstop getOptionsetOptionSpinButtonsetOptionStringcurrentPositionaddPlyquitquit'$fExceptionUCIException$fIsStringOption$fShowUCIException $fEqScore $fOrdScore $fShowScore $fEqBounds $fShowBounds$fEqInfo $fShowInfo $fEqOption $fShowOption $fShowCommand$fEqSearchParam$fShowSearchParam relativeToghc-prim GHC.TypesTrue SearchMovesTimeLeft TimeIncrement MovesToGoInfinitebase GHC.MaybeNothingversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName