h)n_{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0.1.3.3 Safe-Inferred2 sgfTry decoding the given word string with each of the known-good encodings to see if the decoded name names the encoding used to decode. It should be impossible for this to return a list with more than one guess.sgf/A simple wrapper around the encoding package's  function. Safe-InferredsgfCurrently, this is pretty lame: it doesn't track line number and character number, only byte offset from the beginning of the file. This is because I don't really understand how to correctly track line number and character number properly in the face of dynamically changing encodings, whereas byte number is a totally braindead statistic to track.sgfThe literal name of the property. This is guaranteed to be a non-empty string of upper-case ASCII characters.sgfThe arguments to the property.sgf1Handy way to convert known-ASCII characters from  to , among other things.sgfParse the tree-structure of an SGF file, but without any knowledge of the semantics of the properties, etc. Safe-InferredS sgf See also  and  .sgf See also  and  .sgf See also  and  . sgf See also  and  . sgf See also  and  . sgf See also  and  . sgf See also .sgfAll properties with propertytype game-info. There must be only one Just on any path within a .sgf/All properties with propertytype setup or move.sgfPositional judgments and comments (as opposed to judgments of particular moves). All properties covered in the "Node annotation" section.sgfHow a node should be displayed. All properties covered in the "Markup" and "Miscellaneous" sections.sgfUnspecified properties. The keys in the map must contain only the characters A-Z (and must be upper-case). The values in the map may be more or less arbitrary, but any occurrence of the ASCII byte ']' must be preceded by an odd number of copies of the ASCII byte '\'. See also )http://www.red-bean.com/sgf/sgf4.html#2.2sgf See also .sgf See also .sgf See also .sgf See also .sgf See also .sgf See also .sgf See also  .sgfApplications can store and read settings in the first argument here. This got totally shoehorned into the spec by some particular viewer, I'm sure, but it's in the spec now, so there we go. See also 'http://www.red-bean.com/sgf/hex.html#IS sgf See also ."sgfThe name and version number of the application used to create this game. The version number must be in a format that allows ordinary string comparison to tell which version is higher or lower. Neither the application name nor the version number may have newlines. See also .http://www.red-bean.com/sgf/properties.html#AP#sgfThe first argument tells whether children (False) or siblings (True) are variations; the second argument tells whether or not to show board markup when variations are available. See also .http://www.red-bean.com/sgf/properties.html#ST$sgfThe size of the board. For games with a default board size, this is guaranteed to be a Just . See also .http://www.red-bean.com/sgf/properties.html#SZ%sgfThe actual game tree.&sgf See also  . Presumably, no arrow in the arrows7 field should exactly overlap a line specified in the lines field; however, this is not explicitly made illegal by the SGF spec. Note that some fields are marked "inherit". These inheritances are not explicitly tracked; Nothing values indicate that the correct interpretation depends on the node's ancestors, or on the default if no ancestor has a Just value in this field.(sgf3See also the CR, MA, SL, SQ, and TR properties at .http://www.red-bean.com/sgf/properties.html#CR)sgfTypically, the Strings will be single letters, but that is not guaranteed. Labels must not contain newlines. See also .http://www.red-bean.com/sgf/properties.html#LB*sgfsgfHow many pods each player has in reserve to start with. See also (http://www.red-bean.com/sgf/octi.html#NR?sgf9How many superprongs each player starts with. See also (http://www.red-bean.com/sgf/octi.html#NS@sgf See also  and the U field of K. The specification says that trees representing Hex games will mark which position the viewer should initially show by setting this field to . I think this is probably an error in the specification; there is an obvious conflict between the requirement to put all game information at the first node where a game is uniquely identifiable and the requirement to have a game-information property at the location you want to view first (whenever these two nodes are not the same node, of course). For this reason, Hex game trees may have paths containing two nodes whose game information is not  . See also 'http://www.red-bean.com/sgf/hex.html#IPAsgf See also   and the U field of K.CsgfWhen this field is , the viewer should initially show the board position after setup but before any moves. (When =, the viewer should display the final position.) See also 'http://www.red-bean.com/sgf/loa.html#IPDsgfWhen this field is , the board should be displayed with numbers increasing from the bottom to the top of the screen. (When 1, the numbers should be decreasing.) See also 'http://www.red-bean.com/sgf/loa.html#IYEsgf?The initial placement of pieces and rule variation. See also 'http://www.red-bean.com/sgf/loa.html#SUFsgf See also   and the U field of K. An empty list indicates that no match information was specified. The order of the list is not significant, and there should be only one value of any given kind of z . See also *http://red-bean.com/sgf/backgammon.html#MIGsgf See also   and the U field of K.IsgfSpecifying this does not automatically add stones to the board; a V node with a non-empty X' field should be specified before any _ nodes. See also "http://red-bean.com/sgf/go.html#HAJsgf See also "http://red-bean.com/sgf/go.html#KMKsgf See also  . Each individual game may have at most one node with associated game info. If it has such a node, it must occur at the first node where that game is distinguishable from all of the other games in the tree.Msgf-The strength of the black player. See also .http://www.red-bean.com/sgf/properties.html#BRNsgf-The strength of the white player. See also .http://www.red-bean.com/sgf/properties.html#WROsgfWhen the game was played. An empty set indicates that no date information is available. See also .http://www.red-bean.com/sgf/properties.html#DTPsgfThe round number (for games played in a tournament). See also .http://www.red-bean.com/sgf/properties.html#ROQsgf+The ruleset used for this game. See also .http://www.red-bean.com/sgf/properties.html#RURsgf2The time limit of the game in seconds. See also .http://www.red-bean.com/sgf/properties.html#TMSsgfHow the game ended. See also .http://www.red-bean.com/sgf/properties.html#RETsgf3Miscellaneous properties with no prescribed format.UsgfCertain game types specify additional informational properties, which are stored here.Vsgf See also  . V nodes are distinct from _ nodes in that they need not correspond to any natural part of the game, and game rules (e.g. for capture) are not applied after executing V nodes. They can be used for any non-standard changes to the game board or to create illegal board positions. The locations specified in the addBlack, addWhite, and remove" fields must be pairwise disjoint.XsgfThis node adds the given black pieces to the board; if the board before this setup node had any pieces at the locations given by this field, they are overridden. See also .http://www.red-bean.com/sgf/properties.html#ABYsgfThis node adds the given white pieces to the board; if the board before this setup node had any pieces at the locations given by this field, they are overridden. See also .http://www.red-bean.com/sgf/properties.html#AWZsgfThis node specifies locations of the board to clear. See also .http://www.red-bean.com/sgf/properties.html#AE[sgf2Specify which player should move next. See also .http://www.red-bean.com/sgf/properties.html#PL\sgf See also   and  ._sgf See also  .asgfThe given move should be executed, whether it is illegal or not. See also the B and W properties at -http://www.red-bean.com/sgf/properties.html#Bbsgf When set to , the current move is acknowledged to be illegal. When set to ., the move may be legal or illegal. See also .http://www.red-bean.com/sgf/properties.html#KOcsgfWhen Just*, set the current move number. See also .http://www.red-bean.com/sgf/properties.html#MNdsgfAn annotation telling the quality of the current move. This annotation makes no bigger-picture positional judgments; for those, see 12. See also the BM, DO, IT, and TE properties at .http://www.red-bean.com/sgf/properties.html#BMesgfTime remaining, in seconds, for the black player after this move was made. See also .http://www.red-bean.com/sgf/properties.html#BLfsgfTime remaining, in seconds, for the white player after this move was made. See also .http://www.red-bean.com/sgf/properties.html#WLgsgfNumber of overtime moves left for the black player after this move was made. See also .http://www.red-bean.com/sgf/properties.html#OBhsgfNumber of overtime moves left for the white player after this move was made. See also .http://www.red-bean.com/sgf/properties.html#OWisgf See also &.jsgf6Unnamed figure using the application default settings.ksgf4Named figure using the application default settings.lsgf>Named figure that overrides the application's figure settings.msgf See also i.nsgf/Show coordinates around the edges of the board.osgfShow the diagram's name.psgf6List moves that can't be shown in the diagram as text.qsgf(Remove captured stones from the diagram.rsgfShow hoshi dots.ssgf See also K.zsgf See also F and *http://red-bean.com/sgf/backgammon.html#MI{sgf#The number of points in this match.|sgf5The (1-indexed) number of the game within this match.}sgf'The score at the beginning of the game.~sgf&An unknown piece of match information.sgf See also K.sgfOnly a round number is given.sgfBoth a round number and a type, like "final", "playoff", or "league".sgf'Round information in an unknown format.sgf See also K, especially the M and N fields. The Eq and Ord instances are the derived ones, and should not be mistaken for semantic equality or ordering.sgfRanked in one of the standard ways. Most SGF generators specify the certainty only when it is  Uncertain-. Therefore, it may be reasonable to treat Nothing and  Just Certain identically.sgfAny rank that does not fall in the standard categories. This field must not contain newlines.sgf See also K.sgf.The first argument is the color of the winner.sgf See also _.sgf See also . Games that end normally use Score if there is a natural concept of score differential for that game and  OtherWinType if not.sgf See also K. Typical values for the a type variable are , , and . For games where the valid values of the ruleset field is not specified, the a type variable will be 0 to ensure that all rulesets are specified as a .sgf See also .sgf See also .sgf See also , K, and $http://red-bean.com/sgf/octi.html#RUsgf See also , K, and *http://red-bean.com/sgf/backgammon.html#RUsgf The Crawford rule is being used.sgf This game is the Crawford game.sgfThe Jacoby rule is being used.sgf See also , K, and *http://red-bean.com/sgf/properties.html#RUsgfAmerican Go Association rulessgf Ing rulessgf See also &.sgfDon't print move numbers.sgfPrint move numbers as they are.sgfSubtract enough multiples of 100 from each move number that the first labeled move is below 100.sgf See also  and 'http://www.red-bean.com/sgf/hex.html#ISsgf+Identify future moves that have been tried?sgfShow good/bad move markings?sgfIdentify the last cell played?sgfDisplay column/row headings?sgf Lock the game against new moves?sgf See also K, especially the T field.sgf&See also the BT and WT properties at .http://www.red-bean.com/sgf/properties.html#BTsgf&See also the PB and PW properties at .http://www.red-bean.com/sgf/properties.html#PBsgf:The name of the person who annotated the game. See also .http://www.red-bean.com/sgf/properties.html#ANsgfThe name of the source, e.g. the title of the book this game came from. See also .http://www.red-bean.com/sgf/properties.html#SOsgfThe name of the person or program who entered the game. See also .http://www.red-bean.com/sgf/properties.html#USsgf See also .http://www.red-bean.com/sgf/properties.html#CPsgf?monpqrsvtuwxyijkl !$"#% _`abcdefghVWXYZ[12643578&'+)(*,-./KLPSQMNORTU \]^GHIJ0 Fz{|}~ ABCDE@9:;<=>?monpqrsvtuwxyijkl Safe-InferredWsgf$Warnings signify recoverable errors. Safe-Inferred2?\sgf7Types of properties, as given in the SGF specification.sgf4Technically, these properties have type "none" and  attribute "inherit", but the property index lists them as properties of type "inherit" with no attributes, so we follow that lead.sgfParse a  stream into an SGF collection. A collection is a list of games; the documentation for   has more details. There are generally two kinds of errors in SGF files: recoverable ones (which will be accumulated in the [] return) and unrecoverable ones (which will result in parse errors).sgfClip to a valid, representable date. Years are clipped to the 0000-9999 range; months are clipped to the 1-12 range, and days are clipped to the 1- range (accounting for leap years in the case of February).If a parsed date is changed by this function, a warning is emitted.sgf=<:;mrqponsyxwuvtiljk      ! ""#$%&''()*+,-./0112 34567789:;<=>>?@ABCCDEFFGHIJKLMNOPPQRSTUVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~XPF["sgf-0.1.3.3-2rsWWOovaN69TmaMZNjHz5Data.SGFData.SGF.ParseData.SGF.TypessgfData.SGF.Parse.EncodingsData.SGF.Parse.RawData.SGF.Parse.Utilparsec-3.1.16.1"Text.ParserCombinators.Parsec.Prim runParserPropertypositionnamevalues NodeOtherNodeOctiNodeHexNodeLinesOfActionNodeBackgammonNodeGoGameNodegameInfoaction annotationmarkupunknown TreeOtherTreeOctiTreeHexTreeLinesOfActionTreeBackgammonTreeGoGameTreeGame application variationTypesizetreeMarkupmarkslabelsarrowslinesdimvisible numberingfigure AnnotationGo AnnotationcommenthotspotvaluejudgmentotherAnnotation GameInfoOcti squaresWhite squaresBlackprongsreserve superProngs GameInfoHexGameInfoLinesOfActioninitialPositionLOA invertYAxisinitialPlacementGameInfoBackgammon GameInfoGohandicapkomiGameInfo rankBlack rankWhitedateroundruleSet timeLimitresultfreeform otherGameInfoSetupaddBlackaddWhiteremovetoPlayMoveGoPassPlayMovemoveillegalnumberquality timeBlack timeWhiteovertimeMovesBlackovertimeMovesWhiteFigure DefaultFigureNamedDefaultFigure NamedFigure FigureFlag CoordinatesName HiddenMovesRemoveCapturesHoshi PartialDateYearMonthDayyearmonthday MatchInfoLength GameNumber StartScoreOtherMatchInfoRound SimpleRoundFormattedRound OtherRoundRankRanked OtherRank GameResultDrawVoidUnknownWinQualityBadDoubtful InterestingGoodWinTypeScoreResignTimeForfeit OtherWinTypeRuleSetKnown OtherRuleSetMinorVariationEdgeless SuperprongOtherMinorVariationMajorVariationFullFastKids RuleSetOcti OctiRuleSetRuleSetBackgammonCrawford CrawfordGameJacoby RuleSetGoAGAGOEChineseJapanese NewZealand Numbering UnnumberedNumbered Modulo100 ViewerSettingTriedMarkedLastMoveHeadingsLock GameInfoTypeTeamName PlayerName AnnotatorSourceUser CopyrightContextLocationEventGameNameOpeningOvertimeMarkCircleXSelectedSquareTriangle VariationTypeChildrenSiblingsInitialPlacementStandard ScrambledEggs ParachuteGemmaCustomJudgment GoodForWhite GoodForBlackEvenUnclear RankScaleKyuDanProInitialPosition BeginningEnd Certainty UncertainCertainColorBlackWhiteEmphasisNormalStrong FuzzyBoolPossibly Definitely AutoMarkupPointVersion Application CollectionGameTypeGoOthelloChessGomokuNineMen'sMorris Backgammon ChineseChessShogi LinesOfActionAtaxxHexJungleNeutronPhilosopher'sFootball QuadratureTraxTantrixAmazonsOctiGessTwixtZertzPlateauYinshPunctGobbletHiveExxitHnefatalKubaTripplesChase TumblingDownSaharaByteFocusDvonnTamskGipfKropki emptyMove emptySetup emptyGameInfoemptyAnnotation emptyMarkup emptyGameNode$fOrdFUN$fEqFUN $fReadFUN $fShowFUN $fShowVoid $fReadVoid $fOrdVoid$fEqVoid$fEnumGameType$fBoundedGameInfoType$fEnumGameInfoType$fEnumFigureFlag$fEqGame $fShowGame $fReadGame $fEqGameTree$fShowGameTree$fReadGameTree $fEqGameNode $fOrdGameNode$fShowGameNode$fReadGameNode $fEqMarkup $fOrdMarkup $fShowMarkup $fReadMarkup$fEqAnnotation$fOrdAnnotation$fShowAnnotation$fReadAnnotation$fEqGameInfoOcti$fOrdGameInfoOcti$fShowGameInfoOcti$fReadGameInfoOcti$fEqGameInfoLinesOfAction$fOrdGameInfoLinesOfAction$fShowGameInfoLinesOfAction$fReadGameInfoLinesOfAction$fEqGameInfoGo$fOrdGameInfoGo$fShowGameInfoGo$fReadGameInfoGo $fEqGameInfo $fOrdGameInfo$fShowGameInfo$fReadGameInfo $fEqSetup $fOrdSetup $fShowSetup $fReadSetup $fEqMoveGo $fOrdMoveGo $fShowMoveGo $fReadMoveGo$fEqMove $fOrdMove $fShowMove $fReadMove $fEqFigure $fOrdFigure $fShowFigure $fReadFigure$fEqFigureFlag$fOrdFigureFlag$fShowFigureFlag$fReadFigureFlag$fBoundedFigureFlag$fEqPartialDate$fOrdPartialDate$fShowPartialDate$fReadPartialDate $fEqMatchInfo$fOrdMatchInfo$fShowMatchInfo$fReadMatchInfo $fEqRound $fOrdRound $fShowRound $fReadRound$fEqRank $fOrdRank $fShowRank $fReadRank$fEqGameResult$fOrdGameResult$fShowGameResult$fReadGameResult $fEqQuality $fOrdQuality $fShowQuality $fReadQuality $fEqWinType $fOrdWinType $fShowWinType $fReadWinType $fEqRuleSet $fOrdRuleSet $fShowRuleSet $fReadRuleSet$fEqRuleSetOcti$fOrdRuleSetOcti$fShowRuleSetOcti$fReadRuleSetOcti$fEqMinorVariation$fOrdMinorVariation$fShowMinorVariation$fReadMinorVariation$fEqMajorVariation$fOrdMajorVariation$fShowMajorVariation$fReadMajorVariation$fEnumMajorVariation$fBoundedMajorVariation$fEqRuleSetBackgammon$fOrdRuleSetBackgammon$fShowRuleSetBackgammon$fReadRuleSetBackgammon$fEnumRuleSetBackgammon$fBoundedRuleSetBackgammon $fEqRuleSetGo$fOrdRuleSetGo$fShowRuleSetGo$fReadRuleSetGo$fEnumRuleSetGo$fBoundedRuleSetGo $fEqNumbering$fOrdNumbering$fShowNumbering$fReadNumbering$fEnumNumbering$fBoundedNumbering$fEqViewerSetting$fOrdViewerSetting$fShowViewerSetting$fReadViewerSetting$fEnumViewerSetting$fBoundedViewerSetting$fEqGameInfoType$fOrdGameInfoType$fShowGameInfoType$fReadGameInfoType$fEqMark $fOrdMark $fShowMark $fReadMark $fEnumMark $fBoundedMark$fEqVariationType$fOrdVariationType$fShowVariationType$fReadVariationType$fEnumVariationType$fBoundedVariationType$fEqInitialPlacement$fOrdInitialPlacement$fShowInitialPlacement$fReadInitialPlacement$fEnumInitialPlacement$fBoundedInitialPlacement $fEqJudgment $fOrdJudgment$fShowJudgment$fReadJudgment$fEnumJudgment$fBoundedJudgment $fEqRankScale$fOrdRankScale$fShowRankScale$fReadRankScale$fEnumRankScale$fBoundedRankScale$fEqInitialPosition$fOrdInitialPosition$fShowInitialPosition$fReadInitialPosition$fEnumInitialPosition$fBoundedInitialPosition $fEqCertainty$fOrdCertainty$fShowCertainty$fReadCertainty$fEnumCertainty$fBoundedCertainty $fEqColor $fOrdColor $fShowColor $fReadColor $fEnumColor$fBoundedColor $fEqEmphasis $fOrdEmphasis$fShowEmphasis$fReadEmphasis$fEnumEmphasis$fBoundedEmphasis $fEqFuzzyBool$fOrdFuzzyBool$fShowFuzzyBool$fReadFuzzyBool$fEnumFuzzyBool$fBoundedFuzzyBool $fEqGameType $fOrdGameType$fBoundedGameType$fShowGameType$fReadGameTypeWarningDuplicatePropertyOmittedSquareSizeSpecifiedAsRectangleDanglingEscapeCharacterOmittedPropValueForNonePropertyOmittedUnknownPropertyPreservedPointSpecifiedAsPointRangeDuplicatePointsOmittedInvalidDatesClippedAnnotationWithNoMoveOmittedExtraGameInfoOmittedNestedRootPropertyOmittedMovelessAnnotationOmittedDuplicateSetupOperationsOmittedExtraPositionalJudgmentOmittedDuplicateMarkupOmittedExtraPropertyValuesOmittedDuplicateLabelOmittedUnknownNumberingIgnoredError KnownError UnknownError errorType errorPositionerrorDescription ErrorTypeUnknownEncodingAmbiguousEncodingFormatUnsupportedGameUnsupported OutOfBoundsBadlyFormattedValueBadlyEncodedValueConcurrentMoveAndSetupConcurrentBlackAndWhiteMoveConcurrentAnnotationsExtraMoveAnnotations PropertyTypeRootInheritNone collectionclipDate propertiesextraProperties$fMonadFailEither$fEqPropertyType$fOrdPropertyType$fShowPropertyType$fReadPropertyType$fEnumPropertyType$fBoundedPropertyType guessEncodingdecodeWordStringExplicit%encoding-0.8.9-1uTyTN0RSBOCssLz75M6hQData.Encoding.BasedecodeenumbaseGHC.WordWord8ghc-prim GHC.TypesCharTrue GHC.MaybeNothingFalseGHC.BaseString PTranslator TranslatorStateHeaderformatencodingdie dieWithPosdieWith dieWithJusttransMap transMapMulti transMap' transMapList duplicatesOnduplicateProperties duplicates readNumbernewlinetrimdescapedecodeAndDescape splitColons splitColonwarnAboutDuplicatePointscheckPointListhashasAnyconsume consumeSingleunknownPropertiesrealsimpletextnonechoicechoice'doublecolorcomposelistOfelistOfmayBeCompoundPoint listOfPoint elistOfPointWordWord64Word32Word16 byteSwap16 byteSwap32 byteSwap64 bitReverse8 bitReverse16 bitReverse32 bitReverse64containers-0.6.7 Data.TreeForestTree subForestNode rootLabeldrawTree drawForestflattenlevelsfoldTree unfoldTree unfoldForest unfoldTreeM unfoldForestMunfoldTreeM_BFunfoldForestM_BF