(* 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[     58104,       1530]
NotebookOptionsPosition[     48516,       1353]
NotebookOutlinePosition[     50645,       1403]
CellTagsIndexPosition[     50567,       1398]
WindowTitle->ImageTextMetadata
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->
           "42b59db5-2772-42a2-ade0-5b56e7f474f3"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "3a7e32ec-8248-425f-b9a6-30ed391734d1"],
        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->
           "8ac68a59-7fa3-48f3-b0b4-3d6d96891e03"]
         }],ExpressionUUID->"ff99b772-0003-4073-ba22-59edd0186bc2"],
         StripOnInput->False],{
        StyleBox["\"Import\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/Import"], Delimiter, 
         StyleBox[
          "\"Functions\"", "SeeAlsoSection", FontSize -> 14, FontSlant -> 
           "Italic", StripOnInput -> False] :> 
         NotebookFind[EvaluationNotebook[], "SeeAlsoSection", All, CellStyle],
          StyleBox[
          StyleBox[
           "\"ImageContainerChunks\"", "SeeAlsoRelated", StripOnInput -> 
            False], "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ImageContainerChunks"], 
         StyleBox[
          StyleBox[
           "\"ZlibUncompress\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ZlibUncompress"], 
         StyleBox[
          StyleBox[
           "\"ByteArrayStrings\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/ByteArrayStrings"], 
         StyleBox[
          StyleBox[
           "\"SteganographySurvey\"", "SeeAlsoRelated", StripOnInput -> 
            False], "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SteganographySurvey"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "86c9aa59-b5c9-4e1a-b606-fbdb12b6eda6"],
     "\[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->
           "7a664173-42a3-4fe1-a139-33e49cebe3fe"]
         }],ExpressionUUID->"17bd1603-6796-433a-9b45-30bedf5185bd"],
         StripOnInput->False],{
        "\"Steganography\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Steganography"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "44864178-5b25-4fbc-85b4-d1c704a5eec3"],
     "\[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->
           "7e7fefcc-fb7d-4c70-97c0-61d37c2eac36"]
         }],ExpressionUUID->"e330d0d4-8628-4405-aaee-e527323b6459"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/ImageTextMetadata\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/ImageTextMetadata"], 
         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/ImageTextMetadata.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/ImageTextMetadata" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "771fc3f7-9b13-434a-84ae-692f471a940e"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "e2378f77-37e5-45e2-afae-6a393037b082"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"b7f91d6e-3ebb-429b-a6eb-0d29c12c133b"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"4389db1b-ff18-4222-a88e-13d5381f31fb"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "ImageTextMetadata", "ObjectName",ExpressionUUID->
      "2158a940-8adf-4beb-bfb4-ef2c65b9899a"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"159b70ae-c5cc-47e9-848e-6da8b9449301"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "f55b8d2e-3960-4279-9bc1-2207eef0b5e7"]
    }],ExpressionUUID->"4ba3fc08-1209-498f-b2f4-52f2868ca8ec"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"4fe004b1-0c52-4125-a2bd-\
4eb8bf314874"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["ImageTextMetadata"]], 
         "paclet:WolframInstitute/Puzzles/ref/ImageTextMetadata", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["source", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "6a72827e-1a0d-4b61-8fc9-07b46876738e"],
     "\[LineSeparator]",
     "gives every piece of text an image container carries outside its \
pixels, as an Association from a slash-separated origin path to the string."
    }],ExpressionUUID->"d77cf2e4-7d68-4241-9e16-d5a7d8293e03"]}
  }]], "Usage",ExpressionUUID->"a7d007cf-3256-4dd3-a302-07bad4e11907"]
}, 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->"6234740e-59af-40f9-9cc8-e5cb18d82442"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"0ec5d8a1-48a9-439f-b914-6519f73fafe3"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "aed0064e-3137-4cdb-8111-f452427c0a5d"]],ExpressionUUID->"015deb8c-ffa5-\
4978-ac34-091c0eaecaf9"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->1714220222,ExpressionUUID->"aca254f8-ea8a-4262-acfe-2da3de93c544"],

Cell[TextData[{
 StyleBox["source", "TI"],
 " is a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["File"]], "paclet:ref/File"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "79b425ea-96a8-4760-bd56-042de0b4d4a1"],
 ", a file path, or a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteArray"]], "paclet:ref/ByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "55d8645d-c32f-46f6-a01d-e664146c2362"],
 "."
}], "Notes",ExpressionUUID->"0b67186a-44d7-4794-a542-1fd3e6333810"],

Cell[TextData[{
 "The origins reported are ",
 Cell[BoxData["\<\"Comments\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "e49db5cf-5914-4223-a2b7-f0c797ed5673"],
 " for PNG tEXt and uncompressed iTXt chunks and for JPEG comment segments, \
",
 Cell[BoxData["\<\"zTXt\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a24ddcbc-ea4e-4a78-a91d-1553de401ecc"],
 " for compressed PNG text chunks, ",
 Cell[BoxData["\<\"Exif\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "30777cd7-b44f-498b-b064-3d08b8f02847"],
 " for the string-valued Exif tags, and ",
 Cell[BoxData["\<\"XMP\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "acf41556-a0a2-4c2b-8b6f-7ba27854903f"],
 " for an XMP packet."
}], "Notes",ExpressionUUID->"6ada18f1-dc23-4431-9ad0-2151825e128b"],

Cell[TextData[{
 "A nested origin is spelled out along the path, so an Exif tag in the main \
image directory arrives as ",
 Cell["\"Exif/Image/Software\"", "InlineCode",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "ded16492-f464-4172-aeea-9c985d324839"],
 "."
}], "Notes",ExpressionUUID->"0644023a-13bc-4d7d-8c5d-353ba7c84b7a"],

Cell["\<\
Only string values are reported. Dates, rationals, coordinates and binary \
tags are left out, since the question this answers is what text the file \
carries.\
\>", "Notes",ExpressionUUID->"752b55f5-4286-4d68-a464-6b4dcb24c904"],

Cell[TextData[{
 "The kernel's importers read tEXt and uncompressed iTXt but not zTXt, whose \
text is a zlib stream; those chunks are inflated with ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ZlibUncompress"]], 
    "paclet:WolframInstitute/Puzzles/ref/ZlibUncompress", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "86105643-6669-4237-9462-81d7122be77a"],
 "."
}], "Notes",ExpressionUUID->"397a6f95-8782-450a-a582-f871f8b97471"],

Cell[TextData[{
 "A source that is not a PNG, JPEG or GIF gives a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "8816705a-4ca4-4a64-bfd3-439b487e0d25"],
 "; a first argument that is not a source matches no definition and is \
returned unevaluated."
}], "Notes",ExpressionUUID->"55e081cd-68f0-4d2c-8f34-75b2734b5c35"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"84e78331-553f-4c60-9a81-c66752f4d86d"],

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->"7bd7668e-eeed-4c88-aa19-b384771a350a"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"7764e632-9229-4ba5-98bc-97bd3a88c93f"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(12)", "ExampleCount",ExpressionUUID->
  "fb624983-0cba-46f9-8ed3-61fc1bc6b61a"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258663002,ExpressionUUID->"37f64bd0-28de-40fe-8984-b39b0f3df026"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"286bc146-4369-4bf5-a141-fc4c4745a5bb"],

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->
  "d150c1a6-e0d6-482b-9df3-ca8e10fae5c6"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"fc94a3c6-5fca-48ed-8b07-f1db73030a98"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "cf6c0710-db5f-4e16-971b-87ce03a623cd"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->842173086,ExpressionUUID->"6b2dc938-02c2-46a6-ab87-870f38a29305"],

Cell["The text a PNG the kernel just wrote carries:", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"d72f8995-d572-43d6-a53b-fa3e492b949c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Keys", "[", 
  RowBox[{"ImageTextMetadata", "[", 
   RowBox[{"ExportByteArray", "[", 
    RowBox[{
     RowBox[{"Image", "[", 
      RowBox[{
       RowBox[{"Table", "[", 
        RowBox[{
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
       " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"eef5cc90-cde6-4879-a664-dbe8cc283e53"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"Comments/Software\"\>", 
   ",", "\<\"Exif/Image/ResolutionUnit\"\>", 
   ",", "\<\"Exif/Image/Software\"\>"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"715b4842-e695-43d1-85f9-dc0d645870d3"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "b439b2bd-c984-4b5c-b225-2f391ff6f819"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"a64fb834-1476-401b-\
9319-5340ed92ebeb"],

Cell["The value behind one of those keys:", "ExampleText",ExpressionUUID->"813dce8c-41c7-4fc9-849b-c0aeace9c168"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", 
  RowBox[{
   RowBox[{"ImageTextMetadata", "[", 
    RowBox[{"ExportByteArray", "[", 
     RowBox[{
      RowBox[{"Image", "[", 
       RowBox[{
        RowBox[{"Table", "[", 
         RowBox[{
          RowBox[{"{", 
           RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
          RowBox[{"{", 
           RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
          RowBox[{"{", 
           RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
        " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], "]"}],
    ",", " ", "\"\<Comments/Software\>\""}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"537ac975-0607-437e-bb7b-67800843a066"],

Cell[BoxData["\<\"Created with the Wolfram Language : www.wolfram.com\"\>"], \
"Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"df293a45-f251-441e-9ac6-876bb438642c"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "49387685-e4ad-470f-90e6-2c0d29800741"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"6353e507-9792-4400-\
80a9-a7203fdf5e8c"],

Cell["\<\
A JPEG of the same picture carries its text under Exif instead:\
\>", "ExampleText",ExpressionUUID->"8faf5438-a379-4689-9e44-4f86caedc29d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Keys", "[", 
  RowBox[{"ImageTextMetadata", "[", 
   RowBox[{"ExportByteArray", "[", 
    RowBox[{
     RowBox[{"Image", "[", 
      RowBox[{
       RowBox[{"Table", "[", 
        RowBox[{
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
       " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<JPEG\>\""}], "]"}], "]"}],
   "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"714bf4ef-a50a-42b6-9686-fdb61e14514a"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"Exif/Image/ResolutionUnit\"\>", 
   ",", "\<\"Exif/Image/Software\"\>"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"32c92058-9886-499c-ac46-590ea68c92fc"]
}, 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->
  "6f5d2e82-6044-4688-b259-d1dc3d520db3"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"9557de34-3315-4261-9a8c-23381d13c36e"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "67438196-8e44-41c7-bd74-70822ed803f8"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"a2538dd2-78c3-4be9-9327-1edd37884602"],

Cell["\<\
A tEXt chunk spliced into a PNG by hand is read back under its keyword:\
\>", "ExampleText",ExpressionUUID->"6c976ec7-1ca2-4c8a-b698-3cb76b85cf18"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"data", ",", " ", "chunk", ",", " ", "png"}], "}"}], ",", "\n", 
   "\t", 
   RowBox[{
    RowBox[{"data", " ", "=", " ", 
     RowBox[{"Join", "[", 
      RowBox[{
       RowBox[{"ToCharacterCode", "[", "\"\<Author\>\"", "]"}], ",", " ", 
       RowBox[{"{", "0", "}"}], ",", " ", 
       RowBox[{
       "ToCharacterCode", "[", "\"\<someone who left a note\>\"", "]"}]}], 
      "]"}]}], ";", "\n", "\t", 
    RowBox[{"chunk", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Length", "[", "data", "]"}], ",", " ", "256", ",", " ", 
         "4"}], "]"}], ",", " ", 
       RowBox[{"ToCharacterCode", "[", "\"\<tEXt\>\"", "]"}], ",", " ", 
       "data", ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"ByteArray", "[", 
            RowBox[{"Join", "[", 
             RowBox[{
              RowBox[{"ToCharacterCode", "[", "\"\<tEXt\>\"", "]"}], ",", " ",
               "data"}], "]"}], "]"}], ",", " ", "\"\<CRC32\>\""}], "]"}], ",",
          " ", "256", ",", " ", "4"}], "]"}]}], "\n", "\t", "]"}]}], ";", 
    "\n", "\t", 
    RowBox[{"png", " ", "=", " ", 
     RowBox[{"Normal", "[", 
      RowBox[{"ExportByteArray", "[", 
       RowBox[{
        RowBox[{"Image", "[", 
         RowBox[{
          RowBox[{"Table", "[", 
           RowBox[{
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "8"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"j", ",", " ", "8"}], "}"}]}], "]"}], ",", 
          " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
      "]"}]}], ";", "\n", "\t", 
    RowBox[{"Lookup", "[", 
     RowBox[{
      RowBox[{"ImageTextMetadata", "[", 
       RowBox[{"ByteArray", "[", 
        RowBox[{"Join", "[", 
         RowBox[{
          RowBox[{"Take", "[", 
           RowBox[{"png", ",", " ", 
            RowBox[{
             RowBox[{"Length", "[", "png", "]"}], " ", "-", " ", "12"}]}], 
           "]"}], ",", " ", "chunk", ",", " ", 
          RowBox[{"Take", "[", 
           RowBox[{"png", ",", " ", 
            RowBox[{"-", "12"}]}], "]"}]}], "]"}], "]"}], "]"}], ",", 
      " ", "\"\<Comments/Author\>\""}], "]"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"482756e8-a8fb-442f-8038-deb6b7552e2b"],

Cell[BoxData["\<\"someone who left a note\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"382a374d-c40c-4e14-866b-1e1f756e14c5"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "9dd65a62-e1ec-443c-9546-5075287e8d64"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"e30afe98-7233-4eda-\
bfa7-1777efe86795"],

Cell["\<\
A zTXt chunk carries its text as a zlib stream, and arrives inflated:\
\>", "ExampleText",ExpressionUUID->"2d9f5d8a-ee02-402b-978a-568b0d817d00"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"text", " ", "=", " ", "\"\<the compressed one\>\""}], ",", " ", 
     "data", ",", " ", "chunk", ",", " ", "png"}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"data", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"ToCharacterCode", "[", "\"\<Hidden\>\"", "]"}], ",", " ", 
       RowBox[{"{", 
        RowBox[{"0", ",", " ", "0"}], "}"}], ",", " ", 
       RowBox[{"{", 
        RowBox[{"120", ",", " ", "156"}], "}"}], ",", "\n", "\t\t", 
       RowBox[{"Take", "[", 
        RowBox[{
         RowBox[{"Normal", "[", 
          RowBox[{"ExportByteArray", "[", 
           RowBox[{"text", ",", " ", 
            RowBox[{"{", 
             RowBox[{"\"\<GZIP\>\"", ",", " ", "\"\<Text\>\""}], "}"}]}], 
           "]"}], "]"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"11", ",", " ", 
           RowBox[{"-", "9"}]}], "}"}]}], "]"}], ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"StringToByteArray", "[", "text", "]"}], ",", 
           " ", "\"\<Adler32\>\""}], "]"}], ",", " ", "256", ",", " ", "4"}], 
        "]"}]}], "\n", "\t", "]"}]}], ";", "\n", "\t", 
    RowBox[{"chunk", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Length", "[", "data", "]"}], ",", " ", "256", ",", " ", 
         "4"}], "]"}], ",", " ", 
       RowBox[{"ToCharacterCode", "[", "\"\<zTXt\>\"", "]"}], ",", " ", 
       "data", ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"ByteArray", "[", 
            RowBox[{"Join", "[", 
             RowBox[{
              RowBox[{"ToCharacterCode", "[", "\"\<zTXt\>\"", "]"}], ",", " ",
               "data"}], "]"}], "]"}], ",", " ", "\"\<CRC32\>\""}], "]"}], ",",
          " ", "256", ",", " ", "4"}], "]"}]}], "\n", "\t", "]"}]}], ";", 
    "\n", "\t", 
    RowBox[{"png", " ", "=", " ", 
     RowBox[{"Normal", "[", 
      RowBox[{"ExportByteArray", "[", 
       RowBox[{
        RowBox[{"Image", "[", 
         RowBox[{
          RowBox[{"Table", "[", 
           RowBox[{
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "8"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"j", ",", " ", "8"}], "}"}]}], "]"}], ",", 
          " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
      "]"}]}], ";", "\n", "\t", 
    RowBox[{"Lookup", "[", 
     RowBox[{
      RowBox[{"ImageTextMetadata", "[", 
       RowBox[{"ByteArray", "[", 
        RowBox[{"Join", "[", 
         RowBox[{
          RowBox[{"Take", "[", 
           RowBox[{"png", ",", " ", 
            RowBox[{
             RowBox[{"Length", "[", "png", "]"}], " ", "-", " ", "12"}]}], 
           "]"}], ",", " ", "chunk", ",", " ", 
          RowBox[{"Take", "[", 
           RowBox[{"png", ",", " ", 
            RowBox[{"-", "12"}]}], "]"}]}], "]"}], "]"}], "]"}], ",", 
      " ", "\"\<zTXt/Hidden\>\""}], "]"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"0a5fbac1-47bc-4931-a441-bb3879588f0b"],

Cell[BoxData["\<\"the compressed one\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"4ac7e43f-a626-45ad-a417-1e6520a0abfd"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "71a31689-438b-4f59-8e10-e058598bdf21"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"83e8cfa9-9da5-47cd-\
82a0-763d339ffd20"],

Cell["\<\
A GIF the kernel wrote carries no text at all, and the result is an empty \
Association:\
\>", "ExampleText",ExpressionUUID->"16d46c16-835f-4b56-9f54-a787b2fbda41"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", 
  RowBox[{"ImageTextMetadata", "[", 
   RowBox[{"ExportByteArray", "[", 
    RowBox[{
     RowBox[{"Image", "[", 
      RowBox[{
       RowBox[{"Table", "[", 
        RowBox[{
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
       " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<GIF\>\""}], "]"}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5a3fac36-1e80-45bf-945b-15925b03717f"],

Cell[BoxData["0"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"9d58108d-b57e-4857-ae83-7863e058f548"]
}, 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->
  "2d1f6ace-b16d-4429-bcaf-6732f25397be"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"e66e8894-22df-48a2-a1f9-ec651bdfc6cf"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "68445274-0762-4df0-835d-0bcb5986d989"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"00e9af97-5ebd-4e85-9c75-e9695bd9d254"],

Cell["\<\
Metadata is where a payload most often hides in plain sight, and a long \
regular string is the tell:\
\>", "ExampleText",ExpressionUUID->"d7dea557-26e5-432a-8728-e1a8f486eeca"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"data", ",", " ", "chunk", ",", " ", "png"}], "}"}], ",", "\n", 
   "\t", 
   RowBox[{
    RowBox[{"data", " ", "=", " ", 
     RowBox[{"Join", "[", 
      RowBox[{
       RowBox[{"ToCharacterCode", "[", "\"\<Comment\>\"", "]"}], ",", " ", 
       RowBox[{"{", "0", "}"}], ",", " ", 
       RowBox[{"ToCharacterCode", "[", 
        RowBox[{"BaseEncode", "[", 
         RowBox[{
         "StringToByteArray", 
          "[", "\"\<the actual message was base64 the whole time\>\"", "]"}], 
         "]"}], "]"}]}], "]"}]}], ";", "\n", "\t", 
    RowBox[{"chunk", " ", "=", " ", 
     RowBox[{"Join", "[", "\n", "\t\t", 
      RowBox[{
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Length", "[", "data", "]"}], ",", " ", "256", ",", " ", 
         "4"}], "]"}], ",", " ", 
       RowBox[{"ToCharacterCode", "[", "\"\<tEXt\>\"", "]"}], ",", " ", 
       "data", ",", "\n", "\t\t", 
       RowBox[{"IntegerDigits", "[", 
        RowBox[{
         RowBox[{"Hash", "[", 
          RowBox[{
           RowBox[{"ByteArray", "[", 
            RowBox[{"Join", "[", 
             RowBox[{
              RowBox[{"ToCharacterCode", "[", "\"\<tEXt\>\"", "]"}], ",", " ",
               "data"}], "]"}], "]"}], ",", " ", "\"\<CRC32\>\""}], "]"}], ",",
          " ", "256", ",", " ", "4"}], "]"}]}], "\n", "\t", "]"}]}], ";", 
    "\n", "\t", 
    RowBox[{"png", " ", "=", " ", 
     RowBox[{"Normal", "[", 
      RowBox[{"ExportByteArray", "[", 
       RowBox[{
        RowBox[{"Image", "[", 
         RowBox[{
          RowBox[{"Table", "[", 
           RowBox[{
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "8"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"j", ",", " ", "8"}], "}"}]}], "]"}], ",", 
          " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
      "]"}]}], ";", "\n", "\t", 
    RowBox[{"ByteArrayToString", "[", 
     RowBox[{"BaseDecode", "[", 
      RowBox[{"Lookup", "[", 
       RowBox[{
        RowBox[{"ImageTextMetadata", "[", 
         RowBox[{"ByteArray", "[", 
          RowBox[{"Join", "[", 
           RowBox[{
            RowBox[{"Take", "[", 
             RowBox[{"png", ",", " ", 
              RowBox[{
               RowBox[{"Length", "[", "png", "]"}], " ", "-", " ", "12"}]}], 
             "]"}], ",", " ", "chunk", ",", " ", 
            RowBox[{"Take", "[", 
             RowBox[{"png", ",", " ", 
              RowBox[{"-", "12"}]}], "]"}]}], "]"}], "]"}], "]"}], ",", 
        " ", "\"\<Comments/Comment\>\""}], "]"}], "]"}], "]"}]}]}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"6983c445-b69d-4da7-ae3e-04437382fb68"],

Cell[BoxData["\<\"the actual message was base64 the whole time\"\>"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8bfe046a-b946-49c1-86ce-9d0cf9b65c7d"]
}, 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->
  "faca8461-b8c0-427e-b755-4ef9b8942bb6"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"6e978568-76f3-43fb-891e-464e92d62d28"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "afa78521-30cf-45e6-850d-4a0d05f10949"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"738719a9-35b6-49e7-9c36-08d3a2a3f615"],

Cell[TextData[{
 "The chunks the text comes out of are the ones ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ImageContainerChunks"]], 
    "paclet:WolframInstitute/Puzzles/ref/ImageContainerChunks", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f4c97d0a-0bd5-49f8-b28e-dd874547bbab"],
 " lists:"
}], "ExampleText",ExpressionUUID->"00ad6d56-9dde-4d13-9a9e-583f14dbc369"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Count", "[", 
  RowBox[{
   RowBox[{"Lookup", "[", 
    RowBox[{
     RowBox[{"ImageContainerChunks", "[", 
      RowBox[{"ExportByteArray", "[", 
       RowBox[{
        RowBox[{"Image", "[", 
         RowBox[{
          RowBox[{"Table", "[", 
           RowBox[{
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
            RowBox[{"{", 
             RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
          " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
      "]"}], ",", " ", "\"\<Name\>\""}], "]"}], ",", " ", "\"\<tEXt\>\""}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"e99b8596-a9aa-4f8b-b9bf-2fa18407f4b3"],

Cell[BoxData["2"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"0247e78c-e572-4f61-9ff6-7211389bd0fd"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "1dd43ece-ae3b-45bf-b591-0e56d4fe569a"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"5b888153-a0dc-4ca0-\
a842-2529427da300"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SteganographySurvey"]], 
    "paclet:WolframInstitute/Puzzles/ref/SteganographySurvey", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "cf80290f-a61d-4648-b5ce-3b0033d0238f"],
 " counts these entries as a measurement and raises a finding only for a \
value that looks like a transport encoding:"
}], "ExampleText",ExpressionUUID->"e1a67439-3ebf-46d8-a9fe-bade6aa5a9d2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", 
  RowBox[{
   RowBox[{
    RowBox[{"SteganographySurvey", "[", 
     RowBox[{"ExportByteArray", "[", 
      RowBox[{
       RowBox[{"Image", "[", 
        RowBox[{
         RowBox[{"Table", "[", 
          RowBox[{
           RowBox[{"{", 
            RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
           RowBox[{"{", 
            RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
           RowBox[{"{", 
            RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
         " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], 
     "]"}], "[", "\"\<Measurements\>\"", "]"}], ",", 
   " ", "\"\<TextMetadataCount\>\""}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"cfaca6b2-1bdf-4d2a-8497-88828864c395"],

Cell[BoxData["3"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"1c7cc9a5-31bb-4c11-981f-902f7b663bb1"]
}, 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->
  "a8de55ab-dd0a-4372-b690-ee3e75c816e3"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"e64bd393-258d-416a-bb0d-5aef9e8f76ec"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "bfcc1f6c-84ad-4c4e-8266-b7295ac6a739"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"be574cb0-f080-422c-ae27-ec10f691910a"],

Cell[TextData[{
 "Only strings survive the filter, so a timestamp Import reports as a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["DateObject"]], "paclet:ref/DateObject"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "7f1c0abe-1284-4362-b35d-d90c58d30eac"],
 " does not appear here. Reach for ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Import"]], "paclet:ref/Import"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "25a5eb25-111b-421d-83aa-719a126c871c"],
 " when a typed value is what is wanted:"
}], "ExampleText",ExpressionUUID->"62a76425-55fb-4a2f-9df3-2466df9b034a"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"KeyExistsQ", "[", 
  RowBox[{
   RowBox[{"ImageTextMetadata", "[", 
    RowBox[{"ExportByteArray", "[", 
     RowBox[{
      RowBox[{"Image", "[", 
       RowBox[{
        RowBox[{"Table", "[", 
         RowBox[{
          RowBox[{"{", 
           RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
          RowBox[{"{", 
           RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
          RowBox[{"{", 
           RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
        " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], "]"}],
    ",", " ", "\"\<Comments/Creation Time\>\""}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"ace60ddf-684b-4f51-b323-0d8115bfa140"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"94445fad-5085-4997-b48a-d51b66a95a49"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "6416ad1d-badc-4fea-a21b-f51ad682ca00"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"ba387d44-a2f2-48c5-\
aaf4-0b3c1821ed0e"],

Cell["\<\
Almost every image carries some metadata, so its presence is not a finding. \
The clean PNG above already had three entries and nothing hidden in any of \
them.\
\>", "ExampleText",ExpressionUUID->"03216e7e-d07c-49fb-a8e8-d1cbeddbf6e5"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Values", "[", 
  RowBox[{"ImageTextMetadata", "[", 
   RowBox[{"ExportByteArray", "[", 
    RowBox[{
     RowBox[{"Image", "[", 
      RowBox[{
       RowBox[{"Table", "[", 
        RowBox[{
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "j", ",", " ", "128"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"i", ",", " ", "16"}], "}"}], ",", " ", 
         RowBox[{"{", 
          RowBox[{"j", ",", " ", "16"}], "}"}]}], "]"}], ",", 
       " ", "\"\<Byte\>\""}], "]"}], ",", " ", "\"\<PNG\>\""}], "]"}], "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"dd401282-99f1-4ca9-b661-bd0601dc434f"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"Created with the Wolfram Language : www.wolfram.com\"\>", 
   ",", "\<\"Inches\"\>", 
   ",", "\<\"Created with the Wolfram Language : www.wolfram.com\"\>"}], 
  "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"1e721420-ebd4-4832-8b44-32b67b02cd2c"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "6f781c97-9269-4c1a-9859-66a7f23a7bc8"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"d1cbd3be-231b-4e86-\
9fc0-2a4a0f49406c"],

Cell[TextData[{
 "A source that is not one of the three containers gives a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",ExpressionUUID->
  "73df4028-c252-4356-97f7-702c53c47bb3"],
 ":"
}], "ExampleText",ExpressionUUID->"04e0245f-50ab-4fec-8bce-252802ee085b"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"FailureQ", "[", 
  RowBox[{"ImageTextMetadata", "[", 
   RowBox[{"ByteArray", "[", 
    RowBox[{"ToCharacterCode", "[", "\"\<not a container\>\"", "]"}], "]"}], 
   "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"344de7dd-1b68-415b-aff9-ac89c594503e"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"66dde84c-b833-47a5-80e4-fd06ea5404f9"]
}, 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["ImageContainerChunks"]], 
           "paclet:WolframInstitute/Puzzles/ref/ImageContainerChunks", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "970a6ab8-440c-463b-ad8f-51e51862da3f"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ZlibUncompress"]], 
           "paclet:WolframInstitute/Puzzles/ref/ZlibUncompress", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "3e903875-c803-474d-8124-5ae3e60e4c65"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["ByteArrayStrings"]], 
           "paclet:WolframInstitute/Puzzles/ref/ByteArrayStrings", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "0801b574-e094-4610-931d-101cf1a0dad1"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SteganographySurvey"]], 
           "paclet:WolframInstitute/Puzzles/ref/SteganographySurvey", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "f0a91f61-b4b6-4437-b829-f754f216d6f2"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Import"]], "paclet:ref/Import"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "a41e4930-da65-4d16-b60d-49f4695aaff6"]
       }], "SeeAlso",ExpressionUUID->"eca94696-5ec9-4644-a473-6bf35eb53f04"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"f821d418-d3c8-422f-a9ef-\
ff9252c08998"],

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["Steganography"]], 
           "paclet:WolframInstitute/Puzzles/guide/Steganography"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "8aecd112-84bf-4c70-a032-1a13dade908b"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"35a59c83-ea53-491a-b871-\
e937dfb64282"],

Cell[" ", "FooterCell",ExpressionUUID->"0cbbd999-eaa1-4ff9-b6ba-9db1f3f97a20"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"ImageTextMetadata",
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, 51.335976}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[ImageTextMetadata, paclet : \
WolframInstitute/Puzzles/ref/ImageTextMetadata, WolframInstitute/Puzzles \
Package Symbol][source] gives every piece of text an image container carries \
outside its pixels, as an Association from a slash-separated origin path to \
the string.", "synonyms" -> {}, "tabletags" -> {}, "title" -> 
    "ImageTextMetadata", "titlemodifier" -> "", "metadescription" -> "", 
    "windowtitle" -> "ImageTextMetadata", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/ImageTextMetadata", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"0420dd74-6d5f-4ecd-9c1b-c2a5592a20eb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[16224, 435, 155, 2, 70, "ExampleText",ExpressionUUID->"d72f8995-d572-43d6-a53b-fa3e492b949c",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 50410, 1392}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[585, 21, 6336, 153, 70, "AnchorBarGrid",ExpressionUUID->"b7f91d6e-3ebb-429b-a6eb-0d29c12c133b",
 CellID->1],
Cell[6924, 176, 107, 0, 70, "ContextNameCell",ExpressionUUID->"4389db1b-ff18-4222-a88e-13d5381f31fb"],
Cell[CellGroupData[{
Cell[7056, 180, 560, 14, 70, "ObjectNameGrid",ExpressionUUID->"4fe004b1-0c52-4125-a2bd-4eb8bf314874"],
Cell[7619, 196, 844, 19, 70, "Usage",ExpressionUUID->"a7d007cf-3256-4dd3-a302-07bad4e11907"]
}, Open  ]],
Cell[CellGroupData[{
Cell[8500, 220, 1444, 34, 70, "NotesSection",ExpressionUUID->"aca254f8-ea8a-4262-acfe-2da3de93c544",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->1714220222],
Cell[9947, 256, 643, 21, 70, "Notes",ExpressionUUID->"0b67186a-44d7-4794-a542-1fd3e6333810"],
Cell[10593, 279, 969, 23, 70, "Notes",ExpressionUUID->"6ada18f1-dc23-4431-9ad0-2151825e128b"],
Cell[11565, 304, 335, 7, 70, "Notes",ExpressionUUID->"0644023a-13bc-4d7d-8c5d-353ba7c84b7a"],
Cell[11903, 313, 239, 4, 70, "Notes",ExpressionUUID->"752b55f5-4286-4d68-a464-6b4dcb24c904"],
Cell[12145, 319, 594, 15, 70, "Notes",ExpressionUUID->"397a6f95-8782-450a-a582-f871f8b97471"],
Cell[12742, 336, 479, 12, 70, "Notes",ExpressionUUID->"55e081cd-68f0-4d2c-8f34-75b2734b5c35"]
}, Closed]],
Cell[13236, 351, 80, 0, 70, "PageDelimiter",ExpressionUUID->"84e78331-553f-4c60-9a81-c66752f4d86d"],
Cell[CellGroupData[{
Cell[13341, 355, 1401, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"37f64bd0-28de-40fe-8984-b39b0f3df026",
 CellID->258663002],
Cell[14745, 394, 216, 4, 70, "Input",ExpressionUUID->"286bc146-4369-4bf5-a141-fc4c4745a5bb",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[14986, 402, 1235, 31, 70, "ExampleSection",ExpressionUUID->"6b2dc938-02c2-46a6-ab87-870f38a29305",
 CellID->842173086],
Cell[16224, 435, 155, 2, 70, "ExampleText",ExpressionUUID->"d72f8995-d572-43d6-a53b-fa3e492b949c",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[16404, 441, 703, 18, 70, "Input",ExpressionUUID->"eef5cc90-cde6-4879-a664-dbe8cc283e53"],
Cell[17110, 461, 252, 5, 70, "Output",ExpressionUUID->"715b4842-e695-43d1-85f9-dc0d645870d3"]
}, Open  ]],
Cell[CellGroupData[{
Cell[17399, 471, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"a64fb834-1476-401b-9319-5340ed92ebeb"],
Cell[17626, 478, 113, 0, 70, "ExampleText",ExpressionUUID->"813dce8c-41c7-4fc9-849b-c0aeace9c168"],
Cell[CellGroupData[{
Cell[17764, 482, 772, 19, 70, "Input",ExpressionUUID->"537ac975-0607-437e-bb7b-67800843a066"],
Cell[18539, 503, 167, 2, 70, "Output",ExpressionUUID->"df293a45-f251-441e-9ac6-876bb438642c"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[18755, 511, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"6353e507-9792-4400-80a9-a7203fdf5e8c"],
Cell[18982, 518, 149, 2, 70, "ExampleText",ExpressionUUID->"8faf5438-a379-4689-9e44-4f86caedc29d"],
Cell[CellGroupData[{
Cell[19156, 524, 704, 18, 70, "Input",ExpressionUUID->"714bf4ef-a50a-42b6-9686-fdb61e14514a"],
Cell[19863, 544, 214, 4, 70, "Output",ExpressionUUID->"32c92058-9886-499c-ac46-590ea68c92fc"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[20138, 555, 1227, 31, 70, "ExampleSection",ExpressionUUID->"a2538dd2-78c3-4be9-9327-1edd37884602",
 CellID->1293636265],
Cell[21368, 588, 157, 2, 70, "ExampleText",ExpressionUUID->"6c976ec7-1ca2-4c8a-b698-3cb76b85cf18"],
Cell[CellGroupData[{
Cell[21550, 594, 2632, 67, 70, "Input",ExpressionUUID->"482756e8-a8fb-442f-8038-deb6b7552e2b"],
Cell[24185, 663, 137, 1, 70, "Output",ExpressionUUID->"382a374d-c40c-4e14-866b-1e1f756e14c5"]
}, Open  ]],
Cell[CellGroupData[{
Cell[24359, 669, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"e30afe98-7233-4eda-bfa7-1777efe86795"],
Cell[24586, 676, 155, 2, 70, "ExampleText",ExpressionUUID->"2d9f5d8a-ee02-402b-978a-568b0d817d00"],
Cell[CellGroupData[{
Cell[24766, 682, 3452, 86, 70, "Input",ExpressionUUID->"0a5fbac1-47bc-4931-a441-bb3879588f0b"],
Cell[28221, 770, 132, 1, 70, "Output",ExpressionUUID->"4ac7e43f-a626-45ad-a417-1e6520a0abfd"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[28402, 777, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"83e8cfa9-9da5-47cd-82a0-763d339ffd20"],
Cell[28629, 784, 174, 3, 70, "ExampleText",ExpressionUUID->"16d46c16-835f-4b56-9f54-a787b2fbda41"],
Cell[CellGroupData[{
Cell[28828, 791, 705, 18, 70, "Input",ExpressionUUID->"5a3fac36-1e80-45bf-945b-15925b03717f"],
Cell[29536, 811, 107, 1, 70, "Output",ExpressionUUID->"9d58108d-b57e-4857-ae83-7863e058f548"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[29704, 819, 1233, 31, 70, "ExampleSection",ExpressionUUID->"00e9af97-5ebd-4e85-9c75-e9695bd9d254",
 CellID->258228157],
Cell[30940, 852, 187, 3, 70, "ExampleText",ExpressionUUID->"d7dea557-26e5-432a-8728-e1a8f486eeca"],
Cell[CellGroupData[{
Cell[31152, 859, 2884, 73, 70, "Input",ExpressionUUID->"6983c445-b69d-4da7-ae3e-04437382fb68"],
Cell[34039, 934, 158, 1, 70, "Output",ExpressionUUID->"8bfe046a-b946-49c1-86ce-9d0cf9b65c7d"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[34246, 941, 1244, 31, 70, "ExampleSection",ExpressionUUID->"738719a9-35b6-49e7-9c36-08d3a2a3f615",
 CellID->2123667759],
Cell[35493, 974, 533, 14, 70, "ExampleText",ExpressionUUID->"00ad6d56-9dde-4d13-9a9e-583f14dbc369"],
Cell[CellGroupData[{
Cell[36051, 992, 870, 22, 70, "Input",ExpressionUUID->"e99b8596-a9aa-4f8b-b9bf-2fa18407f4b3"],
Cell[36924, 1016, 107, 1, 70, "Output",ExpressionUUID->"0247e78c-e572-4f61-9ff6-7211389bd0fd"]
}, Open  ]],
Cell[CellGroupData[{
Cell[37068, 1022, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"5b888153-a0dc-4ca0-a842-2529427da300"],
Cell[37295, 1029, 589, 14, 70, "ExampleText",ExpressionUUID->"e1a67439-3ebf-46d8-a9fe-bade6aa5a9d2"],
Cell[CellGroupData[{
Cell[37909, 1047, 842, 21, 70, "Input",ExpressionUUID->"cfaca6b2-1bdf-4d2a-8497-88828864c395"],
Cell[38754, 1070, 107, 1, 70, "Output",ExpressionUUID->"1c7cc9a5-31bb-4c11-981f-902f7b663bb1"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[38922, 1078, 1237, 31, 70, "ExampleSection",ExpressionUUID->"be574cb0-f080-422c-ae27-ec10f691910a",
 CellID->1305812373],
Cell[40162, 1111, 740, 20, 70, "ExampleText",ExpressionUUID->"62a76425-55fb-4a2f-9df3-2466df9b034a"],
Cell[CellGroupData[{
Cell[40927, 1135, 781, 19, 70, "Input",ExpressionUUID->"ace60ddf-684b-4f51-b323-0d8115bfa140"],
Cell[41711, 1156, 111, 1, 70, "Output",ExpressionUUID->"94445fad-5085-4997-b48a-d51b66a95a49"]
}, Open  ]],
Cell[CellGroupData[{
Cell[41859, 1162, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"ba387d44-a2f2-48c5-aaf4-0b3c1821ed0e"],
Cell[42086, 1169, 246, 4, 70, "ExampleText",ExpressionUUID->"03216e7e-d07c-49fb-a8e8-d1cbeddbf6e5"],
Cell[CellGroupData[{
Cell[42357, 1177, 705, 18, 70, "Input",ExpressionUUID->"dd401282-99f1-4ca9-b661-bd0601dc434f"],
Cell[43065, 1197, 302, 6, 70, "Output",ExpressionUUID->"1e721420-ebd4-4832-8b44-32b67b02cd2c"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[43416, 1209, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"d1cbd3be-231b-4e86-9fc0-2a4a0f49406c"],
Cell[43643, 1216, 403, 11, 70, "ExampleText",ExpressionUUID->"04e0245f-50ab-4fec-8bce-252802ee085b"],
Cell[CellGroupData[{
Cell[44071, 1231, 339, 7, 70, "Input",ExpressionUUID->"344de7dd-1b68-415b-aff9-ac89c594503e"],
Cell[44413, 1240, 110, 1, 70, "Output",ExpressionUUID->"66dde84c-b833-47a5-80e4-fd06ea5404f9"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[44574, 1247, 3100, 81, 70, "SeeAlsoSection",ExpressionUUID->"f821d418-d3c8-422f-a9ef-ff9252c08998"],
Cell[47677, 1330, 754, 19, 70, "MoreAboutSection",ExpressionUUID->"35a59c83-ea53-491a-b871-e937dfb64282"],
Cell[48434, 1351, 78, 0, 70, "FooterCell",ExpressionUUID->"0cbbd999-eaa1-4ff9-b6ba-9db1f3f97a20"]
}
]
*)

(* End of internal cache information *)

