(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     43680,       1133]
NotebookOptionsPosition[     34455,        963]
NotebookOutlinePosition[     36735,       1015]
CellTagsIndexPosition[     36657,       1010]
WindowTitle->CandidateFingerprint
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "e38bc9c9-dbcf-47b8-9d2f-0881da244c79"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "d8e8d9bc-3b85-438e-bfbe-d620ab22599a"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "3b0adf1f-5f0e-4468-afd5-169d414aa08b"]
         }],ExpressionUUID->"af073108-d013-4bab-81d6-b688222c278d"],
         StripOnInput->False],{
        StyleBox["\"Hash\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/Hash"], 
         StyleBox[
          "\"StringToByteArray\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/StringToByteArray"], Delimiter, 
         StyleBox[
          "\"Functions\"", "SeeAlsoSection", FontSize -> 14, FontSlant -> 
           "Italic", StripOnInput -> False] :> 
         NotebookFind[EvaluationNotebook[], "SeeAlsoSection", All, CellStyle],
          StyleBox[
          StyleBox[
           "\"SearchLedger\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SearchLedger"], 
         StyleBox[
          StyleBox[
           "\"SearchLedgerRecord\"", "SeeAlsoRelated", StripOnInput -> False],
            "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SearchLedgerRecord"], 
         StyleBox[
          StyleBox[
           "\"SearchLedgerTestedQ\"", "SeeAlsoRelated", StripOnInput -> 
            False], "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SearchLedgerTestedQ"], 
         StyleBox[
          StyleBox[
           "\"SearchLedgerFilter\"", "SeeAlsoRelated", StripOnInput -> False],
            "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SearchLedgerFilter"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "d1a69cdf-a485-4b53-afed-ae1aecea9c02"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "431384b1-2d61-45ad-b906-d6fde6ad4fa6"]
         }],ExpressionUUID->"61f65ff0-253f-4fe7-874c-a97e5921bea1"],
         StripOnInput->False],{
        "\"Search\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Search"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "419eb4b4-3e34-47f8-87a9-beecb33c7e0c"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "URL",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "7a21249b-5a34-4d0d-a946-580678d222ce"]
         }],ExpressionUUID->"22c2cc17-cc1d-4de7-8890-dc8987b15dd2"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/CandidateFingerprint\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/CandidateFingerprint"],
          Delimiter, "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/CandidateFingerprint.html"], StandardForm]], "Input", 
                 TextClipboardType -> "PlainText"]}, Visible -> False]]; 
           SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
           FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
           NotebookClose[DocumentationSearch`Private`nb$]; Null], 
         "\"Go to web URL\"" :> 
         FrontEndExecute[{
           NotebookLocate[{
             URL[If[TrueQ[False], 
                 "http://reference.wolfram.com/system-modeler/", 
                 "http://reference.wolfram.com/language/"] <> 
               "WolframInstitute/Puzzles/ref/CandidateFingerprint" <> 
               ".html"], None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "218f34c4-bf2b-4e03-8503-0fd3a3236fb3"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "89fe47c5-6f64-43a2-8a8e-4c5615e1ea44"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"f64421d2-ea52-4f82-a1df-07342aa0d51d"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"2f0883cd-a21a-4989-b9d5-bb0d0b0c35bb"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "CandidateFingerprint", "ObjectName",ExpressionUUID->
      "d432764c-5855-4eb3-a510-b8985787e8ed"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"21615318-b47f-401f-9ef5-d1bfc7fe7132"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "d3a0a2ec-5c10-49a3-b3d2-9ed532cf952f"]
    }],ExpressionUUID->"7196b5be-cb43-44b6-9f7a-e5ee5f5fe48e"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"c7eacfd7-287d-4bdc-b931-\
86ca5b0f6133"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["CandidateFingerprint"]], 
         "paclet:WolframInstitute/Puzzles/ref/CandidateFingerprint", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], 
       "[", "\"\<\!\(\*StyleBox[\"candidate\", \"TI\"]\)\>\"", "]"}]], 
      "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "4165adaf-5f50-4911-8f6e-e0169bbd191c"],
     "\[LineSeparator]",
     "gives the lowercase hexadecimal SHA-256 digest of the UTF-8 bytes of \
the string."
    }],ExpressionUUID->"468a29b8-7fbf-4878-afe5-946a9f2d548f"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["CandidateFingerprint"]], 
         "paclet:WolframInstitute/Puzzles/ref/CandidateFingerprint", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["bytes", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "f6909f6d-c7e4-447a-8387-3d04ebc042af"],
     "\[LineSeparator]",
     "gives the SHA-256 digest of a ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["ByteArray"]], "paclet:ref/ByteArray"},
       "RefLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "7f73e554-5706-4a5d-83b5-3dc43f5cba66"],
     "."
    }],ExpressionUUID->"cf82a2ab-dc42-49e7-9830-e3a2d154b792"]}
  }]], "Usage",ExpressionUUID->"24fd70f1-863b-4860-afdf-5c2dcbc8aa0f"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"2560832c-5304-4fb7-962e-03e0cafa76fc"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"69c5131f-1ccf-4b6c-ae92-cb7230003d1f"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "90480a44-7e1a-4f6a-a3a3-7b32eb77f9c1"]],ExpressionUUID->"f38e79b3-2365-\
48a9-aa58-36146fee1f95"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->1796395233,ExpressionUUID->"62dd1343-003b-4723-9c5f-5d4802a126b4"],

Cell["The result is a 64-character lowercase hexadecimal string.", "Notes",ExpressionUUID->"22b05fa1-1a5d-46fd-b386-5f948373f04b"],

Cell[TextData[{
 "A string is hashed as its UTF-8 bytes, so the digest of a string equals the \
digest of the byte array ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["StringToByteArray"]], "paclet:ref/StringToByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "bb076815-f21e-4af9-802c-1e2365ead3ec"],
 " gives for it, and equals what ",
 Cell[BoxData["sha256sum"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "ec5f3df0-ea23-4485-8d5a-cacedc04c410"],
 " and every other tool reports for the same text."
}], "Notes",ExpressionUUID->"b676daa5-b07a-4954-9a63-a81ba023ef80"],

Cell["\<\
The full digest is kept rather than a truncation: a truncated content address \
can collide, and a collision in a search ledger silently skips a candidate \
that was never tested.\
\>", "Notes",ExpressionUUID->"ac270e33-97f2-4db9-b8ba-12ffa6ff7643"],

Cell["\<\
Only strings and byte arrays are fingerprinted. Any other candidate has no \
canonical byte serialisation, so it matches no definition and the call is \
returned unevaluated.\
\>", "Notes",ExpressionUUID->"7c746710-0afa-4dc5-b06a-624206b0c5f7"],

Cell[TextData[{
 "This is the content address the ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SearchLedger"]], 
    "paclet:WolframInstitute/Puzzles/ref/SearchLedger", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "0efaf65a-8167-440e-9535-b32ff058ffba"],
 " stores. Recording a candidate stores its fingerprint, never the candidate, \
so a ledger can be shared without disclosing what was tried."
}], "Notes",ExpressionUUID->"594cc409-1ec2-4cdc-9f5c-41e8814c3458"],

Cell["\<\
A fingerprint costs about a quarter of a millisecond, which is what sets the \
ceiling on a ledger-backed sweep. A sweep with no ledger runs orders of \
magnitude faster.\
\>", "Notes",ExpressionUUID->"e1c60d6b-0cc5-41f4-8f34-73212d080c62"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"285f8e3e-e056-4faa-a3f1-270e61816c56"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"29395df9-1ad4-42f4-9e27-80e1c6940f16"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"511aad36-50a7-49c7-bce9-d7d3baddaaa8"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(11)", "ExampleCount",ExpressionUUID->
  "f0e2ee22-51e8-4a6c-99de-93410006735a"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->542087858,ExpressionUUID->"4f77cb28-7f9d-45ea-b968-c6f3c66ffdbb"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"c80426db-a287-46f1-bc60-e0bdde3fe7a1"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "ccbbf1f9-2136-49dc-84b5-185e0dcf1381"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"d51c56f9-9e4f-48c6-858c-2ffd24e25df1"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "dcd7ed33-fcf8-430d-93d6-201179221be0"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1244998832,ExpressionUUID->"ddb7591f-cace-43db-9a59-66a89bd67b0b"],

Cell["The digest of a passphrase:", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"e8b3dd1f-2109-4eed-ad81-543bfabf0b01"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", "\"\<correct horse battery staple\>\"", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"0202f25a-3b02-421b-924c-520d7e2a8c30"],

Cell[BoxData["\<\"\
c4bbcb1fbec99d65bf59d85c8cb62ee2db963f0fe106f483d9afa73bd4e39a8a\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"6a5d4b32-0412-436b-8a66-408622408262"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "5d546317-3b60-41a2-bbd9-a089d55555a1"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"5cf05525-1a78-4755-\
b28f-5cbe3b95e64a"],

Cell["The NIST FIPS 180-4 one-block example message:", "ExampleText",ExpressionUUID->"29ca18f8-34c7-4aaa-8c66-bc63b0734c92"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", "\"\<abc\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"9424e417-350e-457d-afb0-8c374f577c40"],

Cell[BoxData["\<\"\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d947efbe-0468-4301-9dba-1971d2a9e1fc"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "5916205e-fb18-45bf-bf22-6a663e1c0da8"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"60a63721-6220-485d-\
b51e-63f0e6035195"],

Cell["A byte array is hashed as its bytes:", "ExampleText",ExpressionUUID->"5d01a09e-e2bf-4e0b-a3b5-b7170a5ecc0b"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", 
  RowBox[{"ByteArray", "[", 
   RowBox[{"{", 
    RowBox[{"16^^61", ",", " ", "16^^62", ",", " ", "16^^63"}], "}"}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"46e34d39-ef18-4b12-b168-f828f4a35e11"],

Cell[BoxData["\<\"\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"43b7baa8-1792-4e10-9504-ef1c91d1c8e4"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "26f629df-d903-4e90-a29f-03dbbd65d399"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"e9286d84-582f-43b4-9350-50122b603a92"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "ee156ddd-8231-434f-9ced-43ae02a7c740"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"7c44a4e7-d6a2-4ff5-83ca-8fb88e15a170"],

Cell["\<\
The empty string has the digest the NIST test vectors give for the \
zero-length message:\
\>", "ExampleText",ExpressionUUID->"882527d8-0d30-4f47-b6e3-5d3db8fa72eb"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", "\"\<\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"b4706d0a-a204-4ee5-9a99-2d0d10c5a3d0"],

Cell[BoxData["\<\"\
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"172bd4ed-3da1-498c-85b4-f0e328099151"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "47e2ac30-a320-4492-b1df-c156be8a9047"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"a4c7963d-1bf3-4981-\
a328-966a79b0c3a9"],

Cell["The NIST FIPS 180-4 two-block example message:", "ExampleText",ExpressionUUID->"7401ff17-9433-4ed5-96e5-cdbae2336108"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", 
  "[", "\"\<abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\>\"", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"371595ac-4baa-4d72-883d-d209621c1824"],

Cell[BoxData["\<\"\
248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"313f8371-6e64-4244-8f4f-e066eb828e34"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "c21eb311-9092-40ee-880d-4b5308c08fe1"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"3762b0e4-4130-4664-\
9014-e12e6d56e768"],

Cell["\<\
A long message is hashed as fast as a short one, to within the cost of the \
bytes:\
\>", "ExampleText",ExpressionUUID->"4f19f023-8e67-4911-8600-273d18f15ab5"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", 
  RowBox[{"StringRepeat", "[", 
   RowBox[{"\"\<a\>\"", ",", " ", "1000000"}], "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"ad13df0f-3297-43f3-aad3-f3c2d28e10cd"],

Cell[BoxData["\<\"\
cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"270bbf61-6765-4ab2-871b-a918d379a166"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "39662586-532c-498a-bf3f-1f893cc77a83"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"41b33c73-fc9a-4a6a-9599-4d60cc9842c2"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "ed495d35-d032-4352-bde1-7d36101def66"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"5aaa7b3f-a6c4-4f44-bd68-48bf58f47021"],

Cell["A string is fingerprinted as its UTF-8 bytes:", "ExampleText",ExpressionUUID->"2a5420ba-8bd7-4f5b-ac86-a3f6270e52c2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"CandidateFingerprint", "[", "\"\<caf\[EAcute]\>\"", "]"}], " ", "===",
   " ", 
  RowBox[{"CandidateFingerprint", "[", 
   RowBox[{"StringToByteArray", "[", 
    RowBox[{"\"\<caf\[EAcute]\>\"", ",", " ", "\"\<UTF-8\>\""}], "]"}], 
   "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"4faf1ca8-07cb-437a-8e9f-404e2acbaf25"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"c4c73d49-4bfe-4a26-8bb9-4c897915e8d7"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "10aee1da-500e-4324-8fd5-f62b8865b6de"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"7cd0c033-7f46-456c-\
97f7-0ff17410e961"],

Cell[TextData[{
 "It agrees with the kernel's ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Hash"]], "paclet:ref/Hash"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "82229c95-5709-4519-bdea-60dadd71799d"],
 " in its SHA-256 hexadecimal form:"
}], "ExampleText",ExpressionUUID->"b9017fea-6be6-48c8-a9af-257913827636"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"CandidateFingerprint", "[", "\"\<abc\>\"", "]"}], " ", "===", " ", 
  
  RowBox[{"Hash", "[", 
   RowBox[{"\"\<abc\>\"", ",", " ", "\"\<SHA256\>\"", ",", 
    " ", "\"\<HexString\>\""}], "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"21cd139d-8b9e-44f2-bfe5-36d91cda6c75"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a4f21445-e9c4-4b97-96f8-5623ee71b855"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "910ffd08-3eb3-40cd-ba81-26967212176f"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"01082b20-7d12-4884-\
86c9-d8fa7fb3b5e1"],

Cell[TextData[{
 "Two spellings of the same accented text have different fingerprints, which \
is the reason ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["TextVariants"]], 
    "paclet:WolframInstitute/Puzzles/ref/TextVariants", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "d202b738-33ba-457a-94b6-ba7362dd55c6"],
 " exists:"
}], "ExampleText",ExpressionUUID->"18a7db95-ec83-494a-945b-210a854531f4"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"SameQ", " ", "@@", " ", 
  RowBox[{"Map", "[", 
   RowBox[{"CandidateFingerprint", ",", " ", 
    RowBox[{"TextVariants", "[", 
     RowBox[{
      RowBox[{"FromCharacterCode", "[", 
       RowBox[{"{", 
        RowBox[{
        "16^^0063", ",", " ", "16^^0061", ",", " ", "16^^0066", ",", " ", 
         "16^^00E9"}], "}"}], "]"}], ",", " ", 
      RowBox[{"{", "\"\<Normalization\>\"", "}"}]}], "]"}]}], 
   "]"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"620fa6ee-5356-4994-9d0e-8c7b6665e42e"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"ebac705a-14ff-40f6-bfc2-ed1094db8217"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "9d09f310-d0e3-40c4-b1f8-647187d8862d"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"8b746e13-d5ec-4d44-b442-c3f8eac70638"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "6d77230a-d752-4311-9bd0-eb262f60bda8"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"815e897e-258a-4148-83e8-44816e43334c"],

Cell["\<\
A candidate with no canonical byte serialisation is out of scope, and the \
call comes back unevaluated:\
\>", "ExampleText",ExpressionUUID->"8b746911-823e-46fe-8d38-da6e4d27d434"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", "12345", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5e80e6e8-f668-4856-a193-e5cafbc0a901"],

Cell[BoxData[
 RowBox[{"CandidateFingerprint", "[", "12345", "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"1176c9a8-2544-4d03-821c-cc6c1fcabd9f"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "bd60debf-0f22-41e2-8a42-dc09d75a8bfc"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"47d63956-d5db-477b-\
8f9a-440dc8e85a05"],

Cell["\<\
A list of candidates is not a candidate; fingerprint them one at a time:\
\>", "ExampleText",ExpressionUUID->"c9ce6e5c-e226-4953-888d-9de57169ace3"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Map", "[", 
  RowBox[{"CandidateFingerprint", ",", " ", 
   RowBox[{"{", 
    RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\""}], "}"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"8818aa2a-d7cc-4df5-b7a9-372087dde5c8"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"\
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb\"\>", 
   ",", "\<\"3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d\
\"\>"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"187f1e03-1e9b-41eb-92ad-9ed5fddf53f3"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]],
     ImageSizeCache->{50., {26.47265625, 33.52734375}}], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SearchLedger"]], 
           "paclet:WolframInstitute/Puzzles/ref/SearchLedger", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "0ad674a9-8adf-4d92-8253-92097686dfd0"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SearchLedgerRecord"]], 
           "paclet:WolframInstitute/Puzzles/ref/SearchLedgerRecord", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "00236d48-82a7-420c-8698-8cd00908b057"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SearchLedgerTestedQ"]], 
           "paclet:WolframInstitute/Puzzles/ref/SearchLedgerTestedQ", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "df077790-c39d-4915-85a2-8aaee4ca0a7a"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SearchLedgerFilter"]], 
           "paclet:WolframInstitute/Puzzles/ref/SearchLedgerFilter", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "b2045da0-b414-4cd9-b20b-1c87d6f7f4bb"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Hash"]], "paclet:ref/Hash"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "7a18e757-bbd9-4960-9d18-1bc15c2fd40f"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["StringToByteArray"]], "paclet:ref/StringToByteArray"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "97f9fc74-aab1-4d6f-9c09-3794f6e3951a"]
       }], "SeeAlso",ExpressionUUID->"00baf1cc-3fa7-4df0-a81e-1837369f8b21"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"9905317d-a09a-4d37-a953-\
5847db74de9c"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, "RelatedGuide.png"]],
     ImageSizeCache->{50., {26.47265625, 33.52734375}}], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Search"]], 
           "paclet:WolframInstitute/Puzzles/guide/Search"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "06342c3b-8331-41ee-86fb-aec742f47201"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"c2a0d045-70eb-4bd3-8c91-\
b38d70fb028c"],

Cell[" ", "FooterCell",ExpressionUUID->"66789300-7d21-4ecd-98d7-9c67797cf9bc"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"CandidateFingerprint",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 37.236123}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[CandidateFingerprint, paclet : \
WolframInstitute/Puzzles/ref/CandidateFingerprint, WolframInstitute/Puzzles \
Package Symbol][candidate] gives the lowercase hexadecimal SHA-256 digest of \
the UTF-8 bytes of the string. PackageLink[CandidateFingerprint, paclet : \
WolframInstitute/Puzzles/ref/CandidateFingerprint, WolframInstitute/Puzzles \
Package Symbol][bytes] gives the SHA-256 digest of a ByteArray.", 
    "synonyms" -> {}, "tabletags" -> {}, "title" -> "CandidateFingerprint", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> 
    "CandidateFingerprint", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/CandidateFingerprint", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"bd964cda-9397-4a34-98b0-c987d502cf62"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[16334, 429, 137, 2, 70, "ExampleText",ExpressionUUID->"e8b3dd1f-2109-4eed-ad81-543bfabf0b01",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 36500, 1004}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[588, 21, 6493, 156, 70, "AnchorBarGrid",ExpressionUUID->"f64421d2-ea52-4f82-a1df-07342aa0d51d",
 CellID->1],
Cell[7084, 179, 107, 0, 70, "ContextNameCell",ExpressionUUID->"2f0883cd-a21a-4989-b9d5-bb0d0b0c35bb"],
Cell[CellGroupData[{
Cell[7216, 183, 563, 14, 70, "ObjectNameGrid",ExpressionUUID->"c7eacfd7-287d-4bdc-b931-86ca5b0f6133"],
Cell[7782, 199, 1791, 47, 70, "Usage",ExpressionUUID->"24fd70f1-863b-4860-afdf-5c2dcbc8aa0f"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9610, 251, 1444, 34, 70, "NotesSection",ExpressionUUID->"62dd1343-003b-4723-9c5f-5d4802a126b4",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->1796395233],
Cell[11057, 287, 130, 0, 70, "Notes",ExpressionUUID->"22b05fa1-1a5d-46fd-b386-5f948373f04b"],
Cell[11190, 289, 737, 18, 70, "Notes",ExpressionUUID->"b676daa5-b07a-4954-9a63-a81ba023ef80"],
Cell[11930, 309, 259, 4, 70, "Notes",ExpressionUUID->"ac270e33-97f2-4db9-b8ba-12ffa6ff7643"],
Cell[12192, 315, 254, 4, 70, "Notes",ExpressionUUID->"7c746710-0afa-4dc5-b06a-624206b0c5f7"],
Cell[12449, 321, 628, 15, 70, "Notes",ExpressionUUID->"594cc409-1ec2-4cdc-9f5c-41e8814c3458"],
Cell[13080, 338, 250, 4, 70, "Notes",ExpressionUUID->"e1c60d6b-0cc5-41f4-8f34-73212d080c62"]
}, Closed]],
Cell[13345, 345, 80, 0, 70, "PageDelimiter",ExpressionUUID->"285f8e3e-e056-4faa-a3f1-270e61816c56"],
Cell[CellGroupData[{
Cell[13450, 349, 1401, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"4f77cb28-7f9d-45ea-b968-c6f3c66ffdbb",
 CellID->542087858],
Cell[14854, 388, 216, 4, 70, "Input",ExpressionUUID->"c80426db-a287-46f1-bc60-e0bdde3fe7a1",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[15095, 396, 1236, 31, 70, "ExampleSection",ExpressionUUID->"ddb7591f-cace-43db-9a59-66a89bd67b0b",
 CellID->1244998832],
Cell[16334, 429, 137, 2, 70, "ExampleText",ExpressionUUID->"e8b3dd1f-2109-4eed-ad81-543bfabf0b01",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[16496, 435, 238, 4, 70, "Input",ExpressionUUID->"0202f25a-3b02-421b-924c-520d7e2a8c30"],
Cell[16737, 441, 182, 3, 70, "Output",ExpressionUUID->"6a5d4b32-0412-436b-8a66-408622408262"]
}, Open  ]],
Cell[CellGroupData[{
Cell[16956, 449, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"5cf05525-1a78-4755-b28f-5cbe3b95e64a"],
Cell[17183, 456, 124, 0, 70, "ExampleText",ExpressionUUID->"29ca18f8-34c7-4aaa-8c66-bc63b0734c92"],
Cell[CellGroupData[{
Cell[17332, 460, 210, 3, 70, "Input",ExpressionUUID->"9424e417-350e-457d-afb0-8c374f577c40"],
Cell[17545, 465, 182, 3, 70, "Output",ExpressionUUID->"d947efbe-0468-4301-9dba-1971d2a9e1fc"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[17776, 474, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"60a63721-6220-485d-b51e-63f0e6035195"],
Cell[18003, 481, 114, 0, 70, "ExampleText",ExpressionUUID->"5d01a09e-e2bf-4e0b-a3b5-b7170a5ecc0b"],
Cell[CellGroupData[{
Cell[18142, 485, 323, 7, 70, "Input",ExpressionUUID->"46e34d39-ef18-4b12-b168-f828f4a35e11"],
Cell[18468, 494, 182, 3, 70, "Output",ExpressionUUID->"43b7baa8-1792-4e10-9504-ef1c91d1c8e4"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[18711, 504, 1227, 31, 70, "ExampleSection",ExpressionUUID->"7c44a4e7-d6a2-4ff5-83ca-8fb88e15a170",
 CellID->1293636265],
Cell[19941, 537, 175, 3, 70, "ExampleText",ExpressionUUID->"882527d8-0d30-4f47-b6e3-5d3db8fa72eb"],
Cell[CellGroupData[{
Cell[20141, 544, 207, 3, 70, "Input",ExpressionUUID->"b4706d0a-a204-4ee5-9a99-2d0d10c5a3d0"],
Cell[20351, 549, 182, 3, 70, "Output",ExpressionUUID->"172bd4ed-3da1-498c-85b4-f0e328099151"]
}, Open  ]],
Cell[CellGroupData[{
Cell[20570, 557, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"a4c7963d-1bf3-4981-a328-966a79b0c3a9"],
Cell[20797, 564, 124, 0, 70, "ExampleText",ExpressionUUID->"7401ff17-9433-4ed5-96e5-cdbae2336108"],
Cell[CellGroupData[{
Cell[20946, 568, 269, 5, 70, "Input",ExpressionUUID->"371595ac-4baa-4d72-883d-d209621c1824"],
Cell[21218, 575, 182, 3, 70, "Output",ExpressionUUID->"313f8371-6e64-4244-8f4f-e066eb828e34"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[21449, 584, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"3762b0e4-4130-4664-9014-e12e6d56e768"],
Cell[21676, 591, 169, 3, 70, "ExampleText",ExpressionUUID->"4f19f023-8e67-4911-8600-273d18f15ab5"],
Cell[CellGroupData[{
Cell[21870, 598, 282, 5, 70, "Input",ExpressionUUID->"ad13df0f-3297-43f3-aad3-f3c2d28e10cd"],
Cell[22155, 605, 182, 3, 70, "Output",ExpressionUUID->"270bbf61-6765-4ab2-871b-a918d379a166"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[22398, 615, 1244, 31, 70, "ExampleSection",ExpressionUUID->"5aaa7b3f-a6c4-4f44-bd68-48bf58f47021",
 CellID->2123667759],
Cell[23645, 648, 123, 0, 70, "ExampleText",ExpressionUUID->"2a5420ba-8bd7-4f5b-ac86-a3f6270e52c2"],
Cell[CellGroupData[{
Cell[23793, 652, 414, 9, 70, "Input",ExpressionUUID->"4faf1ca8-07cb-437a-8e9f-404e2acbaf25"],
Cell[24210, 663, 110, 1, 70, "Output",ExpressionUUID->"c4c73d49-4bfe-4a26-8bb9-4c897915e8d7"]
}, Open  ]],
Cell[CellGroupData[{
Cell[24357, 669, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"7cd0c033-7f46-456c-97f7-0ff17410e961"],
Cell[24584, 676, 427, 12, 70, "ExampleText",ExpressionUUID->"b9017fea-6be6-48c8-a9af-257913827636"],
Cell[CellGroupData[{
Cell[25036, 692, 367, 8, 70, "Input",ExpressionUUID->"21cd139d-8b9e-44f2-bfe5-36d91cda6c75"],
Cell[25406, 702, 110, 1, 70, "Output",ExpressionUUID->"a4f21445-e9c4-4b97-96f8-5623ee71b855"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[25565, 709, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"01082b20-7d12-4884-86c9-d8fa7fb3b5e1"],
Cell[25792, 716, 563, 15, 70, "ExampleText",ExpressionUUID->"18a7db95-ec83-494a-945b-210a854531f4"],
Cell[CellGroupData[{
Cell[26380, 735, 579, 14, 70, "Input",ExpressionUUID->"620fa6ee-5356-4994-9d0e-8c7b6665e42e"],
Cell[26962, 751, 111, 1, 70, "Output",ExpressionUUID->"ebac705a-14ff-40f6-bfc2-ed1094db8217"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[27134, 759, 1237, 31, 70, "ExampleSection",ExpressionUUID->"815e897e-258a-4148-83e8-44816e43334c",
 CellID->1305812373],
Cell[28374, 792, 190, 3, 70, "ExampleText",ExpressionUUID->"8b746911-823e-46fe-8d38-da6e4d27d434"],
Cell[CellGroupData[{
Cell[28589, 799, 204, 3, 70, "Input",ExpressionUUID->"5e80e6e8-f668-4856-a193-e5cafbc0a901"],
Cell[28796, 804, 157, 2, 70, "Output",ExpressionUUID->"1176c9a8-2544-4d03-821c-cc6c1fcabd9f"]
}, Open  ]],
Cell[CellGroupData[{
Cell[28990, 811, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"47d63956-d5db-477b-8f9a-440dc8e85a05"],
Cell[29217, 818, 158, 2, 70, "ExampleText",ExpressionUUID->"c9ce6e5c-e226-4953-888d-9de57169ace3"],
Cell[CellGroupData[{
Cell[29400, 824, 300, 6, 70, "Input",ExpressionUUID->"8818aa2a-d7cc-4df5-b7a9-372087dde5c8"],
Cell[29703, 832, 302, 6, 70, "Output",ExpressionUUID->"187f1e03-1e9b-41eb-92ad-9ed5fddf53f3"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[30056, 844, 3571, 94, 70, "SeeAlsoSection",ExpressionUUID->"9905317d-a09a-4d37-a953-5847db74de9c"],
Cell[33630, 940, 740, 19, 70, "MoreAboutSection",ExpressionUUID->"c2a0d045-70eb-4bd3-8c91-b38d70fb028c"],
Cell[34373, 961, 78, 0, 70, "FooterCell",ExpressionUUID->"66789300-7d21-4ecd-98d7-9c67797cf9bc"]
}
]
*)

(* End of internal cache information *)

