(* 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[     38802,       1032]
NotebookOptionsPosition[     30923,        883]
NotebookOutlinePosition[     32965,        932]
CellTagsIndexPosition[     32888,        927]
WindowTitle->Secp256k1PointQ
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->
           "5f7f0933-14c2-46b9-81c0-18c7093cea25"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "7677a045-d767-4004-b583-496d8bb7a237"],
        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->
           "4a23a440-1e24-40be-9dc7-f88792dab8c0"]
         }],ExpressionUUID->"ed972450-3480-4d55-9ded-956d9a8a41f4"],
         StripOnInput->False],{
        StyleBox[
          "\"Secp256k1Point\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1Point"], 
         StyleBox[
          "\"Secp256k1PointAdd\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointAdd"], 
         StyleBox[
          "\"Secp256k1PointEncode\"", "SeeAlsoRelated", StripOnInput -> 
           False] :> Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointEncode"], 
         StyleBox[
          "\"Secp256k1PublicKey\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "b479bc66-c0f5-4c0f-af54-29fdea8e56cc"],
     "\[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->
           "fdf443b6-815a-4e5a-a226-268b4100a584"]
         }],ExpressionUUID->"4cd61c80-1c9f-4a6a-8af7-fa07417809a1"],
         StripOnInput->False],{
        "\"Derivation\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Derivation"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "6df4c1c6-0768-45eb-8b3d-2f8bf803518c"],
     "\[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->
           "872761ae-26e3-45fc-8675-07c8f284f023"]
         }],ExpressionUUID->"cc4d706e-430e-4ebb-9348-c3e9188e5d03"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/Secp256k1PointQ\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/Secp256k1PointQ"], 
         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/Secp256k1PointQ.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/Secp256k1PointQ" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "bc151d45-23ea-405f-9366-295414d9c7d8"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "056d84ae-bf8f-4c36-a10c-08f08b124130"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"83eae33e-aecb-4acd-8826-fb2fffb3e692"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"f3683771-ecd7-4df8-be10-5a1339e9fbb4"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "Secp256k1PointQ", "ObjectName",ExpressionUUID->
      "31c4cd0b-1129-40d0-9137-554773ec7cdf"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"9565d044-9b24-400e-86ff-a37d437d804c"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "b0390f5e-9e3a-4d9a-a197-2dce54d0f0d9"]
    }],ExpressionUUID->"61731c7d-6156-4849-986b-8407defb1971"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"d26d367f-ec5d-4e11-9d48-\
27e68bbbcd0e"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["Secp256k1PointQ"]], 
         "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointQ", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["pt", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "bf62da31-f069-4848-8355-6ec624816206"],
     "\[LineSeparator]",
     "gives ",
     Cell[BoxData["True"], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "1ca3bb07-c0c5-4a9b-a4e9-4879261b8c39"],
     " if ",
     StyleBox["pt", "TI"],
     " is a point of the secp256k1 group, and ",
     Cell[BoxData["False"], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "256c163b-4c26-4d04-af16-c3bd46d00929"],
     " otherwise."
    }],ExpressionUUID->"65cdcdab-eb23-4017-a2d1-b15b16e7d0ea"]}
  }]], "Usage",ExpressionUUID->"8ab9ad77-c497-4dc6-8afe-4670f64cecb4"]
}, 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->"c54f3165-3097-4920-a5ce-f6abb10e6d79"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"e8b080ce-1c33-4bef-b59e-6d1286e54a35"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "5def00c9-c4bd-47f8-9cc2-eb31776e5ba4"]],ExpressionUUID->"b638c9ce-bbcd-\
4368-bc57-7727cac17a62"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->759404028,ExpressionUUID->"bf75c6a6-1d6d-4002-94c1-3a3c5ed6efaf"],

Cell[TextData[{
 "A point is a coordinate pair ",
 Cell[BoxData[
  RowBox[{
   RowBox[{"{", 
    StyleBox["x", "TI"]}], ",", 
   RowBox[{
    StyleBox["y", "TI"], "}"}]}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3c171030-eb17-414b-b2a1-52d30fe70ad7"],
 " of integers with ",
 Cell[BoxData[
  RowBox[{
   RowBox[{"0", "\[LessEqual]", 
    StyleBox["x", "TI"]}], ",", 
   RowBox[{
    StyleBox["y", "TI"], "<", 
    StyleBox["p", "TI"]}]}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "9a30a21f-6002-472d-bb5a-58c76b8a3586"],
 " satisfying ",
 Cell[BoxData[
  RowBox[{
   SuperscriptBox[
    StyleBox["y", "TI"], "2"], "=", 
   SuperscriptBox[
    StyleBox["x", "TI"], "3"], "+", "7"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a3ce7bc8-2e98-4252-b624-62578901e6ba"],
 " modulo ",
 Cell[BoxData[
  StyleBox["p", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6ccd483b-28f9-4fa1-a5ee-e22601e62615"],
 ", or ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Infinity"]], "paclet:ref/Infinity"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "0120ed23-9705-422f-ad54-406a47142b0c"],
 " for the identity."
}], "Notes",ExpressionUUID->"34558e3d-feb6-4f7c-be3f-bd06bb7f44e9"],

Cell[TextData[{
 "Coordinates outside the field, non-integers, and anything that is not a \
pair all give ",
 Cell[BoxData["False"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6a20dbfa-92f3-4b81-9734-8b39a1e84762"],
 "."
}], "Notes",ExpressionUUID->"86f9455a-604c-4c8e-aaa2-34dec9c0c4dc"],

Cell["\<\
The test is the curve equation only; it says nothing about whether a point is \
the public key of a known private key.\
\>", "Notes",ExpressionUUID->"bea04818-20dc-419b-9840-149f31e166f9"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Secp256k1PointAdd"]], 
    "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointAdd", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "0c762dec-0227-4b5e-a227-3b60fc2db984"],
 " and ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Secp256k1PointEncode"]], 
    "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointEncode", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "bd6d7adb-587c-4d1f-a454-4d9ab4afcf74"],
 " use this predicate as their argument condition, which is why they leave \
off-curve input unevaluated."
}], "Notes",ExpressionUUID->"8858fa07-4719-4479-857f-2768d850e769"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"6f9e28e6-2d40-49d4-8391-acf222300428"],

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->"fc11e5a6-c6d9-4bac-9b16-fdf335f8bb5f"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"6cadee25-12c4-4b55-96da-b1ad0a7dc3f9"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(9)", "ExampleCount",ExpressionUUID->
  "d589f39c-6a51-4a6f-ac18-e56a4ba5d381"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->808184475,ExpressionUUID->"df1c66ea-6383-477a-a227-e2c226e78dc9"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"b2c4efc4-331f-46b2-af85-c7fa5cb66743"],

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->
  "4569dca9-bb82-4294-8fd6-0ad05d9b979d"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"d3055aff-83ce-4cbc-a6a6-77b39d1b96f4"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "1ca0d71a-adb6-4385-bc34-49b6b3552ac9"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->322404050,ExpressionUUID->"916c4cfa-8954-49e5-b294-a8a3b4e723f1"],

Cell["The generator is on the curve:", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"b51d000e-5bb1-42ea-9013-5640319c7f55"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Secp256k1PointQ", "[", 
  RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"b6286ae4-0b30-48ab-a25f-7391e13a4062"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"b61b0199-17d9-46c9-84bc-8439a43ce0d1"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "fb05c8a0-2cfc-491a-bf06-ae0f2b298771"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"3f0d2aa2-eb79-43f0-\
96dc-ca9be8fcd90a"],

Cell["An arbitrary pair of residues is almost never on the curve:", \
"ExampleText",ExpressionUUID->"acad6275-e41e-4e78-b056-b65910970112"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Secp256k1PointQ", "[", 
  RowBox[{"{", 
   RowBox[{"1", ",", " ", "1"}], "}"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"df453c90-f861-4dad-bb68-bd4a892d8a33"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"676e5675-bae9-464c-8044-08f9fba277e5"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "3e241cbf-3e28-4728-bbaf-435a200168c8"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"fe9f2da4-4a6d-48a0-\
8c80-2c6e5cb1ffbe"],

Cell["\<\
The point at infinity is the group identity and counts as a point:\
\>", "ExampleText",ExpressionUUID->"bf4f01e5-68c7-441e-9e7b-c37c8b562f87"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Secp256k1PointQ", "[", "Infinity", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"83f10a3b-5006-4da7-94c7-3803befeffca"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8b08b714-5167-41cd-925e-85bc47fa9101"]
}, 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->
  "6bc4a925-c98e-49bb-8b1b-9c1608e07f61"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"c51a72cb-ae20-4334-8aec-f28f8d877565"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "45f7bba6-79b0-4902-9066-70e15100e9d6"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"a1b4b8ff-c435-4c14-8edb-ac609ea52db0"],

Cell["Every public key decodes to a point of the group:", "ExampleText",ExpressionUUID->"64df2f03-3b50-4574-96ab-44a6a86b62a0"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AllTrue", "[", 
  RowBox[{
   RowBox[{"Range", "[", "10", "]"}], ",", " ", 
   RowBox[{
    RowBox[{"Secp256k1PointQ", "[", 
     RowBox[{"Secp256k1Point", "[", 
      RowBox[{"Secp256k1PublicKey", "[", "#", "]"}], "]"}], "]"}], " ", 
    "&"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"aa5cb916-2d9c-474e-90a5-46e0f2b52923"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"fd027ac0-8d40-4f2f-8761-c391277c6529"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "c2fb248f-7370-4c7a-84a0-3f6320c2892b"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"68dee527-b289-4a43-\
b353-1109c9a5ae09"],

Cell["\<\
A coordinate at or above the field order is out of the field, whatever the \
equation says:\
\>", "ExampleText",ExpressionUUID->"89dc2382-6227-4138-bc8a-46481879062c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Secp256k1PointQ", "[", 
  RowBox[{
   RowBox[{"$Secp256k1", "[", "\"\<Generator\>\"", "]"}], " ", "+", " ", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}], ",", " ", "0"}], 
    "}"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d101b558-d58c-4699-ae91-364ed10e3b8f"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"132a7d21-f3da-4ab1-bcfe-4a1be6fcf3c5"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "39ff51f0-07f7-4ed8-87a5-6ff79f6e1511"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"fd197970-07ec-4e75-\
b1f0-03f5137bd43b"],

Cell["An expression that is not a coordinate pair is not a point:", \
"ExampleText",ExpressionUUID->"4a6f8325-5254-4e80-a5da-5a9ddfe062b1"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Secp256k1PointQ", 
  "[", "\"\<\
0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\>\"", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"1f9fe50b-ab13-4ee9-b5ac-28a79f41da60"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"c1ae577a-8b0b-45c2-847d-17551672729a"]
}, 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->
  "4f91c00c-438a-4033-ac86-ef402984ec07"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"4cf80257-9a5b-44a9-8cf2-992410131ffd"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "2a5d82ef-f70b-4a0e-ae58-433ef2461829"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"f76a7f5b-c90a-458c-82b0-729121cd2858"],

Cell["The predicate is exactly the curve equation:", "ExampleText",ExpressionUUID->"766ae6e8-9295-4487-8522-ac64e2382420"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"With", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"pt", " ", "=", " ", 
     RowBox[{"Secp256k1Point", "[", 
      RowBox[{"Secp256k1PublicKey", "[", "6", "]"}], "]"}]}], "}"}], ",", " ", 
   RowBox[{"Mod", "[", 
    RowBox[{
     RowBox[{
      RowBox[{
       RowBox[{"Last", "[", "pt", "]"}], "^", "2"}], " ", "-", " ", 
      RowBox[{
       RowBox[{"First", "[", "pt", "]"}], "^", "3"}], " ", "-", " ", "7"}], ",",
      " ", 
     RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}]}], "]"}]}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"123a208a-4b5e-45a4-868f-666353edc240"],

Cell[BoxData["0"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"4b7d2d68-5f3c-46ab-89a9-3cf9115c01a3"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "f7a44f80-235b-4f6d-b98d-1a9a2bcc0595"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"8f220e3b-9cd1-49bb-\
937f-a86c00ccca2b"],

Cell["The group is closed under addition:", "ExampleText",ExpressionUUID->"8be64aef-148a-48b3-b084-7fd4f229f523"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Secp256k1PointQ", "[", 
  RowBox[{"Secp256k1PointAdd", "[", 
   RowBox[{
    RowBox[{"Secp256k1Point", "[", 
     RowBox[{"Secp256k1PublicKey", "[", "2", "]"}], "]"}], ",", " ", 
    RowBox[{"Secp256k1Point", "[", 
     RowBox[{"Secp256k1PublicKey", "[", "3", "]"}], "]"}]}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"0e717ab9-c66a-422d-89c5-9d6dfce74414"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"931557a0-8486-400b-914a-7feb63b77aa1"]
}, 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->
  "74c2dfab-05bd-4d1f-8ea6-b0bfee6e73fa"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"c5e09e6f-faaa-4c42-86ac-e01f18589b92"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "d86896b2-97db-42f6-a354-7d0c60146f58"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"820e122b-3a49-4b60-9a35-52498b98a926"],

Cell[TextData[{
 "Roughly half the field elements are the ",
 Cell[BoxData[
  StyleBox["x", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "daaadc15-3d15-4f4c-8031-913a32338969"],
 " coordinate of a point, so a random pair fails while a random ",
 Cell[BoxData[
  StyleBox["x", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "69d9f815-a4ff-4c5e-98bd-50abbd9b026f"],
 " often succeeds; the predicate tests the pair, not the abscissa:"
}], "ExampleText",ExpressionUUID->"b108ba90-2878-42be-a58f-38c29f0a7cd3"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Count", "[", 
  RowBox[{
   RowBox[{"Range", "[", 
    RowBox[{"1", ",", " ", "20"}], "]"}], ",", " ", 
   RowBox[{"x_", " ", "/;", " ", 
    RowBox[{"Secp256k1PointQ", "[", 
     RowBox[{"{", 
      RowBox[{"x", ",", " ", 
       RowBox[{"PowerMod", "[", 
        RowBox[{
         RowBox[{
          RowBox[{"x", "^", "3"}], " ", "+", " ", "7"}], ",", " ", 
         RowBox[{
          RowBox[{"(", 
           RowBox[{
            RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}], " ", "+", " ", 
            "1"}], ")"}], "/", "4"}], ",", " ", 
         RowBox[{"$Secp256k1", "[", "\"\<Prime\>\"", "]"}]}], "]"}]}], "}"}], 
     "]"}]}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"7cb40392-2120-4d1e-a7a1-4499d498b0e4"],

Cell[BoxData["11"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"c97bf24d-1bf8-4b95-bfcb-e46508d21ebe"]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1Point"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1Point", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "2cde6e7d-378c-4101-9552-cb376930ddca"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PointAdd"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointAdd", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "387badd2-4cf4-4e69-9de1-f46c014d1d96"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PointEncode"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PointEncode", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "d3258f27-fe7e-4bbf-9448-0159813784a9"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Secp256k1PublicKey"]], 
           "paclet:WolframInstitute/Puzzles/ref/Secp256k1PublicKey", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "7997c608-e448-41c3-8e9c-1e14f03aec99"]
       }], "SeeAlso",ExpressionUUID->"1c2f0c7e-2841-40bc-a825-d34eb3f716a0"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"e34904d0-7aa0-4c6f-807d-\
1fd50c1006e9"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Derivation"]], 
           "paclet:WolframInstitute/Puzzles/guide/Derivation"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "19418071-e469-45c0-a83f-d328aabd21cf"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"fd4bb248-f683-4036-9979-\
a8ac37c8bf8b"],

Cell[" ", "FooterCell",ExpressionUUID->"8f7f9ef6-ebc4-41cc-a314-52bb574a92f2"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"Secp256k1PointQ",
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, 54.206291}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[Secp256k1PointQ, paclet : \
WolframInstitute/Puzzles/ref/Secp256k1PointQ, WolframInstitute/Puzzles \
Package Symbol][pt] gives True if pt is a point of the secp256k1 group, and \
False otherwise.", "synonyms" -> {}, "tabletags" -> {}, "title" -> 
    "Secp256k1PointQ", "titlemodifier" -> "", "metadescription" -> "", 
    "windowtitle" -> "Secp256k1PointQ", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/Secp256k1PointQ", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"f52b4b32-ad9f-434e-a5af-f5f601c34a18"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[15579, 432, 140, 2, 70, "ExampleText",ExpressionUUID->"b51d000e-5bb1-42ea-9013-5640319c7f55",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 32731, 921}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[583, 21, 5655, 139, 70, "AnchorBarGrid",ExpressionUUID->"83eae33e-aecb-4acd-8826-fb2fffb3e692",
 CellID->1],
Cell[6241, 162, 107, 0, 70, "ContextNameCell",ExpressionUUID->"f3683771-ecd7-4df8-be10-5a1339e9fbb4"],
Cell[CellGroupData[{
Cell[6373, 166, 558, 14, 70, "ObjectNameGrid",ExpressionUUID->"d26d367f-ec5d-4e11-9d48-27e68bbbcd0e"],
Cell[6934, 182, 1160, 30, 70, "Usage",ExpressionUUID->"8ab9ad77-c497-4dc6-8afe-4670f64cecb4"]
}, Open  ]],
Cell[CellGroupData[{
Cell[8131, 217, 1443, 34, 70, "NotesSection",ExpressionUUID->"bf75c6a6-1d6d-4002-94c1-3a3c5ed6efaf",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->759404028],
Cell[9577, 253, 1494, 49, 70, "Notes",ExpressionUUID->"34558e3d-feb6-4f7c-be3f-bd06bb7f44e9"],
Cell[11074, 304, 341, 8, 70, "Notes",ExpressionUUID->"86f9455a-604c-4c8e-aaa2-34dec9c0c4dc"],
Cell[11418, 314, 198, 3, 70, "Notes",ExpressionUUID->"bea04818-20dc-419b-9840-149f31e166f9"],
Cell[11619, 319, 958, 26, 70, "Notes",ExpressionUUID->"8858fa07-4719-4479-857f-2768d850e769"]
}, Closed]],
Cell[12592, 348, 80, 0, 70, "PageDelimiter",ExpressionUUID->"6f9e28e6-2d40-49d4-8391-acf222300428"],
Cell[CellGroupData[{
Cell[12697, 352, 1400, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"df1c66ea-6383-477a-a227-e2c226e78dc9",
 CellID->808184475],
Cell[14100, 391, 216, 4, 70, "Input",ExpressionUUID->"b2c4efc4-331f-46b2-af85-c7fa5cb66743",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[14341, 399, 1235, 31, 70, "ExampleSection",ExpressionUUID->"916c4cfa-8954-49e5-b294-a8a3b4e723f1",
 CellID->322404050],
Cell[15579, 432, 140, 2, 70, "ExampleText",ExpressionUUID->"b51d000e-5bb1-42ea-9013-5640319c7f55",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[15744, 438, 248, 4, 70, "Input",ExpressionUUID->"b6286ae4-0b30-48ab-a25f-7391e13a4062"],
Cell[15995, 444, 110, 1, 70, "Output",ExpressionUUID->"b61b0199-17d9-46c9-84bc-8439a43ce0d1"]
}, Open  ]],
Cell[CellGroupData[{
Cell[16142, 450, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"3f0d2aa2-eb79-43f0-96dc-ca9be8fcd90a"],
Cell[16369, 457, 139, 1, 70, "ExampleText",ExpressionUUID->"acad6275-e41e-4e78-b056-b65910970112"],
Cell[CellGroupData[{
Cell[16533, 462, 247, 5, 70, "Input",ExpressionUUID->"df453c90-f861-4dad-bb68-bd4a892d8a33"],
Cell[16783, 469, 111, 1, 70, "Output",ExpressionUUID->"676e5675-bae9-464c-8044-08f9fba277e5"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[16943, 476, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"fe9f2da4-4a6d-48a0-8c80-2c6e5cb1ffbe"],
Cell[17170, 483, 152, 2, 70, "ExampleText",ExpressionUUID->"bf4f01e5-68c7-441e-9e7b-c37c8b562f87"],
Cell[CellGroupData[{
Cell[17347, 489, 202, 3, 70, "Input",ExpressionUUID->"83f10a3b-5006-4da7-94c7-3803befeffca"],
Cell[17552, 494, 110, 1, 70, "Output",ExpressionUUID->"8b08b714-5167-41cd-925e-85bc47fa9101"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[17723, 502, 1227, 31, 70, "ExampleSection",ExpressionUUID->"a1b4b8ff-c435-4c14-8edb-ac609ea52db0",
 CellID->1293636265],
Cell[18953, 535, 127, 0, 70, "ExampleText",ExpressionUUID->"64df2f03-3b50-4574-96ab-44a6a86b62a0"],
Cell[CellGroupData[{
Cell[19105, 539, 415, 10, 70, "Input",ExpressionUUID->"aa5cb916-2d9c-474e-90a5-46e0f2b52923"],
Cell[19523, 551, 110, 1, 70, "Output",ExpressionUUID->"fd027ac0-8d40-4f2f-8761-c391277c6529"]
}, Open  ]],
Cell[CellGroupData[{
Cell[19670, 557, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"68dee527-b289-4a43-b353-1109c9a5ae09"],
Cell[19897, 564, 177, 3, 70, "ExampleText",ExpressionUUID->"89dc2382-6227-4138-bc8a-46481879062c"],
Cell[CellGroupData[{
Cell[20099, 571, 393, 9, 70, "Input",ExpressionUUID->"d101b558-d58c-4699-ae91-364ed10e3b8f"],
Cell[20495, 582, 111, 1, 70, "Output",ExpressionUUID->"132a7d21-f3da-4ab1-bcfe-4a1be6fcf3c5"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[20655, 589, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"fd197970-07ec-4e75-b1f0-03f5137bd43b"],
Cell[20882, 596, 139, 1, 70, "ExampleText",ExpressionUUID->"4a6f8325-5254-4e80-a5da-5a9ddfe062b1"],
Cell[CellGroupData[{
Cell[21046, 601, 276, 6, 70, "Input",ExpressionUUID->"1f9fe50b-ab13-4ee9-b5ac-28a79f41da60"],
Cell[21325, 609, 111, 1, 70, "Output",ExpressionUUID->"c1ae577a-8b0b-45c2-847d-17551672729a"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[21497, 617, 1244, 31, 70, "ExampleSection",ExpressionUUID->"f76a7f5b-c90a-458c-82b0-729121cd2858",
 CellID->2123667759],
Cell[22744, 650, 122, 0, 70, "ExampleText",ExpressionUUID->"766ae6e8-9295-4487-8522-ac64e2382420"],
Cell[CellGroupData[{
Cell[22891, 654, 672, 18, 70, "Input",ExpressionUUID->"123a208a-4b5e-45a4-868f-666353edc240"],
Cell[23566, 674, 107, 1, 70, "Output",ExpressionUUID->"4b7d2d68-5f3c-46ab-89a9-3cf9115c01a3"]
}, Open  ]],
Cell[CellGroupData[{
Cell[23710, 680, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"8f220e3b-9cd1-49bb-937f-a86c00ccca2b"],
Cell[23937, 687, 113, 0, 70, "ExampleText",ExpressionUUID->"8be64aef-148a-48b3-b084-7fd4f229f523"],
Cell[CellGroupData[{
Cell[24075, 691, 453, 10, 70, "Input",ExpressionUUID->"0e717ab9-c66a-422d-89c5-9d6dfce74414"],
Cell[24531, 703, 110, 1, 70, "Output",ExpressionUUID->"931557a0-8486-400b-914a-7feb63b77aa1"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[24702, 711, 1237, 31, 70, "ExampleSection",ExpressionUUID->"820e122b-3a49-4b60-9a35-52498b98a926",
 CellID->1305812373],
Cell[25942, 744, 619, 14, 70, "ExampleText",ExpressionUUID->"b108ba90-2878-42be-a58f-38c29f0a7cd3"],
Cell[CellGroupData[{
Cell[26586, 762, 812, 21, 70, "Input",ExpressionUUID->"7cb40392-2120-4d1e-a7a1-4499d498b0e4"],
Cell[27401, 785, 108, 1, 70, "Output",ExpressionUUID->"c97bf24d-1bf8-4b95-bfcb-e46508d21ebe"]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[27548, 791, 2587, 67, 70, "SeeAlsoSection",ExpressionUUID->"e34904d0-7aa0-4c6f-807d-1fd50c1006e9"],
Cell[30138, 860, 700, 19, 70, "MoreAboutSection",ExpressionUUID->"fd4bb248-f683-4036-9979-a8ac37c8bf8b"],
Cell[30841, 881, 78, 0, 70, "FooterCell",ExpressionUUID->"8f7f9ef6-ebc4-41cc-a314-52bb574a92f2"]
}
]
*)

(* End of internal cache information *)

