diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/Example.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/Example.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/Example.hs
@@ -0,0 +1,214 @@
+{- This file was auto-generated from tensorflow/core/example/example.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Example.Example where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Example.Feature
+
+data Example = Example{_Example'features ::
+                       !(Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.Features)}
+             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Example.Feature.Features,
+          b ~ Proto.Tensorflow.Core.Example.Feature.Features,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "features" f Example Example a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Example'features
+                 (\ x__ y__ -> x__{_Example'features = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.Features,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.Features,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'features" f Example Example a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Example'features
+                 (\ x__ y__ -> x__{_Example'features = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Example where
+        def = Example{_Example'features = Prelude.Nothing}
+
+instance Data.ProtoLens.Message Example where
+        descriptor
+          = let features__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "features"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Example.Feature.Features)
+                      (Data.ProtoLens.OptionalField maybe'features)
+                      :: Data.ProtoLens.FieldDescriptor Example
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Example")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, features__field_descriptor)])
+                (Data.Map.fromList [("features", features__field_descriptor)])
+
+data SequenceExample = SequenceExample{_SequenceExample'context ::
+                                       !(Prelude.Maybe
+                                           Proto.Tensorflow.Core.Example.Feature.Features),
+                                       _SequenceExample'featureLists ::
+                                       !(Prelude.Maybe
+                                           Proto.Tensorflow.Core.Example.Feature.FeatureLists)}
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Example.Feature.Features,
+          b ~ Proto.Tensorflow.Core.Example.Feature.Features,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "context" f SequenceExample SequenceExample a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SequenceExample'context
+                 (\ x__ y__ -> x__{_SequenceExample'context = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.Features,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.Features,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'context" f SequenceExample
+           SequenceExample
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SequenceExample'context
+                 (\ x__ y__ -> x__{_SequenceExample'context = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Example.Feature.FeatureLists,
+          b ~ Proto.Tensorflow.Core.Example.Feature.FeatureLists,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "featureLists" f SequenceExample
+           SequenceExample
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SequenceExample'featureLists
+                 (\ x__ y__ -> x__{_SequenceExample'featureLists = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.FeatureLists,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Example.Feature.FeatureLists,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'featureLists" f SequenceExample
+           SequenceExample
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SequenceExample'featureLists
+                 (\ x__ y__ -> x__{_SequenceExample'featureLists = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SequenceExample where
+        def
+          = SequenceExample{_SequenceExample'context = Prelude.Nothing,
+                            _SequenceExample'featureLists = Prelude.Nothing}
+
+instance Data.ProtoLens.Message SequenceExample where
+        descriptor
+          = let context__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "context"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Example.Feature.Features)
+                      (Data.ProtoLens.OptionalField maybe'context)
+                      :: Data.ProtoLens.FieldDescriptor SequenceExample
+                featureLists__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "feature_lists"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Example.Feature.FeatureLists)
+                      (Data.ProtoLens.OptionalField maybe'featureLists)
+                      :: Data.ProtoLens.FieldDescriptor SequenceExample
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SequenceExample")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, context__field_descriptor),
+                    (Data.ProtoLens.Tag 2, featureLists__field_descriptor)])
+                (Data.Map.fromList
+                   [("context", context__field_descriptor),
+                    ("feature_lists", featureLists__field_descriptor)])
+
+context ::
+        forall f s t a b . (Lens.Labels.HasLens "context" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+context
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "context")
+
+featureLists ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "featureLists" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+featureLists
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "featureLists")
+
+features ::
+         forall f s t a b . (Lens.Labels.HasLens "features" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+features
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "features")
+
+maybe'context ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'context" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'context
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'context")
+
+maybe'featureLists ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'featureLists" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'featureLists
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'featureLists")
+
+maybe'features ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'features" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'features
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'features")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/ExampleParserConfiguration.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/ExampleParserConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/ExampleParserConfiguration.hs
@@ -0,0 +1,720 @@
+{- This file was auto-generated from tensorflow/core/example/example_parser_configuration.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Example.ExampleParserConfiguration
+       where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Tensor
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.Types
+
+data ExampleParserConfiguration = ExampleParserConfiguration{_ExampleParserConfiguration'featureMap
+                                                             ::
+                                                             !(Data.Map.Map Data.Text.Text
+                                                                 FeatureConfiguration)}
+                                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Map.Map Data.Text.Text FeatureConfiguration,
+          b ~ Data.Map.Map Data.Text.Text FeatureConfiguration,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "featureMap" f ExampleParserConfiguration
+           ExampleParserConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ExampleParserConfiguration'featureMap
+                 (\ x__ y__ -> x__{_ExampleParserConfiguration'featureMap = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ExampleParserConfiguration
+         where
+        def
+          = ExampleParserConfiguration{_ExampleParserConfiguration'featureMap
+                                         = Data.Map.empty}
+
+instance Data.ProtoLens.Message ExampleParserConfiguration where
+        descriptor
+          = let featureMap__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "feature_map"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           ExampleParserConfiguration'FeatureMapEntry)
+                      (Data.ProtoLens.MapField key value featureMap)
+                      :: Data.ProtoLens.FieldDescriptor ExampleParserConfiguration
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ExampleParserConfiguration")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, featureMap__field_descriptor)])
+                (Data.Map.fromList [("feature_map", featureMap__field_descriptor)])
+
+data ExampleParserConfiguration'FeatureMapEntry = ExampleParserConfiguration'FeatureMapEntry{_ExampleParserConfiguration'FeatureMapEntry'key
+                                                                                             ::
+                                                                                             !Data.Text.Text,
+                                                                                             _ExampleParserConfiguration'FeatureMapEntry'value
+                                                                                             ::
+                                                                                             !(Prelude.Maybe
+                                                                                                 FeatureConfiguration)}
+                                                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f
+           ExampleParserConfiguration'FeatureMapEntry
+           ExampleParserConfiguration'FeatureMapEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _ExampleParserConfiguration'FeatureMapEntry'key
+                 (\ x__ y__ ->
+                    x__{_ExampleParserConfiguration'FeatureMapEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ FeatureConfiguration, b ~ FeatureConfiguration,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f
+           ExampleParserConfiguration'FeatureMapEntry
+           ExampleParserConfiguration'FeatureMapEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _ExampleParserConfiguration'FeatureMapEntry'value
+                 (\ x__ y__ ->
+                    x__{_ExampleParserConfiguration'FeatureMapEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe FeatureConfiguration,
+          b ~ Prelude.Maybe FeatureConfiguration, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f
+           ExampleParserConfiguration'FeatureMapEntry
+           ExampleParserConfiguration'FeatureMapEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _ExampleParserConfiguration'FeatureMapEntry'value
+                 (\ x__ y__ ->
+                    x__{_ExampleParserConfiguration'FeatureMapEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default
+           ExampleParserConfiguration'FeatureMapEntry
+         where
+        def
+          = ExampleParserConfiguration'FeatureMapEntry{_ExampleParserConfiguration'FeatureMapEntry'key
+                                                         = Data.ProtoLens.fieldDefault,
+                                                       _ExampleParserConfiguration'FeatureMapEntry'value
+                                                         = Prelude.Nothing}
+
+instance Data.ProtoLens.Message
+           ExampleParserConfiguration'FeatureMapEntry
+         where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      ::
+                      Data.ProtoLens.FieldDescriptor
+                        ExampleParserConfiguration'FeatureMapEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FeatureConfiguration)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      ::
+                      Data.ProtoLens.FieldDescriptor
+                        ExampleParserConfiguration'FeatureMapEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack
+                   "tensorflow.ExampleParserConfiguration.FeatureMapEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data FeatureConfiguration = FeatureConfiguration{_FeatureConfiguration'config
+                                                 :: !(Prelude.Maybe FeatureConfiguration'Config)}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data FeatureConfiguration'Config = FeatureConfiguration'FixedLenFeature !FixedLenFeatureProto
+                                 | FeatureConfiguration'VarLenFeature !VarLenFeatureProto
+                                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Maybe FeatureConfiguration'Config,
+          b ~ Prelude.Maybe FeatureConfiguration'Config,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'config" f FeatureConfiguration
+           FeatureConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureConfiguration'config
+                 (\ x__ y__ -> x__{_FeatureConfiguration'config = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe FixedLenFeatureProto,
+          b ~ Prelude.Maybe FixedLenFeatureProto, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'fixedLenFeature" f FeatureConfiguration
+           FeatureConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureConfiguration'config
+                 (\ x__ y__ -> x__{_FeatureConfiguration'config = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just
+                          (FeatureConfiguration'FixedLenFeature x__val) -> Prelude.Just
+                                                                             x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap FeatureConfiguration'FixedLenFeature y__))
+
+instance (a ~ FixedLenFeatureProto, b ~ FixedLenFeatureProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "fixedLenFeature" f FeatureConfiguration
+           FeatureConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureConfiguration'config
+                 (\ x__ y__ -> x__{_FeatureConfiguration'config = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just
+                             (FeatureConfiguration'FixedLenFeature x__val) -> Prelude.Just
+                                                                                x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap FeatureConfiguration'FixedLenFeature y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe VarLenFeatureProto,
+          b ~ Prelude.Maybe VarLenFeatureProto, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'varLenFeature" f FeatureConfiguration
+           FeatureConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureConfiguration'config
+                 (\ x__ y__ -> x__{_FeatureConfiguration'config = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just
+                          (FeatureConfiguration'VarLenFeature x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap FeatureConfiguration'VarLenFeature y__))
+
+instance (a ~ VarLenFeatureProto, b ~ VarLenFeatureProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "varLenFeature" f FeatureConfiguration
+           FeatureConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureConfiguration'config
+                 (\ x__ y__ -> x__{_FeatureConfiguration'config = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just
+                             (FeatureConfiguration'VarLenFeature x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap FeatureConfiguration'VarLenFeature y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance Data.Default.Class.Default FeatureConfiguration where
+        def
+          = FeatureConfiguration{_FeatureConfiguration'config =
+                                   Prelude.Nothing}
+
+instance Data.ProtoLens.Message FeatureConfiguration where
+        descriptor
+          = let fixedLenFeature__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "fixed_len_feature"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FixedLenFeatureProto)
+                      (Data.ProtoLens.OptionalField maybe'fixedLenFeature)
+                      :: Data.ProtoLens.FieldDescriptor FeatureConfiguration
+                varLenFeature__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "var_len_feature"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor VarLenFeatureProto)
+                      (Data.ProtoLens.OptionalField maybe'varLenFeature)
+                      :: Data.ProtoLens.FieldDescriptor FeatureConfiguration
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FeatureConfiguration")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, fixedLenFeature__field_descriptor),
+                    (Data.ProtoLens.Tag 2, varLenFeature__field_descriptor)])
+                (Data.Map.fromList
+                   [("fixed_len_feature", fixedLenFeature__field_descriptor),
+                    ("var_len_feature", varLenFeature__field_descriptor)])
+
+data FixedLenFeatureProto = FixedLenFeatureProto{_FixedLenFeatureProto'dtype
+                                                 :: !Proto.Tensorflow.Core.Framework.Types.DataType,
+                                                 _FixedLenFeatureProto'shape ::
+                                                 !(Prelude.Maybe
+                                                     Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                                                 _FixedLenFeatureProto'defaultValue ::
+                                                 !(Prelude.Maybe
+                                                     Proto.Tensorflow.Core.Framework.Tensor.TensorProto),
+                                                 _FixedLenFeatureProto'valuesOutputTensorName ::
+                                                 !Data.Text.Text}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f FixedLenFeatureProto
+           FixedLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FixedLenFeatureProto'dtype
+                 (\ x__ y__ -> x__{_FixedLenFeatureProto'dtype = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f FixedLenFeatureProto
+           FixedLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FixedLenFeatureProto'shape
+                 (\ x__ y__ -> x__{_FixedLenFeatureProto'shape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'shape" f FixedLenFeatureProto
+           FixedLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FixedLenFeatureProto'shape
+                 (\ x__ y__ -> x__{_FixedLenFeatureProto'shape = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "defaultValue" f FixedLenFeatureProto
+           FixedLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FixedLenFeatureProto'defaultValue
+                 (\ x__ y__ -> x__{_FixedLenFeatureProto'defaultValue = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'defaultValue" f FixedLenFeatureProto
+           FixedLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FixedLenFeatureProto'defaultValue
+                 (\ x__ y__ -> x__{_FixedLenFeatureProto'defaultValue = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "valuesOutputTensorName" f FixedLenFeatureProto
+           FixedLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _FixedLenFeatureProto'valuesOutputTensorName
+                 (\ x__ y__ ->
+                    x__{_FixedLenFeatureProto'valuesOutputTensorName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FixedLenFeatureProto where
+        def
+          = FixedLenFeatureProto{_FixedLenFeatureProto'dtype =
+                                   Data.Default.Class.def,
+                                 _FixedLenFeatureProto'shape = Prelude.Nothing,
+                                 _FixedLenFeatureProto'defaultValue = Prelude.Nothing,
+                                 _FixedLenFeatureProto'valuesOutputTensorName =
+                                   Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message FixedLenFeatureProto where
+        descriptor
+          = let dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor FixedLenFeatureProto
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'shape)
+                      :: Data.ProtoLens.FieldDescriptor FixedLenFeatureProto
+                defaultValue__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "default_value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
+                      (Data.ProtoLens.OptionalField maybe'defaultValue)
+                      :: Data.ProtoLens.FieldDescriptor FixedLenFeatureProto
+                valuesOutputTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "values_output_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         valuesOutputTensorName)
+                      :: Data.ProtoLens.FieldDescriptor FixedLenFeatureProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FixedLenFeatureProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
+                    (Data.ProtoLens.Tag 2, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 3, defaultValue__field_descriptor),
+                    (Data.ProtoLens.Tag 4, valuesOutputTensorName__field_descriptor)])
+                (Data.Map.fromList
+                   [("dtype", dtype__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("default_value", defaultValue__field_descriptor),
+                    ("values_output_tensor_name",
+                     valuesOutputTensorName__field_descriptor)])
+
+data VarLenFeatureProto = VarLenFeatureProto{_VarLenFeatureProto'dtype
+                                             :: !Proto.Tensorflow.Core.Framework.Types.DataType,
+                                             _VarLenFeatureProto'valuesOutputTensorName ::
+                                             !Data.Text.Text,
+                                             _VarLenFeatureProto'indicesOutputTensorName ::
+                                             !Data.Text.Text,
+                                             _VarLenFeatureProto'shapesOutputTensorName ::
+                                             !Data.Text.Text}
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f VarLenFeatureProto VarLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VarLenFeatureProto'dtype
+                 (\ x__ y__ -> x__{_VarLenFeatureProto'dtype = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "valuesOutputTensorName" f VarLenFeatureProto
+           VarLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _VarLenFeatureProto'valuesOutputTensorName
+                 (\ x__ y__ ->
+                    x__{_VarLenFeatureProto'valuesOutputTensorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "indicesOutputTensorName" f VarLenFeatureProto
+           VarLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _VarLenFeatureProto'indicesOutputTensorName
+                 (\ x__ y__ ->
+                    x__{_VarLenFeatureProto'indicesOutputTensorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shapesOutputTensorName" f VarLenFeatureProto
+           VarLenFeatureProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _VarLenFeatureProto'shapesOutputTensorName
+                 (\ x__ y__ ->
+                    x__{_VarLenFeatureProto'shapesOutputTensorName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default VarLenFeatureProto where
+        def
+          = VarLenFeatureProto{_VarLenFeatureProto'dtype =
+                                 Data.Default.Class.def,
+                               _VarLenFeatureProto'valuesOutputTensorName =
+                                 Data.ProtoLens.fieldDefault,
+                               _VarLenFeatureProto'indicesOutputTensorName =
+                                 Data.ProtoLens.fieldDefault,
+                               _VarLenFeatureProto'shapesOutputTensorName =
+                                 Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message VarLenFeatureProto where
+        descriptor
+          = let dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor VarLenFeatureProto
+                valuesOutputTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "values_output_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         valuesOutputTensorName)
+                      :: Data.ProtoLens.FieldDescriptor VarLenFeatureProto
+                indicesOutputTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "indices_output_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         indicesOutputTensorName)
+                      :: Data.ProtoLens.FieldDescriptor VarLenFeatureProto
+                shapesOutputTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shapes_output_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         shapesOutputTensorName)
+                      :: Data.ProtoLens.FieldDescriptor VarLenFeatureProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.VarLenFeatureProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
+                    (Data.ProtoLens.Tag 2, valuesOutputTensorName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, indicesOutputTensorName__field_descriptor),
+                    (Data.ProtoLens.Tag 4, shapesOutputTensorName__field_descriptor)])
+                (Data.Map.fromList
+                   [("dtype", dtype__field_descriptor),
+                    ("values_output_tensor_name",
+                     valuesOutputTensorName__field_descriptor),
+                    ("indices_output_tensor_name",
+                     indicesOutputTensorName__field_descriptor),
+                    ("shapes_output_tensor_name",
+                     shapesOutputTensorName__field_descriptor)])
+
+defaultValue ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "defaultValue" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+defaultValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "defaultValue")
+
+dtype ::
+      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+dtype
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
+
+featureMap ::
+           forall f s t a b . (Lens.Labels.HasLens "featureMap" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+featureMap
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "featureMap")
+
+fixedLenFeature ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "fixedLenFeature" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+fixedLenFeature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fixedLenFeature")
+
+indicesOutputTensorName ::
+                        forall f s t a b .
+                          (Lens.Labels.HasLens "indicesOutputTensorName" f s t a b) =>
+                          Lens.Family2.LensLike f s t a b
+indicesOutputTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "indicesOutputTensorName")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+maybe'config ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "maybe'config" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+maybe'config
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'config")
+
+maybe'defaultValue ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'defaultValue" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'defaultValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'defaultValue")
+
+maybe'fixedLenFeature ::
+                      forall f s t a b .
+                        (Lens.Labels.HasLens "maybe'fixedLenFeature" f s t a b) =>
+                        Lens.Family2.LensLike f s t a b
+maybe'fixedLenFeature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'fixedLenFeature")
+
+maybe'shape ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+maybe'varLenFeature ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "maybe'varLenFeature" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+maybe'varLenFeature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'varLenFeature")
+
+shape ::
+      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
+
+shapesOutputTensorName ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "shapesOutputTensorName" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+shapesOutputTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "shapesOutputTensorName")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
+
+valuesOutputTensorName ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "valuesOutputTensorName" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+valuesOutputTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "valuesOutputTensorName")
+
+varLenFeature ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "varLenFeature" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+varLenFeature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "varLenFeature")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/Feature.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/Feature.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Example/Feature.hs
@@ -0,0 +1,598 @@
+{- This file was auto-generated from tensorflow/core/example/feature.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Example.Feature where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data BytesList = BytesList{_BytesList'value ::
+                           ![Data.ByteString.ByteString]}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.ByteString.ByteString],
+          b ~ [Data.ByteString.ByteString], Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f BytesList BytesList a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BytesList'value
+                 (\ x__ y__ -> x__{_BytesList'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BytesList where
+        def = BytesList{_BytesList'value = []}
+
+instance Data.ProtoLens.Message BytesList where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)
+                      :: Data.ProtoLens.FieldDescriptor BytesList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BytesList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data Feature = Feature{_Feature'kind ::
+                       !(Prelude.Maybe Feature'Kind)}
+             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data Feature'Kind = Feature'BytesList !BytesList
+                  | Feature'FloatList !FloatList
+                  | Feature'Int64List !Int64List
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Maybe Feature'Kind,
+          b ~ Prelude.Maybe Feature'Kind, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'kind" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe BytesList, b ~ Prelude.Maybe BytesList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'bytesList" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Feature'BytesList x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Feature'BytesList y__))
+
+instance (a ~ BytesList, b ~ BytesList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "bytesList" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Feature'BytesList x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Feature'BytesList y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe FloatList, b ~ Prelude.Maybe FloatList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'floatList" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Feature'FloatList x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Feature'FloatList y__))
+
+instance (a ~ FloatList, b ~ FloatList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "floatList" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Feature'FloatList x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Feature'FloatList y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe Int64List, b ~ Prelude.Maybe Int64List,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'int64List" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Feature'Int64List x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Feature'Int64List y__))
+
+instance (a ~ Int64List, b ~ Int64List, Prelude.Functor f) =>
+         Lens.Labels.HasLens "int64List" f Feature Feature a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Feature'kind
+                 (\ x__ y__ -> x__{_Feature'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Feature'Int64List x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Feature'Int64List y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance Data.Default.Class.Default Feature where
+        def = Feature{_Feature'kind = Prelude.Nothing}
+
+instance Data.ProtoLens.Message Feature where
+        descriptor
+          = let bytesList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bytes_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor BytesList)
+                      (Data.ProtoLens.OptionalField maybe'bytesList)
+                      :: Data.ProtoLens.FieldDescriptor Feature
+                floatList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "float_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FloatList)
+                      (Data.ProtoLens.OptionalField maybe'floatList)
+                      :: Data.ProtoLens.FieldDescriptor Feature
+                int64List__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "int64_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Int64List)
+                      (Data.ProtoLens.OptionalField maybe'int64List)
+                      :: Data.ProtoLens.FieldDescriptor Feature
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Feature")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, bytesList__field_descriptor),
+                    (Data.ProtoLens.Tag 2, floatList__field_descriptor),
+                    (Data.ProtoLens.Tag 3, int64List__field_descriptor)])
+                (Data.Map.fromList
+                   [("bytes_list", bytesList__field_descriptor),
+                    ("float_list", floatList__field_descriptor),
+                    ("int64_list", int64List__field_descriptor)])
+
+data FeatureList = FeatureList{_FeatureList'feature :: ![Feature]}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Feature], b ~ [Feature], Prelude.Functor f) =>
+         Lens.Labels.HasLens "feature" f FeatureList FeatureList a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureList'feature
+                 (\ x__ y__ -> x__{_FeatureList'feature = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FeatureList where
+        def = FeatureList{_FeatureList'feature = []}
+
+instance Data.ProtoLens.Message FeatureList where
+        descriptor
+          = let feature__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "feature"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Feature)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked feature)
+                      :: Data.ProtoLens.FieldDescriptor FeatureList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FeatureList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, feature__field_descriptor)])
+                (Data.Map.fromList [("feature", feature__field_descriptor)])
+
+data FeatureLists = FeatureLists{_FeatureLists'featureList ::
+                                 !(Data.Map.Map Data.Text.Text FeatureList)}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Map.Map Data.Text.Text FeatureList,
+          b ~ Data.Map.Map Data.Text.Text FeatureList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "featureList" f FeatureLists FeatureLists a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureLists'featureList
+                 (\ x__ y__ -> x__{_FeatureLists'featureList = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FeatureLists where
+        def = FeatureLists{_FeatureLists'featureList = Data.Map.empty}
+
+instance Data.ProtoLens.Message FeatureLists where
+        descriptor
+          = let featureList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "feature_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FeatureLists'FeatureListEntry)
+                      (Data.ProtoLens.MapField key value featureList)
+                      :: Data.ProtoLens.FieldDescriptor FeatureLists
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FeatureLists")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, featureList__field_descriptor)])
+                (Data.Map.fromList
+                   [("feature_list", featureList__field_descriptor)])
+
+data FeatureLists'FeatureListEntry = FeatureLists'FeatureListEntry{_FeatureLists'FeatureListEntry'key
+                                                                   :: !Data.Text.Text,
+                                                                   _FeatureLists'FeatureListEntry'value
+                                                                   :: !(Prelude.Maybe FeatureList)}
+                                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f FeatureLists'FeatureListEntry
+           FeatureLists'FeatureListEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureLists'FeatureListEntry'key
+                 (\ x__ y__ -> x__{_FeatureLists'FeatureListEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ FeatureList, b ~ FeatureList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f FeatureLists'FeatureListEntry
+           FeatureLists'FeatureListEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureLists'FeatureListEntry'value
+                 (\ x__ y__ -> x__{_FeatureLists'FeatureListEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe FeatureList,
+          b ~ Prelude.Maybe FeatureList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f FeatureLists'FeatureListEntry
+           FeatureLists'FeatureListEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FeatureLists'FeatureListEntry'value
+                 (\ x__ y__ -> x__{_FeatureLists'FeatureListEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FeatureLists'FeatureListEntry
+         where
+        def
+          = FeatureLists'FeatureListEntry{_FeatureLists'FeatureListEntry'key
+                                            = Data.ProtoLens.fieldDefault,
+                                          _FeatureLists'FeatureListEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message FeatureLists'FeatureListEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor FeatureLists'FeatureListEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FeatureList)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor FeatureLists'FeatureListEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FeatureLists.FeatureListEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data Features = Features{_Features'feature ::
+                         !(Data.Map.Map Data.Text.Text Feature)}
+              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Map.Map Data.Text.Text Feature,
+          b ~ Data.Map.Map Data.Text.Text Feature, Prelude.Functor f) =>
+         Lens.Labels.HasLens "feature" f Features Features a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Features'feature
+                 (\ x__ y__ -> x__{_Features'feature = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Features where
+        def = Features{_Features'feature = Data.Map.empty}
+
+instance Data.ProtoLens.Message Features where
+        descriptor
+          = let feature__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "feature"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Features'FeatureEntry)
+                      (Data.ProtoLens.MapField key value feature)
+                      :: Data.ProtoLens.FieldDescriptor Features
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Features")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, feature__field_descriptor)])
+                (Data.Map.fromList [("feature", feature__field_descriptor)])
+
+data Features'FeatureEntry = Features'FeatureEntry{_Features'FeatureEntry'key
+                                                   :: !Data.Text.Text,
+                                                   _Features'FeatureEntry'value ::
+                                                   !(Prelude.Maybe Feature)}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f Features'FeatureEntry
+           Features'FeatureEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Features'FeatureEntry'key
+                 (\ x__ y__ -> x__{_Features'FeatureEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Feature, b ~ Feature, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f Features'FeatureEntry
+           Features'FeatureEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Features'FeatureEntry'value
+                 (\ x__ y__ -> x__{_Features'FeatureEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe Feature, b ~ Prelude.Maybe Feature,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f Features'FeatureEntry
+           Features'FeatureEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Features'FeatureEntry'value
+                 (\ x__ y__ -> x__{_Features'FeatureEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Features'FeatureEntry where
+        def
+          = Features'FeatureEntry{_Features'FeatureEntry'key =
+                                    Data.ProtoLens.fieldDefault,
+                                  _Features'FeatureEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message Features'FeatureEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor Features'FeatureEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Feature)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor Features'FeatureEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Features.FeatureEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data FloatList = FloatList{_FloatList'value :: ![Prelude.Float]}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f FloatList FloatList a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FloatList'value
+                 (\ x__ y__ -> x__{_FloatList'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FloatList where
+        def = FloatList{_FloatList'value = []}
+
+instance Data.ProtoLens.Message FloatList where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed value)
+                      :: Data.ProtoLens.FieldDescriptor FloatList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FloatList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data Int64List = Int64List{_Int64List'value :: ![Data.Int.Int64]}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f Int64List Int64List a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Int64List'value
+                 (\ x__ y__ -> x__{_Int64List'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Int64List where
+        def = Int64List{_Int64List'value = []}
+
+instance Data.ProtoLens.Message Int64List where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed value)
+                      :: Data.ProtoLens.FieldDescriptor Int64List
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Int64List")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+bytesList ::
+          forall f s t a b . (Lens.Labels.HasLens "bytesList" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+bytesList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bytesList")
+
+feature ::
+        forall f s t a b . (Lens.Labels.HasLens "feature" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+feature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "feature")
+
+featureList ::
+            forall f s t a b . (Lens.Labels.HasLens "featureList" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+featureList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "featureList")
+
+floatList ::
+          forall f s t a b . (Lens.Labels.HasLens "floatList" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+floatList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "floatList")
+
+int64List ::
+          forall f s t a b . (Lens.Labels.HasLens "int64List" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+int64List
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "int64List")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+maybe'bytesList ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'bytesList" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'bytesList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'bytesList")
+
+maybe'floatList ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'floatList" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'floatList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'floatList")
+
+maybe'int64List ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'int64List" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'int64List
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'int64List")
+
+maybe'kind ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'kind" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'kind
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'kind")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/AllocationDescription.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/AllocationDescription.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/AllocationDescription.hs
@@ -0,0 +1,235 @@
+{- This file was auto-generated from tensorflow/core/framework/allocation_description.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.AllocationDescription where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data AllocationDescription = AllocationDescription{_AllocationDescription'requestedBytes
+                                                   :: !Data.Int.Int64,
+                                                   _AllocationDescription'allocatedBytes ::
+                                                   !Data.Int.Int64,
+                                                   _AllocationDescription'allocatorName ::
+                                                   !Data.Text.Text,
+                                                   _AllocationDescription'allocationId ::
+                                                   !Data.Int.Int64,
+                                                   _AllocationDescription'hasSingleReference ::
+                                                   !Prelude.Bool,
+                                                   _AllocationDescription'ptr :: !Data.Word.Word64}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "requestedBytes" f AllocationDescription
+           AllocationDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationDescription'requestedBytes
+                 (\ x__ y__ -> x__{_AllocationDescription'requestedBytes = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatedBytes" f AllocationDescription
+           AllocationDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationDescription'allocatedBytes
+                 (\ x__ y__ -> x__{_AllocationDescription'allocatedBytes = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorName" f AllocationDescription
+           AllocationDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationDescription'allocatorName
+                 (\ x__ y__ -> x__{_AllocationDescription'allocatorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocationId" f AllocationDescription
+           AllocationDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationDescription'allocationId
+                 (\ x__ y__ -> x__{_AllocationDescription'allocationId = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "hasSingleReference" f AllocationDescription
+           AllocationDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _AllocationDescription'hasSingleReference
+                 (\ x__ y__ ->
+                    x__{_AllocationDescription'hasSingleReference = y__}))
+              Prelude.id
+
+instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "ptr" f AllocationDescription
+           AllocationDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationDescription'ptr
+                 (\ x__ y__ -> x__{_AllocationDescription'ptr = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AllocationDescription where
+        def
+          = AllocationDescription{_AllocationDescription'requestedBytes =
+                                    Data.ProtoLens.fieldDefault,
+                                  _AllocationDescription'allocatedBytes =
+                                    Data.ProtoLens.fieldDefault,
+                                  _AllocationDescription'allocatorName =
+                                    Data.ProtoLens.fieldDefault,
+                                  _AllocationDescription'allocationId = Data.ProtoLens.fieldDefault,
+                                  _AllocationDescription'hasSingleReference =
+                                    Data.ProtoLens.fieldDefault,
+                                  _AllocationDescription'ptr = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message AllocationDescription where
+        descriptor
+          = let requestedBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "requested_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional requestedBytes)
+                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
+                allocatedBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocated_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatedBytes)
+                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
+                allocatorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
+                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
+                allocationId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocation_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocationId)
+                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
+                hasSingleReference__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "has_single_reference"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         hasSingleReference)
+                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
+                ptr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "ptr"
+                      (Data.ProtoLens.UInt64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional ptr)
+                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AllocationDescription")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, requestedBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 2, allocatedBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 3, allocatorName__field_descriptor),
+                    (Data.ProtoLens.Tag 4, allocationId__field_descriptor),
+                    (Data.ProtoLens.Tag 5, hasSingleReference__field_descriptor),
+                    (Data.ProtoLens.Tag 6, ptr__field_descriptor)])
+                (Data.Map.fromList
+                   [("requested_bytes", requestedBytes__field_descriptor),
+                    ("allocated_bytes", allocatedBytes__field_descriptor),
+                    ("allocator_name", allocatorName__field_descriptor),
+                    ("allocation_id", allocationId__field_descriptor),
+                    ("has_single_reference", hasSingleReference__field_descriptor),
+                    ("ptr", ptr__field_descriptor)])
+
+allocatedBytes ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "allocatedBytes" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+allocatedBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatedBytes")
+
+allocationId ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "allocationId" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+allocationId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocationId")
+
+allocatorName ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "allocatorName" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+allocatorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorName")
+
+hasSingleReference ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "hasSingleReference" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+hasSingleReference
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hasSingleReference")
+
+ptr ::
+    forall f s t a b . (Lens.Labels.HasLens "ptr" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+ptr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ptr")
+
+requestedBytes ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "requestedBytes" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+requestedBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "requestedBytes")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/AttrValue.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/AttrValue.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/AttrValue.hs
@@ -0,0 +1,974 @@
+{- This file was auto-generated from tensorflow/core/framework/attr_value.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.AttrValue where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Tensor
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.Types
+
+data AttrValue = AttrValue{_AttrValue'value ::
+                           !(Prelude.Maybe AttrValue'Value)}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data AttrValue'Value = AttrValue'S !Data.ByteString.ByteString
+                     | AttrValue'I !Data.Int.Int64
+                     | AttrValue'F !Prelude.Float
+                     | AttrValue'B !Prelude.Bool
+                     | AttrValue'Type !Proto.Tensorflow.Core.Framework.Types.DataType
+                     | AttrValue'Shape !Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto
+                     | AttrValue'Tensor !Proto.Tensorflow.Core.Framework.Tensor.TensorProto
+                     | AttrValue'List !AttrValue'ListValue
+                     | AttrValue'Func !NameAttrList
+                     | AttrValue'Placeholder !Data.Text.Text
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Maybe AttrValue'Value,
+          b ~ Prelude.Maybe AttrValue'Value, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
+          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe's" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'S x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'S y__))
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "s" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'S x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'S y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Data.Int.Int64,
+          b ~ Prelude.Maybe Data.Int.Int64, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'i" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'I x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'I y__))
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "i" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'I x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'I y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Prelude.Float,
+          b ~ Prelude.Maybe Prelude.Float, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'f" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'F x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'F y__))
+
+instance (a ~ Prelude.Float, b ~ Prelude.Float,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "f" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'F x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'F y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Prelude.Bool,
+          b ~ Prelude.Maybe Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'b" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'B x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'B y__))
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "b" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'B x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'B y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'type'" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'Type x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'Type y__))
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'Type x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'Type y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'shape" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'Shape x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'Shape y__))
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'Shape x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'Shape y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensor" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'Tensor x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'Tensor y__))
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'Tensor x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'Tensor y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe AttrValue'ListValue,
+          b ~ Prelude.Maybe AttrValue'ListValue, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'list" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'List x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'List y__))
+
+instance (a ~ AttrValue'ListValue, b ~ AttrValue'ListValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "list" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'List x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'List y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe NameAttrList,
+          b ~ Prelude.Maybe NameAttrList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'func" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'Func x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'Func y__))
+
+instance (a ~ NameAttrList, b ~ NameAttrList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "func" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'Func x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'Func y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe Data.Text.Text,
+          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'placeholder" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (AttrValue'Placeholder x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap AttrValue'Placeholder y__))
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "placeholder" f AttrValue AttrValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'value
+                 (\ x__ y__ -> x__{_AttrValue'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (AttrValue'Placeholder x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap AttrValue'Placeholder y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance Data.Default.Class.Default AttrValue where
+        def = AttrValue{_AttrValue'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message AttrValue where
+        descriptor
+          = let s__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "s"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.OptionalField maybe's)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                i__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "i"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.OptionalField maybe'i)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                f__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "f"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.OptionalField maybe'f)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                b__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "b"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.OptionalField maybe'b)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.OptionalField maybe'type')
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'shape)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
+                      (Data.ProtoLens.OptionalField maybe'tensor)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                list__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AttrValue'ListValue)
+                      (Data.ProtoLens.OptionalField maybe'list)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                func__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "func"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor NameAttrList)
+                      (Data.ProtoLens.OptionalField maybe'func)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+                placeholder__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "placeholder"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.OptionalField maybe'placeholder)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AttrValue")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 2, s__field_descriptor),
+                    (Data.ProtoLens.Tag 3, i__field_descriptor),
+                    (Data.ProtoLens.Tag 4, f__field_descriptor),
+                    (Data.ProtoLens.Tag 5, b__field_descriptor),
+                    (Data.ProtoLens.Tag 6, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 7, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 8, tensor__field_descriptor),
+                    (Data.ProtoLens.Tag 1, list__field_descriptor),
+                    (Data.ProtoLens.Tag 10, func__field_descriptor),
+                    (Data.ProtoLens.Tag 9, placeholder__field_descriptor)])
+                (Data.Map.fromList
+                   [("s", s__field_descriptor), ("i", i__field_descriptor),
+                    ("f", f__field_descriptor), ("b", b__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("tensor", tensor__field_descriptor),
+                    ("list", list__field_descriptor), ("func", func__field_descriptor),
+                    ("placeholder", placeholder__field_descriptor)])
+
+data AttrValue'ListValue = AttrValue'ListValue{_AttrValue'ListValue's
+                                               :: ![Data.ByteString.ByteString],
+                                               _AttrValue'ListValue'i :: ![Data.Int.Int64],
+                                               _AttrValue'ListValue'f :: ![Prelude.Float],
+                                               _AttrValue'ListValue'b :: ![Prelude.Bool],
+                                               _AttrValue'ListValue'type' ::
+                                               ![Proto.Tensorflow.Core.Framework.Types.DataType],
+                                               _AttrValue'ListValue'shape ::
+                                               ![Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto],
+                                               _AttrValue'ListValue'tensor ::
+                                               ![Proto.Tensorflow.Core.Framework.Tensor.TensorProto],
+                                               _AttrValue'ListValue'func :: ![NameAttrList]}
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.ByteString.ByteString],
+          b ~ [Data.ByteString.ByteString], Prelude.Functor f) =>
+         Lens.Labels.HasLens "s" f AttrValue'ListValue AttrValue'ListValue a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue's
+                 (\ x__ y__ -> x__{_AttrValue'ListValue's = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "i" f AttrValue'ListValue AttrValue'ListValue a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'i
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'i = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "f" f AttrValue'ListValue AttrValue'ListValue a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'f
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'f = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Bool], b ~ [Prelude.Bool],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "b" f AttrValue'ListValue AttrValue'ListValue a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'b
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'b = y__}))
+              Prelude.id
+
+instance (a ~ [Proto.Tensorflow.Core.Framework.Types.DataType],
+          b ~ [Proto.Tensorflow.Core.Framework.Types.DataType],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f AttrValue'ListValue
+           AttrValue'ListValue
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'type'
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'type' = y__}))
+              Prelude.id
+
+instance (a ~
+            [Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto],
+          b ~ [Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f AttrValue'ListValue
+           AttrValue'ListValue
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'shape
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'shape = y__}))
+              Prelude.id
+
+instance (a ~ [Proto.Tensorflow.Core.Framework.Tensor.TensorProto],
+          b ~ [Proto.Tensorflow.Core.Framework.Tensor.TensorProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f AttrValue'ListValue
+           AttrValue'ListValue
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'tensor
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'tensor = y__}))
+              Prelude.id
+
+instance (a ~ [NameAttrList], b ~ [NameAttrList],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "func" f AttrValue'ListValue
+           AttrValue'ListValue
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AttrValue'ListValue'func
+                 (\ x__ y__ -> x__{_AttrValue'ListValue'func = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AttrValue'ListValue where
+        def
+          = AttrValue'ListValue{_AttrValue'ListValue's = [],
+                                _AttrValue'ListValue'i = [], _AttrValue'ListValue'f = [],
+                                _AttrValue'ListValue'b = [], _AttrValue'ListValue'type' = [],
+                                _AttrValue'ListValue'shape = [], _AttrValue'ListValue'tensor = [],
+                                _AttrValue'ListValue'func = []}
+
+instance Data.ProtoLens.Message AttrValue'ListValue where
+        descriptor
+          = let s__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "s"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked s)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                i__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "i"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed i)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                f__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "f"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed f)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                b__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "b"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed b)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed type')
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked shape)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked tensor)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+                func__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "func"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor NameAttrList)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked func)
+                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AttrValue.ListValue")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 2, s__field_descriptor),
+                    (Data.ProtoLens.Tag 3, i__field_descriptor),
+                    (Data.ProtoLens.Tag 4, f__field_descriptor),
+                    (Data.ProtoLens.Tag 5, b__field_descriptor),
+                    (Data.ProtoLens.Tag 6, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 7, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 8, tensor__field_descriptor),
+                    (Data.ProtoLens.Tag 9, func__field_descriptor)])
+                (Data.Map.fromList
+                   [("s", s__field_descriptor), ("i", i__field_descriptor),
+                    ("f", f__field_descriptor), ("b", b__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("tensor", tensor__field_descriptor),
+                    ("func", func__field_descriptor)])
+
+data NameAttrList = NameAttrList{_NameAttrList'name ::
+                                 !Data.Text.Text,
+                                 _NameAttrList'attr :: !(Data.Map.Map Data.Text.Text AttrValue)}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f NameAttrList NameAttrList a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NameAttrList'name
+                 (\ x__ y__ -> x__{_NameAttrList'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text AttrValue,
+          b ~ Data.Map.Map Data.Text.Text AttrValue, Prelude.Functor f) =>
+         Lens.Labels.HasLens "attr" f NameAttrList NameAttrList a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NameAttrList'attr
+                 (\ x__ y__ -> x__{_NameAttrList'attr = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NameAttrList where
+        def
+          = NameAttrList{_NameAttrList'name = Data.ProtoLens.fieldDefault,
+                         _NameAttrList'attr = Data.Map.empty}
+
+instance Data.ProtoLens.Message NameAttrList where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor NameAttrList
+                attr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "attr"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor NameAttrList'AttrEntry)
+                      (Data.ProtoLens.MapField key value attr)
+                      :: Data.ProtoLens.FieldDescriptor NameAttrList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NameAttrList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, attr__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("attr", attr__field_descriptor)])
+
+data NameAttrList'AttrEntry = NameAttrList'AttrEntry{_NameAttrList'AttrEntry'key
+                                                     :: !Data.Text.Text,
+                                                     _NameAttrList'AttrEntry'value ::
+                                                     !(Prelude.Maybe AttrValue)}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f NameAttrList'AttrEntry
+           NameAttrList'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NameAttrList'AttrEntry'key
+                 (\ x__ y__ -> x__{_NameAttrList'AttrEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ AttrValue, b ~ AttrValue, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f NameAttrList'AttrEntry
+           NameAttrList'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NameAttrList'AttrEntry'value
+                 (\ x__ y__ -> x__{_NameAttrList'AttrEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe AttrValue, b ~ Prelude.Maybe AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f NameAttrList'AttrEntry
+           NameAttrList'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NameAttrList'AttrEntry'value
+                 (\ x__ y__ -> x__{_NameAttrList'AttrEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NameAttrList'AttrEntry where
+        def
+          = NameAttrList'AttrEntry{_NameAttrList'AttrEntry'key =
+                                     Data.ProtoLens.fieldDefault,
+                                   _NameAttrList'AttrEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message NameAttrList'AttrEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor NameAttrList'AttrEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor NameAttrList'AttrEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NameAttrList.AttrEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+attr ::
+     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+attr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
+
+b ::
+  forall f s t a b . (Lens.Labels.HasLens "b" f s t a b) =>
+    Lens.Family2.LensLike f s t a b
+b = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "b")
+
+f ::
+  forall f s t a b . (Lens.Labels.HasLens "f" f s t a b) =>
+    Lens.Family2.LensLike f s t a b
+f = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "f")
+
+func ::
+     forall f s t a b . (Lens.Labels.HasLens "func" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+func
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "func")
+
+i ::
+  forall f s t a b . (Lens.Labels.HasLens "i" f s t a b) =>
+    Lens.Family2.LensLike f s t a b
+i = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "i")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+list ::
+     forall f s t a b . (Lens.Labels.HasLens "list" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+list
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "list")
+
+maybe'b ::
+        forall f s t a b . (Lens.Labels.HasLens "maybe'b" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+maybe'b
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'b")
+
+maybe'f ::
+        forall f s t a b . (Lens.Labels.HasLens "maybe'f" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+maybe'f
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'f")
+
+maybe'func ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'func" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'func
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'func")
+
+maybe'i ::
+        forall f s t a b . (Lens.Labels.HasLens "maybe'i" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+maybe'i
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'i")
+
+maybe'list ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'list" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'list
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'list")
+
+maybe'placeholder ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'placeholder" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'placeholder
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'placeholder")
+
+maybe's ::
+        forall f s t a b . (Lens.Labels.HasLens "maybe's" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+maybe's
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe's")
+
+maybe'shape ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
+
+maybe'tensor ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "maybe'tensor" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+maybe'tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensor")
+
+maybe'type' ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'type'" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'type'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'type'")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+placeholder ::
+            forall f s t a b . (Lens.Labels.HasLens "placeholder" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+placeholder
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "placeholder")
+
+s ::
+  forall f s t a b . (Lens.Labels.HasLens "s" f s t a b) =>
+    Lens.Family2.LensLike f s t a b
+s = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "s")
+
+shape ::
+      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
+
+tensor ::
+       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
+
+type' ::
+      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+type'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/CostGraph.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/CostGraph.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/CostGraph.hs
@@ -0,0 +1,818 @@
+{- This file was auto-generated from tensorflow/core/framework/cost_graph.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.CostGraph where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.Types
+
+data CostGraphDef = CostGraphDef{_CostGraphDef'node ::
+                                 ![CostGraphDef'Node]}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [CostGraphDef'Node], b ~ [CostGraphDef'Node],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "node" f CostGraphDef CostGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'node
+                 (\ x__ y__ -> x__{_CostGraphDef'node = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CostGraphDef where
+        def = CostGraphDef{_CostGraphDef'node = []}
+
+instance Data.ProtoLens.Message CostGraphDef where
+        descriptor
+          = let node__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CostGraphDef'Node)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked node)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CostGraphDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, node__field_descriptor)])
+                (Data.Map.fromList [("node", node__field_descriptor)])
+
+data CostGraphDef'Node = CostGraphDef'Node{_CostGraphDef'Node'name
+                                           :: !Data.Text.Text,
+                                           _CostGraphDef'Node'device :: !Data.Text.Text,
+                                           _CostGraphDef'Node'id :: !Data.Int.Int32,
+                                           _CostGraphDef'Node'inputInfo ::
+                                           ![CostGraphDef'Node'InputInfo],
+                                           _CostGraphDef'Node'outputInfo ::
+                                           ![CostGraphDef'Node'OutputInfo],
+                                           _CostGraphDef'Node'temporaryMemorySize ::
+                                           !Data.Int.Int64,
+                                           _CostGraphDef'Node'persistentMemorySize ::
+                                           !Data.Int.Int64,
+                                           _CostGraphDef'Node'hostTempMemorySize :: !Data.Int.Int64,
+                                           _CostGraphDef'Node'deviceTempMemorySize ::
+                                           !Data.Int.Int64,
+                                           _CostGraphDef'Node'devicePersistentMemorySize ::
+                                           !Data.Int.Int64,
+                                           _CostGraphDef'Node'computeCost :: !Data.Int.Int64,
+                                           _CostGraphDef'Node'computeTime :: !Data.Int.Int64,
+                                           _CostGraphDef'Node'memoryTime :: !Data.Int.Int64,
+                                           _CostGraphDef'Node'isFinal :: !Prelude.Bool,
+                                           _CostGraphDef'Node'controlInput :: ![Data.Int.Int32]}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f CostGraphDef'Node CostGraphDef'Node a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'name
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "device" f CostGraphDef'Node CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'device
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'device = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "id" f CostGraphDef'Node CostGraphDef'Node a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'id
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'id = y__}))
+              Prelude.id
+
+instance (a ~ [CostGraphDef'Node'InputInfo],
+          b ~ [CostGraphDef'Node'InputInfo], Prelude.Functor f) =>
+         Lens.Labels.HasLens "inputInfo" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'inputInfo
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'inputInfo = y__}))
+              Prelude.id
+
+instance (a ~ [CostGraphDef'Node'OutputInfo],
+          b ~ [CostGraphDef'Node'OutputInfo], Prelude.Functor f) =>
+         Lens.Labels.HasLens "outputInfo" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'outputInfo
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'outputInfo = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "temporaryMemorySize" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'temporaryMemorySize
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'temporaryMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "persistentMemorySize" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _CostGraphDef'Node'persistentMemorySize
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'persistentMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "hostTempMemorySize" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'hostTempMemorySize
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'hostTempMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceTempMemorySize" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _CostGraphDef'Node'deviceTempMemorySize
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'deviceTempMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "devicePersistentMemorySize" f
+           CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _CostGraphDef'Node'devicePersistentMemorySize
+                 (\ x__ y__ ->
+                    x__{_CostGraphDef'Node'devicePersistentMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "computeCost" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'computeCost
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'computeCost = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "computeTime" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'computeTime
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'computeTime = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryTime" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'memoryTime
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'memoryTime = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isFinal" f CostGraphDef'Node CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'isFinal
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'isFinal = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "controlInput" f CostGraphDef'Node
+           CostGraphDef'Node
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'controlInput
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'controlInput = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CostGraphDef'Node where
+        def
+          = CostGraphDef'Node{_CostGraphDef'Node'name =
+                                Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'device = Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'id = Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'inputInfo = [],
+                              _CostGraphDef'Node'outputInfo = [],
+                              _CostGraphDef'Node'temporaryMemorySize =
+                                Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'persistentMemorySize =
+                                Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'hostTempMemorySize =
+                                Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'deviceTempMemorySize =
+                                Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'devicePersistentMemorySize =
+                                Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'computeCost = Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'computeTime = Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'memoryTime = Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'isFinal = Data.ProtoLens.fieldDefault,
+                              _CostGraphDef'Node'controlInput = []}
+
+instance Data.ProtoLens.Message CostGraphDef'Node where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                device__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                id__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "id"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional id)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                inputInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "input_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CostGraphDef'Node'InputInfo)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked inputInfo)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                outputInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "output_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CostGraphDef'Node'OutputInfo)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked outputInfo)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                temporaryMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "temporary_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         temporaryMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                persistentMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "persistent_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         persistentMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                hostTempMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "host_temp_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         hostTempMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                deviceTempMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_temp_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         deviceTempMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                devicePersistentMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_persistent_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         devicePersistentMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                computeCost__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "compute_cost"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional computeCost)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                computeTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "compute_time"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional computeTime)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                memoryTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_time"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional memoryTime)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                isFinal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "is_final"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isFinal)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+                controlInput__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "control_input"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed controlInput)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CostGraphDef.Node")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, device__field_descriptor),
+                    (Data.ProtoLens.Tag 3, id__field_descriptor),
+                    (Data.ProtoLens.Tag 4, inputInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 5, outputInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 6, temporaryMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 12, persistentMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 10, hostTempMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 11, deviceTempMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 16,
+                     devicePersistentMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 9, computeCost__field_descriptor),
+                    (Data.ProtoLens.Tag 14, computeTime__field_descriptor),
+                    (Data.ProtoLens.Tag 15, memoryTime__field_descriptor),
+                    (Data.ProtoLens.Tag 7, isFinal__field_descriptor),
+                    (Data.ProtoLens.Tag 8, controlInput__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("device", device__field_descriptor), ("id", id__field_descriptor),
+                    ("input_info", inputInfo__field_descriptor),
+                    ("output_info", outputInfo__field_descriptor),
+                    ("temporary_memory_size", temporaryMemorySize__field_descriptor),
+                    ("persistent_memory_size", persistentMemorySize__field_descriptor),
+                    ("host_temp_memory_size", hostTempMemorySize__field_descriptor),
+                    ("device_temp_memory_size",
+                     deviceTempMemorySize__field_descriptor),
+                    ("device_persistent_memory_size",
+                     devicePersistentMemorySize__field_descriptor),
+                    ("compute_cost", computeCost__field_descriptor),
+                    ("compute_time", computeTime__field_descriptor),
+                    ("memory_time", memoryTime__field_descriptor),
+                    ("is_final", isFinal__field_descriptor),
+                    ("control_input", controlInput__field_descriptor)])
+
+data CostGraphDef'Node'InputInfo = CostGraphDef'Node'InputInfo{_CostGraphDef'Node'InputInfo'precedingNode
+                                                               :: !Data.Int.Int32,
+                                                               _CostGraphDef'Node'InputInfo'precedingPort
+                                                               :: !Data.Int.Int32}
+                                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "precedingNode" f CostGraphDef'Node'InputInfo
+           CostGraphDef'Node'InputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _CostGraphDef'Node'InputInfo'precedingNode
+                 (\ x__ y__ ->
+                    x__{_CostGraphDef'Node'InputInfo'precedingNode = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "precedingPort" f CostGraphDef'Node'InputInfo
+           CostGraphDef'Node'InputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _CostGraphDef'Node'InputInfo'precedingPort
+                 (\ x__ y__ ->
+                    x__{_CostGraphDef'Node'InputInfo'precedingPort = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CostGraphDef'Node'InputInfo
+         where
+        def
+          = CostGraphDef'Node'InputInfo{_CostGraphDef'Node'InputInfo'precedingNode
+                                          = Data.ProtoLens.fieldDefault,
+                                        _CostGraphDef'Node'InputInfo'precedingPort =
+                                          Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message CostGraphDef'Node'InputInfo where
+        descriptor
+          = let precedingNode__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "preceding_node"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional precedingNode)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'InputInfo
+                precedingPort__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "preceding_port"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional precedingPort)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'InputInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CostGraphDef.Node.InputInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, precedingNode__field_descriptor),
+                    (Data.ProtoLens.Tag 2, precedingPort__field_descriptor)])
+                (Data.Map.fromList
+                   [("preceding_node", precedingNode__field_descriptor),
+                    ("preceding_port", precedingPort__field_descriptor)])
+
+data CostGraphDef'Node'OutputInfo = CostGraphDef'Node'OutputInfo{_CostGraphDef'Node'OutputInfo'size
+                                                                 :: !Data.Int.Int64,
+                                                                 _CostGraphDef'Node'OutputInfo'aliasInputPort
+                                                                 :: !Data.Int.Int64,
+                                                                 _CostGraphDef'Node'OutputInfo'shape
+                                                                 ::
+                                                                 !(Prelude.Maybe
+                                                                     Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                                                                 _CostGraphDef'Node'OutputInfo'dtype
+                                                                 ::
+                                                                 !Proto.Tensorflow.Core.Framework.Types.DataType}
+                                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "size" f CostGraphDef'Node'OutputInfo
+           CostGraphDef'Node'OutputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'size
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'size = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "aliasInputPort" f CostGraphDef'Node'OutputInfo
+           CostGraphDef'Node'OutputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _CostGraphDef'Node'OutputInfo'aliasInputPort
+                 (\ x__ y__ ->
+                    x__{_CostGraphDef'Node'OutputInfo'aliasInputPort = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f CostGraphDef'Node'OutputInfo
+           CostGraphDef'Node'OutputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'shape
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'shape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'shape" f CostGraphDef'Node'OutputInfo
+           CostGraphDef'Node'OutputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'shape
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'shape = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f CostGraphDef'Node'OutputInfo
+           CostGraphDef'Node'OutputInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'dtype
+                 (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'dtype = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CostGraphDef'Node'OutputInfo
+         where
+        def
+          = CostGraphDef'Node'OutputInfo{_CostGraphDef'Node'OutputInfo'size =
+                                           Data.ProtoLens.fieldDefault,
+                                         _CostGraphDef'Node'OutputInfo'aliasInputPort =
+                                           Data.ProtoLens.fieldDefault,
+                                         _CostGraphDef'Node'OutputInfo'shape = Prelude.Nothing,
+                                         _CostGraphDef'Node'OutputInfo'dtype =
+                                           Data.Default.Class.def}
+
+instance Data.ProtoLens.Message CostGraphDef'Node'OutputInfo where
+        descriptor
+          = let size__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional size)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
+                aliasInputPort__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "alias_input_port"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional aliasInputPort)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'shape)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
+                dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CostGraphDef.Node.OutputInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, size__field_descriptor),
+                    (Data.ProtoLens.Tag 2, aliasInputPort__field_descriptor),
+                    (Data.ProtoLens.Tag 3, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 4, dtype__field_descriptor)])
+                (Data.Map.fromList
+                   [("size", size__field_descriptor),
+                    ("alias_input_port", aliasInputPort__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("dtype", dtype__field_descriptor)])
+
+aliasInputPort ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "aliasInputPort" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+aliasInputPort
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "aliasInputPort")
+
+computeCost ::
+            forall f s t a b . (Lens.Labels.HasLens "computeCost" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+computeCost
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "computeCost")
+
+computeTime ::
+            forall f s t a b . (Lens.Labels.HasLens "computeTime" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+computeTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "computeTime")
+
+controlInput ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "controlInput" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+controlInput
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "controlInput")
+
+device ::
+       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+device
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
+
+devicePersistentMemorySize ::
+                           forall f s t a b .
+                             (Lens.Labels.HasLens "devicePersistentMemorySize" f s t a b) =>
+                             Lens.Family2.LensLike f s t a b
+devicePersistentMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "devicePersistentMemorySize")
+
+deviceTempMemorySize ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "deviceTempMemorySize" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+deviceTempMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "deviceTempMemorySize")
+
+dtype ::
+      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+dtype
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
+
+hostTempMemorySize ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "hostTempMemorySize" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+hostTempMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hostTempMemorySize")
+
+id ::
+   forall f s t a b . (Lens.Labels.HasLens "id" f s t a b) =>
+     Lens.Family2.LensLike f s t a b
+id
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "id")
+
+inputInfo ::
+          forall f s t a b . (Lens.Labels.HasLens "inputInfo" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+inputInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inputInfo")
+
+isFinal ::
+        forall f s t a b . (Lens.Labels.HasLens "isFinal" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+isFinal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isFinal")
+
+maybe'shape ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
+
+memoryTime ::
+           forall f s t a b . (Lens.Labels.HasLens "memoryTime" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+memoryTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryTime")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+node ::
+     forall f s t a b . (Lens.Labels.HasLens "node" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+node
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "node")
+
+outputInfo ::
+           forall f s t a b . (Lens.Labels.HasLens "outputInfo" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+outputInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputInfo")
+
+persistentMemorySize ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "persistentMemorySize" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+persistentMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "persistentMemorySize")
+
+precedingNode ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "precedingNode" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+precedingNode
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "precedingNode")
+
+precedingPort ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "precedingPort" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+precedingPort
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "precedingPort")
+
+shape ::
+      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
+
+size ::
+     forall f s t a b . (Lens.Labels.HasLens "size" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+size
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "size")
+
+temporaryMemorySize ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "temporaryMemorySize" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+temporaryMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "temporaryMemorySize")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/DeviceAttributes.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/DeviceAttributes.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/DeviceAttributes.hs
@@ -0,0 +1,493 @@
+{- This file was auto-generated from tensorflow/core/framework/device_attributes.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.DeviceAttributes where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data DeviceAttributes = DeviceAttributes{_DeviceAttributes'name ::
+                                         !Data.Text.Text,
+                                         _DeviceAttributes'deviceType :: !Data.Text.Text,
+                                         _DeviceAttributes'memoryLimit :: !Data.Int.Int64,
+                                         _DeviceAttributes'locality ::
+                                         !(Prelude.Maybe DeviceLocality),
+                                         _DeviceAttributes'incarnation :: !Data.Word.Word64,
+                                         _DeviceAttributes'physicalDeviceDesc :: !Data.Text.Text}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f DeviceAttributes DeviceAttributes a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'name
+                 (\ x__ y__ -> x__{_DeviceAttributes'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceType" f DeviceAttributes
+           DeviceAttributes
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'deviceType
+                 (\ x__ y__ -> x__{_DeviceAttributes'deviceType = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryLimit" f DeviceAttributes
+           DeviceAttributes
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'memoryLimit
+                 (\ x__ y__ -> x__{_DeviceAttributes'memoryLimit = y__}))
+              Prelude.id
+
+instance (a ~ DeviceLocality, b ~ DeviceLocality,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "locality" f DeviceAttributes DeviceAttributes
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'locality
+                 (\ x__ y__ -> x__{_DeviceAttributes'locality = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe DeviceLocality,
+          b ~ Prelude.Maybe DeviceLocality, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'locality" f DeviceAttributes
+           DeviceAttributes
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'locality
+                 (\ x__ y__ -> x__{_DeviceAttributes'locality = y__}))
+              Prelude.id
+
+instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "incarnation" f DeviceAttributes
+           DeviceAttributes
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'incarnation
+                 (\ x__ y__ -> x__{_DeviceAttributes'incarnation = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "physicalDeviceDesc" f DeviceAttributes
+           DeviceAttributes
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceAttributes'physicalDeviceDesc
+                 (\ x__ y__ -> x__{_DeviceAttributes'physicalDeviceDesc = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DeviceAttributes where
+        def
+          = DeviceAttributes{_DeviceAttributes'name =
+                               Data.ProtoLens.fieldDefault,
+                             _DeviceAttributes'deviceType = Data.ProtoLens.fieldDefault,
+                             _DeviceAttributes'memoryLimit = Data.ProtoLens.fieldDefault,
+                             _DeviceAttributes'locality = Prelude.Nothing,
+                             _DeviceAttributes'incarnation = Data.ProtoLens.fieldDefault,
+                             _DeviceAttributes'physicalDeviceDesc = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message DeviceAttributes where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor DeviceAttributes
+                deviceType__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional deviceType)
+                      :: Data.ProtoLens.FieldDescriptor DeviceAttributes
+                memoryLimit__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_limit"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional memoryLimit)
+                      :: Data.ProtoLens.FieldDescriptor DeviceAttributes
+                locality__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "locality"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor DeviceLocality)
+                      (Data.ProtoLens.OptionalField maybe'locality)
+                      :: Data.ProtoLens.FieldDescriptor DeviceAttributes
+                incarnation__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "incarnation"
+                      (Data.ProtoLens.Fixed64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional incarnation)
+                      :: Data.ProtoLens.FieldDescriptor DeviceAttributes
+                physicalDeviceDesc__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "physical_device_desc"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         physicalDeviceDesc)
+                      :: Data.ProtoLens.FieldDescriptor DeviceAttributes
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DeviceAttributes")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, deviceType__field_descriptor),
+                    (Data.ProtoLens.Tag 4, memoryLimit__field_descriptor),
+                    (Data.ProtoLens.Tag 5, locality__field_descriptor),
+                    (Data.ProtoLens.Tag 6, incarnation__field_descriptor),
+                    (Data.ProtoLens.Tag 7, physicalDeviceDesc__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("device_type", deviceType__field_descriptor),
+                    ("memory_limit", memoryLimit__field_descriptor),
+                    ("locality", locality__field_descriptor),
+                    ("incarnation", incarnation__field_descriptor),
+                    ("physical_device_desc", physicalDeviceDesc__field_descriptor)])
+
+data DeviceLocality = DeviceLocality{_DeviceLocality'busId ::
+                                     !Data.Int.Int32,
+                                     _DeviceLocality'numaNode :: !Data.Int.Int32,
+                                     _DeviceLocality'links :: !(Prelude.Maybe LocalLinks)}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "busId" f DeviceLocality DeviceLocality a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceLocality'busId
+                 (\ x__ y__ -> x__{_DeviceLocality'busId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numaNode" f DeviceLocality DeviceLocality a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceLocality'numaNode
+                 (\ x__ y__ -> x__{_DeviceLocality'numaNode = y__}))
+              Prelude.id
+
+instance (a ~ LocalLinks, b ~ LocalLinks, Prelude.Functor f) =>
+         Lens.Labels.HasLens "links" f DeviceLocality DeviceLocality a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceLocality'links
+                 (\ x__ y__ -> x__{_DeviceLocality'links = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe LocalLinks,
+          b ~ Prelude.Maybe LocalLinks, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'links" f DeviceLocality DeviceLocality a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceLocality'links
+                 (\ x__ y__ -> x__{_DeviceLocality'links = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DeviceLocality where
+        def
+          = DeviceLocality{_DeviceLocality'busId =
+                             Data.ProtoLens.fieldDefault,
+                           _DeviceLocality'numaNode = Data.ProtoLens.fieldDefault,
+                           _DeviceLocality'links = Prelude.Nothing}
+
+instance Data.ProtoLens.Message DeviceLocality where
+        descriptor
+          = let busId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bus_id"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional busId)
+                      :: Data.ProtoLens.FieldDescriptor DeviceLocality
+                numaNode__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "numa_node"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numaNode)
+                      :: Data.ProtoLens.FieldDescriptor DeviceLocality
+                links__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "links"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor LocalLinks)
+                      (Data.ProtoLens.OptionalField maybe'links)
+                      :: Data.ProtoLens.FieldDescriptor DeviceLocality
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DeviceLocality")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, busId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, numaNode__field_descriptor),
+                    (Data.ProtoLens.Tag 3, links__field_descriptor)])
+                (Data.Map.fromList
+                   [("bus_id", busId__field_descriptor),
+                    ("numa_node", numaNode__field_descriptor),
+                    ("links", links__field_descriptor)])
+
+data InterconnectLink = InterconnectLink{_InterconnectLink'deviceId
+                                         :: !Data.Int.Int32,
+                                         _InterconnectLink'type' :: !Data.Text.Text,
+                                         _InterconnectLink'strength :: !Data.Int.Int32}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceId" f InterconnectLink InterconnectLink
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _InterconnectLink'deviceId
+                 (\ x__ y__ -> x__{_InterconnectLink'deviceId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f InterconnectLink InterconnectLink a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _InterconnectLink'type'
+                 (\ x__ y__ -> x__{_InterconnectLink'type' = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "strength" f InterconnectLink InterconnectLink
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _InterconnectLink'strength
+                 (\ x__ y__ -> x__{_InterconnectLink'strength = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default InterconnectLink where
+        def
+          = InterconnectLink{_InterconnectLink'deviceId =
+                               Data.ProtoLens.fieldDefault,
+                             _InterconnectLink'type' = Data.ProtoLens.fieldDefault,
+                             _InterconnectLink'strength = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message InterconnectLink where
+        descriptor
+          = let deviceId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_id"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional deviceId)
+                      :: Data.ProtoLens.FieldDescriptor InterconnectLink
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
+                      :: Data.ProtoLens.FieldDescriptor InterconnectLink
+                strength__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "strength"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional strength)
+                      :: Data.ProtoLens.FieldDescriptor InterconnectLink
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.InterconnectLink")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, deviceId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 3, strength__field_descriptor)])
+                (Data.Map.fromList
+                   [("device_id", deviceId__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("strength", strength__field_descriptor)])
+
+data LocalLinks = LocalLinks{_LocalLinks'link ::
+                             ![InterconnectLink]}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [InterconnectLink], b ~ [InterconnectLink],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "link" f LocalLinks LocalLinks a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _LocalLinks'link
+                 (\ x__ y__ -> x__{_LocalLinks'link = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default LocalLinks where
+        def = LocalLinks{_LocalLinks'link = []}
+
+instance Data.ProtoLens.Message LocalLinks where
+        descriptor
+          = let link__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "link"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor InterconnectLink)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked link)
+                      :: Data.ProtoLens.FieldDescriptor LocalLinks
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.LocalLinks")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, link__field_descriptor)])
+                (Data.Map.fromList [("link", link__field_descriptor)])
+
+busId ::
+      forall f s t a b . (Lens.Labels.HasLens "busId" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+busId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "busId")
+
+deviceId ::
+         forall f s t a b . (Lens.Labels.HasLens "deviceId" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+deviceId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceId")
+
+deviceType ::
+           forall f s t a b . (Lens.Labels.HasLens "deviceType" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+deviceType
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceType")
+
+incarnation ::
+            forall f s t a b . (Lens.Labels.HasLens "incarnation" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+incarnation
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "incarnation")
+
+link ::
+     forall f s t a b . (Lens.Labels.HasLens "link" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+link
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "link")
+
+links ::
+      forall f s t a b . (Lens.Labels.HasLens "links" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+links
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "links")
+
+locality ::
+         forall f s t a b . (Lens.Labels.HasLens "locality" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+locality
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "locality")
+
+maybe'links ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'links" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'links
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'links")
+
+maybe'locality ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'locality" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'locality
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'locality")
+
+memoryLimit ::
+            forall f s t a b . (Lens.Labels.HasLens "memoryLimit" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+memoryLimit
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryLimit")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+numaNode ::
+         forall f s t a b . (Lens.Labels.HasLens "numaNode" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+numaNode
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numaNode")
+
+physicalDeviceDesc ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "physicalDeviceDesc" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+physicalDeviceDesc
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "physicalDeviceDesc")
+
+strength ::
+         forall f s t a b . (Lens.Labels.HasLens "strength" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+strength
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "strength")
+
+type' ::
+      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+type'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Function.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Function.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Function.hs
@@ -0,0 +1,491 @@
+{- This file was auto-generated from tensorflow/core/framework/function.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Function where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.AttrValue
+import qualified Proto.Tensorflow.Core.Framework.NodeDef
+import qualified Proto.Tensorflow.Core.Framework.OpDef
+
+data FunctionDef = FunctionDef{_FunctionDef'signature ::
+                               !(Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpDef),
+                               _FunctionDef'attr ::
+                               !(Data.Map.Map Data.Text.Text
+                                   Proto.Tensorflow.Core.Framework.AttrValue.AttrValue),
+                               _FunctionDef'nodeDef ::
+                               ![Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
+                               _FunctionDef'ret :: !(Data.Map.Map Data.Text.Text Data.Text.Text)}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.OpDef.OpDef,
+          b ~ Proto.Tensorflow.Core.Framework.OpDef.OpDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "signature" f FunctionDef FunctionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'signature
+                 (\ x__ y__ -> x__{_FunctionDef'signature = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpDef,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'signature" f FunctionDef FunctionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'signature
+                 (\ x__ y__ -> x__{_FunctionDef'signature = y__}))
+              Prelude.id
+
+instance (a ~
+            Data.Map.Map Data.Text.Text
+              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Data.Map.Map Data.Text.Text
+              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "attr" f FunctionDef FunctionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'attr
+                 (\ x__ y__ -> x__{_FunctionDef'attr = y__}))
+              Prelude.id
+
+instance (a ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
+          b ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nodeDef" f FunctionDef FunctionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'nodeDef
+                 (\ x__ y__ -> x__{_FunctionDef'nodeDef = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text Data.Text.Text,
+          b ~ Data.Map.Map Data.Text.Text Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "ret" f FunctionDef FunctionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'ret
+                 (\ x__ y__ -> x__{_FunctionDef'ret = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FunctionDef where
+        def
+          = FunctionDef{_FunctionDef'signature = Prelude.Nothing,
+                        _FunctionDef'attr = Data.Map.empty, _FunctionDef'nodeDef = [],
+                        _FunctionDef'ret = Data.Map.empty}
+
+instance Data.ProtoLens.Message FunctionDef where
+        descriptor
+          = let signature__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "signature"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.OpDef.OpDef)
+                      (Data.ProtoLens.OptionalField maybe'signature)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef
+                attr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "attr"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FunctionDef'AttrEntry)
+                      (Data.ProtoLens.MapField key value attr)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef
+                nodeDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.NodeDef.NodeDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked nodeDef)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef
+                ret__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "ret"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FunctionDef'RetEntry)
+                      (Data.ProtoLens.MapField key value ret)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FunctionDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, signature__field_descriptor),
+                    (Data.ProtoLens.Tag 5, attr__field_descriptor),
+                    (Data.ProtoLens.Tag 3, nodeDef__field_descriptor),
+                    (Data.ProtoLens.Tag 4, ret__field_descriptor)])
+                (Data.Map.fromList
+                   [("signature", signature__field_descriptor),
+                    ("attr", attr__field_descriptor),
+                    ("node_def", nodeDef__field_descriptor),
+                    ("ret", ret__field_descriptor)])
+
+data FunctionDef'AttrEntry = FunctionDef'AttrEntry{_FunctionDef'AttrEntry'key
+                                                   :: !Data.Text.Text,
+                                                   _FunctionDef'AttrEntry'value ::
+                                                   !(Prelude.Maybe
+                                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f FunctionDef'AttrEntry
+           FunctionDef'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'AttrEntry'key
+                 (\ x__ y__ -> x__{_FunctionDef'AttrEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f FunctionDef'AttrEntry
+           FunctionDef'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'AttrEntry'value
+                 (\ x__ y__ -> x__{_FunctionDef'AttrEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f FunctionDef'AttrEntry
+           FunctionDef'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'AttrEntry'value
+                 (\ x__ y__ -> x__{_FunctionDef'AttrEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FunctionDef'AttrEntry where
+        def
+          = FunctionDef'AttrEntry{_FunctionDef'AttrEntry'key =
+                                    Data.ProtoLens.fieldDefault,
+                                  _FunctionDef'AttrEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message FunctionDef'AttrEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef'AttrEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef'AttrEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FunctionDef.AttrEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data FunctionDef'RetEntry = FunctionDef'RetEntry{_FunctionDef'RetEntry'key
+                                                 :: !Data.Text.Text,
+                                                 _FunctionDef'RetEntry'value :: !Data.Text.Text}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f FunctionDef'RetEntry
+           FunctionDef'RetEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'RetEntry'key
+                 (\ x__ y__ -> x__{_FunctionDef'RetEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f FunctionDef'RetEntry
+           FunctionDef'RetEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDef'RetEntry'value
+                 (\ x__ y__ -> x__{_FunctionDef'RetEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FunctionDef'RetEntry where
+        def
+          = FunctionDef'RetEntry{_FunctionDef'RetEntry'key =
+                                   Data.ProtoLens.fieldDefault,
+                                 _FunctionDef'RetEntry'value = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message FunctionDef'RetEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef'RetEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDef'RetEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FunctionDef.RetEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data FunctionDefLibrary = FunctionDefLibrary{_FunctionDefLibrary'function
+                                             :: ![FunctionDef],
+                                             _FunctionDefLibrary'gradient :: ![GradientDef]}
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [FunctionDef], b ~ [FunctionDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "function" f FunctionDefLibrary
+           FunctionDefLibrary
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDefLibrary'function
+                 (\ x__ y__ -> x__{_FunctionDefLibrary'function = y__}))
+              Prelude.id
+
+instance (a ~ [GradientDef], b ~ [GradientDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "gradient" f FunctionDefLibrary
+           FunctionDefLibrary
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _FunctionDefLibrary'gradient
+                 (\ x__ y__ -> x__{_FunctionDefLibrary'gradient = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default FunctionDefLibrary where
+        def
+          = FunctionDefLibrary{_FunctionDefLibrary'function = [],
+                               _FunctionDefLibrary'gradient = []}
+
+instance Data.ProtoLens.Message FunctionDefLibrary where
+        descriptor
+          = let function__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "function"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor FunctionDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked function)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDefLibrary
+                gradient__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "gradient"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor GradientDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked gradient)
+                      :: Data.ProtoLens.FieldDescriptor FunctionDefLibrary
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.FunctionDefLibrary")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, function__field_descriptor),
+                    (Data.ProtoLens.Tag 2, gradient__field_descriptor)])
+                (Data.Map.fromList
+                   [("function", function__field_descriptor),
+                    ("gradient", gradient__field_descriptor)])
+
+data GradientDef = GradientDef{_GradientDef'functionName ::
+                               !Data.Text.Text,
+                               _GradientDef'gradientFunc :: !Data.Text.Text}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "functionName" f GradientDef GradientDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GradientDef'functionName
+                 (\ x__ y__ -> x__{_GradientDef'functionName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "gradientFunc" f GradientDef GradientDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GradientDef'gradientFunc
+                 (\ x__ y__ -> x__{_GradientDef'gradientFunc = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default GradientDef where
+        def
+          = GradientDef{_GradientDef'functionName =
+                          Data.ProtoLens.fieldDefault,
+                        _GradientDef'gradientFunc = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message GradientDef where
+        descriptor
+          = let functionName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "function_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional functionName)
+                      :: Data.ProtoLens.FieldDescriptor GradientDef
+                gradientFunc__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "gradient_func"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional gradientFunc)
+                      :: Data.ProtoLens.FieldDescriptor GradientDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.GradientDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, functionName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, gradientFunc__field_descriptor)])
+                (Data.Map.fromList
+                   [("function_name", functionName__field_descriptor),
+                    ("gradient_func", gradientFunc__field_descriptor)])
+
+attr ::
+     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+attr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
+
+function ::
+         forall f s t a b . (Lens.Labels.HasLens "function" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+function
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "function")
+
+functionName ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "functionName" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+functionName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "functionName")
+
+gradient ::
+         forall f s t a b . (Lens.Labels.HasLens "gradient" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+gradient
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "gradient")
+
+gradientFunc ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "gradientFunc" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+gradientFunc
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "gradientFunc")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+maybe'signature ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'signature" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'signature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'signature")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+nodeDef ::
+        forall f s t a b . (Lens.Labels.HasLens "nodeDef" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+nodeDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeDef")
+
+ret ::
+    forall f s t a b . (Lens.Labels.HasLens "ret" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+ret
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ret")
+
+signature ::
+          forall f s t a b . (Lens.Labels.HasLens "signature" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+signature
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "signature")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Graph.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Graph.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Graph.hs
@@ -0,0 +1,206 @@
+{- This file was auto-generated from tensorflow/core/framework/graph.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Graph where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Function
+import qualified Proto.Tensorflow.Core.Framework.NodeDef
+import qualified Proto.Tensorflow.Core.Framework.Versions
+
+data GraphDef = GraphDef{_GraphDef'node ::
+                         ![Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
+                         _GraphDef'versions ::
+                         !(Prelude.Maybe
+                             Proto.Tensorflow.Core.Framework.Versions.VersionDef),
+                         _GraphDef'version :: !Data.Int.Int32,
+                         _GraphDef'library ::
+                         !(Prelude.Maybe
+                             Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary)}
+              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
+          b ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "node" f GraphDef GraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphDef'node
+                 (\ x__ y__ -> x__{_GraphDef'node = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          b ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "versions" f GraphDef GraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphDef'versions
+                 (\ x__ y__ -> x__{_GraphDef'versions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'versions" f GraphDef GraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphDef'versions
+                 (\ x__ y__ -> x__{_GraphDef'versions = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "version" f GraphDef GraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphDef'version
+                 (\ x__ y__ -> x__{_GraphDef'version = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
+          b ~ Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "library" f GraphDef GraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphDef'library
+                 (\ x__ y__ -> x__{_GraphDef'library = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'library" f GraphDef GraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphDef'library
+                 (\ x__ y__ -> x__{_GraphDef'library = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default GraphDef where
+        def
+          = GraphDef{_GraphDef'node = [],
+                     _GraphDef'versions = Prelude.Nothing,
+                     _GraphDef'version = Data.ProtoLens.fieldDefault,
+                     _GraphDef'library = Prelude.Nothing}
+
+instance Data.ProtoLens.Message GraphDef where
+        descriptor
+          = let node__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.NodeDef.NodeDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked node)
+                      :: Data.ProtoLens.FieldDescriptor GraphDef
+                versions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "versions"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Versions.VersionDef)
+                      (Data.ProtoLens.OptionalField maybe'versions)
+                      :: Data.ProtoLens.FieldDescriptor GraphDef
+                version__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "version"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
+                      :: Data.ProtoLens.FieldDescriptor GraphDef
+                library__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "library"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary)
+                      (Data.ProtoLens.OptionalField maybe'library)
+                      :: Data.ProtoLens.FieldDescriptor GraphDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.GraphDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, node__field_descriptor),
+                    (Data.ProtoLens.Tag 4, versions__field_descriptor),
+                    (Data.ProtoLens.Tag 3, version__field_descriptor),
+                    (Data.ProtoLens.Tag 2, library__field_descriptor)])
+                (Data.Map.fromList
+                   [("node", node__field_descriptor),
+                    ("versions", versions__field_descriptor),
+                    ("version", version__field_descriptor),
+                    ("library", library__field_descriptor)])
+
+library ::
+        forall f s t a b . (Lens.Labels.HasLens "library" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+library
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "library")
+
+maybe'library ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'library" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'library
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'library")
+
+maybe'versions ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'versions" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'versions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'versions")
+
+node ::
+     forall f s t a b . (Lens.Labels.HasLens "node" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+node
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "node")
+
+version ::
+        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+version
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
+
+versions ::
+         forall f s t a b . (Lens.Labels.HasLens "versions" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+versions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "versions")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/KernelDef.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/KernelDef.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/KernelDef.hs
@@ -0,0 +1,284 @@
+{- This file was auto-generated from tensorflow/core/framework/kernel_def.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.KernelDef where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.AttrValue
+
+data KernelDef = KernelDef{_KernelDef'op :: !Data.Text.Text,
+                           _KernelDef'deviceType :: !Data.Text.Text,
+                           _KernelDef'constraint :: ![KernelDef'AttrConstraint],
+                           _KernelDef'hostMemoryArg :: ![Data.Text.Text],
+                           _KernelDef'label :: !Data.Text.Text}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "op" f KernelDef KernelDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _KernelDef'op
+                 (\ x__ y__ -> x__{_KernelDef'op = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceType" f KernelDef KernelDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _KernelDef'deviceType
+                 (\ x__ y__ -> x__{_KernelDef'deviceType = y__}))
+              Prelude.id
+
+instance (a ~ [KernelDef'AttrConstraint],
+          b ~ [KernelDef'AttrConstraint], Prelude.Functor f) =>
+         Lens.Labels.HasLens "constraint" f KernelDef KernelDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _KernelDef'constraint
+                 (\ x__ y__ -> x__{_KernelDef'constraint = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "hostMemoryArg" f KernelDef KernelDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _KernelDef'hostMemoryArg
+                 (\ x__ y__ -> x__{_KernelDef'hostMemoryArg = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "label" f KernelDef KernelDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _KernelDef'label
+                 (\ x__ y__ -> x__{_KernelDef'label = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default KernelDef where
+        def
+          = KernelDef{_KernelDef'op = Data.ProtoLens.fieldDefault,
+                      _KernelDef'deviceType = Data.ProtoLens.fieldDefault,
+                      _KernelDef'constraint = [], _KernelDef'hostMemoryArg = [],
+                      _KernelDef'label = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message KernelDef where
+        descriptor
+          = let op__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "op"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional op)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef
+                deviceType__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional deviceType)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef
+                constraint__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "constraint"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor KernelDef'AttrConstraint)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked constraint)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef
+                hostMemoryArg__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "host_memory_arg"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         hostMemoryArg)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef
+                label__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "label"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional label)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.KernelDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, op__field_descriptor),
+                    (Data.ProtoLens.Tag 2, deviceType__field_descriptor),
+                    (Data.ProtoLens.Tag 3, constraint__field_descriptor),
+                    (Data.ProtoLens.Tag 4, hostMemoryArg__field_descriptor),
+                    (Data.ProtoLens.Tag 5, label__field_descriptor)])
+                (Data.Map.fromList
+                   [("op", op__field_descriptor),
+                    ("device_type", deviceType__field_descriptor),
+                    ("constraint", constraint__field_descriptor),
+                    ("host_memory_arg", hostMemoryArg__field_descriptor),
+                    ("label", label__field_descriptor)])
+
+data KernelDef'AttrConstraint = KernelDef'AttrConstraint{_KernelDef'AttrConstraint'name
+                                                         :: !Data.Text.Text,
+                                                         _KernelDef'AttrConstraint'allowedValues ::
+                                                         !(Prelude.Maybe
+                                                             Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f KernelDef'AttrConstraint
+           KernelDef'AttrConstraint
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _KernelDef'AttrConstraint'name
+                 (\ x__ y__ -> x__{_KernelDef'AttrConstraint'name = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allowedValues" f KernelDef'AttrConstraint
+           KernelDef'AttrConstraint
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _KernelDef'AttrConstraint'allowedValues
+                 (\ x__ y__ -> x__{_KernelDef'AttrConstraint'allowedValues = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'allowedValues" f
+           KernelDef'AttrConstraint
+           KernelDef'AttrConstraint
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _KernelDef'AttrConstraint'allowedValues
+                 (\ x__ y__ -> x__{_KernelDef'AttrConstraint'allowedValues = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default KernelDef'AttrConstraint where
+        def
+          = KernelDef'AttrConstraint{_KernelDef'AttrConstraint'name =
+                                       Data.ProtoLens.fieldDefault,
+                                     _KernelDef'AttrConstraint'allowedValues = Prelude.Nothing}
+
+instance Data.ProtoLens.Message KernelDef'AttrConstraint where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef'AttrConstraint
+                allowedValues__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allowed_values"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'allowedValues)
+                      :: Data.ProtoLens.FieldDescriptor KernelDef'AttrConstraint
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.KernelDef.AttrConstraint")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, allowedValues__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("allowed_values", allowedValues__field_descriptor)])
+
+allowedValues ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "allowedValues" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+allowedValues
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowedValues")
+
+constraint ::
+           forall f s t a b . (Lens.Labels.HasLens "constraint" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+constraint
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "constraint")
+
+deviceType ::
+           forall f s t a b . (Lens.Labels.HasLens "deviceType" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+deviceType
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceType")
+
+hostMemoryArg ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "hostMemoryArg" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+hostMemoryArg
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hostMemoryArg")
+
+label ::
+      forall f s t a b . (Lens.Labels.HasLens "label" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+label
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "label")
+
+maybe'allowedValues ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "maybe'allowedValues" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+maybe'allowedValues
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'allowedValues")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+op ::
+   forall f s t a b . (Lens.Labels.HasLens "op" f s t a b) =>
+     Lens.Family2.LensLike f s t a b
+op
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "op")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/LogMemory.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/LogMemory.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/LogMemory.hs
@@ -0,0 +1,777 @@
+{- This file was auto-generated from tensorflow/core/framework/log_memory.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.LogMemory where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.TensorDescription
+
+data MemoryLogRawAllocation = MemoryLogRawAllocation{_MemoryLogRawAllocation'stepId
+                                                     :: !Data.Int.Int64,
+                                                     _MemoryLogRawAllocation'operation ::
+                                                     !Data.Text.Text,
+                                                     _MemoryLogRawAllocation'numBytes ::
+                                                     !Data.Int.Int64,
+                                                     _MemoryLogRawAllocation'ptr ::
+                                                     !Data.Word.Word64,
+                                                     _MemoryLogRawAllocation'allocationId ::
+                                                     !Data.Int.Int64,
+                                                     _MemoryLogRawAllocation'allocatorName ::
+                                                     !Data.Text.Text}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stepId" f MemoryLogRawAllocation
+           MemoryLogRawAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawAllocation'stepId
+                 (\ x__ y__ -> x__{_MemoryLogRawAllocation'stepId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "operation" f MemoryLogRawAllocation
+           MemoryLogRawAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawAllocation'operation
+                 (\ x__ y__ -> x__{_MemoryLogRawAllocation'operation = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numBytes" f MemoryLogRawAllocation
+           MemoryLogRawAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawAllocation'numBytes
+                 (\ x__ y__ -> x__{_MemoryLogRawAllocation'numBytes = y__}))
+              Prelude.id
+
+instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "ptr" f MemoryLogRawAllocation
+           MemoryLogRawAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawAllocation'ptr
+                 (\ x__ y__ -> x__{_MemoryLogRawAllocation'ptr = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocationId" f MemoryLogRawAllocation
+           MemoryLogRawAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawAllocation'allocationId
+                 (\ x__ y__ -> x__{_MemoryLogRawAllocation'allocationId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorName" f MemoryLogRawAllocation
+           MemoryLogRawAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawAllocation'allocatorName
+                 (\ x__ y__ -> x__{_MemoryLogRawAllocation'allocatorName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryLogRawAllocation where
+        def
+          = MemoryLogRawAllocation{_MemoryLogRawAllocation'stepId =
+                                     Data.ProtoLens.fieldDefault,
+                                   _MemoryLogRawAllocation'operation = Data.ProtoLens.fieldDefault,
+                                   _MemoryLogRawAllocation'numBytes = Data.ProtoLens.fieldDefault,
+                                   _MemoryLogRawAllocation'ptr = Data.ProtoLens.fieldDefault,
+                                   _MemoryLogRawAllocation'allocationId =
+                                     Data.ProtoLens.fieldDefault,
+                                   _MemoryLogRawAllocation'allocatorName =
+                                     Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MemoryLogRawAllocation where
+        descriptor
+          = let stepId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional stepId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawAllocation
+                operation__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "operation"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional operation)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawAllocation
+                numBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numBytes)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawAllocation
+                ptr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "ptr"
+                      (Data.ProtoLens.UInt64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional ptr)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawAllocation
+                allocationId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocation_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocationId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawAllocation
+                allocatorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawAllocation
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryLogRawAllocation")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, stepId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, operation__field_descriptor),
+                    (Data.ProtoLens.Tag 3, numBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 4, ptr__field_descriptor),
+                    (Data.ProtoLens.Tag 5, allocationId__field_descriptor),
+                    (Data.ProtoLens.Tag 6, allocatorName__field_descriptor)])
+                (Data.Map.fromList
+                   [("step_id", stepId__field_descriptor),
+                    ("operation", operation__field_descriptor),
+                    ("num_bytes", numBytes__field_descriptor),
+                    ("ptr", ptr__field_descriptor),
+                    ("allocation_id", allocationId__field_descriptor),
+                    ("allocator_name", allocatorName__field_descriptor)])
+
+data MemoryLogRawDeallocation = MemoryLogRawDeallocation{_MemoryLogRawDeallocation'stepId
+                                                         :: !Data.Int.Int64,
+                                                         _MemoryLogRawDeallocation'operation ::
+                                                         !Data.Text.Text,
+                                                         _MemoryLogRawDeallocation'allocationId ::
+                                                         !Data.Int.Int64,
+                                                         _MemoryLogRawDeallocation'allocatorName ::
+                                                         !Data.Text.Text,
+                                                         _MemoryLogRawDeallocation'deferred ::
+                                                         !Prelude.Bool}
+                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stepId" f MemoryLogRawDeallocation
+           MemoryLogRawDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawDeallocation'stepId
+                 (\ x__ y__ -> x__{_MemoryLogRawDeallocation'stepId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "operation" f MemoryLogRawDeallocation
+           MemoryLogRawDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawDeallocation'operation
+                 (\ x__ y__ -> x__{_MemoryLogRawDeallocation'operation = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocationId" f MemoryLogRawDeallocation
+           MemoryLogRawDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawDeallocation'allocationId
+                 (\ x__ y__ -> x__{_MemoryLogRawDeallocation'allocationId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorName" f MemoryLogRawDeallocation
+           MemoryLogRawDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemoryLogRawDeallocation'allocatorName
+                 (\ x__ y__ -> x__{_MemoryLogRawDeallocation'allocatorName = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "deferred" f MemoryLogRawDeallocation
+           MemoryLogRawDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogRawDeallocation'deferred
+                 (\ x__ y__ -> x__{_MemoryLogRawDeallocation'deferred = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryLogRawDeallocation where
+        def
+          = MemoryLogRawDeallocation{_MemoryLogRawDeallocation'stepId =
+                                       Data.ProtoLens.fieldDefault,
+                                     _MemoryLogRawDeallocation'operation =
+                                       Data.ProtoLens.fieldDefault,
+                                     _MemoryLogRawDeallocation'allocationId =
+                                       Data.ProtoLens.fieldDefault,
+                                     _MemoryLogRawDeallocation'allocatorName =
+                                       Data.ProtoLens.fieldDefault,
+                                     _MemoryLogRawDeallocation'deferred =
+                                       Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MemoryLogRawDeallocation where
+        descriptor
+          = let stepId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional stepId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawDeallocation
+                operation__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "operation"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional operation)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawDeallocation
+                allocationId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocation_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocationId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawDeallocation
+                allocatorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawDeallocation
+                deferred__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "deferred"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional deferred)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogRawDeallocation
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryLogRawDeallocation")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, stepId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, operation__field_descriptor),
+                    (Data.ProtoLens.Tag 3, allocationId__field_descriptor),
+                    (Data.ProtoLens.Tag 4, allocatorName__field_descriptor),
+                    (Data.ProtoLens.Tag 5, deferred__field_descriptor)])
+                (Data.Map.fromList
+                   [("step_id", stepId__field_descriptor),
+                    ("operation", operation__field_descriptor),
+                    ("allocation_id", allocationId__field_descriptor),
+                    ("allocator_name", allocatorName__field_descriptor),
+                    ("deferred", deferred__field_descriptor)])
+
+data MemoryLogStep = MemoryLogStep{_MemoryLogStep'stepId ::
+                                   !Data.Int.Int64,
+                                   _MemoryLogStep'handle :: !Data.Text.Text}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stepId" f MemoryLogStep MemoryLogStep a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogStep'stepId
+                 (\ x__ y__ -> x__{_MemoryLogStep'stepId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "handle" f MemoryLogStep MemoryLogStep a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogStep'handle
+                 (\ x__ y__ -> x__{_MemoryLogStep'handle = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryLogStep where
+        def
+          = MemoryLogStep{_MemoryLogStep'stepId =
+                            Data.ProtoLens.fieldDefault,
+                          _MemoryLogStep'handle = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MemoryLogStep where
+        descriptor
+          = let stepId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional stepId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogStep
+                handle__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "handle"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional handle)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogStep
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryLogStep")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, stepId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, handle__field_descriptor)])
+                (Data.Map.fromList
+                   [("step_id", stepId__field_descriptor),
+                    ("handle", handle__field_descriptor)])
+
+data MemoryLogTensorAllocation = MemoryLogTensorAllocation{_MemoryLogTensorAllocation'stepId
+                                                           :: !Data.Int.Int64,
+                                                           _MemoryLogTensorAllocation'kernelName ::
+                                                           !Data.Text.Text,
+                                                           _MemoryLogTensorAllocation'tensor ::
+                                                           !(Prelude.Maybe
+                                                               Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)}
+                               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stepId" f MemoryLogTensorAllocation
+           MemoryLogTensorAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorAllocation'stepId
+                 (\ x__ y__ -> x__{_MemoryLogTensorAllocation'stepId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "kernelName" f MemoryLogTensorAllocation
+           MemoryLogTensorAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorAllocation'kernelName
+                 (\ x__ y__ -> x__{_MemoryLogTensorAllocation'kernelName = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          b ~
+            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f MemoryLogTensorAllocation
+           MemoryLogTensorAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorAllocation'tensor
+                 (\ x__ y__ -> x__{_MemoryLogTensorAllocation'tensor = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensor" f MemoryLogTensorAllocation
+           MemoryLogTensorAllocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorAllocation'tensor
+                 (\ x__ y__ -> x__{_MemoryLogTensorAllocation'tensor = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryLogTensorAllocation where
+        def
+          = MemoryLogTensorAllocation{_MemoryLogTensorAllocation'stepId =
+                                        Data.ProtoLens.fieldDefault,
+                                      _MemoryLogTensorAllocation'kernelName =
+                                        Data.ProtoLens.fieldDefault,
+                                      _MemoryLogTensorAllocation'tensor = Prelude.Nothing}
+
+instance Data.ProtoLens.Message MemoryLogTensorAllocation where
+        descriptor
+          = let stepId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional stepId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorAllocation
+                kernelName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "kernel_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional kernelName)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorAllocation
+                tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)
+                      (Data.ProtoLens.OptionalField maybe'tensor)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorAllocation
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryLogTensorAllocation")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, stepId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, kernelName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, tensor__field_descriptor)])
+                (Data.Map.fromList
+                   [("step_id", stepId__field_descriptor),
+                    ("kernel_name", kernelName__field_descriptor),
+                    ("tensor", tensor__field_descriptor)])
+
+data MemoryLogTensorDeallocation = MemoryLogTensorDeallocation{_MemoryLogTensorDeallocation'allocationId
+                                                               :: !Data.Int.Int64,
+                                                               _MemoryLogTensorDeallocation'allocatorName
+                                                               :: !Data.Text.Text}
+                                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocationId" f MemoryLogTensorDeallocation
+           MemoryLogTensorDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemoryLogTensorDeallocation'allocationId
+                 (\ x__ y__ ->
+                    x__{_MemoryLogTensorDeallocation'allocationId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorName" f MemoryLogTensorDeallocation
+           MemoryLogTensorDeallocation
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemoryLogTensorDeallocation'allocatorName
+                 (\ x__ y__ ->
+                    x__{_MemoryLogTensorDeallocation'allocatorName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryLogTensorDeallocation
+         where
+        def
+          = MemoryLogTensorDeallocation{_MemoryLogTensorDeallocation'allocationId
+                                          = Data.ProtoLens.fieldDefault,
+                                        _MemoryLogTensorDeallocation'allocatorName =
+                                          Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MemoryLogTensorDeallocation where
+        descriptor
+          = let allocationId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocation_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocationId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorDeallocation
+                allocatorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorDeallocation
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryLogTensorDeallocation")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, allocationId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, allocatorName__field_descriptor)])
+                (Data.Map.fromList
+                   [("allocation_id", allocationId__field_descriptor),
+                    ("allocator_name", allocatorName__field_descriptor)])
+
+data MemoryLogTensorOutput = MemoryLogTensorOutput{_MemoryLogTensorOutput'stepId
+                                                   :: !Data.Int.Int64,
+                                                   _MemoryLogTensorOutput'kernelName ::
+                                                   !Data.Text.Text,
+                                                   _MemoryLogTensorOutput'index :: !Data.Int.Int32,
+                                                   _MemoryLogTensorOutput'tensor ::
+                                                   !(Prelude.Maybe
+                                                       Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stepId" f MemoryLogTensorOutput
+           MemoryLogTensorOutput
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorOutput'stepId
+                 (\ x__ y__ -> x__{_MemoryLogTensorOutput'stepId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "kernelName" f MemoryLogTensorOutput
+           MemoryLogTensorOutput
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorOutput'kernelName
+                 (\ x__ y__ -> x__{_MemoryLogTensorOutput'kernelName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "index" f MemoryLogTensorOutput
+           MemoryLogTensorOutput
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorOutput'index
+                 (\ x__ y__ -> x__{_MemoryLogTensorOutput'index = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          b ~
+            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f MemoryLogTensorOutput
+           MemoryLogTensorOutput
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorOutput'tensor
+                 (\ x__ y__ -> x__{_MemoryLogTensorOutput'tensor = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensor" f MemoryLogTensorOutput
+           MemoryLogTensorOutput
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryLogTensorOutput'tensor
+                 (\ x__ y__ -> x__{_MemoryLogTensorOutput'tensor = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryLogTensorOutput where
+        def
+          = MemoryLogTensorOutput{_MemoryLogTensorOutput'stepId =
+                                    Data.ProtoLens.fieldDefault,
+                                  _MemoryLogTensorOutput'kernelName = Data.ProtoLens.fieldDefault,
+                                  _MemoryLogTensorOutput'index = Data.ProtoLens.fieldDefault,
+                                  _MemoryLogTensorOutput'tensor = Prelude.Nothing}
+
+instance Data.ProtoLens.Message MemoryLogTensorOutput where
+        descriptor
+          = let stepId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step_id"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional stepId)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorOutput
+                kernelName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "kernel_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional kernelName)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorOutput
+                index__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "index"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional index)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorOutput
+                tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)
+                      (Data.ProtoLens.OptionalField maybe'tensor)
+                      :: Data.ProtoLens.FieldDescriptor MemoryLogTensorOutput
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryLogTensorOutput")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, stepId__field_descriptor),
+                    (Data.ProtoLens.Tag 2, kernelName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, index__field_descriptor),
+                    (Data.ProtoLens.Tag 4, tensor__field_descriptor)])
+                (Data.Map.fromList
+                   [("step_id", stepId__field_descriptor),
+                    ("kernel_name", kernelName__field_descriptor),
+                    ("index", index__field_descriptor),
+                    ("tensor", tensor__field_descriptor)])
+
+allocationId ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "allocationId" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+allocationId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocationId")
+
+allocatorName ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "allocatorName" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+allocatorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorName")
+
+deferred ::
+         forall f s t a b . (Lens.Labels.HasLens "deferred" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+deferred
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deferred")
+
+handle ::
+       forall f s t a b . (Lens.Labels.HasLens "handle" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+handle
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "handle")
+
+index ::
+      forall f s t a b . (Lens.Labels.HasLens "index" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+index
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "index")
+
+kernelName ::
+           forall f s t a b . (Lens.Labels.HasLens "kernelName" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+kernelName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "kernelName")
+
+maybe'tensor ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "maybe'tensor" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+maybe'tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensor")
+
+numBytes ::
+         forall f s t a b . (Lens.Labels.HasLens "numBytes" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+numBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numBytes")
+
+operation ::
+          forall f s t a b . (Lens.Labels.HasLens "operation" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+operation
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "operation")
+
+ptr ::
+    forall f s t a b . (Lens.Labels.HasLens "ptr" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+ptr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ptr")
+
+stepId ::
+       forall f s t a b . (Lens.Labels.HasLens "stepId" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+stepId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stepId")
+
+tensor ::
+       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/NodeDef.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/NodeDef.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/NodeDef.hs
@@ -0,0 +1,277 @@
+{- This file was auto-generated from tensorflow/core/framework/node_def.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.NodeDef where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.AttrValue
+
+data NodeDef = NodeDef{_NodeDef'name :: !Data.Text.Text,
+                       _NodeDef'op :: !Data.Text.Text,
+                       _NodeDef'input :: ![Data.Text.Text],
+                       _NodeDef'device :: !Data.Text.Text,
+                       _NodeDef'attr ::
+                       !(Data.Map.Map Data.Text.Text
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f NodeDef NodeDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'name
+                 (\ x__ y__ -> x__{_NodeDef'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "op" f NodeDef NodeDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'op
+                 (\ x__ y__ -> x__{_NodeDef'op = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "input" f NodeDef NodeDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'input
+                 (\ x__ y__ -> x__{_NodeDef'input = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "device" f NodeDef NodeDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'device
+                 (\ x__ y__ -> x__{_NodeDef'device = y__}))
+              Prelude.id
+
+instance (a ~
+            Data.Map.Map Data.Text.Text
+              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Data.Map.Map Data.Text.Text
+              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "attr" f NodeDef NodeDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'attr
+                 (\ x__ y__ -> x__{_NodeDef'attr = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NodeDef where
+        def
+          = NodeDef{_NodeDef'name = Data.ProtoLens.fieldDefault,
+                    _NodeDef'op = Data.ProtoLens.fieldDefault, _NodeDef'input = [],
+                    _NodeDef'device = Data.ProtoLens.fieldDefault,
+                    _NodeDef'attr = Data.Map.empty}
+
+instance Data.ProtoLens.Message NodeDef where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef
+                op__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "op"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional op)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef
+                input__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "input"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked input)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef
+                device__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef
+                attr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "attr"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor NodeDef'AttrEntry)
+                      (Data.ProtoLens.MapField key value attr)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NodeDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, op__field_descriptor),
+                    (Data.ProtoLens.Tag 3, input__field_descriptor),
+                    (Data.ProtoLens.Tag 4, device__field_descriptor),
+                    (Data.ProtoLens.Tag 5, attr__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor), ("op", op__field_descriptor),
+                    ("input", input__field_descriptor),
+                    ("device", device__field_descriptor),
+                    ("attr", attr__field_descriptor)])
+
+data NodeDef'AttrEntry = NodeDef'AttrEntry{_NodeDef'AttrEntry'key
+                                           :: !Data.Text.Text,
+                                           _NodeDef'AttrEntry'value ::
+                                           !(Prelude.Maybe
+                                               Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f NodeDef'AttrEntry NodeDef'AttrEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'key
+                 (\ x__ y__ -> x__{_NodeDef'AttrEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f NodeDef'AttrEntry NodeDef'AttrEntry a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'value
+                 (\ x__ y__ -> x__{_NodeDef'AttrEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f NodeDef'AttrEntry
+           NodeDef'AttrEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'value
+                 (\ x__ y__ -> x__{_NodeDef'AttrEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NodeDef'AttrEntry where
+        def
+          = NodeDef'AttrEntry{_NodeDef'AttrEntry'key =
+                                Data.ProtoLens.fieldDefault,
+                              _NodeDef'AttrEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message NodeDef'AttrEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef'AttrEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor NodeDef'AttrEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NodeDef.AttrEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+attr ::
+     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+attr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
+
+device ::
+       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+device
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
+
+input ::
+      forall f s t a b . (Lens.Labels.HasLens "input" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+input
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "input")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+op ::
+   forall f s t a b . (Lens.Labels.HasLens "op" f s t a b) =>
+     Lens.Family2.LensLike f s t a b
+op
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "op")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/OpDef.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/OpDef.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/OpDef.hs
@@ -0,0 +1,895 @@
+{- This file was auto-generated from tensorflow/core/framework/op_def.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.OpDef where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.AttrValue
+import qualified Proto.Tensorflow.Core.Framework.Types
+
+data OpDef = OpDef{_OpDef'name :: !Data.Text.Text,
+                   _OpDef'inputArg :: ![OpDef'ArgDef],
+                   _OpDef'outputArg :: ![OpDef'ArgDef],
+                   _OpDef'attr :: ![OpDef'AttrDef],
+                   _OpDef'deprecation :: !(Prelude.Maybe OpDeprecation),
+                   _OpDef'summary :: !Data.Text.Text,
+                   _OpDef'description :: !Data.Text.Text,
+                   _OpDef'isCommutative :: !Prelude.Bool,
+                   _OpDef'isAggregate :: !Prelude.Bool,
+                   _OpDef'isStateful :: !Prelude.Bool,
+                   _OpDef'allowsUninitializedInput :: !Prelude.Bool}
+           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'name
+                 (\ x__ y__ -> x__{_OpDef'name = y__}))
+              Prelude.id
+
+instance (a ~ [OpDef'ArgDef], b ~ [OpDef'ArgDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "inputArg" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'inputArg
+                 (\ x__ y__ -> x__{_OpDef'inputArg = y__}))
+              Prelude.id
+
+instance (a ~ [OpDef'ArgDef], b ~ [OpDef'ArgDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "outputArg" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'outputArg
+                 (\ x__ y__ -> x__{_OpDef'outputArg = y__}))
+              Prelude.id
+
+instance (a ~ [OpDef'AttrDef], b ~ [OpDef'AttrDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "attr" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'attr
+                 (\ x__ y__ -> x__{_OpDef'attr = y__}))
+              Prelude.id
+
+instance (a ~ OpDeprecation, b ~ OpDeprecation,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deprecation" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'deprecation
+                 (\ x__ y__ -> x__{_OpDef'deprecation = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe OpDeprecation,
+          b ~ Prelude.Maybe OpDeprecation, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'deprecation" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'deprecation
+                 (\ x__ y__ -> x__{_OpDef'deprecation = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "summary" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'summary
+                 (\ x__ y__ -> x__{_OpDef'summary = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "description" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'description
+                 (\ x__ y__ -> x__{_OpDef'description = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isCommutative" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'isCommutative
+                 (\ x__ y__ -> x__{_OpDef'isCommutative = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isAggregate" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'isAggregate
+                 (\ x__ y__ -> x__{_OpDef'isAggregate = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isStateful" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'isStateful
+                 (\ x__ y__ -> x__{_OpDef'isStateful = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "allowsUninitializedInput" f OpDef OpDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'allowsUninitializedInput
+                 (\ x__ y__ -> x__{_OpDef'allowsUninitializedInput = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default OpDef where
+        def
+          = OpDef{_OpDef'name = Data.ProtoLens.fieldDefault,
+                  _OpDef'inputArg = [], _OpDef'outputArg = [], _OpDef'attr = [],
+                  _OpDef'deprecation = Prelude.Nothing,
+                  _OpDef'summary = Data.ProtoLens.fieldDefault,
+                  _OpDef'description = Data.ProtoLens.fieldDefault,
+                  _OpDef'isCommutative = Data.ProtoLens.fieldDefault,
+                  _OpDef'isAggregate = Data.ProtoLens.fieldDefault,
+                  _OpDef'isStateful = Data.ProtoLens.fieldDefault,
+                  _OpDef'allowsUninitializedInput = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message OpDef where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                inputArg__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "input_arg"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor OpDef'ArgDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked inputArg)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                outputArg__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "output_arg"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor OpDef'ArgDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked outputArg)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                attr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "attr"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor OpDef'AttrDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked attr)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                deprecation__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "deprecation"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor OpDeprecation)
+                      (Data.ProtoLens.OptionalField maybe'deprecation)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                summary__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "summary"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional summary)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                description__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "description"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional description)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                isCommutative__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "is_commutative"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isCommutative)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                isAggregate__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "is_aggregate"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isAggregate)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                isStateful__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "is_stateful"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isStateful)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+                allowsUninitializedInput__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allows_uninitialized_input"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         allowsUninitializedInput)
+                      :: Data.ProtoLens.FieldDescriptor OpDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.OpDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, inputArg__field_descriptor),
+                    (Data.ProtoLens.Tag 3, outputArg__field_descriptor),
+                    (Data.ProtoLens.Tag 4, attr__field_descriptor),
+                    (Data.ProtoLens.Tag 8, deprecation__field_descriptor),
+                    (Data.ProtoLens.Tag 5, summary__field_descriptor),
+                    (Data.ProtoLens.Tag 6, description__field_descriptor),
+                    (Data.ProtoLens.Tag 18, isCommutative__field_descriptor),
+                    (Data.ProtoLens.Tag 16, isAggregate__field_descriptor),
+                    (Data.ProtoLens.Tag 17, isStateful__field_descriptor),
+                    (Data.ProtoLens.Tag 19,
+                     allowsUninitializedInput__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("input_arg", inputArg__field_descriptor),
+                    ("output_arg", outputArg__field_descriptor),
+                    ("attr", attr__field_descriptor),
+                    ("deprecation", deprecation__field_descriptor),
+                    ("summary", summary__field_descriptor),
+                    ("description", description__field_descriptor),
+                    ("is_commutative", isCommutative__field_descriptor),
+                    ("is_aggregate", isAggregate__field_descriptor),
+                    ("is_stateful", isStateful__field_descriptor),
+                    ("allows_uninitialized_input",
+                     allowsUninitializedInput__field_descriptor)])
+
+data OpDef'ArgDef = OpDef'ArgDef{_OpDef'ArgDef'name ::
+                                 !Data.Text.Text,
+                                 _OpDef'ArgDef'description :: !Data.Text.Text,
+                                 _OpDef'ArgDef'type' ::
+                                 !Proto.Tensorflow.Core.Framework.Types.DataType,
+                                 _OpDef'ArgDef'typeAttr :: !Data.Text.Text,
+                                 _OpDef'ArgDef'numberAttr :: !Data.Text.Text,
+                                 _OpDef'ArgDef'typeListAttr :: !Data.Text.Text,
+                                 _OpDef'ArgDef'isRef :: !Prelude.Bool}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'name
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "description" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'description
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'description = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'type'
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'type' = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "typeAttr" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'typeAttr
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'typeAttr = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numberAttr" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'numberAttr
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'numberAttr = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "typeListAttr" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'typeListAttr
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'typeListAttr = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isRef" f OpDef'ArgDef OpDef'ArgDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'ArgDef'isRef
+                 (\ x__ y__ -> x__{_OpDef'ArgDef'isRef = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default OpDef'ArgDef where
+        def
+          = OpDef'ArgDef{_OpDef'ArgDef'name = Data.ProtoLens.fieldDefault,
+                         _OpDef'ArgDef'description = Data.ProtoLens.fieldDefault,
+                         _OpDef'ArgDef'type' = Data.Default.Class.def,
+                         _OpDef'ArgDef'typeAttr = Data.ProtoLens.fieldDefault,
+                         _OpDef'ArgDef'numberAttr = Data.ProtoLens.fieldDefault,
+                         _OpDef'ArgDef'typeListAttr = Data.ProtoLens.fieldDefault,
+                         _OpDef'ArgDef'isRef = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message OpDef'ArgDef where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+                description__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "description"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional description)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+                typeAttr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type_attr"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeAttr)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+                numberAttr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "number_attr"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numberAttr)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+                typeListAttr__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type_list_attr"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeListAttr)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+                isRef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "is_ref"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isRef)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.OpDef.ArgDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, description__field_descriptor),
+                    (Data.ProtoLens.Tag 3, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 4, typeAttr__field_descriptor),
+                    (Data.ProtoLens.Tag 5, numberAttr__field_descriptor),
+                    (Data.ProtoLens.Tag 6, typeListAttr__field_descriptor),
+                    (Data.ProtoLens.Tag 16, isRef__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("description", description__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("type_attr", typeAttr__field_descriptor),
+                    ("number_attr", numberAttr__field_descriptor),
+                    ("type_list_attr", typeListAttr__field_descriptor),
+                    ("is_ref", isRef__field_descriptor)])
+
+data OpDef'AttrDef = OpDef'AttrDef{_OpDef'AttrDef'name ::
+                                   !Data.Text.Text,
+                                   _OpDef'AttrDef'type' :: !Data.Text.Text,
+                                   _OpDef'AttrDef'defaultValue ::
+                                   !(Prelude.Maybe
+                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue),
+                                   _OpDef'AttrDef'description :: !Data.Text.Text,
+                                   _OpDef'AttrDef'hasMinimum :: !Prelude.Bool,
+                                   _OpDef'AttrDef'minimum :: !Data.Int.Int64,
+                                   _OpDef'AttrDef'allowedValues ::
+                                   !(Prelude.Maybe
+                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f OpDef'AttrDef OpDef'AttrDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'name
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f OpDef'AttrDef OpDef'AttrDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'type'
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'type' = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "defaultValue" f OpDef'AttrDef OpDef'AttrDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'defaultValue
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'defaultValue = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'defaultValue" f OpDef'AttrDef
+           OpDef'AttrDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'defaultValue
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'defaultValue = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "description" f OpDef'AttrDef OpDef'AttrDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'description
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'description = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "hasMinimum" f OpDef'AttrDef OpDef'AttrDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'hasMinimum
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'hasMinimum = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "minimum" f OpDef'AttrDef OpDef'AttrDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'minimum
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'minimum = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allowedValues" f OpDef'AttrDef OpDef'AttrDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'allowedValues
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'allowedValues = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'allowedValues" f OpDef'AttrDef
+           OpDef'AttrDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDef'AttrDef'allowedValues
+                 (\ x__ y__ -> x__{_OpDef'AttrDef'allowedValues = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default OpDef'AttrDef where
+        def
+          = OpDef'AttrDef{_OpDef'AttrDef'name = Data.ProtoLens.fieldDefault,
+                          _OpDef'AttrDef'type' = Data.ProtoLens.fieldDefault,
+                          _OpDef'AttrDef'defaultValue = Prelude.Nothing,
+                          _OpDef'AttrDef'description = Data.ProtoLens.fieldDefault,
+                          _OpDef'AttrDef'hasMinimum = Data.ProtoLens.fieldDefault,
+                          _OpDef'AttrDef'minimum = Data.ProtoLens.fieldDefault,
+                          _OpDef'AttrDef'allowedValues = Prelude.Nothing}
+
+instance Data.ProtoLens.Message OpDef'AttrDef where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+                defaultValue__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "default_value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'defaultValue)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+                description__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "description"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional description)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+                hasMinimum__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "has_minimum"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional hasMinimum)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+                minimum__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "minimum"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional minimum)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+                allowedValues__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allowed_values"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'allowedValues)
+                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.OpDef.AttrDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 3, defaultValue__field_descriptor),
+                    (Data.ProtoLens.Tag 4, description__field_descriptor),
+                    (Data.ProtoLens.Tag 5, hasMinimum__field_descriptor),
+                    (Data.ProtoLens.Tag 6, minimum__field_descriptor),
+                    (Data.ProtoLens.Tag 7, allowedValues__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("default_value", defaultValue__field_descriptor),
+                    ("description", description__field_descriptor),
+                    ("has_minimum", hasMinimum__field_descriptor),
+                    ("minimum", minimum__field_descriptor),
+                    ("allowed_values", allowedValues__field_descriptor)])
+
+data OpDeprecation = OpDeprecation{_OpDeprecation'version ::
+                                   !Data.Int.Int32,
+                                   _OpDeprecation'explanation :: !Data.Text.Text}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "version" f OpDeprecation OpDeprecation a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDeprecation'version
+                 (\ x__ y__ -> x__{_OpDeprecation'version = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "explanation" f OpDeprecation OpDeprecation a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpDeprecation'explanation
+                 (\ x__ y__ -> x__{_OpDeprecation'explanation = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default OpDeprecation where
+        def
+          = OpDeprecation{_OpDeprecation'version =
+                            Data.ProtoLens.fieldDefault,
+                          _OpDeprecation'explanation = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message OpDeprecation where
+        descriptor
+          = let version__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "version"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
+                      :: Data.ProtoLens.FieldDescriptor OpDeprecation
+                explanation__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "explanation"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional explanation)
+                      :: Data.ProtoLens.FieldDescriptor OpDeprecation
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.OpDeprecation")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, version__field_descriptor),
+                    (Data.ProtoLens.Tag 2, explanation__field_descriptor)])
+                (Data.Map.fromList
+                   [("version", version__field_descriptor),
+                    ("explanation", explanation__field_descriptor)])
+
+data OpList = OpList{_OpList'op :: ![OpDef]}
+            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [OpDef], b ~ [OpDef], Prelude.Functor f) =>
+         Lens.Labels.HasLens "op" f OpList OpList a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OpList'op
+                 (\ x__ y__ -> x__{_OpList'op = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default OpList where
+        def = OpList{_OpList'op = []}
+
+instance Data.ProtoLens.Message OpList where
+        descriptor
+          = let op__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "op"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor OpDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked op)
+                      :: Data.ProtoLens.FieldDescriptor OpList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.OpList")
+                (Data.Map.fromList [(Data.ProtoLens.Tag 1, op__field_descriptor)])
+                (Data.Map.fromList [("op", op__field_descriptor)])
+
+allowedValues ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "allowedValues" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+allowedValues
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowedValues")
+
+allowsUninitializedInput ::
+                         forall f s t a b .
+                           (Lens.Labels.HasLens "allowsUninitializedInput" f s t a b) =>
+                           Lens.Family2.LensLike f s t a b
+allowsUninitializedInput
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "allowsUninitializedInput")
+
+attr ::
+     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+attr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
+
+defaultValue ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "defaultValue" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+defaultValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "defaultValue")
+
+deprecation ::
+            forall f s t a b . (Lens.Labels.HasLens "deprecation" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+deprecation
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deprecation")
+
+description ::
+            forall f s t a b . (Lens.Labels.HasLens "description" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+description
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "description")
+
+explanation ::
+            forall f s t a b . (Lens.Labels.HasLens "explanation" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+explanation
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "explanation")
+
+hasMinimum ::
+           forall f s t a b . (Lens.Labels.HasLens "hasMinimum" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+hasMinimum
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hasMinimum")
+
+inputArg ::
+         forall f s t a b . (Lens.Labels.HasLens "inputArg" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+inputArg
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inputArg")
+
+isAggregate ::
+            forall f s t a b . (Lens.Labels.HasLens "isAggregate" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+isAggregate
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isAggregate")
+
+isCommutative ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "isCommutative" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+isCommutative
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isCommutative")
+
+isRef ::
+      forall f s t a b . (Lens.Labels.HasLens "isRef" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+isRef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isRef")
+
+isStateful ::
+           forall f s t a b . (Lens.Labels.HasLens "isStateful" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+isStateful
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isStateful")
+
+maybe'allowedValues ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "maybe'allowedValues" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+maybe'allowedValues
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'allowedValues")
+
+maybe'defaultValue ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'defaultValue" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'defaultValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'defaultValue")
+
+maybe'deprecation ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'deprecation" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'deprecation
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecation")
+
+minimum ::
+        forall f s t a b . (Lens.Labels.HasLens "minimum" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+minimum
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "minimum")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+numberAttr ::
+           forall f s t a b . (Lens.Labels.HasLens "numberAttr" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+numberAttr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numberAttr")
+
+op ::
+   forall f s t a b . (Lens.Labels.HasLens "op" f s t a b) =>
+     Lens.Family2.LensLike f s t a b
+op
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "op")
+
+outputArg ::
+          forall f s t a b . (Lens.Labels.HasLens "outputArg" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+outputArg
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputArg")
+
+summary ::
+        forall f s t a b . (Lens.Labels.HasLens "summary" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+summary
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "summary")
+
+type' ::
+      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+type'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
+
+typeAttr ::
+         forall f s t a b . (Lens.Labels.HasLens "typeAttr" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+typeAttr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeAttr")
+
+typeListAttr ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "typeListAttr" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+typeListAttr
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeListAttr")
+
+version ::
+        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+version
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/ResourceHandle.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/ResourceHandle.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/ResourceHandle.hs
@@ -0,0 +1,193 @@
+{- This file was auto-generated from tensorflow/core/framework/resource_handle.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.ResourceHandle where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data ResourceHandleProto = ResourceHandleProto{_ResourceHandleProto'device
+                                               :: !Data.Text.Text,
+                                               _ResourceHandleProto'container :: !Data.Text.Text,
+                                               _ResourceHandleProto'name :: !Data.Text.Text,
+                                               _ResourceHandleProto'hashCode :: !Data.Word.Word64,
+                                               _ResourceHandleProto'maybeTypeName ::
+                                               !Data.Text.Text}
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "device" f ResourceHandleProto
+           ResourceHandleProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ResourceHandleProto'device
+                 (\ x__ y__ -> x__{_ResourceHandleProto'device = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "container" f ResourceHandleProto
+           ResourceHandleProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ResourceHandleProto'container
+                 (\ x__ y__ -> x__{_ResourceHandleProto'container = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f ResourceHandleProto
+           ResourceHandleProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ResourceHandleProto'name
+                 (\ x__ y__ -> x__{_ResourceHandleProto'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "hashCode" f ResourceHandleProto
+           ResourceHandleProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ResourceHandleProto'hashCode
+                 (\ x__ y__ -> x__{_ResourceHandleProto'hashCode = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybeTypeName" f ResourceHandleProto
+           ResourceHandleProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ResourceHandleProto'maybeTypeName
+                 (\ x__ y__ -> x__{_ResourceHandleProto'maybeTypeName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ResourceHandleProto where
+        def
+          = ResourceHandleProto{_ResourceHandleProto'device =
+                                  Data.ProtoLens.fieldDefault,
+                                _ResourceHandleProto'container = Data.ProtoLens.fieldDefault,
+                                _ResourceHandleProto'name = Data.ProtoLens.fieldDefault,
+                                _ResourceHandleProto'hashCode = Data.ProtoLens.fieldDefault,
+                                _ResourceHandleProto'maybeTypeName = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message ResourceHandleProto where
+        descriptor
+          = let device__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
+                      :: Data.ProtoLens.FieldDescriptor ResourceHandleProto
+                container__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "container"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional container)
+                      :: Data.ProtoLens.FieldDescriptor ResourceHandleProto
+                name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor ResourceHandleProto
+                hashCode__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "hash_code"
+                      (Data.ProtoLens.UInt64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional hashCode)
+                      :: Data.ProtoLens.FieldDescriptor ResourceHandleProto
+                maybeTypeName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "maybe_type_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional maybeTypeName)
+                      :: Data.ProtoLens.FieldDescriptor ResourceHandleProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ResourceHandleProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, device__field_descriptor),
+                    (Data.ProtoLens.Tag 2, container__field_descriptor),
+                    (Data.ProtoLens.Tag 3, name__field_descriptor),
+                    (Data.ProtoLens.Tag 4, hashCode__field_descriptor),
+                    (Data.ProtoLens.Tag 5, maybeTypeName__field_descriptor)])
+                (Data.Map.fromList
+                   [("device", device__field_descriptor),
+                    ("container", container__field_descriptor),
+                    ("name", name__field_descriptor),
+                    ("hash_code", hashCode__field_descriptor),
+                    ("maybe_type_name", maybeTypeName__field_descriptor)])
+
+container ::
+          forall f s t a b . (Lens.Labels.HasLens "container" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+container
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "container")
+
+device ::
+       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+device
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
+
+hashCode ::
+         forall f s t a b . (Lens.Labels.HasLens "hashCode" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+hashCode
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hashCode")
+
+maybeTypeName ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybeTypeName" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybeTypeName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybeTypeName")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/StepStats.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/StepStats.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/StepStats.hs
@@ -0,0 +1,1124 @@
+{- This file was auto-generated from tensorflow/core/framework/step_stats.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.StepStats where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified
+       Proto.Tensorflow.Core.Framework.AllocationDescription
+import qualified Proto.Tensorflow.Core.Framework.TensorDescription
+
+data AllocationRecord = AllocationRecord{_AllocationRecord'allocMicros
+                                         :: !Data.Int.Int64,
+                                         _AllocationRecord'allocBytes :: !Data.Int.Int64}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocMicros" f AllocationRecord
+           AllocationRecord
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationRecord'allocMicros
+                 (\ x__ y__ -> x__{_AllocationRecord'allocMicros = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocBytes" f AllocationRecord
+           AllocationRecord
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocationRecord'allocBytes
+                 (\ x__ y__ -> x__{_AllocationRecord'allocBytes = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AllocationRecord where
+        def
+          = AllocationRecord{_AllocationRecord'allocMicros =
+                               Data.ProtoLens.fieldDefault,
+                             _AllocationRecord'allocBytes = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message AllocationRecord where
+        descriptor
+          = let allocMicros__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "alloc_micros"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocMicros)
+                      :: Data.ProtoLens.FieldDescriptor AllocationRecord
+                allocBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "alloc_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocBytes)
+                      :: Data.ProtoLens.FieldDescriptor AllocationRecord
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AllocationRecord")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, allocMicros__field_descriptor),
+                    (Data.ProtoLens.Tag 2, allocBytes__field_descriptor)])
+                (Data.Map.fromList
+                   [("alloc_micros", allocMicros__field_descriptor),
+                    ("alloc_bytes", allocBytes__field_descriptor)])
+
+data AllocatorMemoryUsed = AllocatorMemoryUsed{_AllocatorMemoryUsed'allocatorName
+                                               :: !Data.Text.Text,
+                                               _AllocatorMemoryUsed'totalBytes :: !Data.Int.Int64,
+                                               _AllocatorMemoryUsed'peakBytes :: !Data.Int.Int64,
+                                               _AllocatorMemoryUsed'liveBytes :: !Data.Int.Int64,
+                                               _AllocatorMemoryUsed'allocationRecords ::
+                                               ![AllocationRecord],
+                                               _AllocatorMemoryUsed'allocatorBytesInUse ::
+                                               !Data.Int.Int64}
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorName" f AllocatorMemoryUsed
+           AllocatorMemoryUsed
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'allocatorName
+                 (\ x__ y__ -> x__{_AllocatorMemoryUsed'allocatorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "totalBytes" f AllocatorMemoryUsed
+           AllocatorMemoryUsed
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'totalBytes
+                 (\ x__ y__ -> x__{_AllocatorMemoryUsed'totalBytes = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "peakBytes" f AllocatorMemoryUsed
+           AllocatorMemoryUsed
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'peakBytes
+                 (\ x__ y__ -> x__{_AllocatorMemoryUsed'peakBytes = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "liveBytes" f AllocatorMemoryUsed
+           AllocatorMemoryUsed
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'liveBytes
+                 (\ x__ y__ -> x__{_AllocatorMemoryUsed'liveBytes = y__}))
+              Prelude.id
+
+instance (a ~ [AllocationRecord], b ~ [AllocationRecord],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocationRecords" f AllocatorMemoryUsed
+           AllocatorMemoryUsed
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'allocationRecords
+                 (\ x__ y__ -> x__{_AllocatorMemoryUsed'allocationRecords = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorBytesInUse" f AllocatorMemoryUsed
+           AllocatorMemoryUsed
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _AllocatorMemoryUsed'allocatorBytesInUse
+                 (\ x__ y__ -> x__{_AllocatorMemoryUsed'allocatorBytesInUse = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AllocatorMemoryUsed where
+        def
+          = AllocatorMemoryUsed{_AllocatorMemoryUsed'allocatorName =
+                                  Data.ProtoLens.fieldDefault,
+                                _AllocatorMemoryUsed'totalBytes = Data.ProtoLens.fieldDefault,
+                                _AllocatorMemoryUsed'peakBytes = Data.ProtoLens.fieldDefault,
+                                _AllocatorMemoryUsed'liveBytes = Data.ProtoLens.fieldDefault,
+                                _AllocatorMemoryUsed'allocationRecords = [],
+                                _AllocatorMemoryUsed'allocatorBytesInUse =
+                                  Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message AllocatorMemoryUsed where
+        descriptor
+          = let allocatorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
+                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
+                totalBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "total_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional totalBytes)
+                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
+                peakBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "peak_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional peakBytes)
+                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
+                liveBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "live_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional liveBytes)
+                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
+                allocationRecords__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocation_records"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AllocationRecord)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         allocationRecords)
+                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
+                allocatorBytesInUse__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_bytes_in_use"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         allocatorBytesInUse)
+                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AllocatorMemoryUsed")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, allocatorName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, totalBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 3, peakBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 4, liveBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 6, allocationRecords__field_descriptor),
+                    (Data.ProtoLens.Tag 5, allocatorBytesInUse__field_descriptor)])
+                (Data.Map.fromList
+                   [("allocator_name", allocatorName__field_descriptor),
+                    ("total_bytes", totalBytes__field_descriptor),
+                    ("peak_bytes", peakBytes__field_descriptor),
+                    ("live_bytes", liveBytes__field_descriptor),
+                    ("allocation_records", allocationRecords__field_descriptor),
+                    ("allocator_bytes_in_use", allocatorBytesInUse__field_descriptor)])
+
+data DeviceStepStats = DeviceStepStats{_DeviceStepStats'device ::
+                                       !Data.Text.Text,
+                                       _DeviceStepStats'nodeStats :: ![NodeExecStats]}
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "device" f DeviceStepStats DeviceStepStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceStepStats'device
+                 (\ x__ y__ -> x__{_DeviceStepStats'device = y__}))
+              Prelude.id
+
+instance (a ~ [NodeExecStats], b ~ [NodeExecStats],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nodeStats" f DeviceStepStats DeviceStepStats a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DeviceStepStats'nodeStats
+                 (\ x__ y__ -> x__{_DeviceStepStats'nodeStats = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DeviceStepStats where
+        def
+          = DeviceStepStats{_DeviceStepStats'device =
+                              Data.ProtoLens.fieldDefault,
+                            _DeviceStepStats'nodeStats = []}
+
+instance Data.ProtoLens.Message DeviceStepStats where
+        descriptor
+          = let device__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
+                      :: Data.ProtoLens.FieldDescriptor DeviceStepStats
+                nodeStats__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node_stats"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor NodeExecStats)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked nodeStats)
+                      :: Data.ProtoLens.FieldDescriptor DeviceStepStats
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DeviceStepStats")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, device__field_descriptor),
+                    (Data.ProtoLens.Tag 2, nodeStats__field_descriptor)])
+                (Data.Map.fromList
+                   [("device", device__field_descriptor),
+                    ("node_stats", nodeStats__field_descriptor)])
+
+data MemoryStats = MemoryStats{_MemoryStats'tempMemorySize ::
+                               !Data.Int.Int64,
+                               _MemoryStats'persistentMemorySize :: !Data.Int.Int64,
+                               _MemoryStats'persistentTensorAllocIds :: ![Data.Int.Int64],
+                               _MemoryStats'deviceTempMemorySize :: !Data.Int.Int64,
+                               _MemoryStats'devicePersistentMemorySize :: !Data.Int.Int64,
+                               _MemoryStats'devicePersistentTensorAllocIds :: ![Data.Int.Int64]}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tempMemorySize" f MemoryStats MemoryStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryStats'tempMemorySize
+                 (\ x__ y__ -> x__{_MemoryStats'tempMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "persistentMemorySize" f MemoryStats
+           MemoryStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryStats'persistentMemorySize
+                 (\ x__ y__ -> x__{_MemoryStats'persistentMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "persistentTensorAllocIds" f MemoryStats
+           MemoryStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryStats'persistentTensorAllocIds
+                 (\ x__ y__ -> x__{_MemoryStats'persistentTensorAllocIds = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceTempMemorySize" f MemoryStats
+           MemoryStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryStats'deviceTempMemorySize
+                 (\ x__ y__ -> x__{_MemoryStats'deviceTempMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "devicePersistentMemorySize" f MemoryStats
+           MemoryStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemoryStats'devicePersistentMemorySize
+                 (\ x__ y__ -> x__{_MemoryStats'devicePersistentMemorySize = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "devicePersistentTensorAllocIds" f MemoryStats
+           MemoryStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemoryStats'devicePersistentTensorAllocIds
+                 (\ x__ y__ ->
+                    x__{_MemoryStats'devicePersistentTensorAllocIds = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryStats where
+        def
+          = MemoryStats{_MemoryStats'tempMemorySize =
+                          Data.ProtoLens.fieldDefault,
+                        _MemoryStats'persistentMemorySize = Data.ProtoLens.fieldDefault,
+                        _MemoryStats'persistentTensorAllocIds = [],
+                        _MemoryStats'deviceTempMemorySize = Data.ProtoLens.fieldDefault,
+                        _MemoryStats'devicePersistentMemorySize =
+                          Data.ProtoLens.fieldDefault,
+                        _MemoryStats'devicePersistentTensorAllocIds = []}
+
+instance Data.ProtoLens.Message MemoryStats where
+        descriptor
+          = let tempMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "temp_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tempMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor MemoryStats
+                persistentMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "persistent_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         persistentMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor MemoryStats
+                persistentTensorAllocIds__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "persistent_tensor_alloc_ids"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed
+                         persistentTensorAllocIds)
+                      :: Data.ProtoLens.FieldDescriptor MemoryStats
+                deviceTempMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_temp_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         deviceTempMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor MemoryStats
+                devicePersistentMemorySize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_persistent_memory_size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         devicePersistentMemorySize)
+                      :: Data.ProtoLens.FieldDescriptor MemoryStats
+                devicePersistentTensorAllocIds__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor
+                      "device_persistent_tensor_alloc_ids"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed
+                         devicePersistentTensorAllocIds)
+                      :: Data.ProtoLens.FieldDescriptor MemoryStats
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryStats")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, tempMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 3, persistentMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 5, persistentTensorAllocIds__field_descriptor),
+                    (Data.ProtoLens.Tag 2, deviceTempMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 4,
+                     devicePersistentMemorySize__field_descriptor),
+                    (Data.ProtoLens.Tag 6,
+                     devicePersistentTensorAllocIds__field_descriptor)])
+                (Data.Map.fromList
+                   [("temp_memory_size", tempMemorySize__field_descriptor),
+                    ("persistent_memory_size", persistentMemorySize__field_descriptor),
+                    ("persistent_tensor_alloc_ids",
+                     persistentTensorAllocIds__field_descriptor),
+                    ("device_temp_memory_size",
+                     deviceTempMemorySize__field_descriptor),
+                    ("device_persistent_memory_size",
+                     devicePersistentMemorySize__field_descriptor),
+                    ("device_persistent_tensor_alloc_ids",
+                     devicePersistentTensorAllocIds__field_descriptor)])
+
+data NodeExecStats = NodeExecStats{_NodeExecStats'nodeName ::
+                                   !Data.Text.Text,
+                                   _NodeExecStats'allStartMicros :: !Data.Int.Int64,
+                                   _NodeExecStats'opStartRelMicros :: !Data.Int.Int64,
+                                   _NodeExecStats'opEndRelMicros :: !Data.Int.Int64,
+                                   _NodeExecStats'allEndRelMicros :: !Data.Int.Int64,
+                                   _NodeExecStats'memory :: ![AllocatorMemoryUsed],
+                                   _NodeExecStats'output :: ![NodeOutput],
+                                   _NodeExecStats'timelineLabel :: !Data.Text.Text,
+                                   _NodeExecStats'scheduledMicros :: !Data.Int.Int64,
+                                   _NodeExecStats'threadId :: !Data.Word.Word32,
+                                   _NodeExecStats'referencedTensor ::
+                                   ![Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription],
+                                   _NodeExecStats'memoryStats :: !(Prelude.Maybe MemoryStats)}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nodeName" f NodeExecStats NodeExecStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'nodeName
+                 (\ x__ y__ -> x__{_NodeExecStats'nodeName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allStartMicros" f NodeExecStats NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'allStartMicros
+                 (\ x__ y__ -> x__{_NodeExecStats'allStartMicros = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "opStartRelMicros" f NodeExecStats
+           NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'opStartRelMicros
+                 (\ x__ y__ -> x__{_NodeExecStats'opStartRelMicros = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "opEndRelMicros" f NodeExecStats NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'opEndRelMicros
+                 (\ x__ y__ -> x__{_NodeExecStats'opEndRelMicros = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allEndRelMicros" f NodeExecStats NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'allEndRelMicros
+                 (\ x__ y__ -> x__{_NodeExecStats'allEndRelMicros = y__}))
+              Prelude.id
+
+instance (a ~ [AllocatorMemoryUsed], b ~ [AllocatorMemoryUsed],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "memory" f NodeExecStats NodeExecStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'memory
+                 (\ x__ y__ -> x__{_NodeExecStats'memory = y__}))
+              Prelude.id
+
+instance (a ~ [NodeOutput], b ~ [NodeOutput], Prelude.Functor f) =>
+         Lens.Labels.HasLens "output" f NodeExecStats NodeExecStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'output
+                 (\ x__ y__ -> x__{_NodeExecStats'output = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "timelineLabel" f NodeExecStats NodeExecStats a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'timelineLabel
+                 (\ x__ y__ -> x__{_NodeExecStats'timelineLabel = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "scheduledMicros" f NodeExecStats NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'scheduledMicros
+                 (\ x__ y__ -> x__{_NodeExecStats'scheduledMicros = y__}))
+              Prelude.id
+
+instance (a ~ Data.Word.Word32, b ~ Data.Word.Word32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "threadId" f NodeExecStats NodeExecStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'threadId
+                 (\ x__ y__ -> x__{_NodeExecStats'threadId = y__}))
+              Prelude.id
+
+instance (a ~
+            [Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription],
+          b ~
+            [Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "referencedTensor" f NodeExecStats
+           NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'referencedTensor
+                 (\ x__ y__ -> x__{_NodeExecStats'referencedTensor = y__}))
+              Prelude.id
+
+instance (a ~ MemoryStats, b ~ MemoryStats, Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryStats" f NodeExecStats NodeExecStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'memoryStats
+                 (\ x__ y__ -> x__{_NodeExecStats'memoryStats = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe MemoryStats,
+          b ~ Prelude.Maybe MemoryStats, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'memoryStats" f NodeExecStats
+           NodeExecStats
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeExecStats'memoryStats
+                 (\ x__ y__ -> x__{_NodeExecStats'memoryStats = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NodeExecStats where
+        def
+          = NodeExecStats{_NodeExecStats'nodeName =
+                            Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'allStartMicros = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'opStartRelMicros = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'opEndRelMicros = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'allEndRelMicros = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'memory = [], _NodeExecStats'output = [],
+                          _NodeExecStats'timelineLabel = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'scheduledMicros = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'threadId = Data.ProtoLens.fieldDefault,
+                          _NodeExecStats'referencedTensor = [],
+                          _NodeExecStats'memoryStats = Prelude.Nothing}
+
+instance Data.ProtoLens.Message NodeExecStats where
+        descriptor
+          = let nodeName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional nodeName)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                allStartMicros__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "all_start_micros"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allStartMicros)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                opStartRelMicros__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "op_start_rel_micros"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         opStartRelMicros)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                opEndRelMicros__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "op_end_rel_micros"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional opEndRelMicros)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                allEndRelMicros__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "all_end_rel_micros"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allEndRelMicros)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                memory__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AllocatorMemoryUsed)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked memory)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                output__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "output"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor NodeOutput)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked output)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                timelineLabel__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "timeline_label"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timelineLabel)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                scheduledMicros__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "scheduled_micros"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional scheduledMicros)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                threadId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "thread_id"
+                      (Data.ProtoLens.UInt32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional threadId)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                referencedTensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "referenced_tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         referencedTensor)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+                memoryStats__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_stats"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor MemoryStats)
+                      (Data.ProtoLens.OptionalField maybe'memoryStats)
+                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NodeExecStats")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, nodeName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, allStartMicros__field_descriptor),
+                    (Data.ProtoLens.Tag 3, opStartRelMicros__field_descriptor),
+                    (Data.ProtoLens.Tag 4, opEndRelMicros__field_descriptor),
+                    (Data.ProtoLens.Tag 5, allEndRelMicros__field_descriptor),
+                    (Data.ProtoLens.Tag 6, memory__field_descriptor),
+                    (Data.ProtoLens.Tag 7, output__field_descriptor),
+                    (Data.ProtoLens.Tag 8, timelineLabel__field_descriptor),
+                    (Data.ProtoLens.Tag 9, scheduledMicros__field_descriptor),
+                    (Data.ProtoLens.Tag 10, threadId__field_descriptor),
+                    (Data.ProtoLens.Tag 11, referencedTensor__field_descriptor),
+                    (Data.ProtoLens.Tag 12, memoryStats__field_descriptor)])
+                (Data.Map.fromList
+                   [("node_name", nodeName__field_descriptor),
+                    ("all_start_micros", allStartMicros__field_descriptor),
+                    ("op_start_rel_micros", opStartRelMicros__field_descriptor),
+                    ("op_end_rel_micros", opEndRelMicros__field_descriptor),
+                    ("all_end_rel_micros", allEndRelMicros__field_descriptor),
+                    ("memory", memory__field_descriptor),
+                    ("output", output__field_descriptor),
+                    ("timeline_label", timelineLabel__field_descriptor),
+                    ("scheduled_micros", scheduledMicros__field_descriptor),
+                    ("thread_id", threadId__field_descriptor),
+                    ("referenced_tensor", referencedTensor__field_descriptor),
+                    ("memory_stats", memoryStats__field_descriptor)])
+
+data NodeOutput = NodeOutput{_NodeOutput'slot :: !Data.Int.Int32,
+                             _NodeOutput'tensorDescription ::
+                             !(Prelude.Maybe
+                                 Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "slot" f NodeOutput NodeOutput a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeOutput'slot
+                 (\ x__ y__ -> x__{_NodeOutput'slot = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          b ~
+            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorDescription" f NodeOutput NodeOutput a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeOutput'tensorDescription
+                 (\ x__ y__ -> x__{_NodeOutput'tensorDescription = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensorDescription" f NodeOutput
+           NodeOutput
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NodeOutput'tensorDescription
+                 (\ x__ y__ -> x__{_NodeOutput'tensorDescription = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NodeOutput where
+        def
+          = NodeOutput{_NodeOutput'slot = Data.ProtoLens.fieldDefault,
+                       _NodeOutput'tensorDescription = Prelude.Nothing}
+
+instance Data.ProtoLens.Message NodeOutput where
+        descriptor
+          = let slot__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "slot"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional slot)
+                      :: Data.ProtoLens.FieldDescriptor NodeOutput
+                tensorDescription__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor_description"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)
+                      (Data.ProtoLens.OptionalField maybe'tensorDescription)
+                      :: Data.ProtoLens.FieldDescriptor NodeOutput
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NodeOutput")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, slot__field_descriptor),
+                    (Data.ProtoLens.Tag 3, tensorDescription__field_descriptor)])
+                (Data.Map.fromList
+                   [("slot", slot__field_descriptor),
+                    ("tensor_description", tensorDescription__field_descriptor)])
+
+data StepStats = StepStats{_StepStats'devStats ::
+                           ![DeviceStepStats]}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [DeviceStepStats], b ~ [DeviceStepStats],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "devStats" f StepStats StepStats a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _StepStats'devStats
+                 (\ x__ y__ -> x__{_StepStats'devStats = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default StepStats where
+        def = StepStats{_StepStats'devStats = []}
+
+instance Data.ProtoLens.Message StepStats where
+        descriptor
+          = let devStats__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dev_stats"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor DeviceStepStats)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked devStats)
+                      :: Data.ProtoLens.FieldDescriptor StepStats
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.StepStats")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, devStats__field_descriptor)])
+                (Data.Map.fromList [("dev_stats", devStats__field_descriptor)])
+
+allEndRelMicros ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "allEndRelMicros" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+allEndRelMicros
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allEndRelMicros")
+
+allStartMicros ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "allStartMicros" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+allStartMicros
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allStartMicros")
+
+allocBytes ::
+           forall f s t a b . (Lens.Labels.HasLens "allocBytes" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+allocBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocBytes")
+
+allocMicros ::
+            forall f s t a b . (Lens.Labels.HasLens "allocMicros" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+allocMicros
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocMicros")
+
+allocationRecords ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "allocationRecords" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+allocationRecords
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocationRecords")
+
+allocatorBytesInUse ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "allocatorBytesInUse" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+allocatorBytesInUse
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "allocatorBytesInUse")
+
+allocatorName ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "allocatorName" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+allocatorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorName")
+
+devStats ::
+         forall f s t a b . (Lens.Labels.HasLens "devStats" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+devStats
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "devStats")
+
+device ::
+       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+device
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
+
+devicePersistentMemorySize ::
+                           forall f s t a b .
+                             (Lens.Labels.HasLens "devicePersistentMemorySize" f s t a b) =>
+                             Lens.Family2.LensLike f s t a b
+devicePersistentMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "devicePersistentMemorySize")
+
+devicePersistentTensorAllocIds ::
+                               forall f s t a b .
+                                 (Lens.Labels.HasLens "devicePersistentTensorAllocIds" f s t a b) =>
+                                 Lens.Family2.LensLike f s t a b
+devicePersistentTensorAllocIds
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "devicePersistentTensorAllocIds")
+
+deviceTempMemorySize ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "deviceTempMemorySize" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+deviceTempMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "deviceTempMemorySize")
+
+liveBytes ::
+          forall f s t a b . (Lens.Labels.HasLens "liveBytes" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+liveBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "liveBytes")
+
+maybe'memoryStats ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'memoryStats" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'memoryStats
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'memoryStats")
+
+maybe'tensorDescription ::
+                        forall f s t a b .
+                          (Lens.Labels.HasLens "maybe'tensorDescription" f s t a b) =>
+                          Lens.Family2.LensLike f s t a b
+maybe'tensorDescription
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'tensorDescription")
+
+memory ::
+       forall f s t a b . (Lens.Labels.HasLens "memory" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+memory
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memory")
+
+memoryStats ::
+            forall f s t a b . (Lens.Labels.HasLens "memoryStats" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+memoryStats
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryStats")
+
+nodeName ::
+         forall f s t a b . (Lens.Labels.HasLens "nodeName" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+nodeName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeName")
+
+nodeStats ::
+          forall f s t a b . (Lens.Labels.HasLens "nodeStats" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+nodeStats
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeStats")
+
+opEndRelMicros ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "opEndRelMicros" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+opEndRelMicros
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "opEndRelMicros")
+
+opStartRelMicros ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "opStartRelMicros" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+opStartRelMicros
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "opStartRelMicros")
+
+output ::
+       forall f s t a b . (Lens.Labels.HasLens "output" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+output
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "output")
+
+peakBytes ::
+          forall f s t a b . (Lens.Labels.HasLens "peakBytes" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+peakBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "peakBytes")
+
+persistentMemorySize ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "persistentMemorySize" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+persistentMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "persistentMemorySize")
+
+persistentTensorAllocIds ::
+                         forall f s t a b .
+                           (Lens.Labels.HasLens "persistentTensorAllocIds" f s t a b) =>
+                           Lens.Family2.LensLike f s t a b
+persistentTensorAllocIds
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "persistentTensorAllocIds")
+
+referencedTensor ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "referencedTensor" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+referencedTensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "referencedTensor")
+
+scheduledMicros ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "scheduledMicros" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+scheduledMicros
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "scheduledMicros")
+
+slot ::
+     forall f s t a b . (Lens.Labels.HasLens "slot" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+slot
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "slot")
+
+tempMemorySize ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "tempMemorySize" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+tempMemorySize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tempMemorySize")
+
+tensorDescription ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "tensorDescription" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+tensorDescription
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorDescription")
+
+threadId ::
+         forall f s t a b . (Lens.Labels.HasLens "threadId" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+threadId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "threadId")
+
+timelineLabel ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "timelineLabel" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+timelineLabel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timelineLabel")
+
+totalBytes ::
+           forall f s t a b . (Lens.Labels.HasLens "totalBytes" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+totalBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "totalBytes")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Summary.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Summary.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Summary.hs
@@ -0,0 +1,1299 @@
+{- This file was auto-generated from tensorflow/core/framework/summary.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Summary where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Tensor
+
+data HistogramProto = HistogramProto{_HistogramProto'min ::
+                                     !Prelude.Double,
+                                     _HistogramProto'max :: !Prelude.Double,
+                                     _HistogramProto'num :: !Prelude.Double,
+                                     _HistogramProto'sum :: !Prelude.Double,
+                                     _HistogramProto'sumSquares :: !Prelude.Double,
+                                     _HistogramProto'bucketLimit :: ![Prelude.Double],
+                                     _HistogramProto'bucket :: ![Prelude.Double]}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "min" f HistogramProto HistogramProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'min
+                 (\ x__ y__ -> x__{_HistogramProto'min = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "max" f HistogramProto HistogramProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'max
+                 (\ x__ y__ -> x__{_HistogramProto'max = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "num" f HistogramProto HistogramProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'num
+                 (\ x__ y__ -> x__{_HistogramProto'num = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "sum" f HistogramProto HistogramProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'sum
+                 (\ x__ y__ -> x__{_HistogramProto'sum = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "sumSquares" f HistogramProto HistogramProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'sumSquares
+                 (\ x__ y__ -> x__{_HistogramProto'sumSquares = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "bucketLimit" f HistogramProto HistogramProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'bucketLimit
+                 (\ x__ y__ -> x__{_HistogramProto'bucketLimit = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "bucket" f HistogramProto HistogramProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _HistogramProto'bucket
+                 (\ x__ y__ -> x__{_HistogramProto'bucket = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default HistogramProto where
+        def
+          = HistogramProto{_HistogramProto'min = Data.ProtoLens.fieldDefault,
+                           _HistogramProto'max = Data.ProtoLens.fieldDefault,
+                           _HistogramProto'num = Data.ProtoLens.fieldDefault,
+                           _HistogramProto'sum = Data.ProtoLens.fieldDefault,
+                           _HistogramProto'sumSquares = Data.ProtoLens.fieldDefault,
+                           _HistogramProto'bucketLimit = [], _HistogramProto'bucket = []}
+
+instance Data.ProtoLens.Message HistogramProto where
+        descriptor
+          = let min__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "min"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional min)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+                max__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "max"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional max)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+                num__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional num)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+                sum__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "sum"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sum)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+                sumSquares__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "sum_squares"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sumSquares)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+                bucketLimit__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bucket_limit"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed bucketLimit)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+                bucket__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bucket"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed bucket)
+                      :: Data.ProtoLens.FieldDescriptor HistogramProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.HistogramProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, min__field_descriptor),
+                    (Data.ProtoLens.Tag 2, max__field_descriptor),
+                    (Data.ProtoLens.Tag 3, num__field_descriptor),
+                    (Data.ProtoLens.Tag 4, sum__field_descriptor),
+                    (Data.ProtoLens.Tag 5, sumSquares__field_descriptor),
+                    (Data.ProtoLens.Tag 6, bucketLimit__field_descriptor),
+                    (Data.ProtoLens.Tag 7, bucket__field_descriptor)])
+                (Data.Map.fromList
+                   [("min", min__field_descriptor), ("max", max__field_descriptor),
+                    ("num", num__field_descriptor), ("sum", sum__field_descriptor),
+                    ("sum_squares", sumSquares__field_descriptor),
+                    ("bucket_limit", bucketLimit__field_descriptor),
+                    ("bucket", bucket__field_descriptor)])
+
+data Summary = Summary{_Summary'value :: ![Summary'Value]}
+             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Summary'Value], b ~ [Summary'Value],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f Summary Summary a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'value
+                 (\ x__ y__ -> x__{_Summary'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Summary where
+        def = Summary{_Summary'value = []}
+
+instance Data.ProtoLens.Message Summary where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Summary'Value)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)
+                      :: Data.ProtoLens.FieldDescriptor Summary
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Summary")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data Summary'Audio = Summary'Audio{_Summary'Audio'sampleRate ::
+                                   !Prelude.Float,
+                                   _Summary'Audio'numChannels :: !Data.Int.Int64,
+                                   _Summary'Audio'lengthFrames :: !Data.Int.Int64,
+                                   _Summary'Audio'encodedAudioString :: !Data.ByteString.ByteString,
+                                   _Summary'Audio'contentType :: !Data.Text.Text}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Float, b ~ Prelude.Float,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "sampleRate" f Summary'Audio Summary'Audio a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Audio'sampleRate
+                 (\ x__ y__ -> x__{_Summary'Audio'sampleRate = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numChannels" f Summary'Audio Summary'Audio a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Audio'numChannels
+                 (\ x__ y__ -> x__{_Summary'Audio'numChannels = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "lengthFrames" f Summary'Audio Summary'Audio a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Audio'lengthFrames
+                 (\ x__ y__ -> x__{_Summary'Audio'lengthFrames = y__}))
+              Prelude.id
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "encodedAudioString" f Summary'Audio
+           Summary'Audio
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Audio'encodedAudioString
+                 (\ x__ y__ -> x__{_Summary'Audio'encodedAudioString = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "contentType" f Summary'Audio Summary'Audio a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Audio'contentType
+                 (\ x__ y__ -> x__{_Summary'Audio'contentType = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Summary'Audio where
+        def
+          = Summary'Audio{_Summary'Audio'sampleRate =
+                            Data.ProtoLens.fieldDefault,
+                          _Summary'Audio'numChannels = Data.ProtoLens.fieldDefault,
+                          _Summary'Audio'lengthFrames = Data.ProtoLens.fieldDefault,
+                          _Summary'Audio'encodedAudioString = Data.ProtoLens.fieldDefault,
+                          _Summary'Audio'contentType = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message Summary'Audio where
+        descriptor
+          = let sampleRate__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "sample_rate"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sampleRate)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
+                numChannels__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_channels"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numChannels)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
+                lengthFrames__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "length_frames"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional lengthFrames)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
+                encodedAudioString__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "encoded_audio_string"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         encodedAudioString)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
+                contentType__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "content_type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional contentType)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Summary.Audio")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, sampleRate__field_descriptor),
+                    (Data.ProtoLens.Tag 2, numChannels__field_descriptor),
+                    (Data.ProtoLens.Tag 3, lengthFrames__field_descriptor),
+                    (Data.ProtoLens.Tag 4, encodedAudioString__field_descriptor),
+                    (Data.ProtoLens.Tag 5, contentType__field_descriptor)])
+                (Data.Map.fromList
+                   [("sample_rate", sampleRate__field_descriptor),
+                    ("num_channels", numChannels__field_descriptor),
+                    ("length_frames", lengthFrames__field_descriptor),
+                    ("encoded_audio_string", encodedAudioString__field_descriptor),
+                    ("content_type", contentType__field_descriptor)])
+
+data Summary'Image = Summary'Image{_Summary'Image'height ::
+                                   !Data.Int.Int32,
+                                   _Summary'Image'width :: !Data.Int.Int32,
+                                   _Summary'Image'colorspace :: !Data.Int.Int32,
+                                   _Summary'Image'encodedImageString :: !Data.ByteString.ByteString}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "height" f Summary'Image Summary'Image a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Image'height
+                 (\ x__ y__ -> x__{_Summary'Image'height = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "width" f Summary'Image Summary'Image a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Image'width
+                 (\ x__ y__ -> x__{_Summary'Image'width = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "colorspace" f Summary'Image Summary'Image a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Image'colorspace
+                 (\ x__ y__ -> x__{_Summary'Image'colorspace = y__}))
+              Prelude.id
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "encodedImageString" f Summary'Image
+           Summary'Image
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Image'encodedImageString
+                 (\ x__ y__ -> x__{_Summary'Image'encodedImageString = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default Summary'Image where
+        def
+          = Summary'Image{_Summary'Image'height =
+                            Data.ProtoLens.fieldDefault,
+                          _Summary'Image'width = Data.ProtoLens.fieldDefault,
+                          _Summary'Image'colorspace = Data.ProtoLens.fieldDefault,
+                          _Summary'Image'encodedImageString = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message Summary'Image where
+        descriptor
+          = let height__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "height"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional height)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Image
+                width__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "width"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional width)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Image
+                colorspace__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "colorspace"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional colorspace)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Image
+                encodedImageString__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "encoded_image_string"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         encodedImageString)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Image
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Summary.Image")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, height__field_descriptor),
+                    (Data.ProtoLens.Tag 2, width__field_descriptor),
+                    (Data.ProtoLens.Tag 3, colorspace__field_descriptor),
+                    (Data.ProtoLens.Tag 4, encodedImageString__field_descriptor)])
+                (Data.Map.fromList
+                   [("height", height__field_descriptor),
+                    ("width", width__field_descriptor),
+                    ("colorspace", colorspace__field_descriptor),
+                    ("encoded_image_string", encodedImageString__field_descriptor)])
+
+data Summary'Value = Summary'Value{_Summary'Value'nodeName ::
+                                   !Data.Text.Text,
+                                   _Summary'Value'tag :: !Data.Text.Text,
+                                   _Summary'Value'metadata :: !(Prelude.Maybe SummaryMetadata),
+                                   _Summary'Value'value :: !(Prelude.Maybe Summary'Value'Value)}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data Summary'Value'Value = Summary'Value'SimpleValue !Prelude.Float
+                         | Summary'Value'ObsoleteOldStyleHistogram !Data.ByteString.ByteString
+                         | Summary'Value'Image !Summary'Image
+                         | Summary'Value'Histo !HistogramProto
+                         | Summary'Value'Audio !Summary'Audio
+                         | Summary'Value'Tensor !Proto.Tensorflow.Core.Framework.Tensor.TensorProto
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nodeName" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'nodeName
+                 (\ x__ y__ -> x__{_Summary'Value'nodeName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tag" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'tag
+                 (\ x__ y__ -> x__{_Summary'Value'tag = y__}))
+              Prelude.id
+
+instance (a ~ SummaryMetadata, b ~ SummaryMetadata,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "metadata" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'metadata
+                 (\ x__ y__ -> x__{_Summary'Value'metadata = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe SummaryMetadata,
+          b ~ Prelude.Maybe SummaryMetadata, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'metadata" f Summary'Value Summary'Value
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'metadata
+                 (\ x__ y__ -> x__{_Summary'Value'metadata = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Summary'Value'Value,
+          b ~ Prelude.Maybe Summary'Value'Value, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Prelude.Float,
+          b ~ Prelude.Maybe Prelude.Float, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'simpleValue" f Summary'Value
+           Summary'Value
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Summary'Value'SimpleValue x__val) -> Prelude.Just
+                                                                             x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Summary'Value'SimpleValue y__))
+
+instance (a ~ Prelude.Float, b ~ Prelude.Float,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "simpleValue" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Summary'Value'SimpleValue x__val) -> Prelude.Just
+                                                                                x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Summary'Value'SimpleValue y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
+          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'obsoleteOldStyleHistogram" f
+           Summary'Value
+           Summary'Value
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just
+                          (Summary'Value'ObsoleteOldStyleHistogram x__val) -> Prelude.Just
+                                                                                x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ ->
+                    Prelude.fmap Summary'Value'ObsoleteOldStyleHistogram y__))
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "obsoleteOldStyleHistogram" f Summary'Value
+           Summary'Value
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just
+                             (Summary'Value'ObsoleteOldStyleHistogram x__val) -> Prelude.Just
+                                                                                   x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ ->
+                       Prelude.fmap Summary'Value'ObsoleteOldStyleHistogram y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Summary'Image,
+          b ~ Prelude.Maybe Summary'Image, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'image" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Summary'Value'Image x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Summary'Value'Image y__))
+
+instance (a ~ Summary'Image, b ~ Summary'Image,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "image" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Summary'Value'Image x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Summary'Value'Image y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe HistogramProto,
+          b ~ Prelude.Maybe HistogramProto, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'histo" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Summary'Value'Histo x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Summary'Value'Histo y__))
+
+instance (a ~ HistogramProto, b ~ HistogramProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "histo" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Summary'Value'Histo x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Summary'Value'Histo y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe Summary'Audio,
+          b ~ Prelude.Maybe Summary'Audio, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'audio" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Summary'Value'Audio x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Summary'Value'Audio y__))
+
+instance (a ~ Summary'Audio, b ~ Summary'Audio,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "audio" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Summary'Value'Audio x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Summary'Value'Audio y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensor" f Summary'Value Summary'Value a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Summary'Value'Tensor x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Summary'Value'Tensor y__))
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f Summary'Value Summary'Value a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Summary'Value'value
+                 (\ x__ y__ -> x__{_Summary'Value'value = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Summary'Value'Tensor x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Summary'Value'Tensor y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance Data.Default.Class.Default Summary'Value where
+        def
+          = Summary'Value{_Summary'Value'nodeName =
+                            Data.ProtoLens.fieldDefault,
+                          _Summary'Value'tag = Data.ProtoLens.fieldDefault,
+                          _Summary'Value'metadata = Prelude.Nothing,
+                          _Summary'Value'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message Summary'Value where
+        descriptor
+          = let nodeName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional nodeName)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                tag__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tag"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tag)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                metadata__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "metadata"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SummaryMetadata)
+                      (Data.ProtoLens.OptionalField maybe'metadata)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                simpleValue__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "simple_value"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.OptionalField maybe'simpleValue)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                obsoleteOldStyleHistogram__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "obsolete_old_style_histogram"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.OptionalField maybe'obsoleteOldStyleHistogram)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                image__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "image"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Summary'Image)
+                      (Data.ProtoLens.OptionalField maybe'image)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                histo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "histo"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor HistogramProto)
+                      (Data.ProtoLens.OptionalField maybe'histo)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                audio__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "audio"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Summary'Audio)
+                      (Data.ProtoLens.OptionalField maybe'audio)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+                tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
+                      (Data.ProtoLens.OptionalField maybe'tensor)
+                      :: Data.ProtoLens.FieldDescriptor Summary'Value
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Summary.Value")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 7, nodeName__field_descriptor),
+                    (Data.ProtoLens.Tag 1, tag__field_descriptor),
+                    (Data.ProtoLens.Tag 9, metadata__field_descriptor),
+                    (Data.ProtoLens.Tag 2, simpleValue__field_descriptor),
+                    (Data.ProtoLens.Tag 3,
+                     obsoleteOldStyleHistogram__field_descriptor),
+                    (Data.ProtoLens.Tag 4, image__field_descriptor),
+                    (Data.ProtoLens.Tag 5, histo__field_descriptor),
+                    (Data.ProtoLens.Tag 6, audio__field_descriptor),
+                    (Data.ProtoLens.Tag 8, tensor__field_descriptor)])
+                (Data.Map.fromList
+                   [("node_name", nodeName__field_descriptor),
+                    ("tag", tag__field_descriptor),
+                    ("metadata", metadata__field_descriptor),
+                    ("simple_value", simpleValue__field_descriptor),
+                    ("obsolete_old_style_histogram",
+                     obsoleteOldStyleHistogram__field_descriptor),
+                    ("image", image__field_descriptor),
+                    ("histo", histo__field_descriptor),
+                    ("audio", audio__field_descriptor),
+                    ("tensor", tensor__field_descriptor)])
+
+data SummaryDescription = SummaryDescription{_SummaryDescription'typeHint
+                                             :: !Data.Text.Text}
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "typeHint" f SummaryDescription
+           SummaryDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryDescription'typeHint
+                 (\ x__ y__ -> x__{_SummaryDescription'typeHint = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SummaryDescription where
+        def
+          = SummaryDescription{_SummaryDescription'typeHint =
+                                 Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message SummaryDescription where
+        descriptor
+          = let typeHint__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type_hint"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeHint)
+                      :: Data.ProtoLens.FieldDescriptor SummaryDescription
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SummaryDescription")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, typeHint__field_descriptor)])
+                (Data.Map.fromList [("type_hint", typeHint__field_descriptor)])
+
+data SummaryMetadata = SummaryMetadata{_SummaryMetadata'pluginData
+                                       :: !(Prelude.Maybe SummaryMetadata'PluginData),
+                                       _SummaryMetadata'displayName :: !Data.Text.Text,
+                                       _SummaryMetadata'summaryDescription :: !Data.Text.Text}
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ SummaryMetadata'PluginData,
+          b ~ SummaryMetadata'PluginData, Prelude.Functor f) =>
+         Lens.Labels.HasLens "pluginData" f SummaryMetadata SummaryMetadata
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryMetadata'pluginData
+                 (\ x__ y__ -> x__{_SummaryMetadata'pluginData = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe SummaryMetadata'PluginData,
+          b ~ Prelude.Maybe SummaryMetadata'PluginData, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'pluginData" f SummaryMetadata
+           SummaryMetadata
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryMetadata'pluginData
+                 (\ x__ y__ -> x__{_SummaryMetadata'pluginData = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "displayName" f SummaryMetadata SummaryMetadata
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryMetadata'displayName
+                 (\ x__ y__ -> x__{_SummaryMetadata'displayName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "summaryDescription" f SummaryMetadata
+           SummaryMetadata
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryMetadata'summaryDescription
+                 (\ x__ y__ -> x__{_SummaryMetadata'summaryDescription = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SummaryMetadata where
+        def
+          = SummaryMetadata{_SummaryMetadata'pluginData = Prelude.Nothing,
+                            _SummaryMetadata'displayName = Data.ProtoLens.fieldDefault,
+                            _SummaryMetadata'summaryDescription = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message SummaryMetadata where
+        descriptor
+          = let pluginData__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "plugin_data"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SummaryMetadata'PluginData)
+                      (Data.ProtoLens.OptionalField maybe'pluginData)
+                      :: Data.ProtoLens.FieldDescriptor SummaryMetadata
+                displayName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "display_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional displayName)
+                      :: Data.ProtoLens.FieldDescriptor SummaryMetadata
+                summaryDescription__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "summary_description"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         summaryDescription)
+                      :: Data.ProtoLens.FieldDescriptor SummaryMetadata
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SummaryMetadata")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, pluginData__field_descriptor),
+                    (Data.ProtoLens.Tag 2, displayName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, summaryDescription__field_descriptor)])
+                (Data.Map.fromList
+                   [("plugin_data", pluginData__field_descriptor),
+                    ("display_name", displayName__field_descriptor),
+                    ("summary_description", summaryDescription__field_descriptor)])
+
+data SummaryMetadata'PluginData = SummaryMetadata'PluginData{_SummaryMetadata'PluginData'pluginName
+                                                             :: !Data.Text.Text,
+                                                             _SummaryMetadata'PluginData'content ::
+                                                             !Data.ByteString.ByteString}
+                                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pluginName" f SummaryMetadata'PluginData
+           SummaryMetadata'PluginData
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryMetadata'PluginData'pluginName
+                 (\ x__ y__ -> x__{_SummaryMetadata'PluginData'pluginName = y__}))
+              Prelude.id
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "content" f SummaryMetadata'PluginData
+           SummaryMetadata'PluginData
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SummaryMetadata'PluginData'content
+                 (\ x__ y__ -> x__{_SummaryMetadata'PluginData'content = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SummaryMetadata'PluginData
+         where
+        def
+          = SummaryMetadata'PluginData{_SummaryMetadata'PluginData'pluginName
+                                         = Data.ProtoLens.fieldDefault,
+                                       _SummaryMetadata'PluginData'content =
+                                         Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message SummaryMetadata'PluginData where
+        descriptor
+          = let pluginName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "plugin_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional pluginName)
+                      :: Data.ProtoLens.FieldDescriptor SummaryMetadata'PluginData
+                content__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "content"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional content)
+                      :: Data.ProtoLens.FieldDescriptor SummaryMetadata'PluginData
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SummaryMetadata.PluginData")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, pluginName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, content__field_descriptor)])
+                (Data.Map.fromList
+                   [("plugin_name", pluginName__field_descriptor),
+                    ("content", content__field_descriptor)])
+
+audio ::
+      forall f s t a b . (Lens.Labels.HasLens "audio" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+audio
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "audio")
+
+bucket ::
+       forall f s t a b . (Lens.Labels.HasLens "bucket" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+bucket
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bucket")
+
+bucketLimit ::
+            forall f s t a b . (Lens.Labels.HasLens "bucketLimit" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+bucketLimit
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bucketLimit")
+
+colorspace ::
+           forall f s t a b . (Lens.Labels.HasLens "colorspace" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+colorspace
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "colorspace")
+
+content ::
+        forall f s t a b . (Lens.Labels.HasLens "content" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+content
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "content")
+
+contentType ::
+            forall f s t a b . (Lens.Labels.HasLens "contentType" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+contentType
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "contentType")
+
+displayName ::
+            forall f s t a b . (Lens.Labels.HasLens "displayName" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+displayName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "displayName")
+
+encodedAudioString ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "encodedAudioString" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+encodedAudioString
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "encodedAudioString")
+
+encodedImageString ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "encodedImageString" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+encodedImageString
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "encodedImageString")
+
+height ::
+       forall f s t a b . (Lens.Labels.HasLens "height" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+height
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "height")
+
+histo ::
+      forall f s t a b . (Lens.Labels.HasLens "histo" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+histo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "histo")
+
+image ::
+      forall f s t a b . (Lens.Labels.HasLens "image" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+image
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "image")
+
+lengthFrames ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "lengthFrames" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+lengthFrames
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "lengthFrames")
+
+max ::
+    forall f s t a b . (Lens.Labels.HasLens "max" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+max
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "max")
+
+maybe'audio ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'audio" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'audio
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'audio")
+
+maybe'histo ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'histo" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'histo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'histo")
+
+maybe'image ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'image" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'image
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'image")
+
+maybe'metadata ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'metadata" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'metadata
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'metadata")
+
+maybe'obsoleteOldStyleHistogram ::
+                                forall f s t a b .
+                                  (Lens.Labels.HasLens "maybe'obsoleteOldStyleHistogram" f s t a
+                                     b) =>
+                                  Lens.Family2.LensLike f s t a b
+maybe'obsoleteOldStyleHistogram
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'obsoleteOldStyleHistogram")
+
+maybe'pluginData ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'pluginData" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'pluginData
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'pluginData")
+
+maybe'simpleValue ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'simpleValue" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'simpleValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'simpleValue")
+
+maybe'tensor ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "maybe'tensor" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+maybe'tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensor")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+metadata ::
+         forall f s t a b . (Lens.Labels.HasLens "metadata" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+metadata
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metadata")
+
+min ::
+    forall f s t a b . (Lens.Labels.HasLens "min" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+min
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "min")
+
+nodeName ::
+         forall f s t a b . (Lens.Labels.HasLens "nodeName" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+nodeName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeName")
+
+num ::
+    forall f s t a b . (Lens.Labels.HasLens "num" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+num
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "num")
+
+numChannels ::
+            forall f s t a b . (Lens.Labels.HasLens "numChannels" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+numChannels
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numChannels")
+
+obsoleteOldStyleHistogram ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "obsoleteOldStyleHistogram" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+obsoleteOldStyleHistogram
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "obsoleteOldStyleHistogram")
+
+pluginData ::
+           forall f s t a b . (Lens.Labels.HasLens "pluginData" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+pluginData
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pluginData")
+
+pluginName ::
+           forall f s t a b . (Lens.Labels.HasLens "pluginName" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+pluginName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pluginName")
+
+sampleRate ::
+           forall f s t a b . (Lens.Labels.HasLens "sampleRate" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+sampleRate
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sampleRate")
+
+simpleValue ::
+            forall f s t a b . (Lens.Labels.HasLens "simpleValue" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+simpleValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "simpleValue")
+
+sum ::
+    forall f s t a b . (Lens.Labels.HasLens "sum" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+sum
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sum")
+
+sumSquares ::
+           forall f s t a b . (Lens.Labels.HasLens "sumSquares" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+sumSquares
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sumSquares")
+
+summaryDescription ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "summaryDescription" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+summaryDescription
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "summaryDescription")
+
+tag ::
+    forall f s t a b . (Lens.Labels.HasLens "tag" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+tag
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tag")
+
+tensor ::
+       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
+
+typeHint ::
+         forall f s t a b . (Lens.Labels.HasLens "typeHint" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+typeHint
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeHint")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
+
+width ::
+      forall f s t a b . (Lens.Labels.HasLens "width" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+width
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "width")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Tensor.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Tensor.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Tensor.hs
@@ -0,0 +1,644 @@
+{- This file was auto-generated from tensorflow/core/framework/tensor.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Tensor where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.ResourceHandle
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.Types
+
+data TensorProto = TensorProto{_TensorProto'dtype ::
+                               !Proto.Tensorflow.Core.Framework.Types.DataType,
+                               _TensorProto'tensorShape ::
+                               !(Prelude.Maybe
+                                   Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                               _TensorProto'versionNumber :: !Data.Int.Int32,
+                               _TensorProto'tensorContent :: !Data.ByteString.ByteString,
+                               _TensorProto'halfVal :: ![Data.Int.Int32],
+                               _TensorProto'floatVal :: ![Prelude.Float],
+                               _TensorProto'doubleVal :: ![Prelude.Double],
+                               _TensorProto'intVal :: ![Data.Int.Int32],
+                               _TensorProto'stringVal :: ![Data.ByteString.ByteString],
+                               _TensorProto'scomplexVal :: ![Prelude.Float],
+                               _TensorProto'int64Val :: ![Data.Int.Int64],
+                               _TensorProto'boolVal :: ![Prelude.Bool],
+                               _TensorProto'dcomplexVal :: ![Prelude.Double],
+                               _TensorProto'resourceHandleVal ::
+                               ![Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandleProto],
+                               _TensorProto'variantVal :: ![VariantTensorDataProto],
+                               _TensorProto'uint32Val :: ![Data.Word.Word32],
+                               _TensorProto'uint64Val :: ![Data.Word.Word64]}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'dtype
+                 (\ x__ y__ -> x__{_TensorProto'dtype = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorShape" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'tensorShape
+                 (\ x__ y__ -> x__{_TensorProto'tensorShape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensorShape" f TensorProto TensorProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'tensorShape
+                 (\ x__ y__ -> x__{_TensorProto'tensorShape = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "versionNumber" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'versionNumber
+                 (\ x__ y__ -> x__{_TensorProto'versionNumber = y__}))
+              Prelude.id
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorContent" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'tensorContent
+                 (\ x__ y__ -> x__{_TensorProto'tensorContent = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "halfVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'halfVal
+                 (\ x__ y__ -> x__{_TensorProto'halfVal = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "floatVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'floatVal
+                 (\ x__ y__ -> x__{_TensorProto'floatVal = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "doubleVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'doubleVal
+                 (\ x__ y__ -> x__{_TensorProto'doubleVal = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "intVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'intVal
+                 (\ x__ y__ -> x__{_TensorProto'intVal = y__}))
+              Prelude.id
+
+instance (a ~ [Data.ByteString.ByteString],
+          b ~ [Data.ByteString.ByteString], Prelude.Functor f) =>
+         Lens.Labels.HasLens "stringVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'stringVal
+                 (\ x__ y__ -> x__{_TensorProto'stringVal = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "scomplexVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'scomplexVal
+                 (\ x__ y__ -> x__{_TensorProto'scomplexVal = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "int64Val" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'int64Val
+                 (\ x__ y__ -> x__{_TensorProto'int64Val = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Bool], b ~ [Prelude.Bool],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "boolVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'boolVal
+                 (\ x__ y__ -> x__{_TensorProto'boolVal = y__}))
+              Prelude.id
+
+instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dcomplexVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'dcomplexVal
+                 (\ x__ y__ -> x__{_TensorProto'dcomplexVal = y__}))
+              Prelude.id
+
+instance (a ~
+            [Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandleProto],
+          b ~
+            [Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandleProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "resourceHandleVal" f TensorProto TensorProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'resourceHandleVal
+                 (\ x__ y__ -> x__{_TensorProto'resourceHandleVal = y__}))
+              Prelude.id
+
+instance (a ~ [VariantTensorDataProto],
+          b ~ [VariantTensorDataProto], Prelude.Functor f) =>
+         Lens.Labels.HasLens "variantVal" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'variantVal
+                 (\ x__ y__ -> x__{_TensorProto'variantVal = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Word.Word32], b ~ [Data.Word.Word32],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "uint32Val" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'uint32Val
+                 (\ x__ y__ -> x__{_TensorProto'uint32Val = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Word.Word64], b ~ [Data.Word.Word64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "uint64Val" f TensorProto TensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorProto'uint64Val
+                 (\ x__ y__ -> x__{_TensorProto'uint64Val = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorProto where
+        def
+          = TensorProto{_TensorProto'dtype = Data.Default.Class.def,
+                        _TensorProto'tensorShape = Prelude.Nothing,
+                        _TensorProto'versionNumber = Data.ProtoLens.fieldDefault,
+                        _TensorProto'tensorContent = Data.ProtoLens.fieldDefault,
+                        _TensorProto'halfVal = [], _TensorProto'floatVal = [],
+                        _TensorProto'doubleVal = [], _TensorProto'intVal = [],
+                        _TensorProto'stringVal = [], _TensorProto'scomplexVal = [],
+                        _TensorProto'int64Val = [], _TensorProto'boolVal = [],
+                        _TensorProto'dcomplexVal = [], _TensorProto'resourceHandleVal = [],
+                        _TensorProto'variantVal = [], _TensorProto'uint32Val = [],
+                        _TensorProto'uint64Val = []}
+
+instance Data.ProtoLens.Message TensorProto where
+        descriptor
+          = let dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                tensorShape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor_shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'tensorShape)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                versionNumber__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "version_number"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional versionNumber)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                tensorContent__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor_content"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tensorContent)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                halfVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "half_val"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed halfVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                floatVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "float_val"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed floatVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                doubleVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "double_val"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed doubleVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                intVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "int_val"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed intVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                stringVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "string_val"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked stringVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                scomplexVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "scomplex_val"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed scomplexVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                int64Val__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "int64_val"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed int64Val)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                boolVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bool_val"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed boolVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                dcomplexVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dcomplex_val"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed dcomplexVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                resourceHandleVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "resource_handle_val"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandleProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         resourceHandleVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                variantVal__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "variant_val"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor VariantTensorDataProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked variantVal)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                uint32Val__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "uint32_val"
+                      (Data.ProtoLens.UInt32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word32)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed uint32Val)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+                uint64Val__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "uint64_val"
+                      (Data.ProtoLens.UInt64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed uint64Val)
+                      :: Data.ProtoLens.FieldDescriptor TensorProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
+                    (Data.ProtoLens.Tag 2, tensorShape__field_descriptor),
+                    (Data.ProtoLens.Tag 3, versionNumber__field_descriptor),
+                    (Data.ProtoLens.Tag 4, tensorContent__field_descriptor),
+                    (Data.ProtoLens.Tag 13, halfVal__field_descriptor),
+                    (Data.ProtoLens.Tag 5, floatVal__field_descriptor),
+                    (Data.ProtoLens.Tag 6, doubleVal__field_descriptor),
+                    (Data.ProtoLens.Tag 7, intVal__field_descriptor),
+                    (Data.ProtoLens.Tag 8, stringVal__field_descriptor),
+                    (Data.ProtoLens.Tag 9, scomplexVal__field_descriptor),
+                    (Data.ProtoLens.Tag 10, int64Val__field_descriptor),
+                    (Data.ProtoLens.Tag 11, boolVal__field_descriptor),
+                    (Data.ProtoLens.Tag 12, dcomplexVal__field_descriptor),
+                    (Data.ProtoLens.Tag 14, resourceHandleVal__field_descriptor),
+                    (Data.ProtoLens.Tag 15, variantVal__field_descriptor),
+                    (Data.ProtoLens.Tag 16, uint32Val__field_descriptor),
+                    (Data.ProtoLens.Tag 17, uint64Val__field_descriptor)])
+                (Data.Map.fromList
+                   [("dtype", dtype__field_descriptor),
+                    ("tensor_shape", tensorShape__field_descriptor),
+                    ("version_number", versionNumber__field_descriptor),
+                    ("tensor_content", tensorContent__field_descriptor),
+                    ("half_val", halfVal__field_descriptor),
+                    ("float_val", floatVal__field_descriptor),
+                    ("double_val", doubleVal__field_descriptor),
+                    ("int_val", intVal__field_descriptor),
+                    ("string_val", stringVal__field_descriptor),
+                    ("scomplex_val", scomplexVal__field_descriptor),
+                    ("int64_val", int64Val__field_descriptor),
+                    ("bool_val", boolVal__field_descriptor),
+                    ("dcomplex_val", dcomplexVal__field_descriptor),
+                    ("resource_handle_val", resourceHandleVal__field_descriptor),
+                    ("variant_val", variantVal__field_descriptor),
+                    ("uint32_val", uint32Val__field_descriptor),
+                    ("uint64_val", uint64Val__field_descriptor)])
+
+data VariantTensorDataProto = VariantTensorDataProto{_VariantTensorDataProto'typeName
+                                                     :: !Data.Text.Text,
+                                                     _VariantTensorDataProto'metadata ::
+                                                     !Data.ByteString.ByteString,
+                                                     _VariantTensorDataProto'tensors ::
+                                                     ![TensorProto]}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "typeName" f VariantTensorDataProto
+           VariantTensorDataProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariantTensorDataProto'typeName
+                 (\ x__ y__ -> x__{_VariantTensorDataProto'typeName = y__}))
+              Prelude.id
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "metadata" f VariantTensorDataProto
+           VariantTensorDataProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariantTensorDataProto'metadata
+                 (\ x__ y__ -> x__{_VariantTensorDataProto'metadata = y__}))
+              Prelude.id
+
+instance (a ~ [TensorProto], b ~ [TensorProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensors" f VariantTensorDataProto
+           VariantTensorDataProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariantTensorDataProto'tensors
+                 (\ x__ y__ -> x__{_VariantTensorDataProto'tensors = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default VariantTensorDataProto where
+        def
+          = VariantTensorDataProto{_VariantTensorDataProto'typeName =
+                                     Data.ProtoLens.fieldDefault,
+                                   _VariantTensorDataProto'metadata = Data.ProtoLens.fieldDefault,
+                                   _VariantTensorDataProto'tensors = []}
+
+instance Data.ProtoLens.Message VariantTensorDataProto where
+        descriptor
+          = let typeName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeName)
+                      :: Data.ProtoLens.FieldDescriptor VariantTensorDataProto
+                metadata__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "metadata"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional metadata)
+                      :: Data.ProtoLens.FieldDescriptor VariantTensorDataProto
+                tensors__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensors"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked tensors)
+                      :: Data.ProtoLens.FieldDescriptor VariantTensorDataProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.VariantTensorDataProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, typeName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, metadata__field_descriptor),
+                    (Data.ProtoLens.Tag 3, tensors__field_descriptor)])
+                (Data.Map.fromList
+                   [("type_name", typeName__field_descriptor),
+                    ("metadata", metadata__field_descriptor),
+                    ("tensors", tensors__field_descriptor)])
+
+boolVal ::
+        forall f s t a b . (Lens.Labels.HasLens "boolVal" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+boolVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "boolVal")
+
+dcomplexVal ::
+            forall f s t a b . (Lens.Labels.HasLens "dcomplexVal" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+dcomplexVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dcomplexVal")
+
+doubleVal ::
+          forall f s t a b . (Lens.Labels.HasLens "doubleVal" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+doubleVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doubleVal")
+
+dtype ::
+      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+dtype
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
+
+floatVal ::
+         forall f s t a b . (Lens.Labels.HasLens "floatVal" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+floatVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "floatVal")
+
+halfVal ::
+        forall f s t a b . (Lens.Labels.HasLens "halfVal" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+halfVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "halfVal")
+
+int64Val ::
+         forall f s t a b . (Lens.Labels.HasLens "int64Val" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+int64Val
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "int64Val")
+
+intVal ::
+       forall f s t a b . (Lens.Labels.HasLens "intVal" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+intVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "intVal")
+
+maybe'tensorShape ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'tensorShape" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'tensorShape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensorShape")
+
+metadata ::
+         forall f s t a b . (Lens.Labels.HasLens "metadata" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+metadata
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metadata")
+
+resourceHandleVal ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "resourceHandleVal" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+resourceHandleVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "resourceHandleVal")
+
+scomplexVal ::
+            forall f s t a b . (Lens.Labels.HasLens "scomplexVal" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+scomplexVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "scomplexVal")
+
+stringVal ::
+          forall f s t a b . (Lens.Labels.HasLens "stringVal" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+stringVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stringVal")
+
+tensorContent ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "tensorContent" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+tensorContent
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorContent")
+
+tensorShape ::
+            forall f s t a b . (Lens.Labels.HasLens "tensorShape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+tensorShape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorShape")
+
+tensors ::
+        forall f s t a b . (Lens.Labels.HasLens "tensors" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+tensors
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensors")
+
+typeName ::
+         forall f s t a b . (Lens.Labels.HasLens "typeName" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+typeName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeName")
+
+uint32Val ::
+          forall f s t a b . (Lens.Labels.HasLens "uint32Val" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+uint32Val
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "uint32Val")
+
+uint64Val ::
+          forall f s t a b . (Lens.Labels.HasLens "uint64Val" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+uint64Val
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "uint64Val")
+
+variantVal ::
+           forall f s t a b . (Lens.Labels.HasLens "variantVal" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+variantVal
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "variantVal")
+
+versionNumber ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "versionNumber" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+versionNumber
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "versionNumber")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorDescription.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorDescription.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorDescription.hs
@@ -0,0 +1,202 @@
+{- This file was auto-generated from tensorflow/core/framework/tensor_description.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.TensorDescription where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified
+       Proto.Tensorflow.Core.Framework.AllocationDescription
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.Types
+
+data TensorDescription = TensorDescription{_TensorDescription'dtype
+                                           :: !Proto.Tensorflow.Core.Framework.Types.DataType,
+                                           _TensorDescription'shape ::
+                                           !(Prelude.Maybe
+                                               Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                                           _TensorDescription'allocationDescription ::
+                                           !(Prelude.Maybe
+                                               Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription)}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f TensorDescription TensorDescription a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorDescription'dtype
+                 (\ x__ y__ -> x__{_TensorDescription'dtype = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f TensorDescription TensorDescription a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorDescription'shape
+                 (\ x__ y__ -> x__{_TensorDescription'shape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'shape" f TensorDescription
+           TensorDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorDescription'shape
+                 (\ x__ y__ -> x__{_TensorDescription'shape = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
+          b ~
+            Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocationDescription" f TensorDescription
+           TensorDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _TensorDescription'allocationDescription
+                 (\ x__ y__ -> x__{_TensorDescription'allocationDescription = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'allocationDescription" f
+           TensorDescription
+           TensorDescription
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _TensorDescription'allocationDescription
+                 (\ x__ y__ -> x__{_TensorDescription'allocationDescription = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorDescription where
+        def
+          = TensorDescription{_TensorDescription'dtype =
+                                Data.Default.Class.def,
+                              _TensorDescription'shape = Prelude.Nothing,
+                              _TensorDescription'allocationDescription = Prelude.Nothing}
+
+instance Data.ProtoLens.Message TensorDescription where
+        descriptor
+          = let dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor TensorDescription
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'shape)
+                      :: Data.ProtoLens.FieldDescriptor TensorDescription
+                allocationDescription__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocation_description"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription)
+                      (Data.ProtoLens.OptionalField maybe'allocationDescription)
+                      :: Data.ProtoLens.FieldDescriptor TensorDescription
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorDescription")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
+                    (Data.ProtoLens.Tag 2, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 4, allocationDescription__field_descriptor)])
+                (Data.Map.fromList
+                   [("dtype", dtype__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("allocation_description",
+                     allocationDescription__field_descriptor)])
+
+allocationDescription ::
+                      forall f s t a b .
+                        (Lens.Labels.HasLens "allocationDescription" f s t a b) =>
+                        Lens.Family2.LensLike f s t a b
+allocationDescription
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "allocationDescription")
+
+dtype ::
+      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+dtype
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
+
+maybe'allocationDescription ::
+                            forall f s t a b .
+                              (Lens.Labels.HasLens "maybe'allocationDescription" f s t a b) =>
+                              Lens.Family2.LensLike f s t a b
+maybe'allocationDescription
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'allocationDescription")
+
+maybe'shape ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
+
+shape ::
+      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorShape.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorShape.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorShape.hs
@@ -0,0 +1,171 @@
+{- This file was auto-generated from tensorflow/core/framework/tensor_shape.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.TensorShape where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data TensorShapeProto = TensorShapeProto{_TensorShapeProto'dim ::
+                                         ![TensorShapeProto'Dim],
+                                         _TensorShapeProto'unknownRank :: !Prelude.Bool}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [TensorShapeProto'Dim], b ~ [TensorShapeProto'Dim],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dim" f TensorShapeProto TensorShapeProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorShapeProto'dim
+                 (\ x__ y__ -> x__{_TensorShapeProto'dim = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "unknownRank" f TensorShapeProto
+           TensorShapeProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorShapeProto'unknownRank
+                 (\ x__ y__ -> x__{_TensorShapeProto'unknownRank = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorShapeProto where
+        def
+          = TensorShapeProto{_TensorShapeProto'dim = [],
+                             _TensorShapeProto'unknownRank = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message TensorShapeProto where
+        descriptor
+          = let dim__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dim"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorShapeProto'Dim)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked dim)
+                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto
+                unknownRank__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "unknown_rank"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional unknownRank)
+                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorShapeProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 2, dim__field_descriptor),
+                    (Data.ProtoLens.Tag 3, unknownRank__field_descriptor)])
+                (Data.Map.fromList
+                   [("dim", dim__field_descriptor),
+                    ("unknown_rank", unknownRank__field_descriptor)])
+
+data TensorShapeProto'Dim = TensorShapeProto'Dim{_TensorShapeProto'Dim'size
+                                                 :: !Data.Int.Int64,
+                                                 _TensorShapeProto'Dim'name :: !Data.Text.Text}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "size" f TensorShapeProto'Dim
+           TensorShapeProto'Dim
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorShapeProto'Dim'size
+                 (\ x__ y__ -> x__{_TensorShapeProto'Dim'size = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f TensorShapeProto'Dim
+           TensorShapeProto'Dim
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorShapeProto'Dim'name
+                 (\ x__ y__ -> x__{_TensorShapeProto'Dim'name = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorShapeProto'Dim where
+        def
+          = TensorShapeProto'Dim{_TensorShapeProto'Dim'size =
+                                   Data.ProtoLens.fieldDefault,
+                                 _TensorShapeProto'Dim'name = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message TensorShapeProto'Dim where
+        descriptor
+          = let size__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional size)
+                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto'Dim
+                name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto'Dim
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorShapeProto.Dim")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, size__field_descriptor),
+                    (Data.ProtoLens.Tag 2, name__field_descriptor)])
+                (Data.Map.fromList
+                   [("size", size__field_descriptor),
+                    ("name", name__field_descriptor)])
+
+dim ::
+    forall f s t a b . (Lens.Labels.HasLens "dim" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+dim
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dim")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+size ::
+     forall f s t a b . (Lens.Labels.HasLens "size" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+size
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "size")
+
+unknownRank ::
+            forall f s t a b . (Lens.Labels.HasLens "unknownRank" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+unknownRank
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "unknownRank")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorSlice.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorSlice.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/TensorSlice.hs
@@ -0,0 +1,203 @@
+{- This file was auto-generated from tensorflow/core/framework/tensor_slice.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.TensorSlice where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data TensorSliceProto = TensorSliceProto{_TensorSliceProto'extent
+                                         :: ![TensorSliceProto'Extent]}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [TensorSliceProto'Extent],
+          b ~ [TensorSliceProto'Extent], Prelude.Functor f) =>
+         Lens.Labels.HasLens "extent" f TensorSliceProto TensorSliceProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorSliceProto'extent
+                 (\ x__ y__ -> x__{_TensorSliceProto'extent = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorSliceProto where
+        def = TensorSliceProto{_TensorSliceProto'extent = []}
+
+instance Data.ProtoLens.Message TensorSliceProto where
+        descriptor
+          = let extent__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "extent"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorSliceProto'Extent)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked extent)
+                      :: Data.ProtoLens.FieldDescriptor TensorSliceProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorSliceProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, extent__field_descriptor)])
+                (Data.Map.fromList [("extent", extent__field_descriptor)])
+
+data TensorSliceProto'Extent = TensorSliceProto'Extent{_TensorSliceProto'Extent'start
+                                                       :: !Data.Int.Int64,
+                                                       _TensorSliceProto'Extent'hasLength ::
+                                                       !(Prelude.Maybe
+                                                           TensorSliceProto'Extent'HasLength)}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data TensorSliceProto'Extent'HasLength = TensorSliceProto'Extent'Length !Data.Int.Int64
+                                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "start" f TensorSliceProto'Extent
+           TensorSliceProto'Extent
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorSliceProto'Extent'start
+                 (\ x__ y__ -> x__{_TensorSliceProto'Extent'start = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe TensorSliceProto'Extent'HasLength,
+          b ~ Prelude.Maybe TensorSliceProto'Extent'HasLength,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'hasLength" f TensorSliceProto'Extent
+           TensorSliceProto'Extent
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorSliceProto'Extent'hasLength
+                 (\ x__ y__ -> x__{_TensorSliceProto'Extent'hasLength = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Data.Int.Int64,
+          b ~ Prelude.Maybe Data.Int.Int64, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'length" f TensorSliceProto'Extent
+           TensorSliceProto'Extent
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorSliceProto'Extent'hasLength
+                 (\ x__ y__ -> x__{_TensorSliceProto'Extent'hasLength = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just
+                          (TensorSliceProto'Extent'Length x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap TensorSliceProto'Extent'Length y__))
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "length" f TensorSliceProto'Extent
+           TensorSliceProto'Extent
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorSliceProto'Extent'hasLength
+                 (\ x__ y__ -> x__{_TensorSliceProto'Extent'hasLength = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just
+                             (TensorSliceProto'Extent'Length x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap TensorSliceProto'Extent'Length y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance Data.Default.Class.Default TensorSliceProto'Extent where
+        def
+          = TensorSliceProto'Extent{_TensorSliceProto'Extent'start =
+                                      Data.ProtoLens.fieldDefault,
+                                    _TensorSliceProto'Extent'hasLength = Prelude.Nothing}
+
+instance Data.ProtoLens.Message TensorSliceProto'Extent where
+        descriptor
+          = let start__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "start"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional start)
+                      :: Data.ProtoLens.FieldDescriptor TensorSliceProto'Extent
+                length__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "length"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.OptionalField maybe'length)
+                      :: Data.ProtoLens.FieldDescriptor TensorSliceProto'Extent
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorSliceProto.Extent")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, start__field_descriptor),
+                    (Data.ProtoLens.Tag 2, length__field_descriptor)])
+                (Data.Map.fromList
+                   [("start", start__field_descriptor),
+                    ("length", length__field_descriptor)])
+
+extent ::
+       forall f s t a b . (Lens.Labels.HasLens "extent" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+extent
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extent")
+
+length ::
+       forall f s t a b . (Lens.Labels.HasLens "length" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+length
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "length")
+
+maybe'hasLength ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'hasLength" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'hasLength
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'hasLength")
+
+maybe'length ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "maybe'length" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+maybe'length
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'length")
+
+start ::
+      forall f s t a b . (Lens.Labels.HasLens "start" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+start
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "start")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Types.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Types.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Types.hs
@@ -0,0 +1,388 @@
+{- This file was auto-generated from tensorflow/core/framework/types.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Types where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data DataType = DT_INVALID
+              | DT_FLOAT
+              | DT_DOUBLE
+              | DT_INT32
+              | DT_UINT8
+              | DT_INT16
+              | DT_INT8
+              | DT_STRING
+              | DT_COMPLEX64
+              | DT_INT64
+              | DT_BOOL
+              | DT_QINT8
+              | DT_QUINT8
+              | DT_QINT32
+              | DT_BFLOAT16
+              | DT_QINT16
+              | DT_QUINT16
+              | DT_UINT16
+              | DT_COMPLEX128
+              | DT_HALF
+              | DT_RESOURCE
+              | DT_VARIANT
+              | DT_UINT32
+              | DT_UINT64
+              | DT_FLOAT_REF
+              | DT_DOUBLE_REF
+              | DT_INT32_REF
+              | DT_UINT8_REF
+              | DT_INT16_REF
+              | DT_INT8_REF
+              | DT_STRING_REF
+              | DT_COMPLEX64_REF
+              | DT_INT64_REF
+              | DT_BOOL_REF
+              | DT_QINT8_REF
+              | DT_QUINT8_REF
+              | DT_QINT32_REF
+              | DT_BFLOAT16_REF
+              | DT_QINT16_REF
+              | DT_QUINT16_REF
+              | DT_UINT16_REF
+              | DT_COMPLEX128_REF
+              | DT_HALF_REF
+              | DT_RESOURCE_REF
+              | DT_VARIANT_REF
+              | DT_UINT32_REF
+              | DT_UINT64_REF
+              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default DataType where
+        def = DT_INVALID
+
+instance Data.ProtoLens.FieldDefault DataType where
+        fieldDefault = DT_INVALID
+
+instance Data.ProtoLens.MessageEnum DataType where
+        maybeToEnum 0 = Prelude.Just DT_INVALID
+        maybeToEnum 1 = Prelude.Just DT_FLOAT
+        maybeToEnum 2 = Prelude.Just DT_DOUBLE
+        maybeToEnum 3 = Prelude.Just DT_INT32
+        maybeToEnum 4 = Prelude.Just DT_UINT8
+        maybeToEnum 5 = Prelude.Just DT_INT16
+        maybeToEnum 6 = Prelude.Just DT_INT8
+        maybeToEnum 7 = Prelude.Just DT_STRING
+        maybeToEnum 8 = Prelude.Just DT_COMPLEX64
+        maybeToEnum 9 = Prelude.Just DT_INT64
+        maybeToEnum 10 = Prelude.Just DT_BOOL
+        maybeToEnum 11 = Prelude.Just DT_QINT8
+        maybeToEnum 12 = Prelude.Just DT_QUINT8
+        maybeToEnum 13 = Prelude.Just DT_QINT32
+        maybeToEnum 14 = Prelude.Just DT_BFLOAT16
+        maybeToEnum 15 = Prelude.Just DT_QINT16
+        maybeToEnum 16 = Prelude.Just DT_QUINT16
+        maybeToEnum 17 = Prelude.Just DT_UINT16
+        maybeToEnum 18 = Prelude.Just DT_COMPLEX128
+        maybeToEnum 19 = Prelude.Just DT_HALF
+        maybeToEnum 20 = Prelude.Just DT_RESOURCE
+        maybeToEnum 21 = Prelude.Just DT_VARIANT
+        maybeToEnum 22 = Prelude.Just DT_UINT32
+        maybeToEnum 23 = Prelude.Just DT_UINT64
+        maybeToEnum 101 = Prelude.Just DT_FLOAT_REF
+        maybeToEnum 102 = Prelude.Just DT_DOUBLE_REF
+        maybeToEnum 103 = Prelude.Just DT_INT32_REF
+        maybeToEnum 104 = Prelude.Just DT_UINT8_REF
+        maybeToEnum 105 = Prelude.Just DT_INT16_REF
+        maybeToEnum 106 = Prelude.Just DT_INT8_REF
+        maybeToEnum 107 = Prelude.Just DT_STRING_REF
+        maybeToEnum 108 = Prelude.Just DT_COMPLEX64_REF
+        maybeToEnum 109 = Prelude.Just DT_INT64_REF
+        maybeToEnum 110 = Prelude.Just DT_BOOL_REF
+        maybeToEnum 111 = Prelude.Just DT_QINT8_REF
+        maybeToEnum 112 = Prelude.Just DT_QUINT8_REF
+        maybeToEnum 113 = Prelude.Just DT_QINT32_REF
+        maybeToEnum 114 = Prelude.Just DT_BFLOAT16_REF
+        maybeToEnum 115 = Prelude.Just DT_QINT16_REF
+        maybeToEnum 116 = Prelude.Just DT_QUINT16_REF
+        maybeToEnum 117 = Prelude.Just DT_UINT16_REF
+        maybeToEnum 118 = Prelude.Just DT_COMPLEX128_REF
+        maybeToEnum 119 = Prelude.Just DT_HALF_REF
+        maybeToEnum 120 = Prelude.Just DT_RESOURCE_REF
+        maybeToEnum 121 = Prelude.Just DT_VARIANT_REF
+        maybeToEnum 122 = Prelude.Just DT_UINT32_REF
+        maybeToEnum 123 = Prelude.Just DT_UINT64_REF
+        maybeToEnum _ = Prelude.Nothing
+        showEnum DT_INVALID = "DT_INVALID"
+        showEnum DT_FLOAT = "DT_FLOAT"
+        showEnum DT_DOUBLE = "DT_DOUBLE"
+        showEnum DT_INT32 = "DT_INT32"
+        showEnum DT_UINT8 = "DT_UINT8"
+        showEnum DT_INT16 = "DT_INT16"
+        showEnum DT_INT8 = "DT_INT8"
+        showEnum DT_STRING = "DT_STRING"
+        showEnum DT_COMPLEX64 = "DT_COMPLEX64"
+        showEnum DT_INT64 = "DT_INT64"
+        showEnum DT_BOOL = "DT_BOOL"
+        showEnum DT_QINT8 = "DT_QINT8"
+        showEnum DT_QUINT8 = "DT_QUINT8"
+        showEnum DT_QINT32 = "DT_QINT32"
+        showEnum DT_BFLOAT16 = "DT_BFLOAT16"
+        showEnum DT_QINT16 = "DT_QINT16"
+        showEnum DT_QUINT16 = "DT_QUINT16"
+        showEnum DT_UINT16 = "DT_UINT16"
+        showEnum DT_COMPLEX128 = "DT_COMPLEX128"
+        showEnum DT_HALF = "DT_HALF"
+        showEnum DT_RESOURCE = "DT_RESOURCE"
+        showEnum DT_VARIANT = "DT_VARIANT"
+        showEnum DT_UINT32 = "DT_UINT32"
+        showEnum DT_UINT64 = "DT_UINT64"
+        showEnum DT_FLOAT_REF = "DT_FLOAT_REF"
+        showEnum DT_DOUBLE_REF = "DT_DOUBLE_REF"
+        showEnum DT_INT32_REF = "DT_INT32_REF"
+        showEnum DT_UINT8_REF = "DT_UINT8_REF"
+        showEnum DT_INT16_REF = "DT_INT16_REF"
+        showEnum DT_INT8_REF = "DT_INT8_REF"
+        showEnum DT_STRING_REF = "DT_STRING_REF"
+        showEnum DT_COMPLEX64_REF = "DT_COMPLEX64_REF"
+        showEnum DT_INT64_REF = "DT_INT64_REF"
+        showEnum DT_BOOL_REF = "DT_BOOL_REF"
+        showEnum DT_QINT8_REF = "DT_QINT8_REF"
+        showEnum DT_QUINT8_REF = "DT_QUINT8_REF"
+        showEnum DT_QINT32_REF = "DT_QINT32_REF"
+        showEnum DT_BFLOAT16_REF = "DT_BFLOAT16_REF"
+        showEnum DT_QINT16_REF = "DT_QINT16_REF"
+        showEnum DT_QUINT16_REF = "DT_QUINT16_REF"
+        showEnum DT_UINT16_REF = "DT_UINT16_REF"
+        showEnum DT_COMPLEX128_REF = "DT_COMPLEX128_REF"
+        showEnum DT_HALF_REF = "DT_HALF_REF"
+        showEnum DT_RESOURCE_REF = "DT_RESOURCE_REF"
+        showEnum DT_VARIANT_REF = "DT_VARIANT_REF"
+        showEnum DT_UINT32_REF = "DT_UINT32_REF"
+        showEnum DT_UINT64_REF = "DT_UINT64_REF"
+        readEnum "DT_INVALID" = Prelude.Just DT_INVALID
+        readEnum "DT_FLOAT" = Prelude.Just DT_FLOAT
+        readEnum "DT_DOUBLE" = Prelude.Just DT_DOUBLE
+        readEnum "DT_INT32" = Prelude.Just DT_INT32
+        readEnum "DT_UINT8" = Prelude.Just DT_UINT8
+        readEnum "DT_INT16" = Prelude.Just DT_INT16
+        readEnum "DT_INT8" = Prelude.Just DT_INT8
+        readEnum "DT_STRING" = Prelude.Just DT_STRING
+        readEnum "DT_COMPLEX64" = Prelude.Just DT_COMPLEX64
+        readEnum "DT_INT64" = Prelude.Just DT_INT64
+        readEnum "DT_BOOL" = Prelude.Just DT_BOOL
+        readEnum "DT_QINT8" = Prelude.Just DT_QINT8
+        readEnum "DT_QUINT8" = Prelude.Just DT_QUINT8
+        readEnum "DT_QINT32" = Prelude.Just DT_QINT32
+        readEnum "DT_BFLOAT16" = Prelude.Just DT_BFLOAT16
+        readEnum "DT_QINT16" = Prelude.Just DT_QINT16
+        readEnum "DT_QUINT16" = Prelude.Just DT_QUINT16
+        readEnum "DT_UINT16" = Prelude.Just DT_UINT16
+        readEnum "DT_COMPLEX128" = Prelude.Just DT_COMPLEX128
+        readEnum "DT_HALF" = Prelude.Just DT_HALF
+        readEnum "DT_RESOURCE" = Prelude.Just DT_RESOURCE
+        readEnum "DT_VARIANT" = Prelude.Just DT_VARIANT
+        readEnum "DT_UINT32" = Prelude.Just DT_UINT32
+        readEnum "DT_UINT64" = Prelude.Just DT_UINT64
+        readEnum "DT_FLOAT_REF" = Prelude.Just DT_FLOAT_REF
+        readEnum "DT_DOUBLE_REF" = Prelude.Just DT_DOUBLE_REF
+        readEnum "DT_INT32_REF" = Prelude.Just DT_INT32_REF
+        readEnum "DT_UINT8_REF" = Prelude.Just DT_UINT8_REF
+        readEnum "DT_INT16_REF" = Prelude.Just DT_INT16_REF
+        readEnum "DT_INT8_REF" = Prelude.Just DT_INT8_REF
+        readEnum "DT_STRING_REF" = Prelude.Just DT_STRING_REF
+        readEnum "DT_COMPLEX64_REF" = Prelude.Just DT_COMPLEX64_REF
+        readEnum "DT_INT64_REF" = Prelude.Just DT_INT64_REF
+        readEnum "DT_BOOL_REF" = Prelude.Just DT_BOOL_REF
+        readEnum "DT_QINT8_REF" = Prelude.Just DT_QINT8_REF
+        readEnum "DT_QUINT8_REF" = Prelude.Just DT_QUINT8_REF
+        readEnum "DT_QINT32_REF" = Prelude.Just DT_QINT32_REF
+        readEnum "DT_BFLOAT16_REF" = Prelude.Just DT_BFLOAT16_REF
+        readEnum "DT_QINT16_REF" = Prelude.Just DT_QINT16_REF
+        readEnum "DT_QUINT16_REF" = Prelude.Just DT_QUINT16_REF
+        readEnum "DT_UINT16_REF" = Prelude.Just DT_UINT16_REF
+        readEnum "DT_COMPLEX128_REF" = Prelude.Just DT_COMPLEX128_REF
+        readEnum "DT_HALF_REF" = Prelude.Just DT_HALF_REF
+        readEnum "DT_RESOURCE_REF" = Prelude.Just DT_RESOURCE_REF
+        readEnum "DT_VARIANT_REF" = Prelude.Just DT_VARIANT_REF
+        readEnum "DT_UINT32_REF" = Prelude.Just DT_UINT32_REF
+        readEnum "DT_UINT64_REF" = Prelude.Just DT_UINT64_REF
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum DataType where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum DataType: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum DT_INVALID = 0
+        fromEnum DT_FLOAT = 1
+        fromEnum DT_DOUBLE = 2
+        fromEnum DT_INT32 = 3
+        fromEnum DT_UINT8 = 4
+        fromEnum DT_INT16 = 5
+        fromEnum DT_INT8 = 6
+        fromEnum DT_STRING = 7
+        fromEnum DT_COMPLEX64 = 8
+        fromEnum DT_INT64 = 9
+        fromEnum DT_BOOL = 10
+        fromEnum DT_QINT8 = 11
+        fromEnum DT_QUINT8 = 12
+        fromEnum DT_QINT32 = 13
+        fromEnum DT_BFLOAT16 = 14
+        fromEnum DT_QINT16 = 15
+        fromEnum DT_QUINT16 = 16
+        fromEnum DT_UINT16 = 17
+        fromEnum DT_COMPLEX128 = 18
+        fromEnum DT_HALF = 19
+        fromEnum DT_RESOURCE = 20
+        fromEnum DT_VARIANT = 21
+        fromEnum DT_UINT32 = 22
+        fromEnum DT_UINT64 = 23
+        fromEnum DT_FLOAT_REF = 101
+        fromEnum DT_DOUBLE_REF = 102
+        fromEnum DT_INT32_REF = 103
+        fromEnum DT_UINT8_REF = 104
+        fromEnum DT_INT16_REF = 105
+        fromEnum DT_INT8_REF = 106
+        fromEnum DT_STRING_REF = 107
+        fromEnum DT_COMPLEX64_REF = 108
+        fromEnum DT_INT64_REF = 109
+        fromEnum DT_BOOL_REF = 110
+        fromEnum DT_QINT8_REF = 111
+        fromEnum DT_QUINT8_REF = 112
+        fromEnum DT_QINT32_REF = 113
+        fromEnum DT_BFLOAT16_REF = 114
+        fromEnum DT_QINT16_REF = 115
+        fromEnum DT_QUINT16_REF = 116
+        fromEnum DT_UINT16_REF = 117
+        fromEnum DT_COMPLEX128_REF = 118
+        fromEnum DT_HALF_REF = 119
+        fromEnum DT_RESOURCE_REF = 120
+        fromEnum DT_VARIANT_REF = 121
+        fromEnum DT_UINT32_REF = 122
+        fromEnum DT_UINT64_REF = 123
+        succ DT_UINT64_REF
+          = Prelude.error
+              "DataType.succ: bad argument DT_UINT64_REF. This value would be out of bounds."
+        succ DT_INVALID = DT_FLOAT
+        succ DT_FLOAT = DT_DOUBLE
+        succ DT_DOUBLE = DT_INT32
+        succ DT_INT32 = DT_UINT8
+        succ DT_UINT8 = DT_INT16
+        succ DT_INT16 = DT_INT8
+        succ DT_INT8 = DT_STRING
+        succ DT_STRING = DT_COMPLEX64
+        succ DT_COMPLEX64 = DT_INT64
+        succ DT_INT64 = DT_BOOL
+        succ DT_BOOL = DT_QINT8
+        succ DT_QINT8 = DT_QUINT8
+        succ DT_QUINT8 = DT_QINT32
+        succ DT_QINT32 = DT_BFLOAT16
+        succ DT_BFLOAT16 = DT_QINT16
+        succ DT_QINT16 = DT_QUINT16
+        succ DT_QUINT16 = DT_UINT16
+        succ DT_UINT16 = DT_COMPLEX128
+        succ DT_COMPLEX128 = DT_HALF
+        succ DT_HALF = DT_RESOURCE
+        succ DT_RESOURCE = DT_VARIANT
+        succ DT_VARIANT = DT_UINT32
+        succ DT_UINT32 = DT_UINT64
+        succ DT_UINT64 = DT_FLOAT_REF
+        succ DT_FLOAT_REF = DT_DOUBLE_REF
+        succ DT_DOUBLE_REF = DT_INT32_REF
+        succ DT_INT32_REF = DT_UINT8_REF
+        succ DT_UINT8_REF = DT_INT16_REF
+        succ DT_INT16_REF = DT_INT8_REF
+        succ DT_INT8_REF = DT_STRING_REF
+        succ DT_STRING_REF = DT_COMPLEX64_REF
+        succ DT_COMPLEX64_REF = DT_INT64_REF
+        succ DT_INT64_REF = DT_BOOL_REF
+        succ DT_BOOL_REF = DT_QINT8_REF
+        succ DT_QINT8_REF = DT_QUINT8_REF
+        succ DT_QUINT8_REF = DT_QINT32_REF
+        succ DT_QINT32_REF = DT_BFLOAT16_REF
+        succ DT_BFLOAT16_REF = DT_QINT16_REF
+        succ DT_QINT16_REF = DT_QUINT16_REF
+        succ DT_QUINT16_REF = DT_UINT16_REF
+        succ DT_UINT16_REF = DT_COMPLEX128_REF
+        succ DT_COMPLEX128_REF = DT_HALF_REF
+        succ DT_HALF_REF = DT_RESOURCE_REF
+        succ DT_RESOURCE_REF = DT_VARIANT_REF
+        succ DT_VARIANT_REF = DT_UINT32_REF
+        succ DT_UINT32_REF = DT_UINT64_REF
+        pred DT_INVALID
+          = Prelude.error
+              "DataType.pred: bad argument DT_INVALID. This value would be out of bounds."
+        pred DT_FLOAT = DT_INVALID
+        pred DT_DOUBLE = DT_FLOAT
+        pred DT_INT32 = DT_DOUBLE
+        pred DT_UINT8 = DT_INT32
+        pred DT_INT16 = DT_UINT8
+        pred DT_INT8 = DT_INT16
+        pred DT_STRING = DT_INT8
+        pred DT_COMPLEX64 = DT_STRING
+        pred DT_INT64 = DT_COMPLEX64
+        pred DT_BOOL = DT_INT64
+        pred DT_QINT8 = DT_BOOL
+        pred DT_QUINT8 = DT_QINT8
+        pred DT_QINT32 = DT_QUINT8
+        pred DT_BFLOAT16 = DT_QINT32
+        pred DT_QINT16 = DT_BFLOAT16
+        pred DT_QUINT16 = DT_QINT16
+        pred DT_UINT16 = DT_QUINT16
+        pred DT_COMPLEX128 = DT_UINT16
+        pred DT_HALF = DT_COMPLEX128
+        pred DT_RESOURCE = DT_HALF
+        pred DT_VARIANT = DT_RESOURCE
+        pred DT_UINT32 = DT_VARIANT
+        pred DT_UINT64 = DT_UINT32
+        pred DT_FLOAT_REF = DT_UINT64
+        pred DT_DOUBLE_REF = DT_FLOAT_REF
+        pred DT_INT32_REF = DT_DOUBLE_REF
+        pred DT_UINT8_REF = DT_INT32_REF
+        pred DT_INT16_REF = DT_UINT8_REF
+        pred DT_INT8_REF = DT_INT16_REF
+        pred DT_STRING_REF = DT_INT8_REF
+        pred DT_COMPLEX64_REF = DT_STRING_REF
+        pred DT_INT64_REF = DT_COMPLEX64_REF
+        pred DT_BOOL_REF = DT_INT64_REF
+        pred DT_QINT8_REF = DT_BOOL_REF
+        pred DT_QUINT8_REF = DT_QINT8_REF
+        pred DT_QINT32_REF = DT_QUINT8_REF
+        pred DT_BFLOAT16_REF = DT_QINT32_REF
+        pred DT_QINT16_REF = DT_BFLOAT16_REF
+        pred DT_QUINT16_REF = DT_QINT16_REF
+        pred DT_UINT16_REF = DT_QUINT16_REF
+        pred DT_COMPLEX128_REF = DT_UINT16_REF
+        pred DT_HALF_REF = DT_COMPLEX128_REF
+        pred DT_RESOURCE_REF = DT_HALF_REF
+        pred DT_VARIANT_REF = DT_RESOURCE_REF
+        pred DT_UINT32_REF = DT_VARIANT_REF
+        pred DT_UINT64_REF = DT_UINT32_REF
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded DataType where
+        minBound = DT_INVALID
+        maxBound = DT_UINT64_REF
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Variable.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Variable.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Variable.hs
@@ -0,0 +1,388 @@
+{- This file was auto-generated from tensorflow/core/framework/variable.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Variable where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data SaveSliceInfoDef = SaveSliceInfoDef{_SaveSliceInfoDef'fullName
+                                         :: !Data.Text.Text,
+                                         _SaveSliceInfoDef'fullShape :: ![Data.Int.Int64],
+                                         _SaveSliceInfoDef'varOffset :: ![Data.Int.Int64],
+                                         _SaveSliceInfoDef'varShape :: ![Data.Int.Int64]}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "fullName" f SaveSliceInfoDef SaveSliceInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'fullName
+                 (\ x__ y__ -> x__{_SaveSliceInfoDef'fullName = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "fullShape" f SaveSliceInfoDef SaveSliceInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'fullShape
+                 (\ x__ y__ -> x__{_SaveSliceInfoDef'fullShape = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "varOffset" f SaveSliceInfoDef SaveSliceInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'varOffset
+                 (\ x__ y__ -> x__{_SaveSliceInfoDef'varOffset = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "varShape" f SaveSliceInfoDef SaveSliceInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaveSliceInfoDef'varShape
+                 (\ x__ y__ -> x__{_SaveSliceInfoDef'varShape = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SaveSliceInfoDef where
+        def
+          = SaveSliceInfoDef{_SaveSliceInfoDef'fullName =
+                               Data.ProtoLens.fieldDefault,
+                             _SaveSliceInfoDef'fullShape = [], _SaveSliceInfoDef'varOffset = [],
+                             _SaveSliceInfoDef'varShape = []}
+
+instance Data.ProtoLens.Message SaveSliceInfoDef where
+        descriptor
+          = let fullName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "full_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional fullName)
+                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
+                fullShape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "full_shape"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed fullShape)
+                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
+                varOffset__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "var_offset"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed varOffset)
+                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
+                varShape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "var_shape"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed varShape)
+                      :: Data.ProtoLens.FieldDescriptor SaveSliceInfoDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SaveSliceInfoDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, fullName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, fullShape__field_descriptor),
+                    (Data.ProtoLens.Tag 3, varOffset__field_descriptor),
+                    (Data.ProtoLens.Tag 4, varShape__field_descriptor)])
+                (Data.Map.fromList
+                   [("full_name", fullName__field_descriptor),
+                    ("full_shape", fullShape__field_descriptor),
+                    ("var_offset", varOffset__field_descriptor),
+                    ("var_shape", varShape__field_descriptor)])
+
+data VariableDef = VariableDef{_VariableDef'variableName ::
+                               !Data.Text.Text,
+                               _VariableDef'initialValueName :: !Data.Text.Text,
+                               _VariableDef'initializerName :: !Data.Text.Text,
+                               _VariableDef'snapshotName :: !Data.Text.Text,
+                               _VariableDef'saveSliceInfoDef :: !(Prelude.Maybe SaveSliceInfoDef),
+                               _VariableDef'isResource :: !Prelude.Bool,
+                               _VariableDef'trainable :: !Prelude.Bool}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "variableName" f VariableDef VariableDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'variableName
+                 (\ x__ y__ -> x__{_VariableDef'variableName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "initialValueName" f VariableDef VariableDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'initialValueName
+                 (\ x__ y__ -> x__{_VariableDef'initialValueName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "initializerName" f VariableDef VariableDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'initializerName
+                 (\ x__ y__ -> x__{_VariableDef'initializerName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "snapshotName" f VariableDef VariableDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'snapshotName
+                 (\ x__ y__ -> x__{_VariableDef'snapshotName = y__}))
+              Prelude.id
+
+instance (a ~ SaveSliceInfoDef, b ~ SaveSliceInfoDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "saveSliceInfoDef" f VariableDef VariableDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'saveSliceInfoDef
+                 (\ x__ y__ -> x__{_VariableDef'saveSliceInfoDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe SaveSliceInfoDef,
+          b ~ Prelude.Maybe SaveSliceInfoDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'saveSliceInfoDef" f VariableDef
+           VariableDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'saveSliceInfoDef
+                 (\ x__ y__ -> x__{_VariableDef'saveSliceInfoDef = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isResource" f VariableDef VariableDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'isResource
+                 (\ x__ y__ -> x__{_VariableDef'isResource = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "trainable" f VariableDef VariableDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VariableDef'trainable
+                 (\ x__ y__ -> x__{_VariableDef'trainable = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default VariableDef where
+        def
+          = VariableDef{_VariableDef'variableName =
+                          Data.ProtoLens.fieldDefault,
+                        _VariableDef'initialValueName = Data.ProtoLens.fieldDefault,
+                        _VariableDef'initializerName = Data.ProtoLens.fieldDefault,
+                        _VariableDef'snapshotName = Data.ProtoLens.fieldDefault,
+                        _VariableDef'saveSliceInfoDef = Prelude.Nothing,
+                        _VariableDef'isResource = Data.ProtoLens.fieldDefault,
+                        _VariableDef'trainable = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message VariableDef where
+        descriptor
+          = let variableName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "variable_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional variableName)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+                initialValueName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "initial_value_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         initialValueName)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+                initializerName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "initializer_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional initializerName)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+                snapshotName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "snapshot_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional snapshotName)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+                saveSliceInfoDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "save_slice_info_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SaveSliceInfoDef)
+                      (Data.ProtoLens.OptionalField maybe'saveSliceInfoDef)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+                isResource__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "is_resource"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isResource)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+                trainable__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "trainable"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional trainable)
+                      :: Data.ProtoLens.FieldDescriptor VariableDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.VariableDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, variableName__field_descriptor),
+                    (Data.ProtoLens.Tag 6, initialValueName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, initializerName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, snapshotName__field_descriptor),
+                    (Data.ProtoLens.Tag 4, saveSliceInfoDef__field_descriptor),
+                    (Data.ProtoLens.Tag 5, isResource__field_descriptor),
+                    (Data.ProtoLens.Tag 7, trainable__field_descriptor)])
+                (Data.Map.fromList
+                   [("variable_name", variableName__field_descriptor),
+                    ("initial_value_name", initialValueName__field_descriptor),
+                    ("initializer_name", initializerName__field_descriptor),
+                    ("snapshot_name", snapshotName__field_descriptor),
+                    ("save_slice_info_def", saveSliceInfoDef__field_descriptor),
+                    ("is_resource", isResource__field_descriptor),
+                    ("trainable", trainable__field_descriptor)])
+
+fullName ::
+         forall f s t a b . (Lens.Labels.HasLens "fullName" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+fullName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fullName")
+
+fullShape ::
+          forall f s t a b . (Lens.Labels.HasLens "fullShape" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+fullShape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fullShape")
+
+initialValueName ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "initialValueName" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+initialValueName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "initialValueName")
+
+initializerName ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "initializerName" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+initializerName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "initializerName")
+
+isResource ::
+           forall f s t a b . (Lens.Labels.HasLens "isResource" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+isResource
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isResource")
+
+maybe'saveSliceInfoDef ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "maybe'saveSliceInfoDef" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+maybe'saveSliceInfoDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'saveSliceInfoDef")
+
+saveSliceInfoDef ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "saveSliceInfoDef" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+saveSliceInfoDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "saveSliceInfoDef")
+
+snapshotName ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "snapshotName" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+snapshotName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "snapshotName")
+
+trainable ::
+          forall f s t a b . (Lens.Labels.HasLens "trainable" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+trainable
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "trainable")
+
+varOffset ::
+          forall f s t a b . (Lens.Labels.HasLens "varOffset" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+varOffset
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "varOffset")
+
+varShape ::
+         forall f s t a b . (Lens.Labels.HasLens "varShape" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+varShape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "varShape")
+
+variableName ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "variableName" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+variableName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "variableName")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Versions.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Versions.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Framework/Versions.hs
@@ -0,0 +1,122 @@
+{- This file was auto-generated from tensorflow/core/framework/versions.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Framework.Versions where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data VersionDef = VersionDef{_VersionDef'producer ::
+                             !Data.Int.Int32,
+                             _VersionDef'minConsumer :: !Data.Int.Int32,
+                             _VersionDef'badConsumers :: ![Data.Int.Int32]}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "producer" f VersionDef VersionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VersionDef'producer
+                 (\ x__ y__ -> x__{_VersionDef'producer = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "minConsumer" f VersionDef VersionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VersionDef'minConsumer
+                 (\ x__ y__ -> x__{_VersionDef'minConsumer = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "badConsumers" f VersionDef VersionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _VersionDef'badConsumers
+                 (\ x__ y__ -> x__{_VersionDef'badConsumers = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default VersionDef where
+        def
+          = VersionDef{_VersionDef'producer = Data.ProtoLens.fieldDefault,
+                       _VersionDef'minConsumer = Data.ProtoLens.fieldDefault,
+                       _VersionDef'badConsumers = []}
+
+instance Data.ProtoLens.Message VersionDef where
+        descriptor
+          = let producer__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "producer"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional producer)
+                      :: Data.ProtoLens.FieldDescriptor VersionDef
+                minConsumer__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "min_consumer"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional minConsumer)
+                      :: Data.ProtoLens.FieldDescriptor VersionDef
+                badConsumers__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bad_consumers"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed badConsumers)
+                      :: Data.ProtoLens.FieldDescriptor VersionDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.VersionDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, producer__field_descriptor),
+                    (Data.ProtoLens.Tag 2, minConsumer__field_descriptor),
+                    (Data.ProtoLens.Tag 3, badConsumers__field_descriptor)])
+                (Data.Map.fromList
+                   [("producer", producer__field_descriptor),
+                    ("min_consumer", minConsumer__field_descriptor),
+                    ("bad_consumers", badConsumers__field_descriptor)])
+
+badConsumers ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "badConsumers" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+badConsumers
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "badConsumers")
+
+minConsumer ::
+            forall f s t a b . (Lens.Labels.HasLens "minConsumer" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+minConsumer
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "minConsumer")
+
+producer ::
+         forall f s t a b . (Lens.Labels.HasLens "producer" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+producer
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "producer")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Lib/Core/ErrorCodes.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Lib/Core/ErrorCodes.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Lib/Core/ErrorCodes.hs
@@ -0,0 +1,199 @@
+{- This file was auto-generated from tensorflow/core/lib/core/error_codes.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Lib.Core.ErrorCodes where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data Code = OK
+          | CANCELLED
+          | UNKNOWN
+          | INVALID_ARGUMENT
+          | DEADLINE_EXCEEDED
+          | NOT_FOUND
+          | ALREADY_EXISTS
+          | PERMISSION_DENIED
+          | RESOURCE_EXHAUSTED
+          | FAILED_PRECONDITION
+          | ABORTED
+          | OUT_OF_RANGE
+          | UNIMPLEMENTED
+          | INTERNAL
+          | UNAVAILABLE
+          | DATA_LOSS
+          | UNAUTHENTICATED
+          | DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default Code where
+        def = OK
+
+instance Data.ProtoLens.FieldDefault Code where
+        fieldDefault = OK
+
+instance Data.ProtoLens.MessageEnum Code where
+        maybeToEnum 0 = Prelude.Just OK
+        maybeToEnum 1 = Prelude.Just CANCELLED
+        maybeToEnum 2 = Prelude.Just UNKNOWN
+        maybeToEnum 3 = Prelude.Just INVALID_ARGUMENT
+        maybeToEnum 4 = Prelude.Just DEADLINE_EXCEEDED
+        maybeToEnum 5 = Prelude.Just NOT_FOUND
+        maybeToEnum 6 = Prelude.Just ALREADY_EXISTS
+        maybeToEnum 7 = Prelude.Just PERMISSION_DENIED
+        maybeToEnum 8 = Prelude.Just RESOURCE_EXHAUSTED
+        maybeToEnum 9 = Prelude.Just FAILED_PRECONDITION
+        maybeToEnum 10 = Prelude.Just ABORTED
+        maybeToEnum 11 = Prelude.Just OUT_OF_RANGE
+        maybeToEnum 12 = Prelude.Just UNIMPLEMENTED
+        maybeToEnum 13 = Prelude.Just INTERNAL
+        maybeToEnum 14 = Prelude.Just UNAVAILABLE
+        maybeToEnum 15 = Prelude.Just DATA_LOSS
+        maybeToEnum 16 = Prelude.Just UNAUTHENTICATED
+        maybeToEnum 20
+          = Prelude.Just
+              DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+        maybeToEnum _ = Prelude.Nothing
+        showEnum OK = "OK"
+        showEnum CANCELLED = "CANCELLED"
+        showEnum UNKNOWN = "UNKNOWN"
+        showEnum INVALID_ARGUMENT = "INVALID_ARGUMENT"
+        showEnum DEADLINE_EXCEEDED = "DEADLINE_EXCEEDED"
+        showEnum NOT_FOUND = "NOT_FOUND"
+        showEnum ALREADY_EXISTS = "ALREADY_EXISTS"
+        showEnum PERMISSION_DENIED = "PERMISSION_DENIED"
+        showEnum RESOURCE_EXHAUSTED = "RESOURCE_EXHAUSTED"
+        showEnum FAILED_PRECONDITION = "FAILED_PRECONDITION"
+        showEnum ABORTED = "ABORTED"
+        showEnum OUT_OF_RANGE = "OUT_OF_RANGE"
+        showEnum UNIMPLEMENTED = "UNIMPLEMENTED"
+        showEnum INTERNAL = "INTERNAL"
+        showEnum UNAVAILABLE = "UNAVAILABLE"
+        showEnum DATA_LOSS = "DATA_LOSS"
+        showEnum UNAUTHENTICATED = "UNAUTHENTICATED"
+        showEnum
+          DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+          = "DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_"
+        readEnum "OK" = Prelude.Just OK
+        readEnum "CANCELLED" = Prelude.Just CANCELLED
+        readEnum "UNKNOWN" = Prelude.Just UNKNOWN
+        readEnum "INVALID_ARGUMENT" = Prelude.Just INVALID_ARGUMENT
+        readEnum "DEADLINE_EXCEEDED" = Prelude.Just DEADLINE_EXCEEDED
+        readEnum "NOT_FOUND" = Prelude.Just NOT_FOUND
+        readEnum "ALREADY_EXISTS" = Prelude.Just ALREADY_EXISTS
+        readEnum "PERMISSION_DENIED" = Prelude.Just PERMISSION_DENIED
+        readEnum "RESOURCE_EXHAUSTED" = Prelude.Just RESOURCE_EXHAUSTED
+        readEnum "FAILED_PRECONDITION" = Prelude.Just FAILED_PRECONDITION
+        readEnum "ABORTED" = Prelude.Just ABORTED
+        readEnum "OUT_OF_RANGE" = Prelude.Just OUT_OF_RANGE
+        readEnum "UNIMPLEMENTED" = Prelude.Just UNIMPLEMENTED
+        readEnum "INTERNAL" = Prelude.Just INTERNAL
+        readEnum "UNAVAILABLE" = Prelude.Just UNAVAILABLE
+        readEnum "DATA_LOSS" = Prelude.Just DATA_LOSS
+        readEnum "UNAUTHENTICATED" = Prelude.Just UNAUTHENTICATED
+        readEnum
+          "DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_"
+          = Prelude.Just
+              DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum Code where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum Code: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum OK = 0
+        fromEnum CANCELLED = 1
+        fromEnum UNKNOWN = 2
+        fromEnum INVALID_ARGUMENT = 3
+        fromEnum DEADLINE_EXCEEDED = 4
+        fromEnum NOT_FOUND = 5
+        fromEnum ALREADY_EXISTS = 6
+        fromEnum PERMISSION_DENIED = 7
+        fromEnum RESOURCE_EXHAUSTED = 8
+        fromEnum FAILED_PRECONDITION = 9
+        fromEnum ABORTED = 10
+        fromEnum OUT_OF_RANGE = 11
+        fromEnum UNIMPLEMENTED = 12
+        fromEnum INTERNAL = 13
+        fromEnum UNAVAILABLE = 14
+        fromEnum DATA_LOSS = 15
+        fromEnum UNAUTHENTICATED = 16
+        fromEnum
+          DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+          = 20
+        succ
+          DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+          = Prelude.error
+              "Code.succ: bad argument DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_. This value would be out of bounds."
+        succ OK = CANCELLED
+        succ CANCELLED = UNKNOWN
+        succ UNKNOWN = INVALID_ARGUMENT
+        succ INVALID_ARGUMENT = DEADLINE_EXCEEDED
+        succ DEADLINE_EXCEEDED = NOT_FOUND
+        succ NOT_FOUND = ALREADY_EXISTS
+        succ ALREADY_EXISTS = PERMISSION_DENIED
+        succ PERMISSION_DENIED = RESOURCE_EXHAUSTED
+        succ RESOURCE_EXHAUSTED = FAILED_PRECONDITION
+        succ FAILED_PRECONDITION = ABORTED
+        succ ABORTED = OUT_OF_RANGE
+        succ OUT_OF_RANGE = UNIMPLEMENTED
+        succ UNIMPLEMENTED = INTERNAL
+        succ INTERNAL = UNAVAILABLE
+        succ UNAVAILABLE = DATA_LOSS
+        succ DATA_LOSS = UNAUTHENTICATED
+        succ UNAUTHENTICATED
+          = DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+        pred OK
+          = Prelude.error
+              "Code.pred: bad argument OK. This value would be out of bounds."
+        pred CANCELLED = OK
+        pred UNKNOWN = CANCELLED
+        pred INVALID_ARGUMENT = UNKNOWN
+        pred DEADLINE_EXCEEDED = INVALID_ARGUMENT
+        pred NOT_FOUND = DEADLINE_EXCEEDED
+        pred ALREADY_EXISTS = NOT_FOUND
+        pred PERMISSION_DENIED = ALREADY_EXISTS
+        pred RESOURCE_EXHAUSTED = PERMISSION_DENIED
+        pred FAILED_PRECONDITION = RESOURCE_EXHAUSTED
+        pred ABORTED = FAILED_PRECONDITION
+        pred OUT_OF_RANGE = ABORTED
+        pred UNIMPLEMENTED = OUT_OF_RANGE
+        pred INTERNAL = UNIMPLEMENTED
+        pred UNAVAILABLE = INTERNAL
+        pred DATA_LOSS = UNAVAILABLE
+        pred UNAUTHENTICATED = DATA_LOSS
+        pred
+          DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
+          = UNAUTHENTICATED
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded Code where
+        minBound = OK
+        maxBound
+          = DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Cluster.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Cluster.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Cluster.hs
@@ -0,0 +1,200 @@
+{- This file was auto-generated from tensorflow/core/protobuf/cluster.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.Cluster where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data ClusterDef = ClusterDef{_ClusterDef'job :: ![JobDef]}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [JobDef], b ~ [JobDef], Prelude.Functor f) =>
+         Lens.Labels.HasLens "job" f ClusterDef ClusterDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ClusterDef'job
+                 (\ x__ y__ -> x__{_ClusterDef'job = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ClusterDef where
+        def = ClusterDef{_ClusterDef'job = []}
+
+instance Data.ProtoLens.Message ClusterDef where
+        descriptor
+          = let job__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "job"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor JobDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked job)
+                      :: Data.ProtoLens.FieldDescriptor ClusterDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ClusterDef")
+                (Data.Map.fromList [(Data.ProtoLens.Tag 1, job__field_descriptor)])
+                (Data.Map.fromList [("job", job__field_descriptor)])
+
+data JobDef = JobDef{_JobDef'name :: !Data.Text.Text,
+                     _JobDef'tasks :: !(Data.Map.Map Data.Int.Int32 Data.Text.Text)}
+            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f JobDef JobDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _JobDef'name
+                 (\ x__ y__ -> x__{_JobDef'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Int.Int32 Data.Text.Text,
+          b ~ Data.Map.Map Data.Int.Int32 Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tasks" f JobDef JobDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _JobDef'tasks
+                 (\ x__ y__ -> x__{_JobDef'tasks = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default JobDef where
+        def
+          = JobDef{_JobDef'name = Data.ProtoLens.fieldDefault,
+                   _JobDef'tasks = Data.Map.empty}
+
+instance Data.ProtoLens.Message JobDef where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor JobDef
+                tasks__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tasks"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor JobDef'TasksEntry)
+                      (Data.ProtoLens.MapField key value tasks)
+                      :: Data.ProtoLens.FieldDescriptor JobDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.JobDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, tasks__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("tasks", tasks__field_descriptor)])
+
+data JobDef'TasksEntry = JobDef'TasksEntry{_JobDef'TasksEntry'key
+                                           :: !Data.Int.Int32,
+                                           _JobDef'TasksEntry'value :: !Data.Text.Text}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f JobDef'TasksEntry JobDef'TasksEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _JobDef'TasksEntry'key
+                 (\ x__ y__ -> x__{_JobDef'TasksEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f JobDef'TasksEntry JobDef'TasksEntry a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _JobDef'TasksEntry'value
+                 (\ x__ y__ -> x__{_JobDef'TasksEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default JobDef'TasksEntry where
+        def
+          = JobDef'TasksEntry{_JobDef'TasksEntry'key =
+                                Data.ProtoLens.fieldDefault,
+                              _JobDef'TasksEntry'value = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message JobDef'TasksEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor JobDef'TasksEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
+                      :: Data.ProtoLens.FieldDescriptor JobDef'TasksEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.JobDef.TasksEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+job ::
+    forall f s t a b . (Lens.Labels.HasLens "job" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+job
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "job")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+tasks ::
+      forall f s t a b . (Lens.Labels.HasLens "tasks" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+tasks
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tasks")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Config.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Config.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Config.hs
@@ -0,0 +1,2759 @@
+{- This file was auto-generated from tensorflow/core/protobuf/config.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.Config where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.CostGraph
+import qualified Proto.Tensorflow.Core.Framework.Graph
+import qualified Proto.Tensorflow.Core.Framework.StepStats
+import qualified Proto.Tensorflow.Core.Protobuf.Cluster
+import qualified Proto.Tensorflow.Core.Protobuf.Debug
+import qualified Proto.Tensorflow.Core.Protobuf.RewriterConfig
+
+data CallableOptions = CallableOptions{_CallableOptions'feed ::
+                                       ![Data.Text.Text],
+                                       _CallableOptions'fetch :: ![Data.Text.Text],
+                                       _CallableOptions'target :: ![Data.Text.Text],
+                                       _CallableOptions'runOptions :: !(Prelude.Maybe RunOptions),
+                                       _CallableOptions'tensorConnection :: ![TensorConnection]}
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "feed" f CallableOptions CallableOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CallableOptions'feed
+                 (\ x__ y__ -> x__{_CallableOptions'feed = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "fetch" f CallableOptions CallableOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CallableOptions'fetch
+                 (\ x__ y__ -> x__{_CallableOptions'fetch = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "target" f CallableOptions CallableOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CallableOptions'target
+                 (\ x__ y__ -> x__{_CallableOptions'target = y__}))
+              Prelude.id
+
+instance (a ~ RunOptions, b ~ RunOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "runOptions" f CallableOptions CallableOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CallableOptions'runOptions
+                 (\ x__ y__ -> x__{_CallableOptions'runOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe RunOptions,
+          b ~ Prelude.Maybe RunOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'runOptions" f CallableOptions
+           CallableOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CallableOptions'runOptions
+                 (\ x__ y__ -> x__{_CallableOptions'runOptions = y__}))
+              Prelude.id
+
+instance (a ~ [TensorConnection], b ~ [TensorConnection],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorConnection" f CallableOptions
+           CallableOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CallableOptions'tensorConnection
+                 (\ x__ y__ -> x__{_CallableOptions'tensorConnection = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CallableOptions where
+        def
+          = CallableOptions{_CallableOptions'feed = [],
+                            _CallableOptions'fetch = [], _CallableOptions'target = [],
+                            _CallableOptions'runOptions = Prelude.Nothing,
+                            _CallableOptions'tensorConnection = []}
+
+instance Data.ProtoLens.Message CallableOptions where
+        descriptor
+          = let feed__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "feed"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked feed)
+                      :: Data.ProtoLens.FieldDescriptor CallableOptions
+                fetch__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "fetch"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked fetch)
+                      :: Data.ProtoLens.FieldDescriptor CallableOptions
+                target__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "target"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked target)
+                      :: Data.ProtoLens.FieldDescriptor CallableOptions
+                runOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "run_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor RunOptions)
+                      (Data.ProtoLens.OptionalField maybe'runOptions)
+                      :: Data.ProtoLens.FieldDescriptor CallableOptions
+                tensorConnection__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor_connection"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorConnection)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         tensorConnection)
+                      :: Data.ProtoLens.FieldDescriptor CallableOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CallableOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, feed__field_descriptor),
+                    (Data.ProtoLens.Tag 2, fetch__field_descriptor),
+                    (Data.ProtoLens.Tag 3, target__field_descriptor),
+                    (Data.ProtoLens.Tag 4, runOptions__field_descriptor),
+                    (Data.ProtoLens.Tag 5, tensorConnection__field_descriptor)])
+                (Data.Map.fromList
+                   [("feed", feed__field_descriptor),
+                    ("fetch", fetch__field_descriptor),
+                    ("target", target__field_descriptor),
+                    ("run_options", runOptions__field_descriptor),
+                    ("tensor_connection", tensorConnection__field_descriptor)])
+
+data ConfigProto = ConfigProto{_ConfigProto'deviceCount ::
+                               !(Data.Map.Map Data.Text.Text Data.Int.Int32),
+                               _ConfigProto'intraOpParallelismThreads :: !Data.Int.Int32,
+                               _ConfigProto'interOpParallelismThreads :: !Data.Int.Int32,
+                               _ConfigProto'usePerSessionThreads :: !Prelude.Bool,
+                               _ConfigProto'sessionInterOpThreadPool :: ![ThreadPoolOptionProto],
+                               _ConfigProto'placementPeriod :: !Data.Int.Int32,
+                               _ConfigProto'deviceFilters :: ![Data.Text.Text],
+                               _ConfigProto'gpuOptions :: !(Prelude.Maybe GPUOptions),
+                               _ConfigProto'allowSoftPlacement :: !Prelude.Bool,
+                               _ConfigProto'logDevicePlacement :: !Prelude.Bool,
+                               _ConfigProto'graphOptions :: !(Prelude.Maybe GraphOptions),
+                               _ConfigProto'operationTimeoutInMs :: !Data.Int.Int64,
+                               _ConfigProto'rpcOptions :: !(Prelude.Maybe RPCOptions),
+                               _ConfigProto'clusterDef ::
+                               !(Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef),
+                               _ConfigProto'isolateSessionState :: !Prelude.Bool,
+                               _ConfigProto'experimental ::
+                               !(Prelude.Maybe ConfigProto'Experimental)}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Map.Map Data.Text.Text Data.Int.Int32,
+          b ~ Data.Map.Map Data.Text.Text Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceCount" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'deviceCount
+                 (\ x__ y__ -> x__{_ConfigProto'deviceCount = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "intraOpParallelismThreads" f ConfigProto
+           ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'intraOpParallelismThreads
+                 (\ x__ y__ -> x__{_ConfigProto'intraOpParallelismThreads = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "interOpParallelismThreads" f ConfigProto
+           ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'interOpParallelismThreads
+                 (\ x__ y__ -> x__{_ConfigProto'interOpParallelismThreads = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "usePerSessionThreads" f ConfigProto
+           ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'usePerSessionThreads
+                 (\ x__ y__ -> x__{_ConfigProto'usePerSessionThreads = y__}))
+              Prelude.id
+
+instance (a ~ [ThreadPoolOptionProto], b ~ [ThreadPoolOptionProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "sessionInterOpThreadPool" f ConfigProto
+           ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'sessionInterOpThreadPool
+                 (\ x__ y__ -> x__{_ConfigProto'sessionInterOpThreadPool = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "placementPeriod" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'placementPeriod
+                 (\ x__ y__ -> x__{_ConfigProto'placementPeriod = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceFilters" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'deviceFilters
+                 (\ x__ y__ -> x__{_ConfigProto'deviceFilters = y__}))
+              Prelude.id
+
+instance (a ~ GPUOptions, b ~ GPUOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "gpuOptions" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'gpuOptions
+                 (\ x__ y__ -> x__{_ConfigProto'gpuOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe GPUOptions,
+          b ~ Prelude.Maybe GPUOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'gpuOptions" f ConfigProto ConfigProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'gpuOptions
+                 (\ x__ y__ -> x__{_ConfigProto'gpuOptions = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "allowSoftPlacement" f ConfigProto ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'allowSoftPlacement
+                 (\ x__ y__ -> x__{_ConfigProto'allowSoftPlacement = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "logDevicePlacement" f ConfigProto ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'logDevicePlacement
+                 (\ x__ y__ -> x__{_ConfigProto'logDevicePlacement = y__}))
+              Prelude.id
+
+instance (a ~ GraphOptions, b ~ GraphOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "graphOptions" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'graphOptions
+                 (\ x__ y__ -> x__{_ConfigProto'graphOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe GraphOptions,
+          b ~ Prelude.Maybe GraphOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'graphOptions" f ConfigProto ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'graphOptions
+                 (\ x__ y__ -> x__{_ConfigProto'graphOptions = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "operationTimeoutInMs" f ConfigProto
+           ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'operationTimeoutInMs
+                 (\ x__ y__ -> x__{_ConfigProto'operationTimeoutInMs = y__}))
+              Prelude.id
+
+instance (a ~ RPCOptions, b ~ RPCOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "rpcOptions" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'rpcOptions
+                 (\ x__ y__ -> x__{_ConfigProto'rpcOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe RPCOptions,
+          b ~ Prelude.Maybe RPCOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'rpcOptions" f ConfigProto ConfigProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'rpcOptions
+                 (\ x__ y__ -> x__{_ConfigProto'rpcOptions = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          b ~ Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "clusterDef" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'clusterDef
+                 (\ x__ y__ -> x__{_ConfigProto'clusterDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'clusterDef" f ConfigProto ConfigProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'clusterDef
+                 (\ x__ y__ -> x__{_ConfigProto'clusterDef = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "isolateSessionState" f ConfigProto ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'isolateSessionState
+                 (\ x__ y__ -> x__{_ConfigProto'isolateSessionState = y__}))
+              Prelude.id
+
+instance (a ~ ConfigProto'Experimental,
+          b ~ ConfigProto'Experimental, Prelude.Functor f) =>
+         Lens.Labels.HasLens "experimental" f ConfigProto ConfigProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'experimental
+                 (\ x__ y__ -> x__{_ConfigProto'experimental = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe ConfigProto'Experimental,
+          b ~ Prelude.Maybe ConfigProto'Experimental, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'experimental" f ConfigProto ConfigProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'experimental
+                 (\ x__ y__ -> x__{_ConfigProto'experimental = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ConfigProto where
+        def
+          = ConfigProto{_ConfigProto'deviceCount = Data.Map.empty,
+                        _ConfigProto'intraOpParallelismThreads =
+                          Data.ProtoLens.fieldDefault,
+                        _ConfigProto'interOpParallelismThreads =
+                          Data.ProtoLens.fieldDefault,
+                        _ConfigProto'usePerSessionThreads = Data.ProtoLens.fieldDefault,
+                        _ConfigProto'sessionInterOpThreadPool = [],
+                        _ConfigProto'placementPeriod = Data.ProtoLens.fieldDefault,
+                        _ConfigProto'deviceFilters = [],
+                        _ConfigProto'gpuOptions = Prelude.Nothing,
+                        _ConfigProto'allowSoftPlacement = Data.ProtoLens.fieldDefault,
+                        _ConfigProto'logDevicePlacement = Data.ProtoLens.fieldDefault,
+                        _ConfigProto'graphOptions = Prelude.Nothing,
+                        _ConfigProto'operationTimeoutInMs = Data.ProtoLens.fieldDefault,
+                        _ConfigProto'rpcOptions = Prelude.Nothing,
+                        _ConfigProto'clusterDef = Prelude.Nothing,
+                        _ConfigProto'isolateSessionState = Data.ProtoLens.fieldDefault,
+                        _ConfigProto'experimental = Prelude.Nothing}
+
+instance Data.ProtoLens.Message ConfigProto where
+        descriptor
+          = let deviceCount__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_count"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ConfigProto'DeviceCountEntry)
+                      (Data.ProtoLens.MapField key value deviceCount)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                intraOpParallelismThreads__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "intra_op_parallelism_threads"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         intraOpParallelismThreads)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                interOpParallelismThreads__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "inter_op_parallelism_threads"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         interOpParallelismThreads)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                usePerSessionThreads__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "use_per_session_threads"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         usePerSessionThreads)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                sessionInterOpThreadPool__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "session_inter_op_thread_pool"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ThreadPoolOptionProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         sessionInterOpThreadPool)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                placementPeriod__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "placement_period"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional placementPeriod)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                deviceFilters__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_filters"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         deviceFilters)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                gpuOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "gpu_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor GPUOptions)
+                      (Data.ProtoLens.OptionalField maybe'gpuOptions)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                allowSoftPlacement__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allow_soft_placement"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         allowSoftPlacement)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                logDevicePlacement__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "log_device_placement"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         logDevicePlacement)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                graphOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "graph_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor GraphOptions)
+                      (Data.ProtoLens.OptionalField maybe'graphOptions)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                operationTimeoutInMs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "operation_timeout_in_ms"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         operationTimeoutInMs)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                rpcOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "rpc_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor RPCOptions)
+                      (Data.ProtoLens.OptionalField maybe'rpcOptions)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                clusterDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cluster_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef)
+                      (Data.ProtoLens.OptionalField maybe'clusterDef)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                isolateSessionState__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "isolate_session_state"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         isolateSessionState)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+                experimental__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "experimental"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ConfigProto'Experimental)
+                      (Data.ProtoLens.OptionalField maybe'experimental)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ConfigProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, deviceCount__field_descriptor),
+                    (Data.ProtoLens.Tag 2,
+                     intraOpParallelismThreads__field_descriptor),
+                    (Data.ProtoLens.Tag 5,
+                     interOpParallelismThreads__field_descriptor),
+                    (Data.ProtoLens.Tag 9, usePerSessionThreads__field_descriptor),
+                    (Data.ProtoLens.Tag 12,
+                     sessionInterOpThreadPool__field_descriptor),
+                    (Data.ProtoLens.Tag 3, placementPeriod__field_descriptor),
+                    (Data.ProtoLens.Tag 4, deviceFilters__field_descriptor),
+                    (Data.ProtoLens.Tag 6, gpuOptions__field_descriptor),
+                    (Data.ProtoLens.Tag 7, allowSoftPlacement__field_descriptor),
+                    (Data.ProtoLens.Tag 8, logDevicePlacement__field_descriptor),
+                    (Data.ProtoLens.Tag 10, graphOptions__field_descriptor),
+                    (Data.ProtoLens.Tag 11, operationTimeoutInMs__field_descriptor),
+                    (Data.ProtoLens.Tag 13, rpcOptions__field_descriptor),
+                    (Data.ProtoLens.Tag 14, clusterDef__field_descriptor),
+                    (Data.ProtoLens.Tag 15, isolateSessionState__field_descriptor),
+                    (Data.ProtoLens.Tag 16, experimental__field_descriptor)])
+                (Data.Map.fromList
+                   [("device_count", deviceCount__field_descriptor),
+                    ("intra_op_parallelism_threads",
+                     intraOpParallelismThreads__field_descriptor),
+                    ("inter_op_parallelism_threads",
+                     interOpParallelismThreads__field_descriptor),
+                    ("use_per_session_threads",
+                     usePerSessionThreads__field_descriptor),
+                    ("session_inter_op_thread_pool",
+                     sessionInterOpThreadPool__field_descriptor),
+                    ("placement_period", placementPeriod__field_descriptor),
+                    ("device_filters", deviceFilters__field_descriptor),
+                    ("gpu_options", gpuOptions__field_descriptor),
+                    ("allow_soft_placement", allowSoftPlacement__field_descriptor),
+                    ("log_device_placement", logDevicePlacement__field_descriptor),
+                    ("graph_options", graphOptions__field_descriptor),
+                    ("operation_timeout_in_ms",
+                     operationTimeoutInMs__field_descriptor),
+                    ("rpc_options", rpcOptions__field_descriptor),
+                    ("cluster_def", clusterDef__field_descriptor),
+                    ("isolate_session_state", isolateSessionState__field_descriptor),
+                    ("experimental", experimental__field_descriptor)])
+
+data ConfigProto'DeviceCountEntry = ConfigProto'DeviceCountEntry{_ConfigProto'DeviceCountEntry'key
+                                                                 :: !Data.Text.Text,
+                                                                 _ConfigProto'DeviceCountEntry'value
+                                                                 :: !Data.Int.Int32}
+                                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f ConfigProto'DeviceCountEntry
+           ConfigProto'DeviceCountEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'DeviceCountEntry'key
+                 (\ x__ y__ -> x__{_ConfigProto'DeviceCountEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f ConfigProto'DeviceCountEntry
+           ConfigProto'DeviceCountEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ConfigProto'DeviceCountEntry'value
+                 (\ x__ y__ -> x__{_ConfigProto'DeviceCountEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ConfigProto'DeviceCountEntry
+         where
+        def
+          = ConfigProto'DeviceCountEntry{_ConfigProto'DeviceCountEntry'key =
+                                           Data.ProtoLens.fieldDefault,
+                                         _ConfigProto'DeviceCountEntry'value =
+                                           Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message ConfigProto'DeviceCountEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto'DeviceCountEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto'DeviceCountEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ConfigProto.DeviceCountEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data ConfigProto'Experimental = ConfigProto'Experimental{_ConfigProto'Experimental'collectiveGroupLeader
+                                                         :: !Data.Text.Text}
+                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "collectiveGroupLeader" f
+           ConfigProto'Experimental
+           ConfigProto'Experimental
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _ConfigProto'Experimental'collectiveGroupLeader
+                 (\ x__ y__ ->
+                    x__{_ConfigProto'Experimental'collectiveGroupLeader = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ConfigProto'Experimental where
+        def
+          = ConfigProto'Experimental{_ConfigProto'Experimental'collectiveGroupLeader
+                                       = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message ConfigProto'Experimental where
+        descriptor
+          = let collectiveGroupLeader__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "collective_group_leader"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         collectiveGroupLeader)
+                      :: Data.ProtoLens.FieldDescriptor ConfigProto'Experimental
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ConfigProto.Experimental")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, collectiveGroupLeader__field_descriptor)])
+                (Data.Map.fromList
+                   [("collective_group_leader",
+                     collectiveGroupLeader__field_descriptor)])
+
+data GPUOptions = GPUOptions{_GPUOptions'perProcessGpuMemoryFraction
+                             :: !Prelude.Double,
+                             _GPUOptions'allowGrowth :: !Prelude.Bool,
+                             _GPUOptions'allocatorType :: !Data.Text.Text,
+                             _GPUOptions'deferredDeletionBytes :: !Data.Int.Int64,
+                             _GPUOptions'visibleDeviceList :: !Data.Text.Text,
+                             _GPUOptions'pollingActiveDelayUsecs :: !Data.Int.Int32,
+                             _GPUOptions'pollingInactiveDelayMsecs :: !Data.Int.Int32,
+                             _GPUOptions'forceGpuCompatible :: !Prelude.Bool,
+                             _GPUOptions'experimental ::
+                             !(Prelude.Maybe GPUOptions'Experimental)}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "perProcessGpuMemoryFraction" f GPUOptions
+           GPUOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _GPUOptions'perProcessGpuMemoryFraction
+                 (\ x__ y__ -> x__{_GPUOptions'perProcessGpuMemoryFraction = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "allowGrowth" f GPUOptions GPUOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'allowGrowth
+                 (\ x__ y__ -> x__{_GPUOptions'allowGrowth = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "allocatorType" f GPUOptions GPUOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'allocatorType
+                 (\ x__ y__ -> x__{_GPUOptions'allocatorType = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "deferredDeletionBytes" f GPUOptions GPUOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'deferredDeletionBytes
+                 (\ x__ y__ -> x__{_GPUOptions'deferredDeletionBytes = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "visibleDeviceList" f GPUOptions GPUOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'visibleDeviceList
+                 (\ x__ y__ -> x__{_GPUOptions'visibleDeviceList = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pollingActiveDelayUsecs" f GPUOptions
+           GPUOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'pollingActiveDelayUsecs
+                 (\ x__ y__ -> x__{_GPUOptions'pollingActiveDelayUsecs = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pollingInactiveDelayMsecs" f GPUOptions
+           GPUOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'pollingInactiveDelayMsecs
+                 (\ x__ y__ -> x__{_GPUOptions'pollingInactiveDelayMsecs = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "forceGpuCompatible" f GPUOptions GPUOptions a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'forceGpuCompatible
+                 (\ x__ y__ -> x__{_GPUOptions'forceGpuCompatible = y__}))
+              Prelude.id
+
+instance (a ~ GPUOptions'Experimental, b ~ GPUOptions'Experimental,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "experimental" f GPUOptions GPUOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'experimental
+                 (\ x__ y__ -> x__{_GPUOptions'experimental = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe GPUOptions'Experimental,
+          b ~ Prelude.Maybe GPUOptions'Experimental, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'experimental" f GPUOptions GPUOptions a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUOptions'experimental
+                 (\ x__ y__ -> x__{_GPUOptions'experimental = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default GPUOptions where
+        def
+          = GPUOptions{_GPUOptions'perProcessGpuMemoryFraction =
+                         Data.ProtoLens.fieldDefault,
+                       _GPUOptions'allowGrowth = Data.ProtoLens.fieldDefault,
+                       _GPUOptions'allocatorType = Data.ProtoLens.fieldDefault,
+                       _GPUOptions'deferredDeletionBytes = Data.ProtoLens.fieldDefault,
+                       _GPUOptions'visibleDeviceList = Data.ProtoLens.fieldDefault,
+                       _GPUOptions'pollingActiveDelayUsecs = Data.ProtoLens.fieldDefault,
+                       _GPUOptions'pollingInactiveDelayMsecs =
+                         Data.ProtoLens.fieldDefault,
+                       _GPUOptions'forceGpuCompatible = Data.ProtoLens.fieldDefault,
+                       _GPUOptions'experimental = Prelude.Nothing}
+
+instance Data.ProtoLens.Message GPUOptions where
+        descriptor
+          = let perProcessGpuMemoryFraction__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "per_process_gpu_memory_fraction"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         perProcessGpuMemoryFraction)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                allowGrowth__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allow_growth"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allowGrowth)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                allocatorType__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "allocator_type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorType)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                deferredDeletionBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "deferred_deletion_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         deferredDeletionBytes)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                visibleDeviceList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "visible_device_list"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         visibleDeviceList)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                pollingActiveDelayUsecs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "polling_active_delay_usecs"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         pollingActiveDelayUsecs)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                pollingInactiveDelayMsecs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "polling_inactive_delay_msecs"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         pollingInactiveDelayMsecs)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                forceGpuCompatible__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "force_gpu_compatible"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         forceGpuCompatible)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+                experimental__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "experimental"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor GPUOptions'Experimental)
+                      (Data.ProtoLens.OptionalField maybe'experimental)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.GPUOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1,
+                     perProcessGpuMemoryFraction__field_descriptor),
+                    (Data.ProtoLens.Tag 4, allowGrowth__field_descriptor),
+                    (Data.ProtoLens.Tag 2, allocatorType__field_descriptor),
+                    (Data.ProtoLens.Tag 3, deferredDeletionBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 5, visibleDeviceList__field_descriptor),
+                    (Data.ProtoLens.Tag 6, pollingActiveDelayUsecs__field_descriptor),
+                    (Data.ProtoLens.Tag 7,
+                     pollingInactiveDelayMsecs__field_descriptor),
+                    (Data.ProtoLens.Tag 8, forceGpuCompatible__field_descriptor),
+                    (Data.ProtoLens.Tag 9, experimental__field_descriptor)])
+                (Data.Map.fromList
+                   [("per_process_gpu_memory_fraction",
+                     perProcessGpuMemoryFraction__field_descriptor),
+                    ("allow_growth", allowGrowth__field_descriptor),
+                    ("allocator_type", allocatorType__field_descriptor),
+                    ("deferred_deletion_bytes",
+                     deferredDeletionBytes__field_descriptor),
+                    ("visible_device_list", visibleDeviceList__field_descriptor),
+                    ("polling_active_delay_usecs",
+                     pollingActiveDelayUsecs__field_descriptor),
+                    ("polling_inactive_delay_msecs",
+                     pollingInactiveDelayMsecs__field_descriptor),
+                    ("force_gpu_compatible", forceGpuCompatible__field_descriptor),
+                    ("experimental", experimental__field_descriptor)])
+
+data GPUOptions'Experimental = GPUOptions'Experimental{_GPUOptions'Experimental'virtualDevices
+                                                       :: ![GPUOptions'Experimental'VirtualDevices],
+                                                       _GPUOptions'Experimental'useUnifiedMemory ::
+                                                       !Prelude.Bool}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [GPUOptions'Experimental'VirtualDevices],
+          b ~ [GPUOptions'Experimental'VirtualDevices], Prelude.Functor f) =>
+         Lens.Labels.HasLens "virtualDevices" f GPUOptions'Experimental
+           GPUOptions'Experimental
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _GPUOptions'Experimental'virtualDevices
+                 (\ x__ y__ -> x__{_GPUOptions'Experimental'virtualDevices = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "useUnifiedMemory" f GPUOptions'Experimental
+           GPUOptions'Experimental
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _GPUOptions'Experimental'useUnifiedMemory
+                 (\ x__ y__ ->
+                    x__{_GPUOptions'Experimental'useUnifiedMemory = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default GPUOptions'Experimental where
+        def
+          = GPUOptions'Experimental{_GPUOptions'Experimental'virtualDevices =
+                                      [],
+                                    _GPUOptions'Experimental'useUnifiedMemory =
+                                      Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message GPUOptions'Experimental where
+        descriptor
+          = let virtualDevices__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "virtual_devices"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           GPUOptions'Experimental'VirtualDevices)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         virtualDevices)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions'Experimental
+                useUnifiedMemory__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "use_unified_memory"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         useUnifiedMemory)
+                      :: Data.ProtoLens.FieldDescriptor GPUOptions'Experimental
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.GPUOptions.Experimental")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, virtualDevices__field_descriptor),
+                    (Data.ProtoLens.Tag 2, useUnifiedMemory__field_descriptor)])
+                (Data.Map.fromList
+                   [("virtual_devices", virtualDevices__field_descriptor),
+                    ("use_unified_memory", useUnifiedMemory__field_descriptor)])
+
+data GPUOptions'Experimental'VirtualDevices = GPUOptions'Experimental'VirtualDevices{_GPUOptions'Experimental'VirtualDevices'memoryLimitMb
+                                                                                     ::
+                                                                                     ![Prelude.Float]}
+                                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryLimitMb" f
+           GPUOptions'Experimental'VirtualDevices
+           GPUOptions'Experimental'VirtualDevices
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _GPUOptions'Experimental'VirtualDevices'memoryLimitMb
+                 (\ x__ y__ ->
+                    x__{_GPUOptions'Experimental'VirtualDevices'memoryLimitMb = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default
+           GPUOptions'Experimental'VirtualDevices
+         where
+        def
+          = GPUOptions'Experimental'VirtualDevices{_GPUOptions'Experimental'VirtualDevices'memoryLimitMb
+                                                     = []}
+
+instance Data.ProtoLens.Message
+           GPUOptions'Experimental'VirtualDevices
+         where
+        descriptor
+          = let memoryLimitMb__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_limit_mb"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed memoryLimitMb)
+                      ::
+                      Data.ProtoLens.FieldDescriptor
+                        GPUOptions'Experimental'VirtualDevices
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack
+                   "tensorflow.GPUOptions.Experimental.VirtualDevices")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, memoryLimitMb__field_descriptor)])
+                (Data.Map.fromList
+                   [("memory_limit_mb", memoryLimitMb__field_descriptor)])
+
+data GraphOptions = GraphOptions{_GraphOptions'enableRecvScheduling
+                                 :: !Prelude.Bool,
+                                 _GraphOptions'optimizerOptions ::
+                                 !(Prelude.Maybe OptimizerOptions),
+                                 _GraphOptions'buildCostModel :: !Data.Int.Int64,
+                                 _GraphOptions'buildCostModelAfter :: !Data.Int.Int64,
+                                 _GraphOptions'inferShapes :: !Prelude.Bool,
+                                 _GraphOptions'placePrunedGraph :: !Prelude.Bool,
+                                 _GraphOptions'enableBfloat16Sendrecv :: !Prelude.Bool,
+                                 _GraphOptions'timelineStep :: !Data.Int.Int32,
+                                 _GraphOptions'rewriteOptions ::
+                                 !(Prelude.Maybe
+                                     Proto.Tensorflow.Core.Protobuf.RewriterConfig.RewriterConfig)}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "enableRecvScheduling" f GraphOptions
+           GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'enableRecvScheduling
+                 (\ x__ y__ -> x__{_GraphOptions'enableRecvScheduling = y__}))
+              Prelude.id
+
+instance (a ~ OptimizerOptions, b ~ OptimizerOptions,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "optimizerOptions" f GraphOptions GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'optimizerOptions
+                 (\ x__ y__ -> x__{_GraphOptions'optimizerOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe OptimizerOptions,
+          b ~ Prelude.Maybe OptimizerOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'optimizerOptions" f GraphOptions
+           GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'optimizerOptions
+                 (\ x__ y__ -> x__{_GraphOptions'optimizerOptions = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "buildCostModel" f GraphOptions GraphOptions a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'buildCostModel
+                 (\ x__ y__ -> x__{_GraphOptions'buildCostModel = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "buildCostModelAfter" f GraphOptions
+           GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'buildCostModelAfter
+                 (\ x__ y__ -> x__{_GraphOptions'buildCostModelAfter = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "inferShapes" f GraphOptions GraphOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'inferShapes
+                 (\ x__ y__ -> x__{_GraphOptions'inferShapes = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "placePrunedGraph" f GraphOptions GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'placePrunedGraph
+                 (\ x__ y__ -> x__{_GraphOptions'placePrunedGraph = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "enableBfloat16Sendrecv" f GraphOptions
+           GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'enableBfloat16Sendrecv
+                 (\ x__ y__ -> x__{_GraphOptions'enableBfloat16Sendrecv = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "timelineStep" f GraphOptions GraphOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'timelineStep
+                 (\ x__ y__ -> x__{_GraphOptions'timelineStep = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Protobuf.RewriterConfig.RewriterConfig,
+          b ~ Proto.Tensorflow.Core.Protobuf.RewriterConfig.RewriterConfig,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "rewriteOptions" f GraphOptions GraphOptions a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'rewriteOptions
+                 (\ x__ y__ -> x__{_GraphOptions'rewriteOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Protobuf.RewriterConfig.RewriterConfig,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Protobuf.RewriterConfig.RewriterConfig,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'rewriteOptions" f GraphOptions
+           GraphOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GraphOptions'rewriteOptions
+                 (\ x__ y__ -> x__{_GraphOptions'rewriteOptions = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default GraphOptions where
+        def
+          = GraphOptions{_GraphOptions'enableRecvScheduling =
+                           Data.ProtoLens.fieldDefault,
+                         _GraphOptions'optimizerOptions = Prelude.Nothing,
+                         _GraphOptions'buildCostModel = Data.ProtoLens.fieldDefault,
+                         _GraphOptions'buildCostModelAfter = Data.ProtoLens.fieldDefault,
+                         _GraphOptions'inferShapes = Data.ProtoLens.fieldDefault,
+                         _GraphOptions'placePrunedGraph = Data.ProtoLens.fieldDefault,
+                         _GraphOptions'enableBfloat16Sendrecv = Data.ProtoLens.fieldDefault,
+                         _GraphOptions'timelineStep = Data.ProtoLens.fieldDefault,
+                         _GraphOptions'rewriteOptions = Prelude.Nothing}
+
+instance Data.ProtoLens.Message GraphOptions where
+        descriptor
+          = let enableRecvScheduling__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "enable_recv_scheduling"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         enableRecvScheduling)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                optimizerOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "optimizer_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor OptimizerOptions)
+                      (Data.ProtoLens.OptionalField maybe'optimizerOptions)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                buildCostModel__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "build_cost_model"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional buildCostModel)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                buildCostModelAfter__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "build_cost_model_after"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         buildCostModelAfter)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                inferShapes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "infer_shapes"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional inferShapes)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                placePrunedGraph__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "place_pruned_graph"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         placePrunedGraph)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                enableBfloat16Sendrecv__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "enable_bfloat16_sendrecv"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         enableBfloat16Sendrecv)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                timelineStep__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "timeline_step"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timelineStep)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+                rewriteOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "rewrite_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.RewriterConfig.RewriterConfig)
+                      (Data.ProtoLens.OptionalField maybe'rewriteOptions)
+                      :: Data.ProtoLens.FieldDescriptor GraphOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.GraphOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 2, enableRecvScheduling__field_descriptor),
+                    (Data.ProtoLens.Tag 3, optimizerOptions__field_descriptor),
+                    (Data.ProtoLens.Tag 4, buildCostModel__field_descriptor),
+                    (Data.ProtoLens.Tag 9, buildCostModelAfter__field_descriptor),
+                    (Data.ProtoLens.Tag 5, inferShapes__field_descriptor),
+                    (Data.ProtoLens.Tag 6, placePrunedGraph__field_descriptor),
+                    (Data.ProtoLens.Tag 7, enableBfloat16Sendrecv__field_descriptor),
+                    (Data.ProtoLens.Tag 8, timelineStep__field_descriptor),
+                    (Data.ProtoLens.Tag 10, rewriteOptions__field_descriptor)])
+                (Data.Map.fromList
+                   [("enable_recv_scheduling",
+                     enableRecvScheduling__field_descriptor),
+                    ("optimizer_options", optimizerOptions__field_descriptor),
+                    ("build_cost_model", buildCostModel__field_descriptor),
+                    ("build_cost_model_after", buildCostModelAfter__field_descriptor),
+                    ("infer_shapes", inferShapes__field_descriptor),
+                    ("place_pruned_graph", placePrunedGraph__field_descriptor),
+                    ("enable_bfloat16_sendrecv",
+                     enableBfloat16Sendrecv__field_descriptor),
+                    ("timeline_step", timelineStep__field_descriptor),
+                    ("rewrite_options", rewriteOptions__field_descriptor)])
+
+data OptimizerOptions = OptimizerOptions{_OptimizerOptions'doCommonSubexpressionElimination
+                                         :: !Prelude.Bool,
+                                         _OptimizerOptions'doConstantFolding :: !Prelude.Bool,
+                                         _OptimizerOptions'maxFoldedConstantInBytes ::
+                                         !Data.Int.Int64,
+                                         _OptimizerOptions'doFunctionInlining :: !Prelude.Bool,
+                                         _OptimizerOptions'optLevel :: !OptimizerOptions'Level,
+                                         _OptimizerOptions'globalJitLevel ::
+                                         !OptimizerOptions'GlobalJitLevel}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "doCommonSubexpressionElimination" f
+           OptimizerOptions
+           OptimizerOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _OptimizerOptions'doCommonSubexpressionElimination
+                 (\ x__ y__ ->
+                    x__{_OptimizerOptions'doCommonSubexpressionElimination = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "doConstantFolding" f OptimizerOptions
+           OptimizerOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OptimizerOptions'doConstantFolding
+                 (\ x__ y__ -> x__{_OptimizerOptions'doConstantFolding = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maxFoldedConstantInBytes" f OptimizerOptions
+           OptimizerOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _OptimizerOptions'maxFoldedConstantInBytes
+                 (\ x__ y__ ->
+                    x__{_OptimizerOptions'maxFoldedConstantInBytes = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "doFunctionInlining" f OptimizerOptions
+           OptimizerOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OptimizerOptions'doFunctionInlining
+                 (\ x__ y__ -> x__{_OptimizerOptions'doFunctionInlining = y__}))
+              Prelude.id
+
+instance (a ~ OptimizerOptions'Level, b ~ OptimizerOptions'Level,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "optLevel" f OptimizerOptions OptimizerOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OptimizerOptions'optLevel
+                 (\ x__ y__ -> x__{_OptimizerOptions'optLevel = y__}))
+              Prelude.id
+
+instance (a ~ OptimizerOptions'GlobalJitLevel,
+          b ~ OptimizerOptions'GlobalJitLevel, Prelude.Functor f) =>
+         Lens.Labels.HasLens "globalJitLevel" f OptimizerOptions
+           OptimizerOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _OptimizerOptions'globalJitLevel
+                 (\ x__ y__ -> x__{_OptimizerOptions'globalJitLevel = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default OptimizerOptions where
+        def
+          = OptimizerOptions{_OptimizerOptions'doCommonSubexpressionElimination
+                               = Data.ProtoLens.fieldDefault,
+                             _OptimizerOptions'doConstantFolding = Data.ProtoLens.fieldDefault,
+                             _OptimizerOptions'maxFoldedConstantInBytes =
+                               Data.ProtoLens.fieldDefault,
+                             _OptimizerOptions'doFunctionInlining = Data.ProtoLens.fieldDefault,
+                             _OptimizerOptions'optLevel = Data.Default.Class.def,
+                             _OptimizerOptions'globalJitLevel = Data.Default.Class.def}
+
+instance Data.ProtoLens.Message OptimizerOptions where
+        descriptor
+          = let doCommonSubexpressionElimination__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor
+                      "do_common_subexpression_elimination"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         doCommonSubexpressionElimination)
+                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
+                doConstantFolding__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "do_constant_folding"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         doConstantFolding)
+                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
+                maxFoldedConstantInBytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "max_folded_constant_in_bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         maxFoldedConstantInBytes)
+                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
+                doFunctionInlining__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "do_function_inlining"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         doFunctionInlining)
+                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
+                optLevel__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "opt_level"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor OptimizerOptions'Level)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional optLevel)
+                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
+                globalJitLevel__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "global_jit_level"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor OptimizerOptions'GlobalJitLevel)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional globalJitLevel)
+                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.OptimizerOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1,
+                     doCommonSubexpressionElimination__field_descriptor),
+                    (Data.ProtoLens.Tag 2, doConstantFolding__field_descriptor),
+                    (Data.ProtoLens.Tag 6, maxFoldedConstantInBytes__field_descriptor),
+                    (Data.ProtoLens.Tag 4, doFunctionInlining__field_descriptor),
+                    (Data.ProtoLens.Tag 3, optLevel__field_descriptor),
+                    (Data.ProtoLens.Tag 5, globalJitLevel__field_descriptor)])
+                (Data.Map.fromList
+                   [("do_common_subexpression_elimination",
+                     doCommonSubexpressionElimination__field_descriptor),
+                    ("do_constant_folding", doConstantFolding__field_descriptor),
+                    ("max_folded_constant_in_bytes",
+                     maxFoldedConstantInBytes__field_descriptor),
+                    ("do_function_inlining", doFunctionInlining__field_descriptor),
+                    ("opt_level", optLevel__field_descriptor),
+                    ("global_jit_level", globalJitLevel__field_descriptor)])
+
+data OptimizerOptions'GlobalJitLevel = OptimizerOptions'OFF
+                                     | OptimizerOptions'DEFAULT
+                                     | OptimizerOptions'ON_1
+                                     | OptimizerOptions'ON_2
+                                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default OptimizerOptions'GlobalJitLevel
+         where
+        def = OptimizerOptions'OFF
+
+instance Data.ProtoLens.FieldDefault
+           OptimizerOptions'GlobalJitLevel
+         where
+        fieldDefault = OptimizerOptions'OFF
+
+instance Data.ProtoLens.MessageEnum OptimizerOptions'GlobalJitLevel
+         where
+        maybeToEnum (-1) = Prelude.Just OptimizerOptions'OFF
+        maybeToEnum 0 = Prelude.Just OptimizerOptions'DEFAULT
+        maybeToEnum 1 = Prelude.Just OptimizerOptions'ON_1
+        maybeToEnum 2 = Prelude.Just OptimizerOptions'ON_2
+        maybeToEnum _ = Prelude.Nothing
+        showEnum OptimizerOptions'OFF = "OFF"
+        showEnum OptimizerOptions'DEFAULT = "DEFAULT"
+        showEnum OptimizerOptions'ON_1 = "ON_1"
+        showEnum OptimizerOptions'ON_2 = "ON_2"
+        readEnum "OFF" = Prelude.Just OptimizerOptions'OFF
+        readEnum "DEFAULT" = Prelude.Just OptimizerOptions'DEFAULT
+        readEnum "ON_1" = Prelude.Just OptimizerOptions'ON_1
+        readEnum "ON_2" = Prelude.Just OptimizerOptions'ON_2
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum OptimizerOptions'GlobalJitLevel where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum GlobalJitLevel: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum OptimizerOptions'OFF = -1
+        fromEnum OptimizerOptions'DEFAULT = 0
+        fromEnum OptimizerOptions'ON_1 = 1
+        fromEnum OptimizerOptions'ON_2 = 2
+        succ OptimizerOptions'ON_2
+          = Prelude.error
+              "OptimizerOptions'GlobalJitLevel.succ: bad argument OptimizerOptions'ON_2. This value would be out of bounds."
+        succ OptimizerOptions'OFF = OptimizerOptions'DEFAULT
+        succ OptimizerOptions'DEFAULT = OptimizerOptions'ON_1
+        succ OptimizerOptions'ON_1 = OptimizerOptions'ON_2
+        pred OptimizerOptions'OFF
+          = Prelude.error
+              "OptimizerOptions'GlobalJitLevel.pred: bad argument OptimizerOptions'OFF. This value would be out of bounds."
+        pred OptimizerOptions'DEFAULT = OptimizerOptions'OFF
+        pred OptimizerOptions'ON_1 = OptimizerOptions'DEFAULT
+        pred OptimizerOptions'ON_2 = OptimizerOptions'ON_1
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded OptimizerOptions'GlobalJitLevel where
+        minBound = OptimizerOptions'OFF
+        maxBound = OptimizerOptions'ON_2
+
+data OptimizerOptions'Level = OptimizerOptions'L0
+                            | OptimizerOptions'L1
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default OptimizerOptions'Level where
+        def = OptimizerOptions'L0
+
+instance Data.ProtoLens.FieldDefault OptimizerOptions'Level where
+        fieldDefault = OptimizerOptions'L0
+
+instance Data.ProtoLens.MessageEnum OptimizerOptions'Level where
+        maybeToEnum (-1) = Prelude.Just OptimizerOptions'L0
+        maybeToEnum 0 = Prelude.Just OptimizerOptions'L1
+        maybeToEnum _ = Prelude.Nothing
+        showEnum OptimizerOptions'L0 = "L0"
+        showEnum OptimizerOptions'L1 = "L1"
+        readEnum "L0" = Prelude.Just OptimizerOptions'L0
+        readEnum "L1" = Prelude.Just OptimizerOptions'L1
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum OptimizerOptions'Level where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum Level: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum OptimizerOptions'L0 = -1
+        fromEnum OptimizerOptions'L1 = 0
+        succ OptimizerOptions'L1
+          = Prelude.error
+              "OptimizerOptions'Level.succ: bad argument OptimizerOptions'L1. This value would be out of bounds."
+        succ OptimizerOptions'L0 = OptimizerOptions'L1
+        pred OptimizerOptions'L0
+          = Prelude.error
+              "OptimizerOptions'Level.pred: bad argument OptimizerOptions'L0. This value would be out of bounds."
+        pred OptimizerOptions'L1 = OptimizerOptions'L0
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded OptimizerOptions'Level where
+        minBound = OptimizerOptions'L0
+        maxBound = OptimizerOptions'L1
+
+data RPCOptions = RPCOptions{_RPCOptions'useRpcForInprocessMaster
+                             :: !Prelude.Bool}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "useRpcForInprocessMaster" f RPCOptions
+           RPCOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RPCOptions'useRpcForInprocessMaster
+                 (\ x__ y__ -> x__{_RPCOptions'useRpcForInprocessMaster = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default RPCOptions where
+        def
+          = RPCOptions{_RPCOptions'useRpcForInprocessMaster =
+                         Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message RPCOptions where
+        descriptor
+          = let useRpcForInprocessMaster__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "use_rpc_for_inprocess_master"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         useRpcForInprocessMaster)
+                      :: Data.ProtoLens.FieldDescriptor RPCOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RPCOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1,
+                     useRpcForInprocessMaster__field_descriptor)])
+                (Data.Map.fromList
+                   [("use_rpc_for_inprocess_master",
+                     useRpcForInprocessMaster__field_descriptor)])
+
+data RunMetadata = RunMetadata{_RunMetadata'stepStats ::
+                               !(Prelude.Maybe
+                                   Proto.Tensorflow.Core.Framework.StepStats.StepStats),
+                               _RunMetadata'costGraph ::
+                               !(Prelude.Maybe
+                                   Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef),
+                               _RunMetadata'partitionGraphs ::
+                               ![Proto.Tensorflow.Core.Framework.Graph.GraphDef]}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.StepStats.StepStats,
+          b ~ Proto.Tensorflow.Core.Framework.StepStats.StepStats,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stepStats" f RunMetadata RunMetadata a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunMetadata'stepStats
+                 (\ x__ y__ -> x__{_RunMetadata'stepStats = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.StepStats.StepStats,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.StepStats.StepStats,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'stepStats" f RunMetadata RunMetadata a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunMetadata'stepStats
+                 (\ x__ y__ -> x__{_RunMetadata'stepStats = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
+          b ~ Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "costGraph" f RunMetadata RunMetadata a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunMetadata'costGraph
+                 (\ x__ y__ -> x__{_RunMetadata'costGraph = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'costGraph" f RunMetadata RunMetadata a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunMetadata'costGraph
+                 (\ x__ y__ -> x__{_RunMetadata'costGraph = y__}))
+              Prelude.id
+
+instance (a ~ [Proto.Tensorflow.Core.Framework.Graph.GraphDef],
+          b ~ [Proto.Tensorflow.Core.Framework.Graph.GraphDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "partitionGraphs" f RunMetadata RunMetadata a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunMetadata'partitionGraphs
+                 (\ x__ y__ -> x__{_RunMetadata'partitionGraphs = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default RunMetadata where
+        def
+          = RunMetadata{_RunMetadata'stepStats = Prelude.Nothing,
+                        _RunMetadata'costGraph = Prelude.Nothing,
+                        _RunMetadata'partitionGraphs = []}
+
+instance Data.ProtoLens.Message RunMetadata where
+        descriptor
+          = let stepStats__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step_stats"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.StepStats.StepStats)
+                      (Data.ProtoLens.OptionalField maybe'stepStats)
+                      :: Data.ProtoLens.FieldDescriptor RunMetadata
+                costGraph__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cost_graph"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef)
+                      (Data.ProtoLens.OptionalField maybe'costGraph)
+                      :: Data.ProtoLens.FieldDescriptor RunMetadata
+                partitionGraphs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "partition_graphs"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Graph.GraphDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         partitionGraphs)
+                      :: Data.ProtoLens.FieldDescriptor RunMetadata
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RunMetadata")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, stepStats__field_descriptor),
+                    (Data.ProtoLens.Tag 2, costGraph__field_descriptor),
+                    (Data.ProtoLens.Tag 3, partitionGraphs__field_descriptor)])
+                (Data.Map.fromList
+                   [("step_stats", stepStats__field_descriptor),
+                    ("cost_graph", costGraph__field_descriptor),
+                    ("partition_graphs", partitionGraphs__field_descriptor)])
+
+data RunOptions = RunOptions{_RunOptions'traceLevel ::
+                             !RunOptions'TraceLevel,
+                             _RunOptions'timeoutInMs :: !Data.Int.Int64,
+                             _RunOptions'interOpThreadPool :: !Data.Int.Int32,
+                             _RunOptions'outputPartitionGraphs :: !Prelude.Bool,
+                             _RunOptions'debugOptions ::
+                             !(Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions),
+                             _RunOptions'reportTensorAllocationsUponOom :: !Prelude.Bool,
+                             _RunOptions'experimental ::
+                             !(Prelude.Maybe RunOptions'Experimental)}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ RunOptions'TraceLevel, b ~ RunOptions'TraceLevel,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "traceLevel" f RunOptions RunOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'traceLevel
+                 (\ x__ y__ -> x__{_RunOptions'traceLevel = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "timeoutInMs" f RunOptions RunOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'timeoutInMs
+                 (\ x__ y__ -> x__{_RunOptions'timeoutInMs = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "interOpThreadPool" f RunOptions RunOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'interOpThreadPool
+                 (\ x__ y__ -> x__{_RunOptions'interOpThreadPool = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "outputPartitionGraphs" f RunOptions RunOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'outputPartitionGraphs
+                 (\ x__ y__ -> x__{_RunOptions'outputPartitionGraphs = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
+          b ~ Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "debugOptions" f RunOptions RunOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'debugOptions
+                 (\ x__ y__ -> x__{_RunOptions'debugOptions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'debugOptions" f RunOptions RunOptions a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'debugOptions
+                 (\ x__ y__ -> x__{_RunOptions'debugOptions = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "reportTensorAllocationsUponOom" f RunOptions
+           RunOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RunOptions'reportTensorAllocationsUponOom
+                 (\ x__ y__ ->
+                    x__{_RunOptions'reportTensorAllocationsUponOom = y__}))
+              Prelude.id
+
+instance (a ~ RunOptions'Experimental, b ~ RunOptions'Experimental,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "experimental" f RunOptions RunOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'experimental
+                 (\ x__ y__ -> x__{_RunOptions'experimental = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe RunOptions'Experimental,
+          b ~ Prelude.Maybe RunOptions'Experimental, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'experimental" f RunOptions RunOptions a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunOptions'experimental
+                 (\ x__ y__ -> x__{_RunOptions'experimental = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default RunOptions where
+        def
+          = RunOptions{_RunOptions'traceLevel = Data.Default.Class.def,
+                       _RunOptions'timeoutInMs = Data.ProtoLens.fieldDefault,
+                       _RunOptions'interOpThreadPool = Data.ProtoLens.fieldDefault,
+                       _RunOptions'outputPartitionGraphs = Data.ProtoLens.fieldDefault,
+                       _RunOptions'debugOptions = Prelude.Nothing,
+                       _RunOptions'reportTensorAllocationsUponOom =
+                         Data.ProtoLens.fieldDefault,
+                       _RunOptions'experimental = Prelude.Nothing}
+
+instance Data.ProtoLens.Message RunOptions where
+        descriptor
+          = let traceLevel__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "trace_level"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RunOptions'TraceLevel)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional traceLevel)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+                timeoutInMs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "timeout_in_ms"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timeoutInMs)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+                interOpThreadPool__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "inter_op_thread_pool"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         interOpThreadPool)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+                outputPartitionGraphs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "output_partition_graphs"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         outputPartitionGraphs)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+                debugOptions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "debug_options"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions)
+                      (Data.ProtoLens.OptionalField maybe'debugOptions)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+                reportTensorAllocationsUponOom__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor
+                      "report_tensor_allocations_upon_oom"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         reportTensorAllocationsUponOom)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+                experimental__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "experimental"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor RunOptions'Experimental)
+                      (Data.ProtoLens.OptionalField maybe'experimental)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RunOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, traceLevel__field_descriptor),
+                    (Data.ProtoLens.Tag 2, timeoutInMs__field_descriptor),
+                    (Data.ProtoLens.Tag 3, interOpThreadPool__field_descriptor),
+                    (Data.ProtoLens.Tag 5, outputPartitionGraphs__field_descriptor),
+                    (Data.ProtoLens.Tag 6, debugOptions__field_descriptor),
+                    (Data.ProtoLens.Tag 7,
+                     reportTensorAllocationsUponOom__field_descriptor),
+                    (Data.ProtoLens.Tag 8, experimental__field_descriptor)])
+                (Data.Map.fromList
+                   [("trace_level", traceLevel__field_descriptor),
+                    ("timeout_in_ms", timeoutInMs__field_descriptor),
+                    ("inter_op_thread_pool", interOpThreadPool__field_descriptor),
+                    ("output_partition_graphs",
+                     outputPartitionGraphs__field_descriptor),
+                    ("debug_options", debugOptions__field_descriptor),
+                    ("report_tensor_allocations_upon_oom",
+                     reportTensorAllocationsUponOom__field_descriptor),
+                    ("experimental", experimental__field_descriptor)])
+
+data RunOptions'Experimental = RunOptions'Experimental{_RunOptions'Experimental'collectiveGraphKey
+                                                       :: !Data.Int.Int64}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "collectiveGraphKey" f RunOptions'Experimental
+           RunOptions'Experimental
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RunOptions'Experimental'collectiveGraphKey
+                 (\ x__ y__ ->
+                    x__{_RunOptions'Experimental'collectiveGraphKey = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default RunOptions'Experimental where
+        def
+          = RunOptions'Experimental{_RunOptions'Experimental'collectiveGraphKey
+                                      = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message RunOptions'Experimental where
+        descriptor
+          = let collectiveGraphKey__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "collective_graph_key"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         collectiveGraphKey)
+                      :: Data.ProtoLens.FieldDescriptor RunOptions'Experimental
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RunOptions.Experimental")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, collectiveGraphKey__field_descriptor)])
+                (Data.Map.fromList
+                   [("collective_graph_key", collectiveGraphKey__field_descriptor)])
+
+data RunOptions'TraceLevel = RunOptions'NO_TRACE
+                           | RunOptions'SOFTWARE_TRACE
+                           | RunOptions'HARDWARE_TRACE
+                           | RunOptions'FULL_TRACE
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default RunOptions'TraceLevel where
+        def = RunOptions'NO_TRACE
+
+instance Data.ProtoLens.FieldDefault RunOptions'TraceLevel where
+        fieldDefault = RunOptions'NO_TRACE
+
+instance Data.ProtoLens.MessageEnum RunOptions'TraceLevel where
+        maybeToEnum 0 = Prelude.Just RunOptions'NO_TRACE
+        maybeToEnum 1 = Prelude.Just RunOptions'SOFTWARE_TRACE
+        maybeToEnum 2 = Prelude.Just RunOptions'HARDWARE_TRACE
+        maybeToEnum 3 = Prelude.Just RunOptions'FULL_TRACE
+        maybeToEnum _ = Prelude.Nothing
+        showEnum RunOptions'NO_TRACE = "NO_TRACE"
+        showEnum RunOptions'SOFTWARE_TRACE = "SOFTWARE_TRACE"
+        showEnum RunOptions'HARDWARE_TRACE = "HARDWARE_TRACE"
+        showEnum RunOptions'FULL_TRACE = "FULL_TRACE"
+        readEnum "NO_TRACE" = Prelude.Just RunOptions'NO_TRACE
+        readEnum "SOFTWARE_TRACE" = Prelude.Just RunOptions'SOFTWARE_TRACE
+        readEnum "HARDWARE_TRACE" = Prelude.Just RunOptions'HARDWARE_TRACE
+        readEnum "FULL_TRACE" = Prelude.Just RunOptions'FULL_TRACE
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum RunOptions'TraceLevel where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum TraceLevel: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum RunOptions'NO_TRACE = 0
+        fromEnum RunOptions'SOFTWARE_TRACE = 1
+        fromEnum RunOptions'HARDWARE_TRACE = 2
+        fromEnum RunOptions'FULL_TRACE = 3
+        succ RunOptions'FULL_TRACE
+          = Prelude.error
+              "RunOptions'TraceLevel.succ: bad argument RunOptions'FULL_TRACE. This value would be out of bounds."
+        succ RunOptions'NO_TRACE = RunOptions'SOFTWARE_TRACE
+        succ RunOptions'SOFTWARE_TRACE = RunOptions'HARDWARE_TRACE
+        succ RunOptions'HARDWARE_TRACE = RunOptions'FULL_TRACE
+        pred RunOptions'NO_TRACE
+          = Prelude.error
+              "RunOptions'TraceLevel.pred: bad argument RunOptions'NO_TRACE. This value would be out of bounds."
+        pred RunOptions'SOFTWARE_TRACE = RunOptions'NO_TRACE
+        pred RunOptions'HARDWARE_TRACE = RunOptions'SOFTWARE_TRACE
+        pred RunOptions'FULL_TRACE = RunOptions'HARDWARE_TRACE
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded RunOptions'TraceLevel where
+        minBound = RunOptions'NO_TRACE
+        maxBound = RunOptions'FULL_TRACE
+
+data TensorConnection = TensorConnection{_TensorConnection'fromTensor
+                                         :: !Data.Text.Text,
+                                         _TensorConnection'toTensor :: !Data.Text.Text}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "fromTensor" f TensorConnection
+           TensorConnection
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorConnection'fromTensor
+                 (\ x__ y__ -> x__{_TensorConnection'fromTensor = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "toTensor" f TensorConnection TensorConnection
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorConnection'toTensor
+                 (\ x__ y__ -> x__{_TensorConnection'toTensor = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorConnection where
+        def
+          = TensorConnection{_TensorConnection'fromTensor =
+                               Data.ProtoLens.fieldDefault,
+                             _TensorConnection'toTensor = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message TensorConnection where
+        descriptor
+          = let fromTensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "from_tensor"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional fromTensor)
+                      :: Data.ProtoLens.FieldDescriptor TensorConnection
+                toTensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "to_tensor"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional toTensor)
+                      :: Data.ProtoLens.FieldDescriptor TensorConnection
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorConnection")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, fromTensor__field_descriptor),
+                    (Data.ProtoLens.Tag 2, toTensor__field_descriptor)])
+                (Data.Map.fromList
+                   [("from_tensor", fromTensor__field_descriptor),
+                    ("to_tensor", toTensor__field_descriptor)])
+
+data ThreadPoolOptionProto = ThreadPoolOptionProto{_ThreadPoolOptionProto'numThreads
+                                                   :: !Data.Int.Int32,
+                                                   _ThreadPoolOptionProto'globalName ::
+                                                   !Data.Text.Text}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numThreads" f ThreadPoolOptionProto
+           ThreadPoolOptionProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ThreadPoolOptionProto'numThreads
+                 (\ x__ y__ -> x__{_ThreadPoolOptionProto'numThreads = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "globalName" f ThreadPoolOptionProto
+           ThreadPoolOptionProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ThreadPoolOptionProto'globalName
+                 (\ x__ y__ -> x__{_ThreadPoolOptionProto'globalName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ThreadPoolOptionProto where
+        def
+          = ThreadPoolOptionProto{_ThreadPoolOptionProto'numThreads =
+                                    Data.ProtoLens.fieldDefault,
+                                  _ThreadPoolOptionProto'globalName = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message ThreadPoolOptionProto where
+        descriptor
+          = let numThreads__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_threads"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numThreads)
+                      :: Data.ProtoLens.FieldDescriptor ThreadPoolOptionProto
+                globalName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "global_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional globalName)
+                      :: Data.ProtoLens.FieldDescriptor ThreadPoolOptionProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ThreadPoolOptionProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, numThreads__field_descriptor),
+                    (Data.ProtoLens.Tag 2, globalName__field_descriptor)])
+                (Data.Map.fromList
+                   [("num_threads", numThreads__field_descriptor),
+                    ("global_name", globalName__field_descriptor)])
+
+allocatorType ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "allocatorType" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+allocatorType
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorType")
+
+allowGrowth ::
+            forall f s t a b . (Lens.Labels.HasLens "allowGrowth" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+allowGrowth
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowGrowth")
+
+allowSoftPlacement ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "allowSoftPlacement" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+allowSoftPlacement
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowSoftPlacement")
+
+buildCostModel ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "buildCostModel" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+buildCostModel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "buildCostModel")
+
+buildCostModelAfter ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "buildCostModelAfter" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+buildCostModelAfter
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "buildCostModelAfter")
+
+clusterDef ::
+           forall f s t a b . (Lens.Labels.HasLens "clusterDef" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+clusterDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "clusterDef")
+
+collectiveGraphKey ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "collectiveGraphKey" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+collectiveGraphKey
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "collectiveGraphKey")
+
+collectiveGroupLeader ::
+                      forall f s t a b .
+                        (Lens.Labels.HasLens "collectiveGroupLeader" f s t a b) =>
+                        Lens.Family2.LensLike f s t a b
+collectiveGroupLeader
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "collectiveGroupLeader")
+
+costGraph ::
+          forall f s t a b . (Lens.Labels.HasLens "costGraph" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+costGraph
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "costGraph")
+
+debugOptions ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "debugOptions" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+debugOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugOptions")
+
+deferredDeletionBytes ::
+                      forall f s t a b .
+                        (Lens.Labels.HasLens "deferredDeletionBytes" f s t a b) =>
+                        Lens.Family2.LensLike f s t a b
+deferredDeletionBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "deferredDeletionBytes")
+
+deviceCount ::
+            forall f s t a b . (Lens.Labels.HasLens "deviceCount" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+deviceCount
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceCount")
+
+deviceFilters ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "deviceFilters" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+deviceFilters
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceFilters")
+
+doCommonSubexpressionElimination ::
+                                 forall f s t a b .
+                                   (Lens.Labels.HasLens "doCommonSubexpressionElimination" f s t a
+                                      b) =>
+                                   Lens.Family2.LensLike f s t a b
+doCommonSubexpressionElimination
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "doCommonSubexpressionElimination")
+
+doConstantFolding ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "doConstantFolding" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+doConstantFolding
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doConstantFolding")
+
+doFunctionInlining ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "doFunctionInlining" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+doFunctionInlining
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doFunctionInlining")
+
+enableBfloat16Sendrecv ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "enableBfloat16Sendrecv" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+enableBfloat16Sendrecv
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "enableBfloat16Sendrecv")
+
+enableRecvScheduling ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "enableRecvScheduling" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+enableRecvScheduling
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "enableRecvScheduling")
+
+experimental ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "experimental" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+experimental
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "experimental")
+
+feed ::
+     forall f s t a b . (Lens.Labels.HasLens "feed" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+feed
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "feed")
+
+fetch ::
+      forall f s t a b . (Lens.Labels.HasLens "fetch" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+fetch
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fetch")
+
+forceGpuCompatible ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "forceGpuCompatible" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+forceGpuCompatible
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "forceGpuCompatible")
+
+fromTensor ::
+           forall f s t a b . (Lens.Labels.HasLens "fromTensor" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+fromTensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fromTensor")
+
+globalJitLevel ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "globalJitLevel" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+globalJitLevel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "globalJitLevel")
+
+globalName ::
+           forall f s t a b . (Lens.Labels.HasLens "globalName" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+globalName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "globalName")
+
+gpuOptions ::
+           forall f s t a b . (Lens.Labels.HasLens "gpuOptions" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+gpuOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "gpuOptions")
+
+graphOptions ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "graphOptions" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+graphOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "graphOptions")
+
+inferShapes ::
+            forall f s t a b . (Lens.Labels.HasLens "inferShapes" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+inferShapes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inferShapes")
+
+interOpParallelismThreads ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "interOpParallelismThreads" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+interOpParallelismThreads
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "interOpParallelismThreads")
+
+interOpThreadPool ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "interOpThreadPool" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+interOpThreadPool
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "interOpThreadPool")
+
+intraOpParallelismThreads ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "intraOpParallelismThreads" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+intraOpParallelismThreads
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "intraOpParallelismThreads")
+
+isolateSessionState ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "isolateSessionState" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+isolateSessionState
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "isolateSessionState")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+logDevicePlacement ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "logDevicePlacement" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+logDevicePlacement
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "logDevicePlacement")
+
+maxFoldedConstantInBytes ::
+                         forall f s t a b .
+                           (Lens.Labels.HasLens "maxFoldedConstantInBytes" f s t a b) =>
+                           Lens.Family2.LensLike f s t a b
+maxFoldedConstantInBytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maxFoldedConstantInBytes")
+
+maybe'clusterDef ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'clusterDef" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'clusterDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'clusterDef")
+
+maybe'costGraph ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'costGraph" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'costGraph
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'costGraph")
+
+maybe'debugOptions ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'debugOptions" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'debugOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'debugOptions")
+
+maybe'experimental ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'experimental" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'experimental
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'experimental")
+
+maybe'gpuOptions ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'gpuOptions" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'gpuOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'gpuOptions")
+
+maybe'graphOptions ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'graphOptions" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'graphOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'graphOptions")
+
+maybe'optimizerOptions ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "maybe'optimizerOptions" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+maybe'optimizerOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'optimizerOptions")
+
+maybe'rewriteOptions ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "maybe'rewriteOptions" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+maybe'rewriteOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'rewriteOptions")
+
+maybe'rpcOptions ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'rpcOptions" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'rpcOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'rpcOptions")
+
+maybe'runOptions ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'runOptions" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'runOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'runOptions")
+
+maybe'stepStats ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'stepStats" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'stepStats
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'stepStats")
+
+memoryLimitMb ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "memoryLimitMb" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+memoryLimitMb
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryLimitMb")
+
+numThreads ::
+           forall f s t a b . (Lens.Labels.HasLens "numThreads" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+numThreads
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numThreads")
+
+operationTimeoutInMs ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "operationTimeoutInMs" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+operationTimeoutInMs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "operationTimeoutInMs")
+
+optLevel ::
+         forall f s t a b . (Lens.Labels.HasLens "optLevel" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+optLevel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optLevel")
+
+optimizerOptions ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "optimizerOptions" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+optimizerOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optimizerOptions")
+
+outputPartitionGraphs ::
+                      forall f s t a b .
+                        (Lens.Labels.HasLens "outputPartitionGraphs" f s t a b) =>
+                        Lens.Family2.LensLike f s t a b
+outputPartitionGraphs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "outputPartitionGraphs")
+
+partitionGraphs ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "partitionGraphs" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+partitionGraphs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "partitionGraphs")
+
+perProcessGpuMemoryFraction ::
+                            forall f s t a b .
+                              (Lens.Labels.HasLens "perProcessGpuMemoryFraction" f s t a b) =>
+                              Lens.Family2.LensLike f s t a b
+perProcessGpuMemoryFraction
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "perProcessGpuMemoryFraction")
+
+placePrunedGraph ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "placePrunedGraph" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+placePrunedGraph
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "placePrunedGraph")
+
+placementPeriod ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "placementPeriod" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+placementPeriod
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "placementPeriod")
+
+pollingActiveDelayUsecs ::
+                        forall f s t a b .
+                          (Lens.Labels.HasLens "pollingActiveDelayUsecs" f s t a b) =>
+                          Lens.Family2.LensLike f s t a b
+pollingActiveDelayUsecs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "pollingActiveDelayUsecs")
+
+pollingInactiveDelayMsecs ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "pollingInactiveDelayMsecs" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+pollingInactiveDelayMsecs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "pollingInactiveDelayMsecs")
+
+reportTensorAllocationsUponOom ::
+                               forall f s t a b .
+                                 (Lens.Labels.HasLens "reportTensorAllocationsUponOom" f s t a b) =>
+                                 Lens.Family2.LensLike f s t a b
+reportTensorAllocationsUponOom
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "reportTensorAllocationsUponOom")
+
+rewriteOptions ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "rewriteOptions" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+rewriteOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "rewriteOptions")
+
+rpcOptions ::
+           forall f s t a b . (Lens.Labels.HasLens "rpcOptions" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+rpcOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "rpcOptions")
+
+runOptions ::
+           forall f s t a b . (Lens.Labels.HasLens "runOptions" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+runOptions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "runOptions")
+
+sessionInterOpThreadPool ::
+                         forall f s t a b .
+                           (Lens.Labels.HasLens "sessionInterOpThreadPool" f s t a b) =>
+                           Lens.Family2.LensLike f s t a b
+sessionInterOpThreadPool
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "sessionInterOpThreadPool")
+
+stepStats ::
+          forall f s t a b . (Lens.Labels.HasLens "stepStats" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+stepStats
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stepStats")
+
+target ::
+       forall f s t a b . (Lens.Labels.HasLens "target" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+target
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "target")
+
+tensorConnection ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "tensorConnection" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+tensorConnection
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorConnection")
+
+timelineStep ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "timelineStep" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+timelineStep
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timelineStep")
+
+timeoutInMs ::
+            forall f s t a b . (Lens.Labels.HasLens "timeoutInMs" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+timeoutInMs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timeoutInMs")
+
+toTensor ::
+         forall f s t a b . (Lens.Labels.HasLens "toTensor" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+toTensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "toTensor")
+
+traceLevel ::
+           forall f s t a b . (Lens.Labels.HasLens "traceLevel" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+traceLevel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "traceLevel")
+
+usePerSessionThreads ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "usePerSessionThreads" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+usePerSessionThreads
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "usePerSessionThreads")
+
+useRpcForInprocessMaster ::
+                         forall f s t a b .
+                           (Lens.Labels.HasLens "useRpcForInprocessMaster" f s t a b) =>
+                           Lens.Family2.LensLike f s t a b
+useRpcForInprocessMaster
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "useRpcForInprocessMaster")
+
+useUnifiedMemory ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "useUnifiedMemory" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+useUnifiedMemory
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "useUnifiedMemory")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
+
+virtualDevices ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "virtualDevices" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+virtualDevices
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "virtualDevices")
+
+visibleDeviceList ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "visibleDeviceList" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+visibleDeviceList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "visibleDeviceList")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/ControlFlow.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/ControlFlow.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/ControlFlow.hs
@@ -0,0 +1,909 @@
+{- This file was auto-generated from tensorflow/core/protobuf/control_flow.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.ControlFlow where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data CondContextDef = CondContextDef{_CondContextDef'contextName ::
+                                     !Data.Text.Text,
+                                     _CondContextDef'predName :: !Data.Text.Text,
+                                     _CondContextDef'pivotName :: !Data.Text.Text,
+                                     _CondContextDef'branch :: !Data.Int.Int32,
+                                     _CondContextDef'valuesDef :: !(Prelude.Maybe ValuesDef),
+                                     _CondContextDef'nestedContexts :: ![ControlFlowContextDef]}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "contextName" f CondContextDef CondContextDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'contextName
+                 (\ x__ y__ -> x__{_CondContextDef'contextName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "predName" f CondContextDef CondContextDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'predName
+                 (\ x__ y__ -> x__{_CondContextDef'predName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pivotName" f CondContextDef CondContextDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'pivotName
+                 (\ x__ y__ -> x__{_CondContextDef'pivotName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "branch" f CondContextDef CondContextDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'branch
+                 (\ x__ y__ -> x__{_CondContextDef'branch = y__}))
+              Prelude.id
+
+instance (a ~ ValuesDef, b ~ ValuesDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "valuesDef" f CondContextDef CondContextDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'valuesDef
+                 (\ x__ y__ -> x__{_CondContextDef'valuesDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe ValuesDef, b ~ Prelude.Maybe ValuesDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'valuesDef" f CondContextDef
+           CondContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'valuesDef
+                 (\ x__ y__ -> x__{_CondContextDef'valuesDef = y__}))
+              Prelude.id
+
+instance (a ~ [ControlFlowContextDef], b ~ [ControlFlowContextDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nestedContexts" f CondContextDef
+           CondContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CondContextDef'nestedContexts
+                 (\ x__ y__ -> x__{_CondContextDef'nestedContexts = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CondContextDef where
+        def
+          = CondContextDef{_CondContextDef'contextName =
+                             Data.ProtoLens.fieldDefault,
+                           _CondContextDef'predName = Data.ProtoLens.fieldDefault,
+                           _CondContextDef'pivotName = Data.ProtoLens.fieldDefault,
+                           _CondContextDef'branch = Data.ProtoLens.fieldDefault,
+                           _CondContextDef'valuesDef = Prelude.Nothing,
+                           _CondContextDef'nestedContexts = []}
+
+instance Data.ProtoLens.Message CondContextDef where
+        descriptor
+          = let contextName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "context_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional contextName)
+                      :: Data.ProtoLens.FieldDescriptor CondContextDef
+                predName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "pred_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional predName)
+                      :: Data.ProtoLens.FieldDescriptor CondContextDef
+                pivotName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "pivot_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional pivotName)
+                      :: Data.ProtoLens.FieldDescriptor CondContextDef
+                branch__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "branch"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional branch)
+                      :: Data.ProtoLens.FieldDescriptor CondContextDef
+                valuesDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "values_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ValuesDef)
+                      (Data.ProtoLens.OptionalField maybe'valuesDef)
+                      :: Data.ProtoLens.FieldDescriptor CondContextDef
+                nestedContexts__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "nested_contexts"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ControlFlowContextDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         nestedContexts)
+                      :: Data.ProtoLens.FieldDescriptor CondContextDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CondContextDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, contextName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, predName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, pivotName__field_descriptor),
+                    (Data.ProtoLens.Tag 4, branch__field_descriptor),
+                    (Data.ProtoLens.Tag 5, valuesDef__field_descriptor),
+                    (Data.ProtoLens.Tag 6, nestedContexts__field_descriptor)])
+                (Data.Map.fromList
+                   [("context_name", contextName__field_descriptor),
+                    ("pred_name", predName__field_descriptor),
+                    ("pivot_name", pivotName__field_descriptor),
+                    ("branch", branch__field_descriptor),
+                    ("values_def", valuesDef__field_descriptor),
+                    ("nested_contexts", nestedContexts__field_descriptor)])
+
+data ControlFlowContextDef = ControlFlowContextDef{_ControlFlowContextDef'ctxt
+                                                   :: !(Prelude.Maybe ControlFlowContextDef'Ctxt)}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data ControlFlowContextDef'Ctxt = ControlFlowContextDef'CondCtxt !CondContextDef
+                                | ControlFlowContextDef'WhileCtxt !WhileContextDef
+                                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Maybe ControlFlowContextDef'Ctxt,
+          b ~ Prelude.Maybe ControlFlowContextDef'Ctxt, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'ctxt" f ControlFlowContextDef
+           ControlFlowContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ControlFlowContextDef'ctxt
+                 (\ x__ y__ -> x__{_ControlFlowContextDef'ctxt = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe CondContextDef,
+          b ~ Prelude.Maybe CondContextDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'condCtxt" f ControlFlowContextDef
+           ControlFlowContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ControlFlowContextDef'ctxt
+                 (\ x__ y__ -> x__{_ControlFlowContextDef'ctxt = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just
+                          (ControlFlowContextDef'CondCtxt x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap ControlFlowContextDef'CondCtxt y__))
+
+instance (a ~ CondContextDef, b ~ CondContextDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "condCtxt" f ControlFlowContextDef
+           ControlFlowContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ControlFlowContextDef'ctxt
+                 (\ x__ y__ -> x__{_ControlFlowContextDef'ctxt = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just
+                             (ControlFlowContextDef'CondCtxt x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap ControlFlowContextDef'CondCtxt y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe WhileContextDef,
+          b ~ Prelude.Maybe WhileContextDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'whileCtxt" f ControlFlowContextDef
+           ControlFlowContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ControlFlowContextDef'ctxt
+                 (\ x__ y__ -> x__{_ControlFlowContextDef'ctxt = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just
+                          (ControlFlowContextDef'WhileCtxt x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap ControlFlowContextDef'WhileCtxt y__))
+
+instance (a ~ WhileContextDef, b ~ WhileContextDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "whileCtxt" f ControlFlowContextDef
+           ControlFlowContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ControlFlowContextDef'ctxt
+                 (\ x__ y__ -> x__{_ControlFlowContextDef'ctxt = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just
+                             (ControlFlowContextDef'WhileCtxt x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap ControlFlowContextDef'WhileCtxt y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance Data.Default.Class.Default ControlFlowContextDef where
+        def
+          = ControlFlowContextDef{_ControlFlowContextDef'ctxt =
+                                    Prelude.Nothing}
+
+instance Data.ProtoLens.Message ControlFlowContextDef where
+        descriptor
+          = let condCtxt__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cond_ctxt"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CondContextDef)
+                      (Data.ProtoLens.OptionalField maybe'condCtxt)
+                      :: Data.ProtoLens.FieldDescriptor ControlFlowContextDef
+                whileCtxt__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "while_ctxt"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor WhileContextDef)
+                      (Data.ProtoLens.OptionalField maybe'whileCtxt)
+                      :: Data.ProtoLens.FieldDescriptor ControlFlowContextDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ControlFlowContextDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, condCtxt__field_descriptor),
+                    (Data.ProtoLens.Tag 2, whileCtxt__field_descriptor)])
+                (Data.Map.fromList
+                   [("cond_ctxt", condCtxt__field_descriptor),
+                    ("while_ctxt", whileCtxt__field_descriptor)])
+
+data ValuesDef = ValuesDef{_ValuesDef'values :: ![Data.Text.Text],
+                           _ValuesDef'externalValues ::
+                           !(Data.Map.Map Data.Text.Text Data.Text.Text)}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "values" f ValuesDef ValuesDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ValuesDef'values
+                 (\ x__ y__ -> x__{_ValuesDef'values = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text Data.Text.Text,
+          b ~ Data.Map.Map Data.Text.Text Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "externalValues" f ValuesDef ValuesDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ValuesDef'externalValues
+                 (\ x__ y__ -> x__{_ValuesDef'externalValues = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ValuesDef where
+        def
+          = ValuesDef{_ValuesDef'values = [],
+                      _ValuesDef'externalValues = Data.Map.empty}
+
+instance Data.ProtoLens.Message ValuesDef where
+        descriptor
+          = let values__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "values"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked values)
+                      :: Data.ProtoLens.FieldDescriptor ValuesDef
+                externalValues__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "external_values"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ValuesDef'ExternalValuesEntry)
+                      (Data.ProtoLens.MapField key value externalValues)
+                      :: Data.ProtoLens.FieldDescriptor ValuesDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ValuesDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, values__field_descriptor),
+                    (Data.ProtoLens.Tag 2, externalValues__field_descriptor)])
+                (Data.Map.fromList
+                   [("values", values__field_descriptor),
+                    ("external_values", externalValues__field_descriptor)])
+
+data ValuesDef'ExternalValuesEntry = ValuesDef'ExternalValuesEntry{_ValuesDef'ExternalValuesEntry'key
+                                                                   :: !Data.Text.Text,
+                                                                   _ValuesDef'ExternalValuesEntry'value
+                                                                   :: !Data.Text.Text}
+                                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f ValuesDef'ExternalValuesEntry
+           ValuesDef'ExternalValuesEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ValuesDef'ExternalValuesEntry'key
+                 (\ x__ y__ -> x__{_ValuesDef'ExternalValuesEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f ValuesDef'ExternalValuesEntry
+           ValuesDef'ExternalValuesEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ValuesDef'ExternalValuesEntry'value
+                 (\ x__ y__ -> x__{_ValuesDef'ExternalValuesEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ValuesDef'ExternalValuesEntry
+         where
+        def
+          = ValuesDef'ExternalValuesEntry{_ValuesDef'ExternalValuesEntry'key
+                                            = Data.ProtoLens.fieldDefault,
+                                          _ValuesDef'ExternalValuesEntry'value =
+                                            Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message ValuesDef'ExternalValuesEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor ValuesDef'ExternalValuesEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
+                      :: Data.ProtoLens.FieldDescriptor ValuesDef'ExternalValuesEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ValuesDef.ExternalValuesEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data WhileContextDef = WhileContextDef{_WhileContextDef'contextName
+                                       :: !Data.Text.Text,
+                                       _WhileContextDef'parallelIterations :: !Data.Int.Int32,
+                                       _WhileContextDef'backProp :: !Prelude.Bool,
+                                       _WhileContextDef'swapMemory :: !Prelude.Bool,
+                                       _WhileContextDef'pivotName :: !Data.Text.Text,
+                                       _WhileContextDef'pivotForPredName :: !Data.Text.Text,
+                                       _WhileContextDef'pivotForBodyName :: !Data.Text.Text,
+                                       _WhileContextDef'loopExitNames :: ![Data.Text.Text],
+                                       _WhileContextDef'loopEnterNames :: ![Data.Text.Text],
+                                       _WhileContextDef'valuesDef :: !(Prelude.Maybe ValuesDef),
+                                       _WhileContextDef'maximumIterationsName :: !Data.Text.Text,
+                                       _WhileContextDef'nestedContexts :: ![ControlFlowContextDef]}
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "contextName" f WhileContextDef WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'contextName
+                 (\ x__ y__ -> x__{_WhileContextDef'contextName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "parallelIterations" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'parallelIterations
+                 (\ x__ y__ -> x__{_WhileContextDef'parallelIterations = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "backProp" f WhileContextDef WhileContextDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'backProp
+                 (\ x__ y__ -> x__{_WhileContextDef'backProp = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "swapMemory" f WhileContextDef WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'swapMemory
+                 (\ x__ y__ -> x__{_WhileContextDef'swapMemory = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pivotName" f WhileContextDef WhileContextDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'pivotName
+                 (\ x__ y__ -> x__{_WhileContextDef'pivotName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pivotForPredName" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'pivotForPredName
+                 (\ x__ y__ -> x__{_WhileContextDef'pivotForPredName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pivotForBodyName" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'pivotForBodyName
+                 (\ x__ y__ -> x__{_WhileContextDef'pivotForBodyName = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "loopExitNames" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'loopExitNames
+                 (\ x__ y__ -> x__{_WhileContextDef'loopExitNames = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "loopEnterNames" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'loopEnterNames
+                 (\ x__ y__ -> x__{_WhileContextDef'loopEnterNames = y__}))
+              Prelude.id
+
+instance (a ~ ValuesDef, b ~ ValuesDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "valuesDef" f WhileContextDef WhileContextDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'valuesDef
+                 (\ x__ y__ -> x__{_WhileContextDef'valuesDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe ValuesDef, b ~ Prelude.Maybe ValuesDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'valuesDef" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'valuesDef
+                 (\ x__ y__ -> x__{_WhileContextDef'valuesDef = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maximumIterationsName" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'maximumIterationsName
+                 (\ x__ y__ -> x__{_WhileContextDef'maximumIterationsName = y__}))
+              Prelude.id
+
+instance (a ~ [ControlFlowContextDef], b ~ [ControlFlowContextDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nestedContexts" f WhileContextDef
+           WhileContextDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WhileContextDef'nestedContexts
+                 (\ x__ y__ -> x__{_WhileContextDef'nestedContexts = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default WhileContextDef where
+        def
+          = WhileContextDef{_WhileContextDef'contextName =
+                              Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'parallelIterations = Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'backProp = Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'swapMemory = Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'pivotName = Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'pivotForPredName = Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'pivotForBodyName = Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'loopExitNames = [],
+                            _WhileContextDef'loopEnterNames = [],
+                            _WhileContextDef'valuesDef = Prelude.Nothing,
+                            _WhileContextDef'maximumIterationsName =
+                              Data.ProtoLens.fieldDefault,
+                            _WhileContextDef'nestedContexts = []}
+
+instance Data.ProtoLens.Message WhileContextDef where
+        descriptor
+          = let contextName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "context_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional contextName)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                parallelIterations__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "parallel_iterations"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         parallelIterations)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                backProp__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "back_prop"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional backProp)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                swapMemory__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "swap_memory"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional swapMemory)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                pivotName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "pivot_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional pivotName)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                pivotForPredName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "pivot_for_pred_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         pivotForPredName)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                pivotForBodyName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "pivot_for_body_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         pivotForBodyName)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                loopExitNames__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "loop_exit_names"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         loopExitNames)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                loopEnterNames__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "loop_enter_names"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         loopEnterNames)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                valuesDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "values_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ValuesDef)
+                      (Data.ProtoLens.OptionalField maybe'valuesDef)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                maximumIterationsName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "maximum_iterations_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         maximumIterationsName)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+                nestedContexts__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "nested_contexts"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ControlFlowContextDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         nestedContexts)
+                      :: Data.ProtoLens.FieldDescriptor WhileContextDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.WhileContextDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, contextName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, parallelIterations__field_descriptor),
+                    (Data.ProtoLens.Tag 3, backProp__field_descriptor),
+                    (Data.ProtoLens.Tag 4, swapMemory__field_descriptor),
+                    (Data.ProtoLens.Tag 5, pivotName__field_descriptor),
+                    (Data.ProtoLens.Tag 6, pivotForPredName__field_descriptor),
+                    (Data.ProtoLens.Tag 7, pivotForBodyName__field_descriptor),
+                    (Data.ProtoLens.Tag 8, loopExitNames__field_descriptor),
+                    (Data.ProtoLens.Tag 10, loopEnterNames__field_descriptor),
+                    (Data.ProtoLens.Tag 9, valuesDef__field_descriptor),
+                    (Data.ProtoLens.Tag 11, maximumIterationsName__field_descriptor),
+                    (Data.ProtoLens.Tag 12, nestedContexts__field_descriptor)])
+                (Data.Map.fromList
+                   [("context_name", contextName__field_descriptor),
+                    ("parallel_iterations", parallelIterations__field_descriptor),
+                    ("back_prop", backProp__field_descriptor),
+                    ("swap_memory", swapMemory__field_descriptor),
+                    ("pivot_name", pivotName__field_descriptor),
+                    ("pivot_for_pred_name", pivotForPredName__field_descriptor),
+                    ("pivot_for_body_name", pivotForBodyName__field_descriptor),
+                    ("loop_exit_names", loopExitNames__field_descriptor),
+                    ("loop_enter_names", loopEnterNames__field_descriptor),
+                    ("values_def", valuesDef__field_descriptor),
+                    ("maximum_iterations_name",
+                     maximumIterationsName__field_descriptor),
+                    ("nested_contexts", nestedContexts__field_descriptor)])
+
+backProp ::
+         forall f s t a b . (Lens.Labels.HasLens "backProp" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+backProp
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "backProp")
+
+branch ::
+       forall f s t a b . (Lens.Labels.HasLens "branch" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+branch
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "branch")
+
+condCtxt ::
+         forall f s t a b . (Lens.Labels.HasLens "condCtxt" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+condCtxt
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "condCtxt")
+
+contextName ::
+            forall f s t a b . (Lens.Labels.HasLens "contextName" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+contextName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "contextName")
+
+externalValues ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "externalValues" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+externalValues
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "externalValues")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+loopEnterNames ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "loopEnterNames" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+loopEnterNames
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "loopEnterNames")
+
+loopExitNames ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "loopExitNames" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+loopExitNames
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "loopExitNames")
+
+maximumIterationsName ::
+                      forall f s t a b .
+                        (Lens.Labels.HasLens "maximumIterationsName" f s t a b) =>
+                        Lens.Family2.LensLike f s t a b
+maximumIterationsName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maximumIterationsName")
+
+maybe'condCtxt ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'condCtxt" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'condCtxt
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'condCtxt")
+
+maybe'ctxt ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'ctxt" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'ctxt
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'ctxt")
+
+maybe'valuesDef ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'valuesDef" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'valuesDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'valuesDef")
+
+maybe'whileCtxt ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'whileCtxt" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'whileCtxt
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'whileCtxt")
+
+nestedContexts ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "nestedContexts" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+nestedContexts
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nestedContexts")
+
+parallelIterations ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "parallelIterations" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+parallelIterations
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "parallelIterations")
+
+pivotForBodyName ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "pivotForBodyName" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+pivotForBodyName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pivotForBodyName")
+
+pivotForPredName ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "pivotForPredName" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+pivotForPredName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pivotForPredName")
+
+pivotName ::
+          forall f s t a b . (Lens.Labels.HasLens "pivotName" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+pivotName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pivotName")
+
+predName ::
+         forall f s t a b . (Lens.Labels.HasLens "predName" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+predName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "predName")
+
+swapMemory ::
+           forall f s t a b . (Lens.Labels.HasLens "swapMemory" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+swapMemory
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "swapMemory")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
+
+values ::
+       forall f s t a b . (Lens.Labels.HasLens "values" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+values
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "values")
+
+valuesDef ::
+          forall f s t a b . (Lens.Labels.HasLens "valuesDef" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+valuesDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "valuesDef")
+
+whileCtxt ::
+          forall f s t a b . (Lens.Labels.HasLens "whileCtxt" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+whileCtxt
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "whileCtxt")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Debug.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Debug.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Debug.hs
@@ -0,0 +1,479 @@
+{- This file was auto-generated from tensorflow/core/protobuf/debug.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.Debug where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data DebugOptions = DebugOptions{_DebugOptions'debugTensorWatchOpts
+                                 :: ![DebugTensorWatch],
+                                 _DebugOptions'globalStep :: !Data.Int.Int64}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [DebugTensorWatch], b ~ [DebugTensorWatch],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "debugTensorWatchOpts" f DebugOptions
+           DebugOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebugOptions'debugTensorWatchOpts
+                 (\ x__ y__ -> x__{_DebugOptions'debugTensorWatchOpts = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "globalStep" f DebugOptions DebugOptions a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebugOptions'globalStep
+                 (\ x__ y__ -> x__{_DebugOptions'globalStep = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DebugOptions where
+        def
+          = DebugOptions{_DebugOptions'debugTensorWatchOpts = [],
+                         _DebugOptions'globalStep = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message DebugOptions where
+        descriptor
+          = let debugTensorWatchOpts__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "debug_tensor_watch_opts"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor DebugTensorWatch)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         debugTensorWatchOpts)
+                      :: Data.ProtoLens.FieldDescriptor DebugOptions
+                globalStep__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "global_step"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional globalStep)
+                      :: Data.ProtoLens.FieldDescriptor DebugOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DebugOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 4, debugTensorWatchOpts__field_descriptor),
+                    (Data.ProtoLens.Tag 10, globalStep__field_descriptor)])
+                (Data.Map.fromList
+                   [("debug_tensor_watch_opts",
+                     debugTensorWatchOpts__field_descriptor),
+                    ("global_step", globalStep__field_descriptor)])
+
+data DebugTensorWatch = DebugTensorWatch{_DebugTensorWatch'nodeName
+                                         :: !Data.Text.Text,
+                                         _DebugTensorWatch'outputSlot :: !Data.Int.Int32,
+                                         _DebugTensorWatch'debugOps :: ![Data.Text.Text],
+                                         _DebugTensorWatch'debugUrls :: ![Data.Text.Text],
+                                         _DebugTensorWatch'tolerateDebugOpCreationFailures ::
+                                         !Prelude.Bool}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nodeName" f DebugTensorWatch DebugTensorWatch
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebugTensorWatch'nodeName
+                 (\ x__ y__ -> x__{_DebugTensorWatch'nodeName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "outputSlot" f DebugTensorWatch
+           DebugTensorWatch
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebugTensorWatch'outputSlot
+                 (\ x__ y__ -> x__{_DebugTensorWatch'outputSlot = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "debugOps" f DebugTensorWatch DebugTensorWatch
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebugTensorWatch'debugOps
+                 (\ x__ y__ -> x__{_DebugTensorWatch'debugOps = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "debugUrls" f DebugTensorWatch DebugTensorWatch
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebugTensorWatch'debugUrls
+                 (\ x__ y__ -> x__{_DebugTensorWatch'debugUrls = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "tolerateDebugOpCreationFailures" f
+           DebugTensorWatch
+           DebugTensorWatch
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _DebugTensorWatch'tolerateDebugOpCreationFailures
+                 (\ x__ y__ ->
+                    x__{_DebugTensorWatch'tolerateDebugOpCreationFailures = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DebugTensorWatch where
+        def
+          = DebugTensorWatch{_DebugTensorWatch'nodeName =
+                               Data.ProtoLens.fieldDefault,
+                             _DebugTensorWatch'outputSlot = Data.ProtoLens.fieldDefault,
+                             _DebugTensorWatch'debugOps = [], _DebugTensorWatch'debugUrls = [],
+                             _DebugTensorWatch'tolerateDebugOpCreationFailures =
+                               Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message DebugTensorWatch where
+        descriptor
+          = let nodeName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional nodeName)
+                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
+                outputSlot__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "output_slot"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional outputSlot)
+                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
+                debugOps__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "debug_ops"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked debugOps)
+                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
+                debugUrls__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "debug_urls"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked debugUrls)
+                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
+                tolerateDebugOpCreationFailures__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor
+                      "tolerate_debug_op_creation_failures"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         tolerateDebugOpCreationFailures)
+                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DebugTensorWatch")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, nodeName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, outputSlot__field_descriptor),
+                    (Data.ProtoLens.Tag 3, debugOps__field_descriptor),
+                    (Data.ProtoLens.Tag 4, debugUrls__field_descriptor),
+                    (Data.ProtoLens.Tag 5,
+                     tolerateDebugOpCreationFailures__field_descriptor)])
+                (Data.Map.fromList
+                   [("node_name", nodeName__field_descriptor),
+                    ("output_slot", outputSlot__field_descriptor),
+                    ("debug_ops", debugOps__field_descriptor),
+                    ("debug_urls", debugUrls__field_descriptor),
+                    ("tolerate_debug_op_creation_failures",
+                     tolerateDebugOpCreationFailures__field_descriptor)])
+
+data DebuggedSourceFile = DebuggedSourceFile{_DebuggedSourceFile'host
+                                             :: !Data.Text.Text,
+                                             _DebuggedSourceFile'filePath :: !Data.Text.Text,
+                                             _DebuggedSourceFile'lastModified :: !Data.Int.Int64,
+                                             _DebuggedSourceFile'bytes :: !Data.Int.Int64,
+                                             _DebuggedSourceFile'lines :: ![Data.Text.Text]}
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "host" f DebuggedSourceFile DebuggedSourceFile
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebuggedSourceFile'host
+                 (\ x__ y__ -> x__{_DebuggedSourceFile'host = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "filePath" f DebuggedSourceFile
+           DebuggedSourceFile
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebuggedSourceFile'filePath
+                 (\ x__ y__ -> x__{_DebuggedSourceFile'filePath = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "lastModified" f DebuggedSourceFile
+           DebuggedSourceFile
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebuggedSourceFile'lastModified
+                 (\ x__ y__ -> x__{_DebuggedSourceFile'lastModified = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "bytes" f DebuggedSourceFile DebuggedSourceFile
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebuggedSourceFile'bytes
+                 (\ x__ y__ -> x__{_DebuggedSourceFile'bytes = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "lines" f DebuggedSourceFile DebuggedSourceFile
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebuggedSourceFile'lines
+                 (\ x__ y__ -> x__{_DebuggedSourceFile'lines = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DebuggedSourceFile where
+        def
+          = DebuggedSourceFile{_DebuggedSourceFile'host =
+                                 Data.ProtoLens.fieldDefault,
+                               _DebuggedSourceFile'filePath = Data.ProtoLens.fieldDefault,
+                               _DebuggedSourceFile'lastModified = Data.ProtoLens.fieldDefault,
+                               _DebuggedSourceFile'bytes = Data.ProtoLens.fieldDefault,
+                               _DebuggedSourceFile'lines = []}
+
+instance Data.ProtoLens.Message DebuggedSourceFile where
+        descriptor
+          = let host__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "host"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional host)
+                      :: Data.ProtoLens.FieldDescriptor DebuggedSourceFile
+                filePath__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "file_path"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional filePath)
+                      :: Data.ProtoLens.FieldDescriptor DebuggedSourceFile
+                lastModified__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "last_modified"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional lastModified)
+                      :: Data.ProtoLens.FieldDescriptor DebuggedSourceFile
+                bytes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bytes"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional bytes)
+                      :: Data.ProtoLens.FieldDescriptor DebuggedSourceFile
+                lines__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "lines"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked lines)
+                      :: Data.ProtoLens.FieldDescriptor DebuggedSourceFile
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DebuggedSourceFile")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, host__field_descriptor),
+                    (Data.ProtoLens.Tag 2, filePath__field_descriptor),
+                    (Data.ProtoLens.Tag 3, lastModified__field_descriptor),
+                    (Data.ProtoLens.Tag 4, bytes__field_descriptor),
+                    (Data.ProtoLens.Tag 5, lines__field_descriptor)])
+                (Data.Map.fromList
+                   [("host", host__field_descriptor),
+                    ("file_path", filePath__field_descriptor),
+                    ("last_modified", lastModified__field_descriptor),
+                    ("bytes", bytes__field_descriptor),
+                    ("lines", lines__field_descriptor)])
+
+data DebuggedSourceFiles = DebuggedSourceFiles{_DebuggedSourceFiles'sourceFiles
+                                               :: ![DebuggedSourceFile]}
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [DebuggedSourceFile], b ~ [DebuggedSourceFile],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "sourceFiles" f DebuggedSourceFiles
+           DebuggedSourceFiles
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _DebuggedSourceFiles'sourceFiles
+                 (\ x__ y__ -> x__{_DebuggedSourceFiles'sourceFiles = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default DebuggedSourceFiles where
+        def = DebuggedSourceFiles{_DebuggedSourceFiles'sourceFiles = []}
+
+instance Data.ProtoLens.Message DebuggedSourceFiles where
+        descriptor
+          = let sourceFiles__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "source_files"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor DebuggedSourceFile)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked sourceFiles)
+                      :: Data.ProtoLens.FieldDescriptor DebuggedSourceFiles
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.DebuggedSourceFiles")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, sourceFiles__field_descriptor)])
+                (Data.Map.fromList
+                   [("source_files", sourceFiles__field_descriptor)])
+
+bytes ::
+      forall f s t a b . (Lens.Labels.HasLens "bytes" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+bytes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bytes")
+
+debugOps ::
+         forall f s t a b . (Lens.Labels.HasLens "debugOps" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+debugOps
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugOps")
+
+debugTensorWatchOpts ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "debugTensorWatchOpts" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+debugTensorWatchOpts
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "debugTensorWatchOpts")
+
+debugUrls ::
+          forall f s t a b . (Lens.Labels.HasLens "debugUrls" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+debugUrls
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugUrls")
+
+filePath ::
+         forall f s t a b . (Lens.Labels.HasLens "filePath" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+filePath
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "filePath")
+
+globalStep ::
+           forall f s t a b . (Lens.Labels.HasLens "globalStep" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+globalStep
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "globalStep")
+
+host ::
+     forall f s t a b . (Lens.Labels.HasLens "host" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+host
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "host")
+
+lastModified ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "lastModified" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+lastModified
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "lastModified")
+
+lines ::
+      forall f s t a b . (Lens.Labels.HasLens "lines" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+lines
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "lines")
+
+nodeName ::
+         forall f s t a b . (Lens.Labels.HasLens "nodeName" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+nodeName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeName")
+
+outputSlot ::
+           forall f s t a b . (Lens.Labels.HasLens "outputSlot" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+outputSlot
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputSlot")
+
+sourceFiles ::
+            forall f s t a b . (Lens.Labels.HasLens "sourceFiles" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+sourceFiles
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sourceFiles")
+
+tolerateDebugOpCreationFailures ::
+                                forall f s t a b .
+                                  (Lens.Labels.HasLens "tolerateDebugOpCreationFailures" f s t a
+                                     b) =>
+                                  Lens.Family2.LensLike f s t a b
+tolerateDebugOpCreationFailures
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "tolerateDebugOpCreationFailures")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/MetaGraph.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/MetaGraph.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/MetaGraph.hs
@@ -0,0 +1,1955 @@
+{- This file was auto-generated from tensorflow/core/protobuf/meta_graph.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.MetaGraph where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Google.Protobuf.Any
+import qualified Proto.Tensorflow.Core.Framework.Graph
+import qualified Proto.Tensorflow.Core.Framework.OpDef
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.Types
+import qualified Proto.Tensorflow.Core.Protobuf.Saver
+
+data AssetFileDef = AssetFileDef{_AssetFileDef'tensorInfo ::
+                                 !(Prelude.Maybe TensorInfo),
+                                 _AssetFileDef'filename :: !Data.Text.Text}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ TensorInfo, b ~ TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorInfo" f AssetFileDef AssetFileDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AssetFileDef'tensorInfo
+                 (\ x__ y__ -> x__{_AssetFileDef'tensorInfo = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe TensorInfo,
+          b ~ Prelude.Maybe TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensorInfo" f AssetFileDef AssetFileDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AssetFileDef'tensorInfo
+                 (\ x__ y__ -> x__{_AssetFileDef'tensorInfo = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "filename" f AssetFileDef AssetFileDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AssetFileDef'filename
+                 (\ x__ y__ -> x__{_AssetFileDef'filename = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AssetFileDef where
+        def
+          = AssetFileDef{_AssetFileDef'tensorInfo = Prelude.Nothing,
+                         _AssetFileDef'filename = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message AssetFileDef where
+        descriptor
+          = let tensorInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorInfo)
+                      (Data.ProtoLens.OptionalField maybe'tensorInfo)
+                      :: Data.ProtoLens.FieldDescriptor AssetFileDef
+                filename__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "filename"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional filename)
+                      :: Data.ProtoLens.FieldDescriptor AssetFileDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AssetFileDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, tensorInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 2, filename__field_descriptor)])
+                (Data.Map.fromList
+                   [("tensor_info", tensorInfo__field_descriptor),
+                    ("filename", filename__field_descriptor)])
+
+data CollectionDef = CollectionDef{_CollectionDef'kind ::
+                                   !(Prelude.Maybe CollectionDef'Kind)}
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data CollectionDef'Kind = CollectionDef'NodeList' !CollectionDef'NodeList
+                        | CollectionDef'BytesList' !CollectionDef'BytesList
+                        | CollectionDef'Int64List' !CollectionDef'Int64List
+                        | CollectionDef'FloatList' !CollectionDef'FloatList
+                        | CollectionDef'AnyList' !CollectionDef'AnyList
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Maybe CollectionDef'Kind,
+          b ~ Prelude.Maybe CollectionDef'Kind, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'kind" f CollectionDef CollectionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe CollectionDef'NodeList,
+          b ~ Prelude.Maybe CollectionDef'NodeList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'nodeList" f CollectionDef CollectionDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CollectionDef'NodeList' x__val) -> Prelude.Just
+                                                                           x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CollectionDef'NodeList' y__))
+
+instance (a ~ CollectionDef'NodeList, b ~ CollectionDef'NodeList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "nodeList" f CollectionDef CollectionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CollectionDef'NodeList' x__val) -> Prelude.Just
+                                                                              x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CollectionDef'NodeList' y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe CollectionDef'BytesList,
+          b ~ Prelude.Maybe CollectionDef'BytesList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'bytesList" f CollectionDef CollectionDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CollectionDef'BytesList' x__val) -> Prelude.Just
+                                                                            x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CollectionDef'BytesList' y__))
+
+instance (a ~ CollectionDef'BytesList, b ~ CollectionDef'BytesList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "bytesList" f CollectionDef CollectionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CollectionDef'BytesList' x__val) -> Prelude.Just
+                                                                               x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CollectionDef'BytesList' y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe CollectionDef'Int64List,
+          b ~ Prelude.Maybe CollectionDef'Int64List, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'int64List" f CollectionDef CollectionDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CollectionDef'Int64List' x__val) -> Prelude.Just
+                                                                            x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CollectionDef'Int64List' y__))
+
+instance (a ~ CollectionDef'Int64List, b ~ CollectionDef'Int64List,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "int64List" f CollectionDef CollectionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CollectionDef'Int64List' x__val) -> Prelude.Just
+                                                                               x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CollectionDef'Int64List' y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe CollectionDef'FloatList,
+          b ~ Prelude.Maybe CollectionDef'FloatList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'floatList" f CollectionDef CollectionDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CollectionDef'FloatList' x__val) -> Prelude.Just
+                                                                            x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CollectionDef'FloatList' y__))
+
+instance (a ~ CollectionDef'FloatList, b ~ CollectionDef'FloatList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "floatList" f CollectionDef CollectionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CollectionDef'FloatList' x__val) -> Prelude.Just
+                                                                               x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CollectionDef'FloatList' y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe CollectionDef'AnyList,
+          b ~ Prelude.Maybe CollectionDef'AnyList, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'anyList" f CollectionDef CollectionDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CollectionDef'AnyList' x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CollectionDef'AnyList' y__))
+
+instance (a ~ CollectionDef'AnyList, b ~ CollectionDef'AnyList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "anyList" f CollectionDef CollectionDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'kind
+                 (\ x__ y__ -> x__{_CollectionDef'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CollectionDef'AnyList' x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CollectionDef'AnyList' y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance Data.Default.Class.Default CollectionDef where
+        def = CollectionDef{_CollectionDef'kind = Prelude.Nothing}
+
+instance Data.ProtoLens.Message CollectionDef where
+        descriptor
+          = let nodeList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "node_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CollectionDef'NodeList)
+                      (Data.ProtoLens.OptionalField maybe'nodeList)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef
+                bytesList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bytes_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CollectionDef'BytesList)
+                      (Data.ProtoLens.OptionalField maybe'bytesList)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef
+                int64List__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "int64_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CollectionDef'Int64List)
+                      (Data.ProtoLens.OptionalField maybe'int64List)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef
+                floatList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "float_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CollectionDef'FloatList)
+                      (Data.ProtoLens.OptionalField maybe'floatList)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef
+                anyList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "any_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CollectionDef'AnyList)
+                      (Data.ProtoLens.OptionalField maybe'anyList)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CollectionDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, nodeList__field_descriptor),
+                    (Data.ProtoLens.Tag 2, bytesList__field_descriptor),
+                    (Data.ProtoLens.Tag 3, int64List__field_descriptor),
+                    (Data.ProtoLens.Tag 4, floatList__field_descriptor),
+                    (Data.ProtoLens.Tag 5, anyList__field_descriptor)])
+                (Data.Map.fromList
+                   [("node_list", nodeList__field_descriptor),
+                    ("bytes_list", bytesList__field_descriptor),
+                    ("int64_list", int64List__field_descriptor),
+                    ("float_list", floatList__field_descriptor),
+                    ("any_list", anyList__field_descriptor)])
+
+data CollectionDef'AnyList = CollectionDef'AnyList{_CollectionDef'AnyList'value
+                                                   :: ![Proto.Google.Protobuf.Any.Any]}
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Proto.Google.Protobuf.Any.Any],
+          b ~ [Proto.Google.Protobuf.Any.Any], Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f CollectionDef'AnyList
+           CollectionDef'AnyList
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'AnyList'value
+                 (\ x__ y__ -> x__{_CollectionDef'AnyList'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CollectionDef'AnyList where
+        def = CollectionDef'AnyList{_CollectionDef'AnyList'value = []}
+
+instance Data.ProtoLens.Message CollectionDef'AnyList where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Proto.Google.Protobuf.Any.Any)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef'AnyList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CollectionDef.AnyList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data CollectionDef'BytesList = CollectionDef'BytesList{_CollectionDef'BytesList'value
+                                                       :: ![Data.ByteString.ByteString]}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.ByteString.ByteString],
+          b ~ [Data.ByteString.ByteString], Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f CollectionDef'BytesList
+           CollectionDef'BytesList
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'BytesList'value
+                 (\ x__ y__ -> x__{_CollectionDef'BytesList'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CollectionDef'BytesList where
+        def = CollectionDef'BytesList{_CollectionDef'BytesList'value = []}
+
+instance Data.ProtoLens.Message CollectionDef'BytesList where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef'BytesList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CollectionDef.BytesList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data CollectionDef'FloatList = CollectionDef'FloatList{_CollectionDef'FloatList'value
+                                                       :: ![Prelude.Float]}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f CollectionDef'FloatList
+           CollectionDef'FloatList
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'FloatList'value
+                 (\ x__ y__ -> x__{_CollectionDef'FloatList'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CollectionDef'FloatList where
+        def = CollectionDef'FloatList{_CollectionDef'FloatList'value = []}
+
+instance Data.ProtoLens.Message CollectionDef'FloatList where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed value)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef'FloatList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CollectionDef.FloatList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data CollectionDef'Int64List = CollectionDef'Int64List{_CollectionDef'Int64List'value
+                                                       :: ![Data.Int.Int64]}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f CollectionDef'Int64List
+           CollectionDef'Int64List
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'Int64List'value
+                 (\ x__ y__ -> x__{_CollectionDef'Int64List'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CollectionDef'Int64List where
+        def = CollectionDef'Int64List{_CollectionDef'Int64List'value = []}
+
+instance Data.ProtoLens.Message CollectionDef'Int64List where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed value)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef'Int64List
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CollectionDef.Int64List")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data CollectionDef'NodeList = CollectionDef'NodeList{_CollectionDef'NodeList'value
+                                                     :: ![Data.Text.Text]}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f CollectionDef'NodeList
+           CollectionDef'NodeList
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CollectionDef'NodeList'value
+                 (\ x__ y__ -> x__{_CollectionDef'NodeList'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CollectionDef'NodeList where
+        def = CollectionDef'NodeList{_CollectionDef'NodeList'value = []}
+
+instance Data.ProtoLens.Message CollectionDef'NodeList where
+        descriptor
+          = let value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)
+                      :: Data.ProtoLens.FieldDescriptor CollectionDef'NodeList
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CollectionDef.NodeList")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
+                (Data.Map.fromList [("value", value__field_descriptor)])
+
+data MetaGraphDef = MetaGraphDef{_MetaGraphDef'metaInfoDef ::
+                                 !(Prelude.Maybe MetaGraphDef'MetaInfoDef),
+                                 _MetaGraphDef'graphDef ::
+                                 !(Prelude.Maybe Proto.Tensorflow.Core.Framework.Graph.GraphDef),
+                                 _MetaGraphDef'saverDef ::
+                                 !(Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Saver.SaverDef),
+                                 _MetaGraphDef'collectionDef ::
+                                 !(Data.Map.Map Data.Text.Text CollectionDef),
+                                 _MetaGraphDef'signatureDef ::
+                                 !(Data.Map.Map Data.Text.Text SignatureDef),
+                                 _MetaGraphDef'assetFileDef :: ![AssetFileDef]}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ MetaGraphDef'MetaInfoDef,
+          b ~ MetaGraphDef'MetaInfoDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "metaInfoDef" f MetaGraphDef MetaGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'metaInfoDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'metaInfoDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe MetaGraphDef'MetaInfoDef,
+          b ~ Prelude.Maybe MetaGraphDef'MetaInfoDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'metaInfoDef" f MetaGraphDef MetaGraphDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'metaInfoDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'metaInfoDef = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Graph.GraphDef,
+          b ~ Proto.Tensorflow.Core.Framework.Graph.GraphDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "graphDef" f MetaGraphDef MetaGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'graphDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'graphDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Graph.GraphDef,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.Graph.GraphDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'graphDef" f MetaGraphDef MetaGraphDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'graphDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'graphDef = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Protobuf.Saver.SaverDef,
+          b ~ Proto.Tensorflow.Core.Protobuf.Saver.SaverDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "saverDef" f MetaGraphDef MetaGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'saverDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'saverDef = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Saver.SaverDef,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Saver.SaverDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'saverDef" f MetaGraphDef MetaGraphDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'saverDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'saverDef = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text CollectionDef,
+          b ~ Data.Map.Map Data.Text.Text CollectionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "collectionDef" f MetaGraphDef MetaGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'collectionDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'collectionDef = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text SignatureDef,
+          b ~ Data.Map.Map Data.Text.Text SignatureDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "signatureDef" f MetaGraphDef MetaGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'signatureDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'signatureDef = y__}))
+              Prelude.id
+
+instance (a ~ [AssetFileDef], b ~ [AssetFileDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "assetFileDef" f MetaGraphDef MetaGraphDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'assetFileDef
+                 (\ x__ y__ -> x__{_MetaGraphDef'assetFileDef = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MetaGraphDef where
+        def
+          = MetaGraphDef{_MetaGraphDef'metaInfoDef = Prelude.Nothing,
+                         _MetaGraphDef'graphDef = Prelude.Nothing,
+                         _MetaGraphDef'saverDef = Prelude.Nothing,
+                         _MetaGraphDef'collectionDef = Data.Map.empty,
+                         _MetaGraphDef'signatureDef = Data.Map.empty,
+                         _MetaGraphDef'assetFileDef = []}
+
+instance Data.ProtoLens.Message MetaGraphDef where
+        descriptor
+          = let metaInfoDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "meta_info_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor MetaGraphDef'MetaInfoDef)
+                      (Data.ProtoLens.OptionalField maybe'metaInfoDef)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef
+                graphDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "graph_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Graph.GraphDef)
+                      (Data.ProtoLens.OptionalField maybe'graphDef)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef
+                saverDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "saver_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.Saver.SaverDef)
+                      (Data.ProtoLens.OptionalField maybe'saverDef)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef
+                collectionDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "collection_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor MetaGraphDef'CollectionDefEntry)
+                      (Data.ProtoLens.MapField key value collectionDef)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef
+                signatureDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "signature_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor MetaGraphDef'SignatureDefEntry)
+                      (Data.ProtoLens.MapField key value signatureDef)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef
+                assetFileDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "asset_file_def"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AssetFileDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked assetFileDef)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MetaGraphDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, metaInfoDef__field_descriptor),
+                    (Data.ProtoLens.Tag 2, graphDef__field_descriptor),
+                    (Data.ProtoLens.Tag 3, saverDef__field_descriptor),
+                    (Data.ProtoLens.Tag 4, collectionDef__field_descriptor),
+                    (Data.ProtoLens.Tag 5, signatureDef__field_descriptor),
+                    (Data.ProtoLens.Tag 6, assetFileDef__field_descriptor)])
+                (Data.Map.fromList
+                   [("meta_info_def", metaInfoDef__field_descriptor),
+                    ("graph_def", graphDef__field_descriptor),
+                    ("saver_def", saverDef__field_descriptor),
+                    ("collection_def", collectionDef__field_descriptor),
+                    ("signature_def", signatureDef__field_descriptor),
+                    ("asset_file_def", assetFileDef__field_descriptor)])
+
+data MetaGraphDef'CollectionDefEntry = MetaGraphDef'CollectionDefEntry{_MetaGraphDef'CollectionDefEntry'key
+                                                                       :: !Data.Text.Text,
+                                                                       _MetaGraphDef'CollectionDefEntry'value
+                                                                       ::
+                                                                       !(Prelude.Maybe
+                                                                           CollectionDef)}
+                                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f MetaGraphDef'CollectionDefEntry
+           MetaGraphDef'CollectionDefEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'CollectionDefEntry'key
+                 (\ x__ y__ -> x__{_MetaGraphDef'CollectionDefEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ CollectionDef, b ~ CollectionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f MetaGraphDef'CollectionDefEntry
+           MetaGraphDef'CollectionDefEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'CollectionDefEntry'value
+                 (\ x__ y__ -> x__{_MetaGraphDef'CollectionDefEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe CollectionDef,
+          b ~ Prelude.Maybe CollectionDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f MetaGraphDef'CollectionDefEntry
+           MetaGraphDef'CollectionDefEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'CollectionDefEntry'value
+                 (\ x__ y__ -> x__{_MetaGraphDef'CollectionDefEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MetaGraphDef'CollectionDefEntry
+         where
+        def
+          = MetaGraphDef'CollectionDefEntry{_MetaGraphDef'CollectionDefEntry'key
+                                              = Data.ProtoLens.fieldDefault,
+                                            _MetaGraphDef'CollectionDefEntry'value =
+                                              Prelude.Nothing}
+
+instance Data.ProtoLens.Message MetaGraphDef'CollectionDefEntry
+         where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'CollectionDefEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CollectionDef)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'CollectionDefEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MetaGraphDef.CollectionDefEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data MetaGraphDef'MetaInfoDef = MetaGraphDef'MetaInfoDef{_MetaGraphDef'MetaInfoDef'metaGraphVersion
+                                                         :: !Data.Text.Text,
+                                                         _MetaGraphDef'MetaInfoDef'strippedOpList ::
+                                                         !(Prelude.Maybe
+                                                             Proto.Tensorflow.Core.Framework.OpDef.OpList),
+                                                         _MetaGraphDef'MetaInfoDef'anyInfo ::
+                                                         !(Prelude.Maybe
+                                                             Proto.Google.Protobuf.Any.Any),
+                                                         _MetaGraphDef'MetaInfoDef'tags ::
+                                                         ![Data.Text.Text],
+                                                         _MetaGraphDef'MetaInfoDef'tensorflowVersion
+                                                         :: !Data.Text.Text,
+                                                         _MetaGraphDef'MetaInfoDef'tensorflowGitVersion
+                                                         :: !Data.Text.Text,
+                                                         _MetaGraphDef'MetaInfoDef'strippedDefaultAttrs
+                                                         :: !Prelude.Bool}
+                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "metaGraphVersion" f MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MetaGraphDef'MetaInfoDef'metaGraphVersion
+                 (\ x__ y__ ->
+                    x__{_MetaGraphDef'MetaInfoDef'metaGraphVersion = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.OpDef.OpList,
+          b ~ Proto.Tensorflow.Core.Framework.OpDef.OpList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "strippedOpList" f MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MetaGraphDef'MetaInfoDef'strippedOpList
+                 (\ x__ y__ -> x__{_MetaGraphDef'MetaInfoDef'strippedOpList = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpList,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpList,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'strippedOpList" f
+           MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MetaGraphDef'MetaInfoDef'strippedOpList
+                 (\ x__ y__ -> x__{_MetaGraphDef'MetaInfoDef'strippedOpList = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Google.Protobuf.Any.Any,
+          b ~ Proto.Google.Protobuf.Any.Any, Prelude.Functor f) =>
+         Lens.Labels.HasLens "anyInfo" f MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'MetaInfoDef'anyInfo
+                 (\ x__ y__ -> x__{_MetaGraphDef'MetaInfoDef'anyInfo = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe Proto.Google.Protobuf.Any.Any,
+          b ~ Prelude.Maybe Proto.Google.Protobuf.Any.Any,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'anyInfo" f MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'MetaInfoDef'anyInfo
+                 (\ x__ y__ -> x__{_MetaGraphDef'MetaInfoDef'anyInfo = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tags" f MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'MetaInfoDef'tags
+                 (\ x__ y__ -> x__{_MetaGraphDef'MetaInfoDef'tags = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorflowVersion" f MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MetaGraphDef'MetaInfoDef'tensorflowVersion
+                 (\ x__ y__ ->
+                    x__{_MetaGraphDef'MetaInfoDef'tensorflowVersion = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorflowGitVersion" f
+           MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MetaGraphDef'MetaInfoDef'tensorflowGitVersion
+                 (\ x__ y__ ->
+                    x__{_MetaGraphDef'MetaInfoDef'tensorflowGitVersion = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "strippedDefaultAttrs" f
+           MetaGraphDef'MetaInfoDef
+           MetaGraphDef'MetaInfoDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MetaGraphDef'MetaInfoDef'strippedDefaultAttrs
+                 (\ x__ y__ ->
+                    x__{_MetaGraphDef'MetaInfoDef'strippedDefaultAttrs = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MetaGraphDef'MetaInfoDef where
+        def
+          = MetaGraphDef'MetaInfoDef{_MetaGraphDef'MetaInfoDef'metaGraphVersion
+                                       = Data.ProtoLens.fieldDefault,
+                                     _MetaGraphDef'MetaInfoDef'strippedOpList = Prelude.Nothing,
+                                     _MetaGraphDef'MetaInfoDef'anyInfo = Prelude.Nothing,
+                                     _MetaGraphDef'MetaInfoDef'tags = [],
+                                     _MetaGraphDef'MetaInfoDef'tensorflowVersion =
+                                       Data.ProtoLens.fieldDefault,
+                                     _MetaGraphDef'MetaInfoDef'tensorflowGitVersion =
+                                       Data.ProtoLens.fieldDefault,
+                                     _MetaGraphDef'MetaInfoDef'strippedDefaultAttrs =
+                                       Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MetaGraphDef'MetaInfoDef where
+        descriptor
+          = let metaGraphVersion__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "meta_graph_version"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         metaGraphVersion)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+                strippedOpList__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "stripped_op_list"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.OpDef.OpList)
+                      (Data.ProtoLens.OptionalField maybe'strippedOpList)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+                anyInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "any_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Proto.Google.Protobuf.Any.Any)
+                      (Data.ProtoLens.OptionalField maybe'anyInfo)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+                tags__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tags"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked tags)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+                tensorflowVersion__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensorflow_version"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         tensorflowVersion)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+                tensorflowGitVersion__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensorflow_git_version"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         tensorflowGitVersion)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+                strippedDefaultAttrs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "stripped_default_attrs"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         strippedDefaultAttrs)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'MetaInfoDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MetaGraphDef.MetaInfoDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, metaGraphVersion__field_descriptor),
+                    (Data.ProtoLens.Tag 2, strippedOpList__field_descriptor),
+                    (Data.ProtoLens.Tag 3, anyInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 4, tags__field_descriptor),
+                    (Data.ProtoLens.Tag 5, tensorflowVersion__field_descriptor),
+                    (Data.ProtoLens.Tag 6, tensorflowGitVersion__field_descriptor),
+                    (Data.ProtoLens.Tag 7, strippedDefaultAttrs__field_descriptor)])
+                (Data.Map.fromList
+                   [("meta_graph_version", metaGraphVersion__field_descriptor),
+                    ("stripped_op_list", strippedOpList__field_descriptor),
+                    ("any_info", anyInfo__field_descriptor),
+                    ("tags", tags__field_descriptor),
+                    ("tensorflow_version", tensorflowVersion__field_descriptor),
+                    ("tensorflow_git_version", tensorflowGitVersion__field_descriptor),
+                    ("stripped_default_attrs",
+                     strippedDefaultAttrs__field_descriptor)])
+
+data MetaGraphDef'SignatureDefEntry = MetaGraphDef'SignatureDefEntry{_MetaGraphDef'SignatureDefEntry'key
+                                                                     :: !Data.Text.Text,
+                                                                     _MetaGraphDef'SignatureDefEntry'value
+                                                                     ::
+                                                                     !(Prelude.Maybe SignatureDef)}
+                                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f MetaGraphDef'SignatureDefEntry
+           MetaGraphDef'SignatureDefEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'SignatureDefEntry'key
+                 (\ x__ y__ -> x__{_MetaGraphDef'SignatureDefEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ SignatureDef, b ~ SignatureDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f MetaGraphDef'SignatureDefEntry
+           MetaGraphDef'SignatureDefEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'SignatureDefEntry'value
+                 (\ x__ y__ -> x__{_MetaGraphDef'SignatureDefEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe SignatureDef,
+          b ~ Prelude.Maybe SignatureDef, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f MetaGraphDef'SignatureDefEntry
+           MetaGraphDef'SignatureDefEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MetaGraphDef'SignatureDefEntry'value
+                 (\ x__ y__ -> x__{_MetaGraphDef'SignatureDefEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MetaGraphDef'SignatureDefEntry
+         where
+        def
+          = MetaGraphDef'SignatureDefEntry{_MetaGraphDef'SignatureDefEntry'key
+                                             = Data.ProtoLens.fieldDefault,
+                                           _MetaGraphDef'SignatureDefEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message MetaGraphDef'SignatureDefEntry
+         where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'SignatureDefEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SignatureDef)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor MetaGraphDef'SignatureDefEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MetaGraphDef.SignatureDefEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data SignatureDef = SignatureDef{_SignatureDef'inputs ::
+                                 !(Data.Map.Map Data.Text.Text TensorInfo),
+                                 _SignatureDef'outputs :: !(Data.Map.Map Data.Text.Text TensorInfo),
+                                 _SignatureDef'methodName :: !Data.Text.Text}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Map.Map Data.Text.Text TensorInfo,
+          b ~ Data.Map.Map Data.Text.Text TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "inputs" f SignatureDef SignatureDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'inputs
+                 (\ x__ y__ -> x__{_SignatureDef'inputs = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text TensorInfo,
+          b ~ Data.Map.Map Data.Text.Text TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "outputs" f SignatureDef SignatureDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'outputs
+                 (\ x__ y__ -> x__{_SignatureDef'outputs = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "methodName" f SignatureDef SignatureDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'methodName
+                 (\ x__ y__ -> x__{_SignatureDef'methodName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SignatureDef where
+        def
+          = SignatureDef{_SignatureDef'inputs = Data.Map.empty,
+                         _SignatureDef'outputs = Data.Map.empty,
+                         _SignatureDef'methodName = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message SignatureDef where
+        descriptor
+          = let inputs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "inputs"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SignatureDef'InputsEntry)
+                      (Data.ProtoLens.MapField key value inputs)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef
+                outputs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "outputs"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SignatureDef'OutputsEntry)
+                      (Data.ProtoLens.MapField key value outputs)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef
+                methodName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "method_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional methodName)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SignatureDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, inputs__field_descriptor),
+                    (Data.ProtoLens.Tag 2, outputs__field_descriptor),
+                    (Data.ProtoLens.Tag 3, methodName__field_descriptor)])
+                (Data.Map.fromList
+                   [("inputs", inputs__field_descriptor),
+                    ("outputs", outputs__field_descriptor),
+                    ("method_name", methodName__field_descriptor)])
+
+data SignatureDef'InputsEntry = SignatureDef'InputsEntry{_SignatureDef'InputsEntry'key
+                                                         :: !Data.Text.Text,
+                                                         _SignatureDef'InputsEntry'value ::
+                                                         !(Prelude.Maybe TensorInfo)}
+                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f SignatureDef'InputsEntry
+           SignatureDef'InputsEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'InputsEntry'key
+                 (\ x__ y__ -> x__{_SignatureDef'InputsEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ TensorInfo, b ~ TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f SignatureDef'InputsEntry
+           SignatureDef'InputsEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'InputsEntry'value
+                 (\ x__ y__ -> x__{_SignatureDef'InputsEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe TensorInfo,
+          b ~ Prelude.Maybe TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f SignatureDef'InputsEntry
+           SignatureDef'InputsEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'InputsEntry'value
+                 (\ x__ y__ -> x__{_SignatureDef'InputsEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SignatureDef'InputsEntry where
+        def
+          = SignatureDef'InputsEntry{_SignatureDef'InputsEntry'key =
+                                       Data.ProtoLens.fieldDefault,
+                                     _SignatureDef'InputsEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message SignatureDef'InputsEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef'InputsEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorInfo)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef'InputsEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SignatureDef.InputsEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data SignatureDef'OutputsEntry = SignatureDef'OutputsEntry{_SignatureDef'OutputsEntry'key
+                                                           :: !Data.Text.Text,
+                                                           _SignatureDef'OutputsEntry'value ::
+                                                           !(Prelude.Maybe TensorInfo)}
+                               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f SignatureDef'OutputsEntry
+           SignatureDef'OutputsEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'OutputsEntry'key
+                 (\ x__ y__ -> x__{_SignatureDef'OutputsEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ TensorInfo, b ~ TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f SignatureDef'OutputsEntry
+           SignatureDef'OutputsEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'OutputsEntry'value
+                 (\ x__ y__ -> x__{_SignatureDef'OutputsEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe TensorInfo,
+          b ~ Prelude.Maybe TensorInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f SignatureDef'OutputsEntry
+           SignatureDef'OutputsEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SignatureDef'OutputsEntry'value
+                 (\ x__ y__ -> x__{_SignatureDef'OutputsEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SignatureDef'OutputsEntry where
+        def
+          = SignatureDef'OutputsEntry{_SignatureDef'OutputsEntry'key =
+                                        Data.ProtoLens.fieldDefault,
+                                      _SignatureDef'OutputsEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message SignatureDef'OutputsEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef'OutputsEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorInfo)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor SignatureDef'OutputsEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SignatureDef.OutputsEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data TensorInfo = TensorInfo{_TensorInfo'dtype ::
+                             !Proto.Tensorflow.Core.Framework.Types.DataType,
+                             _TensorInfo'tensorShape ::
+                             !(Prelude.Maybe
+                                 Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                             _TensorInfo'encoding :: !(Prelude.Maybe TensorInfo'Encoding)}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data TensorInfo'Encoding = TensorInfo'Name !Data.Text.Text
+                         | TensorInfo'CooSparse' !TensorInfo'CooSparse
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'dtype
+                 (\ x__ y__ -> x__{_TensorInfo'dtype = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensorShape" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'tensorShape
+                 (\ x__ y__ -> x__{_TensorInfo'tensorShape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensorShape" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'tensorShape
+                 (\ x__ y__ -> x__{_TensorInfo'tensorShape = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe TensorInfo'Encoding,
+          b ~ Prelude.Maybe TensorInfo'Encoding, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'encoding" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'encoding
+                 (\ x__ y__ -> x__{_TensorInfo'encoding = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Data.Text.Text,
+          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'name" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'encoding
+                 (\ x__ y__ -> x__{_TensorInfo'encoding = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (TensorInfo'Name x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap TensorInfo'Name y__))
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'encoding
+                 (\ x__ y__ -> x__{_TensorInfo'encoding = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (TensorInfo'Name x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap TensorInfo'Name y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe TensorInfo'CooSparse,
+          b ~ Prelude.Maybe TensorInfo'CooSparse, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'cooSparse" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'encoding
+                 (\ x__ y__ -> x__{_TensorInfo'encoding = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (TensorInfo'CooSparse' x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap TensorInfo'CooSparse' y__))
+
+instance (a ~ TensorInfo'CooSparse, b ~ TensorInfo'CooSparse,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cooSparse" f TensorInfo TensorInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'encoding
+                 (\ x__ y__ -> x__{_TensorInfo'encoding = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (TensorInfo'CooSparse' x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap TensorInfo'CooSparse' y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance Data.Default.Class.Default TensorInfo where
+        def
+          = TensorInfo{_TensorInfo'dtype = Data.Default.Class.def,
+                       _TensorInfo'tensorShape = Prelude.Nothing,
+                       _TensorInfo'encoding = Prelude.Nothing}
+
+instance Data.ProtoLens.Message TensorInfo where
+        descriptor
+          = let dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo
+                tensorShape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor_shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'tensorShape)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo
+                name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.OptionalField maybe'name)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo
+                cooSparse__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "coo_sparse"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TensorInfo'CooSparse)
+                      (Data.ProtoLens.OptionalField maybe'cooSparse)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 2, dtype__field_descriptor),
+                    (Data.ProtoLens.Tag 3, tensorShape__field_descriptor),
+                    (Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 4, cooSparse__field_descriptor)])
+                (Data.Map.fromList
+                   [("dtype", dtype__field_descriptor),
+                    ("tensor_shape", tensorShape__field_descriptor),
+                    ("name", name__field_descriptor),
+                    ("coo_sparse", cooSparse__field_descriptor)])
+
+data TensorInfo'CooSparse = TensorInfo'CooSparse{_TensorInfo'CooSparse'valuesTensorName
+                                                 :: !Data.Text.Text,
+                                                 _TensorInfo'CooSparse'indicesTensorName ::
+                                                 !Data.Text.Text,
+                                                 _TensorInfo'CooSparse'denseShapeTensorName ::
+                                                 !Data.Text.Text}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "valuesTensorName" f TensorInfo'CooSparse
+           TensorInfo'CooSparse
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TensorInfo'CooSparse'valuesTensorName
+                 (\ x__ y__ -> x__{_TensorInfo'CooSparse'valuesTensorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "indicesTensorName" f TensorInfo'CooSparse
+           TensorInfo'CooSparse
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _TensorInfo'CooSparse'indicesTensorName
+                 (\ x__ y__ -> x__{_TensorInfo'CooSparse'indicesTensorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "denseShapeTensorName" f TensorInfo'CooSparse
+           TensorInfo'CooSparse
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _TensorInfo'CooSparse'denseShapeTensorName
+                 (\ x__ y__ ->
+                    x__{_TensorInfo'CooSparse'denseShapeTensorName = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TensorInfo'CooSparse where
+        def
+          = TensorInfo'CooSparse{_TensorInfo'CooSparse'valuesTensorName =
+                                   Data.ProtoLens.fieldDefault,
+                                 _TensorInfo'CooSparse'indicesTensorName =
+                                   Data.ProtoLens.fieldDefault,
+                                 _TensorInfo'CooSparse'denseShapeTensorName =
+                                   Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message TensorInfo'CooSparse where
+        descriptor
+          = let valuesTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "values_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         valuesTensorName)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo'CooSparse
+                indicesTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "indices_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         indicesTensorName)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo'CooSparse
+                denseShapeTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dense_shape_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         denseShapeTensorName)
+                      :: Data.ProtoLens.FieldDescriptor TensorInfo'CooSparse
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TensorInfo.CooSparse")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, valuesTensorName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, indicesTensorName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, denseShapeTensorName__field_descriptor)])
+                (Data.Map.fromList
+                   [("values_tensor_name", valuesTensorName__field_descriptor),
+                    ("indices_tensor_name", indicesTensorName__field_descriptor),
+                    ("dense_shape_tensor_name",
+                     denseShapeTensorName__field_descriptor)])
+
+anyInfo ::
+        forall f s t a b . (Lens.Labels.HasLens "anyInfo" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+anyInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "anyInfo")
+
+anyList ::
+        forall f s t a b . (Lens.Labels.HasLens "anyList" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+anyList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "anyList")
+
+assetFileDef ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "assetFileDef" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+assetFileDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "assetFileDef")
+
+bytesList ::
+          forall f s t a b . (Lens.Labels.HasLens "bytesList" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+bytesList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bytesList")
+
+collectionDef ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "collectionDef" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+collectionDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "collectionDef")
+
+cooSparse ::
+          forall f s t a b . (Lens.Labels.HasLens "cooSparse" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+cooSparse
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cooSparse")
+
+denseShapeTensorName ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "denseShapeTensorName" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+denseShapeTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "denseShapeTensorName")
+
+dtype ::
+      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+dtype
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
+
+filename ::
+         forall f s t a b . (Lens.Labels.HasLens "filename" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+filename
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "filename")
+
+floatList ::
+          forall f s t a b . (Lens.Labels.HasLens "floatList" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+floatList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "floatList")
+
+graphDef ::
+         forall f s t a b . (Lens.Labels.HasLens "graphDef" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+graphDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "graphDef")
+
+indicesTensorName ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "indicesTensorName" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+indicesTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "indicesTensorName")
+
+inputs ::
+       forall f s t a b . (Lens.Labels.HasLens "inputs" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+inputs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inputs")
+
+int64List ::
+          forall f s t a b . (Lens.Labels.HasLens "int64List" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+int64List
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "int64List")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+maybe'anyInfo ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'anyInfo" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'anyInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'anyInfo")
+
+maybe'anyList ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'anyList" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'anyList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'anyList")
+
+maybe'bytesList ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'bytesList" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'bytesList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'bytesList")
+
+maybe'cooSparse ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'cooSparse" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'cooSparse
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'cooSparse")
+
+maybe'encoding ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'encoding" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'encoding
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'encoding")
+
+maybe'floatList ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'floatList" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'floatList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'floatList")
+
+maybe'graphDef ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'graphDef" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'graphDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'graphDef")
+
+maybe'int64List ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "maybe'int64List" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+maybe'int64List
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'int64List")
+
+maybe'kind ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'kind" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'kind
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'kind")
+
+maybe'metaInfoDef ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'metaInfoDef" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'metaInfoDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'metaInfoDef")
+
+maybe'name ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'name" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")
+
+maybe'nodeList ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'nodeList" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'nodeList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'nodeList")
+
+maybe'saverDef ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'saverDef" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'saverDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'saverDef")
+
+maybe'strippedOpList ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "maybe'strippedOpList" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+maybe'strippedOpList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'strippedOpList")
+
+maybe'tensorInfo ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'tensorInfo" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'tensorInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensorInfo")
+
+maybe'tensorShape ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'tensorShape" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'tensorShape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensorShape")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+metaGraphVersion ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "metaGraphVersion" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+metaGraphVersion
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metaGraphVersion")
+
+metaInfoDef ::
+            forall f s t a b . (Lens.Labels.HasLens "metaInfoDef" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+metaInfoDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metaInfoDef")
+
+methodName ::
+           forall f s t a b . (Lens.Labels.HasLens "methodName" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+methodName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "methodName")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+nodeList ::
+         forall f s t a b . (Lens.Labels.HasLens "nodeList" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+nodeList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeList")
+
+outputs ::
+        forall f s t a b . (Lens.Labels.HasLens "outputs" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+outputs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputs")
+
+saverDef ::
+         forall f s t a b . (Lens.Labels.HasLens "saverDef" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+saverDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "saverDef")
+
+signatureDef ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "signatureDef" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+signatureDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "signatureDef")
+
+strippedDefaultAttrs ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "strippedDefaultAttrs" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+strippedDefaultAttrs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "strippedDefaultAttrs")
+
+strippedOpList ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "strippedOpList" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+strippedOpList
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "strippedOpList")
+
+tags ::
+     forall f s t a b . (Lens.Labels.HasLens "tags" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+tags
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tags")
+
+tensorInfo ::
+           forall f s t a b . (Lens.Labels.HasLens "tensorInfo" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+tensorInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorInfo")
+
+tensorShape ::
+            forall f s t a b . (Lens.Labels.HasLens "tensorShape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+tensorShape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorShape")
+
+tensorflowGitVersion ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "tensorflowGitVersion" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+tensorflowGitVersion
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "tensorflowGitVersion")
+
+tensorflowVersion ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "tensorflowVersion" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+tensorflowVersion
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorflowVersion")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
+
+valuesTensorName ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "valuesTensorName" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+valuesTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "valuesTensorName")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/NamedTensor.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/NamedTensor.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/NamedTensor.hs
@@ -0,0 +1,125 @@
+{- This file was auto-generated from tensorflow/core/protobuf/named_tensor.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.NamedTensor where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Tensor
+
+data NamedTensorProto = NamedTensorProto{_NamedTensorProto'name ::
+                                         !Data.Text.Text,
+                                         _NamedTensorProto'tensor ::
+                                         !(Prelude.Maybe
+                                             Proto.Tensorflow.Core.Framework.Tensor.TensorProto)}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f NamedTensorProto NamedTensorProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NamedTensorProto'name
+                 (\ x__ y__ -> x__{_NamedTensorProto'name = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f NamedTensorProto NamedTensorProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NamedTensorProto'tensor
+                 (\ x__ y__ -> x__{_NamedTensorProto'tensor = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'tensor" f NamedTensorProto
+           NamedTensorProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _NamedTensorProto'tensor
+                 (\ x__ y__ -> x__{_NamedTensorProto'tensor = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default NamedTensorProto where
+        def
+          = NamedTensorProto{_NamedTensorProto'name =
+                               Data.ProtoLens.fieldDefault,
+                             _NamedTensorProto'tensor = Prelude.Nothing}
+
+instance Data.ProtoLens.Message NamedTensorProto where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor NamedTensorProto
+                tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
+                      (Data.ProtoLens.OptionalField maybe'tensor)
+                      :: Data.ProtoLens.FieldDescriptor NamedTensorProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.NamedTensorProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, tensor__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("tensor", tensor__field_descriptor)])
+
+maybe'tensor ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "maybe'tensor" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+maybe'tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensor")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+tensor ::
+       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/QueueRunner.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/QueueRunner.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/QueueRunner.hs
@@ -0,0 +1,198 @@
+{- This file was auto-generated from tensorflow/core/protobuf/queue_runner.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.QueueRunner where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Lib.Core.ErrorCodes
+
+data QueueRunnerDef = QueueRunnerDef{_QueueRunnerDef'queueName ::
+                                     !Data.Text.Text,
+                                     _QueueRunnerDef'enqueueOpName :: ![Data.Text.Text],
+                                     _QueueRunnerDef'closeOpName :: !Data.Text.Text,
+                                     _QueueRunnerDef'cancelOpName :: !Data.Text.Text,
+                                     _QueueRunnerDef'queueClosedExceptionTypes ::
+                                     ![Proto.Tensorflow.Core.Lib.Core.ErrorCodes.Code]}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "queueName" f QueueRunnerDef QueueRunnerDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _QueueRunnerDef'queueName
+                 (\ x__ y__ -> x__{_QueueRunnerDef'queueName = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "enqueueOpName" f QueueRunnerDef QueueRunnerDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _QueueRunnerDef'enqueueOpName
+                 (\ x__ y__ -> x__{_QueueRunnerDef'enqueueOpName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "closeOpName" f QueueRunnerDef QueueRunnerDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _QueueRunnerDef'closeOpName
+                 (\ x__ y__ -> x__{_QueueRunnerDef'closeOpName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cancelOpName" f QueueRunnerDef QueueRunnerDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _QueueRunnerDef'cancelOpName
+                 (\ x__ y__ -> x__{_QueueRunnerDef'cancelOpName = y__}))
+              Prelude.id
+
+instance (a ~ [Proto.Tensorflow.Core.Lib.Core.ErrorCodes.Code],
+          b ~ [Proto.Tensorflow.Core.Lib.Core.ErrorCodes.Code],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "queueClosedExceptionTypes" f QueueRunnerDef
+           QueueRunnerDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _QueueRunnerDef'queueClosedExceptionTypes
+                 (\ x__ y__ ->
+                    x__{_QueueRunnerDef'queueClosedExceptionTypes = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default QueueRunnerDef where
+        def
+          = QueueRunnerDef{_QueueRunnerDef'queueName =
+                             Data.ProtoLens.fieldDefault,
+                           _QueueRunnerDef'enqueueOpName = [],
+                           _QueueRunnerDef'closeOpName = Data.ProtoLens.fieldDefault,
+                           _QueueRunnerDef'cancelOpName = Data.ProtoLens.fieldDefault,
+                           _QueueRunnerDef'queueClosedExceptionTypes = []}
+
+instance Data.ProtoLens.Message QueueRunnerDef where
+        descriptor
+          = let queueName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "queue_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional queueName)
+                      :: Data.ProtoLens.FieldDescriptor QueueRunnerDef
+                enqueueOpName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "enqueue_op_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         enqueueOpName)
+                      :: Data.ProtoLens.FieldDescriptor QueueRunnerDef
+                closeOpName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "close_op_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional closeOpName)
+                      :: Data.ProtoLens.FieldDescriptor QueueRunnerDef
+                cancelOpName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cancel_op_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional cancelOpName)
+                      :: Data.ProtoLens.FieldDescriptor QueueRunnerDef
+                queueClosedExceptionTypes__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "queue_closed_exception_types"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Lib.Core.ErrorCodes.Code)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed
+                         queueClosedExceptionTypes)
+                      :: Data.ProtoLens.FieldDescriptor QueueRunnerDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.QueueRunnerDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, queueName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, enqueueOpName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, closeOpName__field_descriptor),
+                    (Data.ProtoLens.Tag 4, cancelOpName__field_descriptor),
+                    (Data.ProtoLens.Tag 5,
+                     queueClosedExceptionTypes__field_descriptor)])
+                (Data.Map.fromList
+                   [("queue_name", queueName__field_descriptor),
+                    ("enqueue_op_name", enqueueOpName__field_descriptor),
+                    ("close_op_name", closeOpName__field_descriptor),
+                    ("cancel_op_name", cancelOpName__field_descriptor),
+                    ("queue_closed_exception_types",
+                     queueClosedExceptionTypes__field_descriptor)])
+
+cancelOpName ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "cancelOpName" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+cancelOpName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cancelOpName")
+
+closeOpName ::
+            forall f s t a b . (Lens.Labels.HasLens "closeOpName" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+closeOpName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "closeOpName")
+
+enqueueOpName ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "enqueueOpName" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+enqueueOpName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enqueueOpName")
+
+queueClosedExceptionTypes ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "queueClosedExceptionTypes" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+queueClosedExceptionTypes
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "queueClosedExceptionTypes")
+
+queueName ::
+          forall f s t a b . (Lens.Labels.HasLens "queueName" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+queueName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "queueName")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/RewriterConfig.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/RewriterConfig.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/RewriterConfig.hs
@@ -0,0 +1,1236 @@
+{- This file was auto-generated from tensorflow/core/protobuf/rewriter_config.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.RewriterConfig where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.AttrValue
+
+data AutoParallelOptions = AutoParallelOptions{_AutoParallelOptions'enable
+                                               :: !Prelude.Bool,
+                                               _AutoParallelOptions'numReplicas :: !Data.Int.Int32}
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "enable" f AutoParallelOptions
+           AutoParallelOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AutoParallelOptions'enable
+                 (\ x__ y__ -> x__{_AutoParallelOptions'enable = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numReplicas" f AutoParallelOptions
+           AutoParallelOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AutoParallelOptions'numReplicas
+                 (\ x__ y__ -> x__{_AutoParallelOptions'numReplicas = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AutoParallelOptions where
+        def
+          = AutoParallelOptions{_AutoParallelOptions'enable =
+                                  Data.ProtoLens.fieldDefault,
+                                _AutoParallelOptions'numReplicas = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message AutoParallelOptions where
+        descriptor
+          = let enable__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "enable"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional enable)
+                      :: Data.ProtoLens.FieldDescriptor AutoParallelOptions
+                numReplicas__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_replicas"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numReplicas)
+                      :: Data.ProtoLens.FieldDescriptor AutoParallelOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AutoParallelOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, enable__field_descriptor),
+                    (Data.ProtoLens.Tag 2, numReplicas__field_descriptor)])
+                (Data.Map.fromList
+                   [("enable", enable__field_descriptor),
+                    ("num_replicas", numReplicas__field_descriptor)])
+
+data RewriterConfig = RewriterConfig{_RewriterConfig'layoutOptimizer
+                                     :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'constantFolding :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'shapeOptimization :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'remapping :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'arithmeticOptimization ::
+                                     !RewriterConfig'Toggle,
+                                     _RewriterConfig'dependencyOptimization ::
+                                     !RewriterConfig'Toggle,
+                                     _RewriterConfig'loopOptimization :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'functionOptimization :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'debugStripper :: !RewriterConfig'Toggle,
+                                     _RewriterConfig'disableModelPruning :: !Prelude.Bool,
+                                     _RewriterConfig'scopedAllocatorOptimization ::
+                                     !RewriterConfig'Toggle,
+                                     _RewriterConfig'metaOptimizerIterations ::
+                                     !RewriterConfig'NumIterationsType,
+                                     _RewriterConfig'memoryOptimization ::
+                                     !RewriterConfig'MemOptType,
+                                     _RewriterConfig'memoryOptimizerTargetNodeNameScope ::
+                                     !Data.Text.Text,
+                                     _RewriterConfig'autoParallel ::
+                                     !(Prelude.Maybe AutoParallelOptions),
+                                     _RewriterConfig'scopedAllocatorOpts ::
+                                     !(Prelude.Maybe ScopedAllocatorOptions),
+                                     _RewriterConfig'optimizers :: ![Data.Text.Text],
+                                     _RewriterConfig'customOptimizers ::
+                                     ![RewriterConfig'CustomGraphOptimizer]}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "layoutOptimizer" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'layoutOptimizer
+                 (\ x__ y__ -> x__{_RewriterConfig'layoutOptimizer = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "constantFolding" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'constantFolding
+                 (\ x__ y__ -> x__{_RewriterConfig'constantFolding = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shapeOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'shapeOptimization
+                 (\ x__ y__ -> x__{_RewriterConfig'shapeOptimization = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "remapping" f RewriterConfig RewriterConfig a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'remapping
+                 (\ x__ y__ -> x__{_RewriterConfig'remapping = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "arithmeticOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'arithmeticOptimization
+                 (\ x__ y__ -> x__{_RewriterConfig'arithmeticOptimization = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dependencyOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'dependencyOptimization
+                 (\ x__ y__ -> x__{_RewriterConfig'dependencyOptimization = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "loopOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'loopOptimization
+                 (\ x__ y__ -> x__{_RewriterConfig'loopOptimization = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "functionOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'functionOptimization
+                 (\ x__ y__ -> x__{_RewriterConfig'functionOptimization = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "debugStripper" f RewriterConfig RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'debugStripper
+                 (\ x__ y__ -> x__{_RewriterConfig'debugStripper = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "disableModelPruning" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'disableModelPruning
+                 (\ x__ y__ -> x__{_RewriterConfig'disableModelPruning = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'Toggle, b ~ RewriterConfig'Toggle,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "scopedAllocatorOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'scopedAllocatorOptimization
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'scopedAllocatorOptimization = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'NumIterationsType,
+          b ~ RewriterConfig'NumIterationsType, Prelude.Functor f) =>
+         Lens.Labels.HasLens "metaOptimizerIterations" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'metaOptimizerIterations
+                 (\ x__ y__ -> x__{_RewriterConfig'metaOptimizerIterations = y__}))
+              Prelude.id
+
+instance (a ~ RewriterConfig'MemOptType,
+          b ~ RewriterConfig'MemOptType, Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryOptimization" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'memoryOptimization
+                 (\ x__ y__ -> x__{_RewriterConfig'memoryOptimization = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryOptimizerTargetNodeNameScope" f
+           RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'memoryOptimizerTargetNodeNameScope
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'memoryOptimizerTargetNodeNameScope = y__}))
+              Prelude.id
+
+instance (a ~ AutoParallelOptions, b ~ AutoParallelOptions,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "autoParallel" f RewriterConfig RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'autoParallel
+                 (\ x__ y__ -> x__{_RewriterConfig'autoParallel = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe AutoParallelOptions,
+          b ~ Prelude.Maybe AutoParallelOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'autoParallel" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'autoParallel
+                 (\ x__ y__ -> x__{_RewriterConfig'autoParallel = y__}))
+              Prelude.id
+
+instance (a ~ ScopedAllocatorOptions, b ~ ScopedAllocatorOptions,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "scopedAllocatorOpts" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'scopedAllocatorOpts
+                 (\ x__ y__ -> x__{_RewriterConfig'scopedAllocatorOpts = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe ScopedAllocatorOptions,
+          b ~ Prelude.Maybe ScopedAllocatorOptions, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'scopedAllocatorOpts" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'scopedAllocatorOpts
+                 (\ x__ y__ -> x__{_RewriterConfig'scopedAllocatorOpts = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "optimizers" f RewriterConfig RewriterConfig a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'optimizers
+                 (\ x__ y__ -> x__{_RewriterConfig'optimizers = y__}))
+              Prelude.id
+
+instance (a ~ [RewriterConfig'CustomGraphOptimizer],
+          b ~ [RewriterConfig'CustomGraphOptimizer], Prelude.Functor f) =>
+         Lens.Labels.HasLens "customOptimizers" f RewriterConfig
+           RewriterConfig
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RewriterConfig'customOptimizers
+                 (\ x__ y__ -> x__{_RewriterConfig'customOptimizers = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default RewriterConfig where
+        def
+          = RewriterConfig{_RewriterConfig'layoutOptimizer =
+                             Data.Default.Class.def,
+                           _RewriterConfig'constantFolding = Data.Default.Class.def,
+                           _RewriterConfig'shapeOptimization = Data.Default.Class.def,
+                           _RewriterConfig'remapping = Data.Default.Class.def,
+                           _RewriterConfig'arithmeticOptimization = Data.Default.Class.def,
+                           _RewriterConfig'dependencyOptimization = Data.Default.Class.def,
+                           _RewriterConfig'loopOptimization = Data.Default.Class.def,
+                           _RewriterConfig'functionOptimization = Data.Default.Class.def,
+                           _RewriterConfig'debugStripper = Data.Default.Class.def,
+                           _RewriterConfig'disableModelPruning = Data.ProtoLens.fieldDefault,
+                           _RewriterConfig'scopedAllocatorOptimization =
+                             Data.Default.Class.def,
+                           _RewriterConfig'metaOptimizerIterations = Data.Default.Class.def,
+                           _RewriterConfig'memoryOptimization = Data.Default.Class.def,
+                           _RewriterConfig'memoryOptimizerTargetNodeNameScope =
+                             Data.ProtoLens.fieldDefault,
+                           _RewriterConfig'autoParallel = Prelude.Nothing,
+                           _RewriterConfig'scopedAllocatorOpts = Prelude.Nothing,
+                           _RewriterConfig'optimizers = [],
+                           _RewriterConfig'customOptimizers = []}
+
+instance Data.ProtoLens.Message RewriterConfig where
+        descriptor
+          = let layoutOptimizer__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "layout_optimizer"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional layoutOptimizer)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                constantFolding__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "constant_folding"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional constantFolding)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                shapeOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         shapeOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                remapping__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "remapping"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional remapping)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                arithmeticOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "arithmetic_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         arithmeticOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                dependencyOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dependency_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         dependencyOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                loopOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "loop_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         loopOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                functionOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "function_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         functionOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                debugStripper__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "debug_stripper"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional debugStripper)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                disableModelPruning__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "disable_model_pruning"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         disableModelPruning)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                scopedAllocatorOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "scoped_allocator_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'Toggle)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         scopedAllocatorOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                metaOptimizerIterations__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "meta_optimizer_iterations"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           RewriterConfig'NumIterationsType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         metaOptimizerIterations)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                memoryOptimization__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_optimization"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor RewriterConfig'MemOptType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         memoryOptimization)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                memoryOptimizerTargetNodeNameScope__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor
+                      "memory_optimizer_target_node_name_scope"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         memoryOptimizerTargetNodeNameScope)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                autoParallel__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "auto_parallel"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AutoParallelOptions)
+                      (Data.ProtoLens.OptionalField maybe'autoParallel)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                scopedAllocatorOpts__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "scoped_allocator_opts"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor ScopedAllocatorOptions)
+                      (Data.ProtoLens.OptionalField maybe'scopedAllocatorOpts)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                optimizers__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "optimizers"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked optimizers)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+                customOptimizers__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "custom_optimizers"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           RewriterConfig'CustomGraphOptimizer)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         customOptimizers)
+                      :: Data.ProtoLens.FieldDescriptor RewriterConfig
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RewriterConfig")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, layoutOptimizer__field_descriptor),
+                    (Data.ProtoLens.Tag 3, constantFolding__field_descriptor),
+                    (Data.ProtoLens.Tag 13, shapeOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 14, remapping__field_descriptor),
+                    (Data.ProtoLens.Tag 7, arithmeticOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 8, dependencyOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 9, loopOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 10, functionOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 11, debugStripper__field_descriptor),
+                    (Data.ProtoLens.Tag 2, disableModelPruning__field_descriptor),
+                    (Data.ProtoLens.Tag 15,
+                     scopedAllocatorOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 12, metaOptimizerIterations__field_descriptor),
+                    (Data.ProtoLens.Tag 4, memoryOptimization__field_descriptor),
+                    (Data.ProtoLens.Tag 6,
+                     memoryOptimizerTargetNodeNameScope__field_descriptor),
+                    (Data.ProtoLens.Tag 5, autoParallel__field_descriptor),
+                    (Data.ProtoLens.Tag 16, scopedAllocatorOpts__field_descriptor),
+                    (Data.ProtoLens.Tag 100, optimizers__field_descriptor),
+                    (Data.ProtoLens.Tag 200, customOptimizers__field_descriptor)])
+                (Data.Map.fromList
+                   [("layout_optimizer", layoutOptimizer__field_descriptor),
+                    ("constant_folding", constantFolding__field_descriptor),
+                    ("shape_optimization", shapeOptimization__field_descriptor),
+                    ("remapping", remapping__field_descriptor),
+                    ("arithmetic_optimization",
+                     arithmeticOptimization__field_descriptor),
+                    ("dependency_optimization",
+                     dependencyOptimization__field_descriptor),
+                    ("loop_optimization", loopOptimization__field_descriptor),
+                    ("function_optimization", functionOptimization__field_descriptor),
+                    ("debug_stripper", debugStripper__field_descriptor),
+                    ("disable_model_pruning", disableModelPruning__field_descriptor),
+                    ("scoped_allocator_optimization",
+                     scopedAllocatorOptimization__field_descriptor),
+                    ("meta_optimizer_iterations",
+                     metaOptimizerIterations__field_descriptor),
+                    ("memory_optimization", memoryOptimization__field_descriptor),
+                    ("memory_optimizer_target_node_name_scope",
+                     memoryOptimizerTargetNodeNameScope__field_descriptor),
+                    ("auto_parallel", autoParallel__field_descriptor),
+                    ("scoped_allocator_opts", scopedAllocatorOpts__field_descriptor),
+                    ("optimizers", optimizers__field_descriptor),
+                    ("custom_optimizers", customOptimizers__field_descriptor)])
+
+data RewriterConfig'CustomGraphOptimizer = RewriterConfig'CustomGraphOptimizer{_RewriterConfig'CustomGraphOptimizer'name
+                                                                               :: !Data.Text.Text,
+                                                                               _RewriterConfig'CustomGraphOptimizer'parameterMap
+                                                                               ::
+                                                                               !(Data.Map.Map
+                                                                                   Data.Text.Text
+                                                                                   Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+                                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f RewriterConfig'CustomGraphOptimizer
+           RewriterConfig'CustomGraphOptimizer
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'CustomGraphOptimizer'name
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'CustomGraphOptimizer'name = y__}))
+              Prelude.id
+
+instance (a ~
+            Data.Map.Map Data.Text.Text
+              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Data.Map.Map Data.Text.Text
+              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "parameterMap" f
+           RewriterConfig'CustomGraphOptimizer
+           RewriterConfig'CustomGraphOptimizer
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'CustomGraphOptimizer'parameterMap
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'CustomGraphOptimizer'parameterMap = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default
+           RewriterConfig'CustomGraphOptimizer
+         where
+        def
+          = RewriterConfig'CustomGraphOptimizer{_RewriterConfig'CustomGraphOptimizer'name
+                                                  = Data.ProtoLens.fieldDefault,
+                                                _RewriterConfig'CustomGraphOptimizer'parameterMap =
+                                                  Data.Map.empty}
+
+instance Data.ProtoLens.Message RewriterConfig'CustomGraphOptimizer
+         where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      ::
+                      Data.ProtoLens.FieldDescriptor RewriterConfig'CustomGraphOptimizer
+                parameterMap__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "parameter_map"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry)
+                      (Data.ProtoLens.MapField key value parameterMap)
+                      ::
+                      Data.ProtoLens.FieldDescriptor RewriterConfig'CustomGraphOptimizer
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RewriterConfig.CustomGraphOptimizer")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, parameterMap__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("parameter_map", parameterMap__field_descriptor)])
+
+data RewriterConfig'CustomGraphOptimizer'ParameterMapEntry = RewriterConfig'CustomGraphOptimizer'ParameterMapEntry{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key
+                                                                                                                   ::
+                                                                                                                   !Data.Text.Text,
+                                                                                                                   _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
+                                                                                                                   ::
+                                                                                                                   !(Prelude.Maybe
+                                                                                                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
+                                                           deriving (Prelude.Show, Prelude.Eq,
+                                                                     Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key =
+                          y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value =
+                          y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
+                 (\ x__ y__ ->
+                    x__{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value =
+                          y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+         where
+        def
+          = RewriterConfig'CustomGraphOptimizer'ParameterMapEntry{_RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'key
+                                                                    = Data.ProtoLens.fieldDefault,
+                                                                  _RewriterConfig'CustomGraphOptimizer'ParameterMapEntry'value
+                                                                    = Prelude.Nothing}
+
+instance Data.ProtoLens.Message
+           RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+         where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      ::
+                      Data.ProtoLens.FieldDescriptor
+                        RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      ::
+                      Data.ProtoLens.FieldDescriptor
+                        RewriterConfig'CustomGraphOptimizer'ParameterMapEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack
+                   "tensorflow.RewriterConfig.CustomGraphOptimizer.ParameterMapEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data RewriterConfig'MemOptType = RewriterConfig'DEFAULT_MEM_OPT
+                               | RewriterConfig'NO_MEM_OPT
+                               | RewriterConfig'MANUAL
+                               | RewriterConfig'HEURISTICS
+                               | RewriterConfig'SWAPPING_HEURISTICS
+                               | RewriterConfig'RECOMPUTATION_HEURISTICS
+                               | RewriterConfig'SCHEDULING_HEURISTICS
+                               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default RewriterConfig'MemOptType where
+        def = RewriterConfig'DEFAULT_MEM_OPT
+
+instance Data.ProtoLens.FieldDefault RewriterConfig'MemOptType
+         where
+        fieldDefault = RewriterConfig'DEFAULT_MEM_OPT
+
+instance Data.ProtoLens.MessageEnum RewriterConfig'MemOptType where
+        maybeToEnum 0 = Prelude.Just RewriterConfig'DEFAULT_MEM_OPT
+        maybeToEnum 1 = Prelude.Just RewriterConfig'NO_MEM_OPT
+        maybeToEnum 2 = Prelude.Just RewriterConfig'MANUAL
+        maybeToEnum 3 = Prelude.Just RewriterConfig'HEURISTICS
+        maybeToEnum 4 = Prelude.Just RewriterConfig'SWAPPING_HEURISTICS
+        maybeToEnum 5
+          = Prelude.Just RewriterConfig'RECOMPUTATION_HEURISTICS
+        maybeToEnum 6 = Prelude.Just RewriterConfig'SCHEDULING_HEURISTICS
+        maybeToEnum _ = Prelude.Nothing
+        showEnum RewriterConfig'DEFAULT_MEM_OPT = "DEFAULT_MEM_OPT"
+        showEnum RewriterConfig'NO_MEM_OPT = "NO_MEM_OPT"
+        showEnum RewriterConfig'MANUAL = "MANUAL"
+        showEnum RewriterConfig'HEURISTICS = "HEURISTICS"
+        showEnum RewriterConfig'SWAPPING_HEURISTICS = "SWAPPING_HEURISTICS"
+        showEnum RewriterConfig'RECOMPUTATION_HEURISTICS
+          = "RECOMPUTATION_HEURISTICS"
+        showEnum RewriterConfig'SCHEDULING_HEURISTICS
+          = "SCHEDULING_HEURISTICS"
+        readEnum "DEFAULT_MEM_OPT"
+          = Prelude.Just RewriterConfig'DEFAULT_MEM_OPT
+        readEnum "NO_MEM_OPT" = Prelude.Just RewriterConfig'NO_MEM_OPT
+        readEnum "MANUAL" = Prelude.Just RewriterConfig'MANUAL
+        readEnum "HEURISTICS" = Prelude.Just RewriterConfig'HEURISTICS
+        readEnum "SWAPPING_HEURISTICS"
+          = Prelude.Just RewriterConfig'SWAPPING_HEURISTICS
+        readEnum "RECOMPUTATION_HEURISTICS"
+          = Prelude.Just RewriterConfig'RECOMPUTATION_HEURISTICS
+        readEnum "SCHEDULING_HEURISTICS"
+          = Prelude.Just RewriterConfig'SCHEDULING_HEURISTICS
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum RewriterConfig'MemOptType where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum MemOptType: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum RewriterConfig'DEFAULT_MEM_OPT = 0
+        fromEnum RewriterConfig'NO_MEM_OPT = 1
+        fromEnum RewriterConfig'MANUAL = 2
+        fromEnum RewriterConfig'HEURISTICS = 3
+        fromEnum RewriterConfig'SWAPPING_HEURISTICS = 4
+        fromEnum RewriterConfig'RECOMPUTATION_HEURISTICS = 5
+        fromEnum RewriterConfig'SCHEDULING_HEURISTICS = 6
+        succ RewriterConfig'SCHEDULING_HEURISTICS
+          = Prelude.error
+              "RewriterConfig'MemOptType.succ: bad argument RewriterConfig'SCHEDULING_HEURISTICS. This value would be out of bounds."
+        succ RewriterConfig'DEFAULT_MEM_OPT = RewriterConfig'NO_MEM_OPT
+        succ RewriterConfig'NO_MEM_OPT = RewriterConfig'MANUAL
+        succ RewriterConfig'MANUAL = RewriterConfig'HEURISTICS
+        succ RewriterConfig'HEURISTICS = RewriterConfig'SWAPPING_HEURISTICS
+        succ RewriterConfig'SWAPPING_HEURISTICS
+          = RewriterConfig'RECOMPUTATION_HEURISTICS
+        succ RewriterConfig'RECOMPUTATION_HEURISTICS
+          = RewriterConfig'SCHEDULING_HEURISTICS
+        pred RewriterConfig'DEFAULT_MEM_OPT
+          = Prelude.error
+              "RewriterConfig'MemOptType.pred: bad argument RewriterConfig'DEFAULT_MEM_OPT. This value would be out of bounds."
+        pred RewriterConfig'NO_MEM_OPT = RewriterConfig'DEFAULT_MEM_OPT
+        pred RewriterConfig'MANUAL = RewriterConfig'NO_MEM_OPT
+        pred RewriterConfig'HEURISTICS = RewriterConfig'MANUAL
+        pred RewriterConfig'SWAPPING_HEURISTICS = RewriterConfig'HEURISTICS
+        pred RewriterConfig'RECOMPUTATION_HEURISTICS
+          = RewriterConfig'SWAPPING_HEURISTICS
+        pred RewriterConfig'SCHEDULING_HEURISTICS
+          = RewriterConfig'RECOMPUTATION_HEURISTICS
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded RewriterConfig'MemOptType where
+        minBound = RewriterConfig'DEFAULT_MEM_OPT
+        maxBound = RewriterConfig'SCHEDULING_HEURISTICS
+
+data RewriterConfig'NumIterationsType = RewriterConfig'DEFAULT_NUM_ITERS
+                                      | RewriterConfig'ONE
+                                      | RewriterConfig'TWO
+                                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default
+           RewriterConfig'NumIterationsType
+         where
+        def = RewriterConfig'DEFAULT_NUM_ITERS
+
+instance Data.ProtoLens.FieldDefault
+           RewriterConfig'NumIterationsType
+         where
+        fieldDefault = RewriterConfig'DEFAULT_NUM_ITERS
+
+instance Data.ProtoLens.MessageEnum
+           RewriterConfig'NumIterationsType
+         where
+        maybeToEnum 0 = Prelude.Just RewriterConfig'DEFAULT_NUM_ITERS
+        maybeToEnum 1 = Prelude.Just RewriterConfig'ONE
+        maybeToEnum 2 = Prelude.Just RewriterConfig'TWO
+        maybeToEnum _ = Prelude.Nothing
+        showEnum RewriterConfig'DEFAULT_NUM_ITERS = "DEFAULT_NUM_ITERS"
+        showEnum RewriterConfig'ONE = "ONE"
+        showEnum RewriterConfig'TWO = "TWO"
+        readEnum "DEFAULT_NUM_ITERS"
+          = Prelude.Just RewriterConfig'DEFAULT_NUM_ITERS
+        readEnum "ONE" = Prelude.Just RewriterConfig'ONE
+        readEnum "TWO" = Prelude.Just RewriterConfig'TWO
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum RewriterConfig'NumIterationsType where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum NumIterationsType: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum RewriterConfig'DEFAULT_NUM_ITERS = 0
+        fromEnum RewriterConfig'ONE = 1
+        fromEnum RewriterConfig'TWO = 2
+        succ RewriterConfig'TWO
+          = Prelude.error
+              "RewriterConfig'NumIterationsType.succ: bad argument RewriterConfig'TWO. This value would be out of bounds."
+        succ RewriterConfig'DEFAULT_NUM_ITERS = RewriterConfig'ONE
+        succ RewriterConfig'ONE = RewriterConfig'TWO
+        pred RewriterConfig'DEFAULT_NUM_ITERS
+          = Prelude.error
+              "RewriterConfig'NumIterationsType.pred: bad argument RewriterConfig'DEFAULT_NUM_ITERS. This value would be out of bounds."
+        pred RewriterConfig'ONE = RewriterConfig'DEFAULT_NUM_ITERS
+        pred RewriterConfig'TWO = RewriterConfig'ONE
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded RewriterConfig'NumIterationsType where
+        minBound = RewriterConfig'DEFAULT_NUM_ITERS
+        maxBound = RewriterConfig'TWO
+
+data RewriterConfig'Toggle = RewriterConfig'DEFAULT
+                           | RewriterConfig'ON
+                           | RewriterConfig'OFF
+                           | RewriterConfig'AGGRESSIVE
+                           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default RewriterConfig'Toggle where
+        def = RewriterConfig'DEFAULT
+
+instance Data.ProtoLens.FieldDefault RewriterConfig'Toggle where
+        fieldDefault = RewriterConfig'DEFAULT
+
+instance Data.ProtoLens.MessageEnum RewriterConfig'Toggle where
+        maybeToEnum 0 = Prelude.Just RewriterConfig'DEFAULT
+        maybeToEnum 1 = Prelude.Just RewriterConfig'ON
+        maybeToEnum 2 = Prelude.Just RewriterConfig'OFF
+        maybeToEnum 3 = Prelude.Just RewriterConfig'AGGRESSIVE
+        maybeToEnum _ = Prelude.Nothing
+        showEnum RewriterConfig'DEFAULT = "DEFAULT"
+        showEnum RewriterConfig'ON = "ON"
+        showEnum RewriterConfig'OFF = "OFF"
+        showEnum RewriterConfig'AGGRESSIVE = "AGGRESSIVE"
+        readEnum "DEFAULT" = Prelude.Just RewriterConfig'DEFAULT
+        readEnum "ON" = Prelude.Just RewriterConfig'ON
+        readEnum "OFF" = Prelude.Just RewriterConfig'OFF
+        readEnum "AGGRESSIVE" = Prelude.Just RewriterConfig'AGGRESSIVE
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum RewriterConfig'Toggle where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum Toggle: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum RewriterConfig'DEFAULT = 0
+        fromEnum RewriterConfig'ON = 1
+        fromEnum RewriterConfig'OFF = 2
+        fromEnum RewriterConfig'AGGRESSIVE = 3
+        succ RewriterConfig'AGGRESSIVE
+          = Prelude.error
+              "RewriterConfig'Toggle.succ: bad argument RewriterConfig'AGGRESSIVE. This value would be out of bounds."
+        succ RewriterConfig'DEFAULT = RewriterConfig'ON
+        succ RewriterConfig'ON = RewriterConfig'OFF
+        succ RewriterConfig'OFF = RewriterConfig'AGGRESSIVE
+        pred RewriterConfig'DEFAULT
+          = Prelude.error
+              "RewriterConfig'Toggle.pred: bad argument RewriterConfig'DEFAULT. This value would be out of bounds."
+        pred RewriterConfig'ON = RewriterConfig'DEFAULT
+        pred RewriterConfig'OFF = RewriterConfig'ON
+        pred RewriterConfig'AGGRESSIVE = RewriterConfig'OFF
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded RewriterConfig'Toggle where
+        minBound = RewriterConfig'DEFAULT
+        maxBound = RewriterConfig'AGGRESSIVE
+
+data ScopedAllocatorOptions = ScopedAllocatorOptions{_ScopedAllocatorOptions'enableOp
+                                                     :: ![Data.Text.Text]}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "enableOp" f ScopedAllocatorOptions
+           ScopedAllocatorOptions
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ScopedAllocatorOptions'enableOp
+                 (\ x__ y__ -> x__{_ScopedAllocatorOptions'enableOp = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ScopedAllocatorOptions where
+        def = ScopedAllocatorOptions{_ScopedAllocatorOptions'enableOp = []}
+
+instance Data.ProtoLens.Message ScopedAllocatorOptions where
+        descriptor
+          = let enableOp__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "enable_op"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked enableOp)
+                      :: Data.ProtoLens.FieldDescriptor ScopedAllocatorOptions
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ScopedAllocatorOptions")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, enableOp__field_descriptor)])
+                (Data.Map.fromList [("enable_op", enableOp__field_descriptor)])
+
+arithmeticOptimization ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "arithmeticOptimization" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+arithmeticOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "arithmeticOptimization")
+
+autoParallel ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "autoParallel" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+autoParallel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "autoParallel")
+
+constantFolding ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "constantFolding" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+constantFolding
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "constantFolding")
+
+customOptimizers ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "customOptimizers" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+customOptimizers
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "customOptimizers")
+
+debugStripper ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "debugStripper" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+debugStripper
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugStripper")
+
+dependencyOptimization ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "dependencyOptimization" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+dependencyOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "dependencyOptimization")
+
+disableModelPruning ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "disableModelPruning" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+disableModelPruning
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "disableModelPruning")
+
+enable ::
+       forall f s t a b . (Lens.Labels.HasLens "enable" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+enable
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enable")
+
+enableOp ::
+         forall f s t a b . (Lens.Labels.HasLens "enableOp" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+enableOp
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enableOp")
+
+functionOptimization ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "functionOptimization" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+functionOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "functionOptimization")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+layoutOptimizer ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "layoutOptimizer" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+layoutOptimizer
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "layoutOptimizer")
+
+loopOptimization ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "loopOptimization" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+loopOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "loopOptimization")
+
+maybe'autoParallel ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'autoParallel" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'autoParallel
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'autoParallel")
+
+maybe'scopedAllocatorOpts ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "maybe'scopedAllocatorOpts" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+maybe'scopedAllocatorOpts
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'scopedAllocatorOpts")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+memoryOptimization ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "memoryOptimization" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+memoryOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryOptimization")
+
+memoryOptimizerTargetNodeNameScope ::
+                                   forall f s t a b .
+                                     (Lens.Labels.HasLens "memoryOptimizerTargetNodeNameScope" f s t
+                                        a b) =>
+                                     Lens.Family2.LensLike f s t a b
+memoryOptimizerTargetNodeNameScope
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "memoryOptimizerTargetNodeNameScope")
+
+metaOptimizerIterations ::
+                        forall f s t a b .
+                          (Lens.Labels.HasLens "metaOptimizerIterations" f s t a b) =>
+                          Lens.Family2.LensLike f s t a b
+metaOptimizerIterations
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "metaOptimizerIterations")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+numReplicas ::
+            forall f s t a b . (Lens.Labels.HasLens "numReplicas" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+numReplicas
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numReplicas")
+
+optimizers ::
+           forall f s t a b . (Lens.Labels.HasLens "optimizers" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+optimizers
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optimizers")
+
+parameterMap ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "parameterMap" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+parameterMap
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "parameterMap")
+
+remapping ::
+          forall f s t a b . (Lens.Labels.HasLens "remapping" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+remapping
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "remapping")
+
+scopedAllocatorOptimization ::
+                            forall f s t a b .
+                              (Lens.Labels.HasLens "scopedAllocatorOptimization" f s t a b) =>
+                              Lens.Family2.LensLike f s t a b
+scopedAllocatorOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "scopedAllocatorOptimization")
+
+scopedAllocatorOpts ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "scopedAllocatorOpts" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+scopedAllocatorOpts
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "scopedAllocatorOpts")
+
+shapeOptimization ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "shapeOptimization" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+shapeOptimization
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shapeOptimization")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/SavedModel.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/SavedModel.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/SavedModel.hs
@@ -0,0 +1,107 @@
+{- This file was auto-generated from tensorflow/core/protobuf/saved_model.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.SavedModel where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Protobuf.MetaGraph
+
+data SavedModel = SavedModel{_SavedModel'savedModelSchemaVersion ::
+                             !Data.Int.Int64,
+                             _SavedModel'metaGraphs ::
+                             ![Proto.Tensorflow.Core.Protobuf.MetaGraph.MetaGraphDef]}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "savedModelSchemaVersion" f SavedModel
+           SavedModel
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedModel'savedModelSchemaVersion
+                 (\ x__ y__ -> x__{_SavedModel'savedModelSchemaVersion = y__}))
+              Prelude.id
+
+instance (a ~
+            [Proto.Tensorflow.Core.Protobuf.MetaGraph.MetaGraphDef],
+          b ~ [Proto.Tensorflow.Core.Protobuf.MetaGraph.MetaGraphDef],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "metaGraphs" f SavedModel SavedModel a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedModel'metaGraphs
+                 (\ x__ y__ -> x__{_SavedModel'metaGraphs = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SavedModel where
+        def
+          = SavedModel{_SavedModel'savedModelSchemaVersion =
+                         Data.ProtoLens.fieldDefault,
+                       _SavedModel'metaGraphs = []}
+
+instance Data.ProtoLens.Message SavedModel where
+        descriptor
+          = let savedModelSchemaVersion__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "saved_model_schema_version"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         savedModelSchemaVersion)
+                      :: Data.ProtoLens.FieldDescriptor SavedModel
+                metaGraphs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "meta_graphs"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.MetaGraph.MetaGraphDef)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked metaGraphs)
+                      :: Data.ProtoLens.FieldDescriptor SavedModel
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SavedModel")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, savedModelSchemaVersion__field_descriptor),
+                    (Data.ProtoLens.Tag 2, metaGraphs__field_descriptor)])
+                (Data.Map.fromList
+                   [("saved_model_schema_version",
+                     savedModelSchemaVersion__field_descriptor),
+                    ("meta_graphs", metaGraphs__field_descriptor)])
+
+metaGraphs ::
+           forall f s t a b . (Lens.Labels.HasLens "metaGraphs" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+metaGraphs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metaGraphs")
+
+savedModelSchemaVersion ::
+                        forall f s t a b .
+                          (Lens.Labels.HasLens "savedModelSchemaVersion" f s t a b) =>
+                          Lens.Family2.LensLike f s t a b
+savedModelSchemaVersion
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "savedModelSchemaVersion")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Saver.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Saver.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/Saver.hs
@@ -0,0 +1,302 @@
+{- This file was auto-generated from tensorflow/core/protobuf/saver.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.Saver where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data SaverDef = SaverDef{_SaverDef'filenameTensorName ::
+                         !Data.Text.Text,
+                         _SaverDef'saveTensorName :: !Data.Text.Text,
+                         _SaverDef'restoreOpName :: !Data.Text.Text,
+                         _SaverDef'maxToKeep :: !Data.Int.Int32,
+                         _SaverDef'sharded :: !Prelude.Bool,
+                         _SaverDef'keepCheckpointEveryNHours :: !Prelude.Float,
+                         _SaverDef'version :: !SaverDef'CheckpointFormatVersion}
+              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "filenameTensorName" f SaverDef SaverDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'filenameTensorName
+                 (\ x__ y__ -> x__{_SaverDef'filenameTensorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "saveTensorName" f SaverDef SaverDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'saveTensorName
+                 (\ x__ y__ -> x__{_SaverDef'saveTensorName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "restoreOpName" f SaverDef SaverDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'restoreOpName
+                 (\ x__ y__ -> x__{_SaverDef'restoreOpName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maxToKeep" f SaverDef SaverDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'maxToKeep
+                 (\ x__ y__ -> x__{_SaverDef'maxToKeep = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
+         Lens.Labels.HasLens "sharded" f SaverDef SaverDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'sharded
+                 (\ x__ y__ -> x__{_SaverDef'sharded = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Float, b ~ Prelude.Float,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "keepCheckpointEveryNHours" f SaverDef SaverDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'keepCheckpointEveryNHours
+                 (\ x__ y__ -> x__{_SaverDef'keepCheckpointEveryNHours = y__}))
+              Prelude.id
+
+instance (a ~ SaverDef'CheckpointFormatVersion,
+          b ~ SaverDef'CheckpointFormatVersion, Prelude.Functor f) =>
+         Lens.Labels.HasLens "version" f SaverDef SaverDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SaverDef'version
+                 (\ x__ y__ -> x__{_SaverDef'version = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SaverDef where
+        def
+          = SaverDef{_SaverDef'filenameTensorName =
+                       Data.ProtoLens.fieldDefault,
+                     _SaverDef'saveTensorName = Data.ProtoLens.fieldDefault,
+                     _SaverDef'restoreOpName = Data.ProtoLens.fieldDefault,
+                     _SaverDef'maxToKeep = Data.ProtoLens.fieldDefault,
+                     _SaverDef'sharded = Data.ProtoLens.fieldDefault,
+                     _SaverDef'keepCheckpointEveryNHours = Data.ProtoLens.fieldDefault,
+                     _SaverDef'version = Data.Default.Class.def}
+
+instance Data.ProtoLens.Message SaverDef where
+        descriptor
+          = let filenameTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "filename_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         filenameTensorName)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+                saveTensorName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "save_tensor_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional saveTensorName)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+                restoreOpName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "restore_op_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional restoreOpName)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+                maxToKeep__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "max_to_keep"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional maxToKeep)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+                sharded__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "sharded"
+                      (Data.ProtoLens.BoolField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sharded)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+                keepCheckpointEveryNHours__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "keep_checkpoint_every_n_hours"
+                      (Data.ProtoLens.FloatField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         keepCheckpointEveryNHours)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+                version__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "version"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           SaverDef'CheckpointFormatVersion)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
+                      :: Data.ProtoLens.FieldDescriptor SaverDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SaverDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, filenameTensorName__field_descriptor),
+                    (Data.ProtoLens.Tag 2, saveTensorName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, restoreOpName__field_descriptor),
+                    (Data.ProtoLens.Tag 4, maxToKeep__field_descriptor),
+                    (Data.ProtoLens.Tag 5, sharded__field_descriptor),
+                    (Data.ProtoLens.Tag 6,
+                     keepCheckpointEveryNHours__field_descriptor),
+                    (Data.ProtoLens.Tag 7, version__field_descriptor)])
+                (Data.Map.fromList
+                   [("filename_tensor_name", filenameTensorName__field_descriptor),
+                    ("save_tensor_name", saveTensorName__field_descriptor),
+                    ("restore_op_name", restoreOpName__field_descriptor),
+                    ("max_to_keep", maxToKeep__field_descriptor),
+                    ("sharded", sharded__field_descriptor),
+                    ("keep_checkpoint_every_n_hours",
+                     keepCheckpointEveryNHours__field_descriptor),
+                    ("version", version__field_descriptor)])
+
+data SaverDef'CheckpointFormatVersion = SaverDef'LEGACY
+                                      | SaverDef'V1
+                                      | SaverDef'V2
+                                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default
+           SaverDef'CheckpointFormatVersion
+         where
+        def = SaverDef'LEGACY
+
+instance Data.ProtoLens.FieldDefault
+           SaverDef'CheckpointFormatVersion
+         where
+        fieldDefault = SaverDef'LEGACY
+
+instance Data.ProtoLens.MessageEnum
+           SaverDef'CheckpointFormatVersion
+         where
+        maybeToEnum 0 = Prelude.Just SaverDef'LEGACY
+        maybeToEnum 1 = Prelude.Just SaverDef'V1
+        maybeToEnum 2 = Prelude.Just SaverDef'V2
+        maybeToEnum _ = Prelude.Nothing
+        showEnum SaverDef'LEGACY = "LEGACY"
+        showEnum SaverDef'V1 = "V1"
+        showEnum SaverDef'V2 = "V2"
+        readEnum "LEGACY" = Prelude.Just SaverDef'LEGACY
+        readEnum "V1" = Prelude.Just SaverDef'V1
+        readEnum "V2" = Prelude.Just SaverDef'V2
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum SaverDef'CheckpointFormatVersion where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++)
+                    "toEnum: unknown value for enum CheckpointFormatVersion: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum SaverDef'LEGACY = 0
+        fromEnum SaverDef'V1 = 1
+        fromEnum SaverDef'V2 = 2
+        succ SaverDef'V2
+          = Prelude.error
+              "SaverDef'CheckpointFormatVersion.succ: bad argument SaverDef'V2. This value would be out of bounds."
+        succ SaverDef'LEGACY = SaverDef'V1
+        succ SaverDef'V1 = SaverDef'V2
+        pred SaverDef'LEGACY
+          = Prelude.error
+              "SaverDef'CheckpointFormatVersion.pred: bad argument SaverDef'LEGACY. This value would be out of bounds."
+        pred SaverDef'V1 = SaverDef'LEGACY
+        pred SaverDef'V2 = SaverDef'V1
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded SaverDef'CheckpointFormatVersion where
+        minBound = SaverDef'LEGACY
+        maxBound = SaverDef'V2
+
+filenameTensorName ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "filenameTensorName" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+filenameTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "filenameTensorName")
+
+keepCheckpointEveryNHours ::
+                          forall f s t a b .
+                            (Lens.Labels.HasLens "keepCheckpointEveryNHours" f s t a b) =>
+                            Lens.Family2.LensLike f s t a b
+keepCheckpointEveryNHours
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "keepCheckpointEveryNHours")
+
+maxToKeep ::
+          forall f s t a b . (Lens.Labels.HasLens "maxToKeep" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+maxToKeep
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maxToKeep")
+
+restoreOpName ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "restoreOpName" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+restoreOpName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "restoreOpName")
+
+saveTensorName ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "saveTensorName" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+saveTensorName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "saveTensorName")
+
+sharded ::
+        forall f s t a b . (Lens.Labels.HasLens "sharded" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+sharded
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sharded")
+
+version ::
+        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+version
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/TensorBundle.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/TensorBundle.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/TensorBundle.hs
@@ -0,0 +1,457 @@
+{- This file was auto-generated from tensorflow/core/protobuf/tensor_bundle.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.TensorBundle where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.TensorSlice
+import qualified Proto.Tensorflow.Core.Framework.Types
+import qualified Proto.Tensorflow.Core.Framework.Versions
+
+data BundleEntryProto = BundleEntryProto{_BundleEntryProto'dtype ::
+                                         !Proto.Tensorflow.Core.Framework.Types.DataType,
+                                         _BundleEntryProto'shape ::
+                                         !(Prelude.Maybe
+                                             Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                                         _BundleEntryProto'shardId :: !Data.Int.Int32,
+                                         _BundleEntryProto'offset :: !Data.Int.Int64,
+                                         _BundleEntryProto'size :: !Data.Int.Int64,
+                                         _BundleEntryProto'crc32c :: !Data.Word.Word32,
+                                         _BundleEntryProto'slices ::
+                                         ![Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto]}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "dtype" f BundleEntryProto BundleEntryProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'dtype
+                 (\ x__ y__ -> x__{_BundleEntryProto'dtype = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f BundleEntryProto BundleEntryProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'shape
+                 (\ x__ y__ -> x__{_BundleEntryProto'shape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'shape" f BundleEntryProto
+           BundleEntryProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'shape
+                 (\ x__ y__ -> x__{_BundleEntryProto'shape = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shardId" f BundleEntryProto BundleEntryProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'shardId
+                 (\ x__ y__ -> x__{_BundleEntryProto'shardId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "offset" f BundleEntryProto BundleEntryProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'offset
+                 (\ x__ y__ -> x__{_BundleEntryProto'offset = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "size" f BundleEntryProto BundleEntryProto a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'size
+                 (\ x__ y__ -> x__{_BundleEntryProto'size = y__}))
+              Prelude.id
+
+instance (a ~ Data.Word.Word32, b ~ Data.Word.Word32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "crc32c" f BundleEntryProto BundleEntryProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'crc32c
+                 (\ x__ y__ -> x__{_BundleEntryProto'crc32c = y__}))
+              Prelude.id
+
+instance (a ~
+            [Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto],
+          b ~ [Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "slices" f BundleEntryProto BundleEntryProto a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleEntryProto'slices
+                 (\ x__ y__ -> x__{_BundleEntryProto'slices = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BundleEntryProto where
+        def
+          = BundleEntryProto{_BundleEntryProto'dtype =
+                               Data.Default.Class.def,
+                             _BundleEntryProto'shape = Prelude.Nothing,
+                             _BundleEntryProto'shardId = Data.ProtoLens.fieldDefault,
+                             _BundleEntryProto'offset = Data.ProtoLens.fieldDefault,
+                             _BundleEntryProto'size = Data.ProtoLens.fieldDefault,
+                             _BundleEntryProto'crc32c = Data.ProtoLens.fieldDefault,
+                             _BundleEntryProto'slices = []}
+
+instance Data.ProtoLens.Message BundleEntryProto where
+        descriptor
+          = let dtype__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "dtype"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'shape)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+                shardId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shard_id"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional shardId)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+                offset__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "offset"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional offset)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+                size__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "size"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional size)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+                crc32c__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "crc32c"
+                      (Data.ProtoLens.Fixed32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional crc32c)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+                slices__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "slices"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked slices)
+                      :: Data.ProtoLens.FieldDescriptor BundleEntryProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BundleEntryProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
+                    (Data.ProtoLens.Tag 2, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 3, shardId__field_descriptor),
+                    (Data.ProtoLens.Tag 4, offset__field_descriptor),
+                    (Data.ProtoLens.Tag 5, size__field_descriptor),
+                    (Data.ProtoLens.Tag 6, crc32c__field_descriptor),
+                    (Data.ProtoLens.Tag 7, slices__field_descriptor)])
+                (Data.Map.fromList
+                   [("dtype", dtype__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("shard_id", shardId__field_descriptor),
+                    ("offset", offset__field_descriptor),
+                    ("size", size__field_descriptor),
+                    ("crc32c", crc32c__field_descriptor),
+                    ("slices", slices__field_descriptor)])
+
+data BundleHeaderProto = BundleHeaderProto{_BundleHeaderProto'numShards
+                                           :: !Data.Int.Int32,
+                                           _BundleHeaderProto'endianness ::
+                                           !BundleHeaderProto'Endianness,
+                                           _BundleHeaderProto'version ::
+                                           !(Prelude.Maybe
+                                               Proto.Tensorflow.Core.Framework.Versions.VersionDef)}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numShards" f BundleHeaderProto
+           BundleHeaderProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleHeaderProto'numShards
+                 (\ x__ y__ -> x__{_BundleHeaderProto'numShards = y__}))
+              Prelude.id
+
+instance (a ~ BundleHeaderProto'Endianness,
+          b ~ BundleHeaderProto'Endianness, Prelude.Functor f) =>
+         Lens.Labels.HasLens "endianness" f BundleHeaderProto
+           BundleHeaderProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleHeaderProto'endianness
+                 (\ x__ y__ -> x__{_BundleHeaderProto'endianness = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          b ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "version" f BundleHeaderProto BundleHeaderProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleHeaderProto'version
+                 (\ x__ y__ -> x__{_BundleHeaderProto'version = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'version" f BundleHeaderProto
+           BundleHeaderProto
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BundleHeaderProto'version
+                 (\ x__ y__ -> x__{_BundleHeaderProto'version = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BundleHeaderProto where
+        def
+          = BundleHeaderProto{_BundleHeaderProto'numShards =
+                                Data.ProtoLens.fieldDefault,
+                              _BundleHeaderProto'endianness = Data.Default.Class.def,
+                              _BundleHeaderProto'version = Prelude.Nothing}
+
+instance Data.ProtoLens.Message BundleHeaderProto where
+        descriptor
+          = let numShards__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_shards"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numShards)
+                      :: Data.ProtoLens.FieldDescriptor BundleHeaderProto
+                endianness__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "endianness"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor BundleHeaderProto'Endianness)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional endianness)
+                      :: Data.ProtoLens.FieldDescriptor BundleHeaderProto
+                version__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "version"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Versions.VersionDef)
+                      (Data.ProtoLens.OptionalField maybe'version)
+                      :: Data.ProtoLens.FieldDescriptor BundleHeaderProto
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BundleHeaderProto")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, numShards__field_descriptor),
+                    (Data.ProtoLens.Tag 2, endianness__field_descriptor),
+                    (Data.ProtoLens.Tag 3, version__field_descriptor)])
+                (Data.Map.fromList
+                   [("num_shards", numShards__field_descriptor),
+                    ("endianness", endianness__field_descriptor),
+                    ("version", version__field_descriptor)])
+
+data BundleHeaderProto'Endianness = BundleHeaderProto'LITTLE
+                                  | BundleHeaderProto'BIG
+                                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default BundleHeaderProto'Endianness
+         where
+        def = BundleHeaderProto'LITTLE
+
+instance Data.ProtoLens.FieldDefault BundleHeaderProto'Endianness
+         where
+        fieldDefault = BundleHeaderProto'LITTLE
+
+instance Data.ProtoLens.MessageEnum BundleHeaderProto'Endianness
+         where
+        maybeToEnum 0 = Prelude.Just BundleHeaderProto'LITTLE
+        maybeToEnum 1 = Prelude.Just BundleHeaderProto'BIG
+        maybeToEnum _ = Prelude.Nothing
+        showEnum BundleHeaderProto'LITTLE = "LITTLE"
+        showEnum BundleHeaderProto'BIG = "BIG"
+        readEnum "LITTLE" = Prelude.Just BundleHeaderProto'LITTLE
+        readEnum "BIG" = Prelude.Just BundleHeaderProto'BIG
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum BundleHeaderProto'Endianness where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum Endianness: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum BundleHeaderProto'LITTLE = 0
+        fromEnum BundleHeaderProto'BIG = 1
+        succ BundleHeaderProto'BIG
+          = Prelude.error
+              "BundleHeaderProto'Endianness.succ: bad argument BundleHeaderProto'BIG. This value would be out of bounds."
+        succ BundleHeaderProto'LITTLE = BundleHeaderProto'BIG
+        pred BundleHeaderProto'LITTLE
+          = Prelude.error
+              "BundleHeaderProto'Endianness.pred: bad argument BundleHeaderProto'LITTLE. This value would be out of bounds."
+        pred BundleHeaderProto'BIG = BundleHeaderProto'LITTLE
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded BundleHeaderProto'Endianness where
+        minBound = BundleHeaderProto'LITTLE
+        maxBound = BundleHeaderProto'BIG
+
+crc32c ::
+       forall f s t a b . (Lens.Labels.HasLens "crc32c" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+crc32c
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "crc32c")
+
+dtype ::
+      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+dtype
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
+
+endianness ::
+           forall f s t a b . (Lens.Labels.HasLens "endianness" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+endianness
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "endianness")
+
+maybe'shape ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
+
+maybe'version ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'version" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'version
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'version")
+
+numShards ::
+          forall f s t a b . (Lens.Labels.HasLens "numShards" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+numShards
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numShards")
+
+offset ::
+       forall f s t a b . (Lens.Labels.HasLens "offset" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+offset
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "offset")
+
+shape ::
+      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
+
+shardId ::
+        forall f s t a b . (Lens.Labels.HasLens "shardId" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+shardId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shardId")
+
+size ::
+     forall f s t a b . (Lens.Labels.HasLens "size" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+size
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "size")
+
+slices ::
+       forall f s t a b . (Lens.Labels.HasLens "slices" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+slices
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "slices")
+
+version ::
+        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+version
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/TensorflowServer.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/TensorflowServer.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Protobuf/TensorflowServer.hs
@@ -0,0 +1,231 @@
+{- This file was auto-generated from tensorflow/core/protobuf/tensorflow_server.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Protobuf.TensorflowServer where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Protobuf.Cluster
+import qualified Proto.Tensorflow.Core.Protobuf.Config
+
+data ServerDef = ServerDef{_ServerDef'cluster ::
+                           !(Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef),
+                           _ServerDef'jobName :: !Data.Text.Text,
+                           _ServerDef'taskIndex :: !Data.Int.Int32,
+                           _ServerDef'defaultSessionConfig ::
+                           !(Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Config.ConfigProto),
+                           _ServerDef'protocol :: !Data.Text.Text}
+               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          b ~ Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cluster" f ServerDef ServerDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'cluster
+                 (\ x__ y__ -> x__{_ServerDef'cluster = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'cluster" f ServerDef ServerDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'cluster
+                 (\ x__ y__ -> x__{_ServerDef'cluster = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "jobName" f ServerDef ServerDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'jobName
+                 (\ x__ y__ -> x__{_ServerDef'jobName = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "taskIndex" f ServerDef ServerDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'taskIndex
+                 (\ x__ y__ -> x__{_ServerDef'taskIndex = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Protobuf.Config.ConfigProto,
+          b ~ Proto.Tensorflow.Core.Protobuf.Config.ConfigProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "defaultSessionConfig" f ServerDef ServerDef a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'defaultSessionConfig
+                 (\ x__ y__ -> x__{_ServerDef'defaultSessionConfig = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Config.ConfigProto,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Config.ConfigProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'defaultSessionConfig" f ServerDef
+           ServerDef
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'defaultSessionConfig
+                 (\ x__ y__ -> x__{_ServerDef'defaultSessionConfig = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "protocol" f ServerDef ServerDef a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _ServerDef'protocol
+                 (\ x__ y__ -> x__{_ServerDef'protocol = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default ServerDef where
+        def
+          = ServerDef{_ServerDef'cluster = Prelude.Nothing,
+                      _ServerDef'jobName = Data.ProtoLens.fieldDefault,
+                      _ServerDef'taskIndex = Data.ProtoLens.fieldDefault,
+                      _ServerDef'defaultSessionConfig = Prelude.Nothing,
+                      _ServerDef'protocol = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message ServerDef where
+        descriptor
+          = let cluster__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cluster"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.Cluster.ClusterDef)
+                      (Data.ProtoLens.OptionalField maybe'cluster)
+                      :: Data.ProtoLens.FieldDescriptor ServerDef
+                jobName__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "job_name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional jobName)
+                      :: Data.ProtoLens.FieldDescriptor ServerDef
+                taskIndex__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "task_index"
+                      (Data.ProtoLens.Int32Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional taskIndex)
+                      :: Data.ProtoLens.FieldDescriptor ServerDef
+                defaultSessionConfig__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "default_session_config"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Protobuf.Config.ConfigProto)
+                      (Data.ProtoLens.OptionalField maybe'defaultSessionConfig)
+                      :: Data.ProtoLens.FieldDescriptor ServerDef
+                protocol__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "protocol"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional protocol)
+                      :: Data.ProtoLens.FieldDescriptor ServerDef
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.ServerDef")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, cluster__field_descriptor),
+                    (Data.ProtoLens.Tag 2, jobName__field_descriptor),
+                    (Data.ProtoLens.Tag 3, taskIndex__field_descriptor),
+                    (Data.ProtoLens.Tag 4, defaultSessionConfig__field_descriptor),
+                    (Data.ProtoLens.Tag 5, protocol__field_descriptor)])
+                (Data.Map.fromList
+                   [("cluster", cluster__field_descriptor),
+                    ("job_name", jobName__field_descriptor),
+                    ("task_index", taskIndex__field_descriptor),
+                    ("default_session_config", defaultSessionConfig__field_descriptor),
+                    ("protocol", protocol__field_descriptor)])
+
+cluster ::
+        forall f s t a b . (Lens.Labels.HasLens "cluster" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+cluster
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cluster")
+
+defaultSessionConfig ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "defaultSessionConfig" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+defaultSessionConfig
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "defaultSessionConfig")
+
+jobName ::
+        forall f s t a b . (Lens.Labels.HasLens "jobName" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+jobName
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "jobName")
+
+maybe'cluster ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'cluster" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'cluster
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'cluster")
+
+maybe'defaultSessionConfig ::
+                           forall f s t a b .
+                             (Lens.Labels.HasLens "maybe'defaultSessionConfig" f s t a b) =>
+                             Lens.Family2.LensLike f s t a b
+maybe'defaultSessionConfig
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'defaultSessionConfig")
+
+protocol ::
+         forall f s t a b . (Lens.Labels.HasLens "protocol" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+protocol
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "protocol")
+
+taskIndex ::
+          forall f s t a b . (Lens.Labels.HasLens "taskIndex" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+taskIndex
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "taskIndex")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/Event.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/Event.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/Event.hs
@@ -0,0 +1,1244 @@
+{- This file was auto-generated from tensorflow/core/util/event.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Util.Event where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Summary
+
+data Event = Event{_Event'wallTime :: !Prelude.Double,
+                   _Event'step :: !Data.Int.Int64,
+                   _Event'what :: !(Prelude.Maybe Event'What)}
+           deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data Event'What = Event'FileVersion !Data.Text.Text
+                | Event'GraphDef !Data.ByteString.ByteString
+                | Event'Summary !Proto.Tensorflow.Core.Framework.Summary.Summary
+                | Event'LogMessage !LogMessage
+                | Event'SessionLog !SessionLog
+                | Event'TaggedRunMetadata !TaggedRunMetadata
+                | Event'MetaGraphDef !Data.ByteString.ByteString
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "wallTime" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'wallTime
+                 (\ x__ y__ -> x__{_Event'wallTime = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "step" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'step
+                 (\ x__ y__ -> x__{_Event'step = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Event'What,
+          b ~ Prelude.Maybe Event'What, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'what" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Data.Text.Text,
+          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'fileVersion" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'FileVersion x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'FileVersion y__))
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "fileVersion" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'FileVersion x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'FileVersion y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
+          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'graphDef" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'GraphDef x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'GraphDef y__))
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "graphDef" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'GraphDef x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'GraphDef y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Summary.Summary,
+          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.Summary.Summary,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'summary" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'Summary x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'Summary y__))
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Summary.Summary,
+          b ~ Proto.Tensorflow.Core.Framework.Summary.Summary,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "summary" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'Summary x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'Summary y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe LogMessage,
+          b ~ Prelude.Maybe LogMessage, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'logMessage" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'LogMessage x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'LogMessage y__))
+
+instance (a ~ LogMessage, b ~ LogMessage, Prelude.Functor f) =>
+         Lens.Labels.HasLens "logMessage" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'LogMessage x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'LogMessage y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe SessionLog,
+          b ~ Prelude.Maybe SessionLog, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'sessionLog" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'SessionLog x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'SessionLog y__))
+
+instance (a ~ SessionLog, b ~ SessionLog, Prelude.Functor f) =>
+         Lens.Labels.HasLens "sessionLog" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'SessionLog x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'SessionLog y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe TaggedRunMetadata,
+          b ~ Prelude.Maybe TaggedRunMetadata, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'taggedRunMetadata" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'TaggedRunMetadata x__val) -> Prelude.Just
+                                                                           x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'TaggedRunMetadata y__))
+
+instance (a ~ TaggedRunMetadata, b ~ TaggedRunMetadata,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "taggedRunMetadata" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'TaggedRunMetadata x__val) -> Prelude.Just
+                                                                              x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'TaggedRunMetadata y__))
+                 (Data.ProtoLens.maybeLens Data.Default.Class.def))
+
+instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
+          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'metaGraphDef" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (Event'MetaGraphDef x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap Event'MetaGraphDef y__))
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "metaGraphDef" f Event Event a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _Event'what
+                 (\ x__ y__ -> x__{_Event'what = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (Event'MetaGraphDef x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap Event'MetaGraphDef y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance Data.Default.Class.Default Event where
+        def
+          = Event{_Event'wallTime = Data.ProtoLens.fieldDefault,
+                  _Event'step = Data.ProtoLens.fieldDefault,
+                  _Event'what = Prelude.Nothing}
+
+instance Data.ProtoLens.Message Event where
+        descriptor
+          = let wallTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "wall_time"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional wallTime)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                step__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "step"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional step)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                fileVersion__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "file_version"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.OptionalField maybe'fileVersion)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                graphDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "graph_def"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.OptionalField maybe'graphDef)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                summary__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "summary"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Summary.Summary)
+                      (Data.ProtoLens.OptionalField maybe'summary)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                logMessage__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "log_message"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor LogMessage)
+                      (Data.ProtoLens.OptionalField maybe'logMessage)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                sessionLog__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "session_log"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SessionLog)
+                      (Data.ProtoLens.OptionalField maybe'sessionLog)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                taggedRunMetadata__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tagged_run_metadata"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor TaggedRunMetadata)
+                      (Data.ProtoLens.OptionalField maybe'taggedRunMetadata)
+                      :: Data.ProtoLens.FieldDescriptor Event
+                metaGraphDef__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "meta_graph_def"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.OptionalField maybe'metaGraphDef)
+                      :: Data.ProtoLens.FieldDescriptor Event
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.Event")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, wallTime__field_descriptor),
+                    (Data.ProtoLens.Tag 2, step__field_descriptor),
+                    (Data.ProtoLens.Tag 3, fileVersion__field_descriptor),
+                    (Data.ProtoLens.Tag 4, graphDef__field_descriptor),
+                    (Data.ProtoLens.Tag 5, summary__field_descriptor),
+                    (Data.ProtoLens.Tag 6, logMessage__field_descriptor),
+                    (Data.ProtoLens.Tag 7, sessionLog__field_descriptor),
+                    (Data.ProtoLens.Tag 8, taggedRunMetadata__field_descriptor),
+                    (Data.ProtoLens.Tag 9, metaGraphDef__field_descriptor)])
+                (Data.Map.fromList
+                   [("wall_time", wallTime__field_descriptor),
+                    ("step", step__field_descriptor),
+                    ("file_version", fileVersion__field_descriptor),
+                    ("graph_def", graphDef__field_descriptor),
+                    ("summary", summary__field_descriptor),
+                    ("log_message", logMessage__field_descriptor),
+                    ("session_log", sessionLog__field_descriptor),
+                    ("tagged_run_metadata", taggedRunMetadata__field_descriptor),
+                    ("meta_graph_def", metaGraphDef__field_descriptor)])
+
+data LogMessage = LogMessage{_LogMessage'level ::
+                             !LogMessage'Level,
+                             _LogMessage'message :: !Data.Text.Text}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ LogMessage'Level, b ~ LogMessage'Level,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "level" f LogMessage LogMessage a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _LogMessage'level
+                 (\ x__ y__ -> x__{_LogMessage'level = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "message" f LogMessage LogMessage a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _LogMessage'message
+                 (\ x__ y__ -> x__{_LogMessage'message = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default LogMessage where
+        def
+          = LogMessage{_LogMessage'level = Data.Default.Class.def,
+                       _LogMessage'message = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message LogMessage where
+        descriptor
+          = let level__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "level"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor LogMessage'Level)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional level)
+                      :: Data.ProtoLens.FieldDescriptor LogMessage
+                message__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "message"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional message)
+                      :: Data.ProtoLens.FieldDescriptor LogMessage
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.LogMessage")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, level__field_descriptor),
+                    (Data.ProtoLens.Tag 2, message__field_descriptor)])
+                (Data.Map.fromList
+                   [("level", level__field_descriptor),
+                    ("message", message__field_descriptor)])
+
+data LogMessage'Level = LogMessage'UNKNOWN
+                      | LogMessage'DEBUGGING
+                      | LogMessage'INFO
+                      | LogMessage'WARN
+                      | LogMessage'ERROR
+                      | LogMessage'FATAL
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default LogMessage'Level where
+        def = LogMessage'UNKNOWN
+
+instance Data.ProtoLens.FieldDefault LogMessage'Level where
+        fieldDefault = LogMessage'UNKNOWN
+
+instance Data.ProtoLens.MessageEnum LogMessage'Level where
+        maybeToEnum 0 = Prelude.Just LogMessage'UNKNOWN
+        maybeToEnum 10 = Prelude.Just LogMessage'DEBUGGING
+        maybeToEnum 20 = Prelude.Just LogMessage'INFO
+        maybeToEnum 30 = Prelude.Just LogMessage'WARN
+        maybeToEnum 40 = Prelude.Just LogMessage'ERROR
+        maybeToEnum 50 = Prelude.Just LogMessage'FATAL
+        maybeToEnum _ = Prelude.Nothing
+        showEnum LogMessage'UNKNOWN = "UNKNOWN"
+        showEnum LogMessage'DEBUGGING = "DEBUGGING"
+        showEnum LogMessage'INFO = "INFO"
+        showEnum LogMessage'WARN = "WARN"
+        showEnum LogMessage'ERROR = "ERROR"
+        showEnum LogMessage'FATAL = "FATAL"
+        readEnum "UNKNOWN" = Prelude.Just LogMessage'UNKNOWN
+        readEnum "DEBUGGING" = Prelude.Just LogMessage'DEBUGGING
+        readEnum "INFO" = Prelude.Just LogMessage'INFO
+        readEnum "WARN" = Prelude.Just LogMessage'WARN
+        readEnum "ERROR" = Prelude.Just LogMessage'ERROR
+        readEnum "FATAL" = Prelude.Just LogMessage'FATAL
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum LogMessage'Level where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum Level: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum LogMessage'UNKNOWN = 0
+        fromEnum LogMessage'DEBUGGING = 10
+        fromEnum LogMessage'INFO = 20
+        fromEnum LogMessage'WARN = 30
+        fromEnum LogMessage'ERROR = 40
+        fromEnum LogMessage'FATAL = 50
+        succ LogMessage'FATAL
+          = Prelude.error
+              "LogMessage'Level.succ: bad argument LogMessage'FATAL. This value would be out of bounds."
+        succ LogMessage'UNKNOWN = LogMessage'DEBUGGING
+        succ LogMessage'DEBUGGING = LogMessage'INFO
+        succ LogMessage'INFO = LogMessage'WARN
+        succ LogMessage'WARN = LogMessage'ERROR
+        succ LogMessage'ERROR = LogMessage'FATAL
+        pred LogMessage'UNKNOWN
+          = Prelude.error
+              "LogMessage'Level.pred: bad argument LogMessage'UNKNOWN. This value would be out of bounds."
+        pred LogMessage'DEBUGGING = LogMessage'UNKNOWN
+        pred LogMessage'INFO = LogMessage'DEBUGGING
+        pred LogMessage'WARN = LogMessage'INFO
+        pred LogMessage'ERROR = LogMessage'WARN
+        pred LogMessage'FATAL = LogMessage'ERROR
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded LogMessage'Level where
+        minBound = LogMessage'UNKNOWN
+        maxBound = LogMessage'FATAL
+
+data SessionLog = SessionLog{_SessionLog'status ::
+                             !SessionLog'SessionStatus,
+                             _SessionLog'checkpointPath :: !Data.Text.Text,
+                             _SessionLog'msg :: !Data.Text.Text}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ SessionLog'SessionStatus,
+          b ~ SessionLog'SessionStatus, Prelude.Functor f) =>
+         Lens.Labels.HasLens "status" f SessionLog SessionLog a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SessionLog'status
+                 (\ x__ y__ -> x__{_SessionLog'status = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "checkpointPath" f SessionLog SessionLog a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SessionLog'checkpointPath
+                 (\ x__ y__ -> x__{_SessionLog'checkpointPath = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "msg" f SessionLog SessionLog a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SessionLog'msg
+                 (\ x__ y__ -> x__{_SessionLog'msg = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SessionLog where
+        def
+          = SessionLog{_SessionLog'status = Data.Default.Class.def,
+                       _SessionLog'checkpointPath = Data.ProtoLens.fieldDefault,
+                       _SessionLog'msg = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message SessionLog where
+        descriptor
+          = let status__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "status"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor SessionLog'SessionStatus)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional status)
+                      :: Data.ProtoLens.FieldDescriptor SessionLog
+                checkpointPath__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "checkpoint_path"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional checkpointPath)
+                      :: Data.ProtoLens.FieldDescriptor SessionLog
+                msg__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "msg"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional msg)
+                      :: Data.ProtoLens.FieldDescriptor SessionLog
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SessionLog")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, status__field_descriptor),
+                    (Data.ProtoLens.Tag 2, checkpointPath__field_descriptor),
+                    (Data.ProtoLens.Tag 3, msg__field_descriptor)])
+                (Data.Map.fromList
+                   [("status", status__field_descriptor),
+                    ("checkpoint_path", checkpointPath__field_descriptor),
+                    ("msg", msg__field_descriptor)])
+
+data SessionLog'SessionStatus = SessionLog'STATUS_UNSPECIFIED
+                              | SessionLog'START
+                              | SessionLog'STOP
+                              | SessionLog'CHECKPOINT
+                              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default SessionLog'SessionStatus where
+        def = SessionLog'STATUS_UNSPECIFIED
+
+instance Data.ProtoLens.FieldDefault SessionLog'SessionStatus where
+        fieldDefault = SessionLog'STATUS_UNSPECIFIED
+
+instance Data.ProtoLens.MessageEnum SessionLog'SessionStatus where
+        maybeToEnum 0 = Prelude.Just SessionLog'STATUS_UNSPECIFIED
+        maybeToEnum 1 = Prelude.Just SessionLog'START
+        maybeToEnum 2 = Prelude.Just SessionLog'STOP
+        maybeToEnum 3 = Prelude.Just SessionLog'CHECKPOINT
+        maybeToEnum _ = Prelude.Nothing
+        showEnum SessionLog'STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED"
+        showEnum SessionLog'START = "START"
+        showEnum SessionLog'STOP = "STOP"
+        showEnum SessionLog'CHECKPOINT = "CHECKPOINT"
+        readEnum "STATUS_UNSPECIFIED"
+          = Prelude.Just SessionLog'STATUS_UNSPECIFIED
+        readEnum "START" = Prelude.Just SessionLog'START
+        readEnum "STOP" = Prelude.Just SessionLog'STOP
+        readEnum "CHECKPOINT" = Prelude.Just SessionLog'CHECKPOINT
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum SessionLog'SessionStatus where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum SessionStatus: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum SessionLog'STATUS_UNSPECIFIED = 0
+        fromEnum SessionLog'START = 1
+        fromEnum SessionLog'STOP = 2
+        fromEnum SessionLog'CHECKPOINT = 3
+        succ SessionLog'CHECKPOINT
+          = Prelude.error
+              "SessionLog'SessionStatus.succ: bad argument SessionLog'CHECKPOINT. This value would be out of bounds."
+        succ SessionLog'STATUS_UNSPECIFIED = SessionLog'START
+        succ SessionLog'START = SessionLog'STOP
+        succ SessionLog'STOP = SessionLog'CHECKPOINT
+        pred SessionLog'STATUS_UNSPECIFIED
+          = Prelude.error
+              "SessionLog'SessionStatus.pred: bad argument SessionLog'STATUS_UNSPECIFIED. This value would be out of bounds."
+        pred SessionLog'START = SessionLog'STATUS_UNSPECIFIED
+        pred SessionLog'STOP = SessionLog'START
+        pred SessionLog'CHECKPOINT = SessionLog'STOP
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded SessionLog'SessionStatus where
+        minBound = SessionLog'STATUS_UNSPECIFIED
+        maxBound = SessionLog'CHECKPOINT
+
+data TaggedRunMetadata = TaggedRunMetadata{_TaggedRunMetadata'tag
+                                           :: !Data.Text.Text,
+                                           _TaggedRunMetadata'runMetadata ::
+                                           !Data.ByteString.ByteString}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tag" f TaggedRunMetadata TaggedRunMetadata a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TaggedRunMetadata'tag
+                 (\ x__ y__ -> x__{_TaggedRunMetadata'tag = y__}))
+              Prelude.id
+
+instance (a ~ Data.ByteString.ByteString,
+          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
+         Lens.Labels.HasLens "runMetadata" f TaggedRunMetadata
+           TaggedRunMetadata
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TaggedRunMetadata'runMetadata
+                 (\ x__ y__ -> x__{_TaggedRunMetadata'runMetadata = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TaggedRunMetadata where
+        def
+          = TaggedRunMetadata{_TaggedRunMetadata'tag =
+                                Data.ProtoLens.fieldDefault,
+                              _TaggedRunMetadata'runMetadata = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message TaggedRunMetadata where
+        descriptor
+          = let tag__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tag"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tag)
+                      :: Data.ProtoLens.FieldDescriptor TaggedRunMetadata
+                runMetadata__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "run_metadata"
+                      (Data.ProtoLens.BytesField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional runMetadata)
+                      :: Data.ProtoLens.FieldDescriptor TaggedRunMetadata
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TaggedRunMetadata")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, tag__field_descriptor),
+                    (Data.ProtoLens.Tag 2, runMetadata__field_descriptor)])
+                (Data.Map.fromList
+                   [("tag", tag__field_descriptor),
+                    ("run_metadata", runMetadata__field_descriptor)])
+
+data WatchdogConfig = WatchdogConfig{_WatchdogConfig'timeoutMs ::
+                                     !Data.Int.Int64}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "timeoutMs" f WatchdogConfig WatchdogConfig a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WatchdogConfig'timeoutMs
+                 (\ x__ y__ -> x__{_WatchdogConfig'timeoutMs = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default WatchdogConfig where
+        def
+          = WatchdogConfig{_WatchdogConfig'timeoutMs =
+                             Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message WatchdogConfig where
+        descriptor
+          = let timeoutMs__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "timeout_ms"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timeoutMs)
+                      :: Data.ProtoLens.FieldDescriptor WatchdogConfig
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.WatchdogConfig")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, timeoutMs__field_descriptor)])
+                (Data.Map.fromList [("timeout_ms", timeoutMs__field_descriptor)])
+
+data WorkerHealth = OK
+                  | RECEIVED_SHUTDOWN_SIGNAL
+                  | INTERNAL_ERROR
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default WorkerHealth where
+        def = OK
+
+instance Data.ProtoLens.FieldDefault WorkerHealth where
+        fieldDefault = OK
+
+instance Data.ProtoLens.MessageEnum WorkerHealth where
+        maybeToEnum 0 = Prelude.Just OK
+        maybeToEnum 1 = Prelude.Just RECEIVED_SHUTDOWN_SIGNAL
+        maybeToEnum 2 = Prelude.Just INTERNAL_ERROR
+        maybeToEnum _ = Prelude.Nothing
+        showEnum OK = "OK"
+        showEnum RECEIVED_SHUTDOWN_SIGNAL = "RECEIVED_SHUTDOWN_SIGNAL"
+        showEnum INTERNAL_ERROR = "INTERNAL_ERROR"
+        readEnum "OK" = Prelude.Just OK
+        readEnum "RECEIVED_SHUTDOWN_SIGNAL"
+          = Prelude.Just RECEIVED_SHUTDOWN_SIGNAL
+        readEnum "INTERNAL_ERROR" = Prelude.Just INTERNAL_ERROR
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum WorkerHealth where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum WorkerHealth: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum OK = 0
+        fromEnum RECEIVED_SHUTDOWN_SIGNAL = 1
+        fromEnum INTERNAL_ERROR = 2
+        succ INTERNAL_ERROR
+          = Prelude.error
+              "WorkerHealth.succ: bad argument INTERNAL_ERROR. This value would be out of bounds."
+        succ OK = RECEIVED_SHUTDOWN_SIGNAL
+        succ RECEIVED_SHUTDOWN_SIGNAL = INTERNAL_ERROR
+        pred OK
+          = Prelude.error
+              "WorkerHealth.pred: bad argument OK. This value would be out of bounds."
+        pred RECEIVED_SHUTDOWN_SIGNAL = OK
+        pred INTERNAL_ERROR = RECEIVED_SHUTDOWN_SIGNAL
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded WorkerHealth where
+        minBound = OK
+        maxBound = INTERNAL_ERROR
+
+data WorkerHeartbeatRequest = WorkerHeartbeatRequest{_WorkerHeartbeatRequest'shutdownMode
+                                                     :: !WorkerShutdownMode,
+                                                     _WorkerHeartbeatRequest'watchdogConfig ::
+                                                     !(Prelude.Maybe WatchdogConfig)}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ WorkerShutdownMode, b ~ WorkerShutdownMode,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shutdownMode" f WorkerHeartbeatRequest
+           WorkerHeartbeatRequest
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WorkerHeartbeatRequest'shutdownMode
+                 (\ x__ y__ -> x__{_WorkerHeartbeatRequest'shutdownMode = y__}))
+              Prelude.id
+
+instance (a ~ WatchdogConfig, b ~ WatchdogConfig,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "watchdogConfig" f WorkerHeartbeatRequest
+           WorkerHeartbeatRequest
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WorkerHeartbeatRequest'watchdogConfig
+                 (\ x__ y__ -> x__{_WorkerHeartbeatRequest'watchdogConfig = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe WatchdogConfig,
+          b ~ Prelude.Maybe WatchdogConfig, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'watchdogConfig" f WorkerHeartbeatRequest
+           WorkerHeartbeatRequest
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WorkerHeartbeatRequest'watchdogConfig
+                 (\ x__ y__ -> x__{_WorkerHeartbeatRequest'watchdogConfig = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default WorkerHeartbeatRequest where
+        def
+          = WorkerHeartbeatRequest{_WorkerHeartbeatRequest'shutdownMode =
+                                     Data.Default.Class.def,
+                                   _WorkerHeartbeatRequest'watchdogConfig = Prelude.Nothing}
+
+instance Data.ProtoLens.Message WorkerHeartbeatRequest where
+        descriptor
+          = let shutdownMode__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shutdown_mode"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor WorkerShutdownMode)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional shutdownMode)
+                      :: Data.ProtoLens.FieldDescriptor WorkerHeartbeatRequest
+                watchdogConfig__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "watchdog_config"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor WatchdogConfig)
+                      (Data.ProtoLens.OptionalField maybe'watchdogConfig)
+                      :: Data.ProtoLens.FieldDescriptor WorkerHeartbeatRequest
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.WorkerHeartbeatRequest")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, shutdownMode__field_descriptor),
+                    (Data.ProtoLens.Tag 2, watchdogConfig__field_descriptor)])
+                (Data.Map.fromList
+                   [("shutdown_mode", shutdownMode__field_descriptor),
+                    ("watchdog_config", watchdogConfig__field_descriptor)])
+
+data WorkerHeartbeatResponse = WorkerHeartbeatResponse{_WorkerHeartbeatResponse'healthStatus
+                                                       :: !WorkerHealth,
+                                                       _WorkerHeartbeatResponse'workerLog ::
+                                                       ![Event],
+                                                       _WorkerHeartbeatResponse'hostname ::
+                                                       !Data.Text.Text}
+                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ WorkerHealth, b ~ WorkerHealth, Prelude.Functor f) =>
+         Lens.Labels.HasLens "healthStatus" f WorkerHeartbeatResponse
+           WorkerHeartbeatResponse
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WorkerHeartbeatResponse'healthStatus
+                 (\ x__ y__ -> x__{_WorkerHeartbeatResponse'healthStatus = y__}))
+              Prelude.id
+
+instance (a ~ [Event], b ~ [Event], Prelude.Functor f) =>
+         Lens.Labels.HasLens "workerLog" f WorkerHeartbeatResponse
+           WorkerHeartbeatResponse
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WorkerHeartbeatResponse'workerLog
+                 (\ x__ y__ -> x__{_WorkerHeartbeatResponse'workerLog = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "hostname" f WorkerHeartbeatResponse
+           WorkerHeartbeatResponse
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _WorkerHeartbeatResponse'hostname
+                 (\ x__ y__ -> x__{_WorkerHeartbeatResponse'hostname = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default WorkerHeartbeatResponse where
+        def
+          = WorkerHeartbeatResponse{_WorkerHeartbeatResponse'healthStatus =
+                                      Data.Default.Class.def,
+                                    _WorkerHeartbeatResponse'workerLog = [],
+                                    _WorkerHeartbeatResponse'hostname = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message WorkerHeartbeatResponse where
+        descriptor
+          = let healthStatus__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "health_status"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor WorkerHealth)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional healthStatus)
+                      :: Data.ProtoLens.FieldDescriptor WorkerHeartbeatResponse
+                workerLog__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "worker_log"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Event)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked workerLog)
+                      :: Data.ProtoLens.FieldDescriptor WorkerHeartbeatResponse
+                hostname__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "hostname"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional hostname)
+                      :: Data.ProtoLens.FieldDescriptor WorkerHeartbeatResponse
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.WorkerHeartbeatResponse")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, healthStatus__field_descriptor),
+                    (Data.ProtoLens.Tag 2, workerLog__field_descriptor),
+                    (Data.ProtoLens.Tag 3, hostname__field_descriptor)])
+                (Data.Map.fromList
+                   [("health_status", healthStatus__field_descriptor),
+                    ("worker_log", workerLog__field_descriptor),
+                    ("hostname", hostname__field_descriptor)])
+
+data WorkerShutdownMode = DEFAULT
+                        | SHUTDOWN_IMMEDIATELY
+                        | WAIT_FOR_COORDINATOR
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default WorkerShutdownMode where
+        def = DEFAULT
+
+instance Data.ProtoLens.FieldDefault WorkerShutdownMode where
+        fieldDefault = DEFAULT
+
+instance Data.ProtoLens.MessageEnum WorkerShutdownMode where
+        maybeToEnum 0 = Prelude.Just DEFAULT
+        maybeToEnum 1 = Prelude.Just SHUTDOWN_IMMEDIATELY
+        maybeToEnum 2 = Prelude.Just WAIT_FOR_COORDINATOR
+        maybeToEnum _ = Prelude.Nothing
+        showEnum DEFAULT = "DEFAULT"
+        showEnum SHUTDOWN_IMMEDIATELY = "SHUTDOWN_IMMEDIATELY"
+        showEnum WAIT_FOR_COORDINATOR = "WAIT_FOR_COORDINATOR"
+        readEnum "DEFAULT" = Prelude.Just DEFAULT
+        readEnum "SHUTDOWN_IMMEDIATELY" = Prelude.Just SHUTDOWN_IMMEDIATELY
+        readEnum "WAIT_FOR_COORDINATOR" = Prelude.Just WAIT_FOR_COORDINATOR
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum WorkerShutdownMode where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum WorkerShutdownMode: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum DEFAULT = 0
+        fromEnum SHUTDOWN_IMMEDIATELY = 1
+        fromEnum WAIT_FOR_COORDINATOR = 2
+        succ WAIT_FOR_COORDINATOR
+          = Prelude.error
+              "WorkerShutdownMode.succ: bad argument WAIT_FOR_COORDINATOR. This value would be out of bounds."
+        succ DEFAULT = SHUTDOWN_IMMEDIATELY
+        succ SHUTDOWN_IMMEDIATELY = WAIT_FOR_COORDINATOR
+        pred DEFAULT
+          = Prelude.error
+              "WorkerShutdownMode.pred: bad argument DEFAULT. This value would be out of bounds."
+        pred SHUTDOWN_IMMEDIATELY = DEFAULT
+        pred WAIT_FOR_COORDINATOR = SHUTDOWN_IMMEDIATELY
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded WorkerShutdownMode where
+        minBound = DEFAULT
+        maxBound = WAIT_FOR_COORDINATOR
+
+checkpointPath ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "checkpointPath" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+checkpointPath
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "checkpointPath")
+
+fileVersion ::
+            forall f s t a b . (Lens.Labels.HasLens "fileVersion" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+fileVersion
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fileVersion")
+
+graphDef ::
+         forall f s t a b . (Lens.Labels.HasLens "graphDef" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+graphDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "graphDef")
+
+healthStatus ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "healthStatus" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+healthStatus
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "healthStatus")
+
+hostname ::
+         forall f s t a b . (Lens.Labels.HasLens "hostname" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+hostname
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hostname")
+
+level ::
+      forall f s t a b . (Lens.Labels.HasLens "level" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+level
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "level")
+
+logMessage ::
+           forall f s t a b . (Lens.Labels.HasLens "logMessage" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+logMessage
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "logMessage")
+
+maybe'fileVersion ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'fileVersion" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'fileVersion
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'fileVersion")
+
+maybe'graphDef ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'graphDef" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'graphDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'graphDef")
+
+maybe'logMessage ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'logMessage" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'logMessage
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'logMessage")
+
+maybe'metaGraphDef ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'metaGraphDef" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'metaGraphDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'metaGraphDef")
+
+maybe'sessionLog ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'sessionLog" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'sessionLog
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'sessionLog")
+
+maybe'summary ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'summary" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'summary
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'summary")
+
+maybe'taggedRunMetadata ::
+                        forall f s t a b .
+                          (Lens.Labels.HasLens "maybe'taggedRunMetadata" f s t a b) =>
+                          Lens.Family2.LensLike f s t a b
+maybe'taggedRunMetadata
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'taggedRunMetadata")
+
+maybe'watchdogConfig ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "maybe'watchdogConfig" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+maybe'watchdogConfig
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'watchdogConfig")
+
+maybe'what ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'what" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'what
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'what")
+
+message ::
+        forall f s t a b . (Lens.Labels.HasLens "message" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+message
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "message")
+
+metaGraphDef ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "metaGraphDef" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+metaGraphDef
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metaGraphDef")
+
+msg ::
+    forall f s t a b . (Lens.Labels.HasLens "msg" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+msg
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "msg")
+
+runMetadata ::
+            forall f s t a b . (Lens.Labels.HasLens "runMetadata" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+runMetadata
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "runMetadata")
+
+sessionLog ::
+           forall f s t a b . (Lens.Labels.HasLens "sessionLog" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+sessionLog
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sessionLog")
+
+shutdownMode ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "shutdownMode" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+shutdownMode
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shutdownMode")
+
+status ::
+       forall f s t a b . (Lens.Labels.HasLens "status" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+status
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "status")
+
+step ::
+     forall f s t a b . (Lens.Labels.HasLens "step" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+step
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "step")
+
+summary ::
+        forall f s t a b . (Lens.Labels.HasLens "summary" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+summary
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "summary")
+
+tag ::
+    forall f s t a b . (Lens.Labels.HasLens "tag" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+tag
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tag")
+
+taggedRunMetadata ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "taggedRunMetadata" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+taggedRunMetadata
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "taggedRunMetadata")
+
+timeoutMs ::
+          forall f s t a b . (Lens.Labels.HasLens "timeoutMs" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+timeoutMs
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timeoutMs")
+
+wallTime ::
+         forall f s t a b . (Lens.Labels.HasLens "wallTime" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+wallTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "wallTime")
+
+watchdogConfig ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "watchdogConfig" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+watchdogConfig
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "watchdogConfig")
+
+workerLog ::
+          forall f s t a b . (Lens.Labels.HasLens "workerLog" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+workerLog
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "workerLog")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/MemmappedFileSystem.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/MemmappedFileSystem.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/MemmappedFileSystem.hs
@@ -0,0 +1,159 @@
+{- This file was auto-generated from tensorflow/core/util/memmapped_file_system.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Util.MemmappedFileSystem where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+
+data MemmappedFileSystemDirectory = MemmappedFileSystemDirectory{_MemmappedFileSystemDirectory'element
+                                                                 ::
+                                                                 ![MemmappedFileSystemDirectoryElement]}
+                                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [MemmappedFileSystemDirectoryElement],
+          b ~ [MemmappedFileSystemDirectoryElement], Prelude.Functor f) =>
+         Lens.Labels.HasLens "element" f MemmappedFileSystemDirectory
+           MemmappedFileSystemDirectory
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemmappedFileSystemDirectory'element
+                 (\ x__ y__ -> x__{_MemmappedFileSystemDirectory'element = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemmappedFileSystemDirectory
+         where
+        def
+          = MemmappedFileSystemDirectory{_MemmappedFileSystemDirectory'element
+                                           = []}
+
+instance Data.ProtoLens.Message MemmappedFileSystemDirectory where
+        descriptor
+          = let element__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "element"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           MemmappedFileSystemDirectoryElement)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked element)
+                      :: Data.ProtoLens.FieldDescriptor MemmappedFileSystemDirectory
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemmappedFileSystemDirectory")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, element__field_descriptor)])
+                (Data.Map.fromList [("element", element__field_descriptor)])
+
+data MemmappedFileSystemDirectoryElement = MemmappedFileSystemDirectoryElement{_MemmappedFileSystemDirectoryElement'offset
+                                                                               :: !Data.Word.Word64,
+                                                                               _MemmappedFileSystemDirectoryElement'name
+                                                                               :: !Data.Text.Text}
+                                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "offset" f MemmappedFileSystemDirectoryElement
+           MemmappedFileSystemDirectoryElement
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemmappedFileSystemDirectoryElement'offset
+                 (\ x__ y__ ->
+                    x__{_MemmappedFileSystemDirectoryElement'offset = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f MemmappedFileSystemDirectoryElement
+           MemmappedFileSystemDirectoryElement
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MemmappedFileSystemDirectoryElement'name
+                 (\ x__ y__ ->
+                    x__{_MemmappedFileSystemDirectoryElement'name = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default
+           MemmappedFileSystemDirectoryElement
+         where
+        def
+          = MemmappedFileSystemDirectoryElement{_MemmappedFileSystemDirectoryElement'offset
+                                                  = Data.ProtoLens.fieldDefault,
+                                                _MemmappedFileSystemDirectoryElement'name =
+                                                  Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MemmappedFileSystemDirectoryElement
+         where
+        descriptor
+          = let offset__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "offset"
+                      (Data.ProtoLens.UInt64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional offset)
+                      ::
+                      Data.ProtoLens.FieldDescriptor MemmappedFileSystemDirectoryElement
+                name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      ::
+                      Data.ProtoLens.FieldDescriptor MemmappedFileSystemDirectoryElement
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemmappedFileSystemDirectoryElement")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, offset__field_descriptor),
+                    (Data.ProtoLens.Tag 2, name__field_descriptor)])
+                (Data.Map.fromList
+                   [("offset", offset__field_descriptor),
+                    ("name", name__field_descriptor)])
+
+element ::
+        forall f s t a b . (Lens.Labels.HasLens "element" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+element
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "element")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+offset ::
+       forall f s t a b . (Lens.Labels.HasLens "offset" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+offset
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "offset")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/SavedTensorSlice.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/SavedTensorSlice.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/SavedTensorSlice.hs
@@ -0,0 +1,517 @@
+{- This file was auto-generated from tensorflow/core/util/saved_tensor_slice.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Util.SavedTensorSlice where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Tensorflow.Core.Framework.Tensor
+import qualified Proto.Tensorflow.Core.Framework.TensorShape
+import qualified Proto.Tensorflow.Core.Framework.TensorSlice
+import qualified Proto.Tensorflow.Core.Framework.Types
+import qualified Proto.Tensorflow.Core.Framework.Versions
+
+data SavedSlice = SavedSlice{_SavedSlice'name :: !Data.Text.Text,
+                             _SavedSlice'slice ::
+                             !(Prelude.Maybe
+                                 Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto),
+                             _SavedSlice'data' ::
+                             !(Prelude.Maybe
+                                 Proto.Tensorflow.Core.Framework.Tensor.TensorProto)}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f SavedSlice SavedSlice a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSlice'name
+                 (\ x__ y__ -> x__{_SavedSlice'name = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "slice" f SavedSlice SavedSlice a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSlice'slice
+                 (\ x__ y__ -> x__{_SavedSlice'slice = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'slice" f SavedSlice SavedSlice a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSlice'slice
+                 (\ x__ y__ -> x__{_SavedSlice'slice = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "data'" f SavedSlice SavedSlice a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSlice'data'
+                 (\ x__ y__ -> x__{_SavedSlice'data' = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'data'" f SavedSlice SavedSlice a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSlice'data'
+                 (\ x__ y__ -> x__{_SavedSlice'data' = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SavedSlice where
+        def
+          = SavedSlice{_SavedSlice'name = Data.ProtoLens.fieldDefault,
+                       _SavedSlice'slice = Prelude.Nothing,
+                       _SavedSlice'data' = Prelude.Nothing}
+
+instance Data.ProtoLens.Message SavedSlice where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor SavedSlice
+                slice__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "slice"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto)
+                      (Data.ProtoLens.OptionalField maybe'slice)
+                      :: Data.ProtoLens.FieldDescriptor SavedSlice
+                data'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "data"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
+                      (Data.ProtoLens.OptionalField maybe'data')
+                      :: Data.ProtoLens.FieldDescriptor SavedSlice
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SavedSlice")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, slice__field_descriptor),
+                    (Data.ProtoLens.Tag 3, data'__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("slice", slice__field_descriptor),
+                    ("data", data'__field_descriptor)])
+
+data SavedSliceMeta = SavedSliceMeta{_SavedSliceMeta'name ::
+                                     !Data.Text.Text,
+                                     _SavedSliceMeta'shape ::
+                                     !(Prelude.Maybe
+                                         Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
+                                     _SavedSliceMeta'type' ::
+                                     !Proto.Tensorflow.Core.Framework.Types.DataType,
+                                     _SavedSliceMeta'slice ::
+                                     ![Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto]}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f SavedSliceMeta SavedSliceMeta a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSliceMeta'name
+                 (\ x__ y__ -> x__{_SavedSliceMeta'name = y__}))
+              Prelude.id
+
+instance (a ~
+            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "shape" f SavedSliceMeta SavedSliceMeta a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSliceMeta'shape
+                 (\ x__ y__ -> x__{_SavedSliceMeta'shape = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          b ~
+            Prelude.Maybe
+              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'shape" f SavedSliceMeta SavedSliceMeta a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSliceMeta'shape
+                 (\ x__ y__ -> x__{_SavedSliceMeta'shape = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f SavedSliceMeta SavedSliceMeta a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSliceMeta'type'
+                 (\ x__ y__ -> x__{_SavedSliceMeta'type' = y__}))
+              Prelude.id
+
+instance (a ~
+            [Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto],
+          b ~ [Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "slice" f SavedSliceMeta SavedSliceMeta a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedSliceMeta'slice
+                 (\ x__ y__ -> x__{_SavedSliceMeta'slice = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SavedSliceMeta where
+        def
+          = SavedSliceMeta{_SavedSliceMeta'name =
+                             Data.ProtoLens.fieldDefault,
+                           _SavedSliceMeta'shape = Prelude.Nothing,
+                           _SavedSliceMeta'type' = Data.Default.Class.def,
+                           _SavedSliceMeta'slice = []}
+
+instance Data.ProtoLens.Message SavedSliceMeta where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
+                shape__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "shape"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
+                      (Data.ProtoLens.OptionalField maybe'shape)
+                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Types.DataType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
+                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
+                slice__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "slice"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.TensorSlice.TensorSliceProto)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked slice)
+                      :: Data.ProtoLens.FieldDescriptor SavedSliceMeta
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SavedSliceMeta")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, shape__field_descriptor),
+                    (Data.ProtoLens.Tag 3, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 4, slice__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("shape", shape__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("slice", slice__field_descriptor)])
+
+data SavedTensorSliceMeta = SavedTensorSliceMeta{_SavedTensorSliceMeta'tensor
+                                                 :: ![SavedSliceMeta],
+                                                 _SavedTensorSliceMeta'versions ::
+                                                 !(Prelude.Maybe
+                                                     Proto.Tensorflow.Core.Framework.Versions.VersionDef)}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [SavedSliceMeta], b ~ [SavedSliceMeta],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "tensor" f SavedTensorSliceMeta
+           SavedTensorSliceMeta
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSliceMeta'tensor
+                 (\ x__ y__ -> x__{_SavedTensorSliceMeta'tensor = y__}))
+              Prelude.id
+
+instance (a ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          b ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "versions" f SavedTensorSliceMeta
+           SavedTensorSliceMeta
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSliceMeta'versions
+                 (\ x__ y__ -> x__{_SavedTensorSliceMeta'versions = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          b ~
+            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'versions" f SavedTensorSliceMeta
+           SavedTensorSliceMeta
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSliceMeta'versions
+                 (\ x__ y__ -> x__{_SavedTensorSliceMeta'versions = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SavedTensorSliceMeta where
+        def
+          = SavedTensorSliceMeta{_SavedTensorSliceMeta'tensor = [],
+                                 _SavedTensorSliceMeta'versions = Prelude.Nothing}
+
+instance Data.ProtoLens.Message SavedTensorSliceMeta where
+        descriptor
+          = let tensor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "tensor"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SavedSliceMeta)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked tensor)
+                      :: Data.ProtoLens.FieldDescriptor SavedTensorSliceMeta
+                versions__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "versions"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor
+                           Proto.Tensorflow.Core.Framework.Versions.VersionDef)
+                      (Data.ProtoLens.OptionalField maybe'versions)
+                      :: Data.ProtoLens.FieldDescriptor SavedTensorSliceMeta
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SavedTensorSliceMeta")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, tensor__field_descriptor),
+                    (Data.ProtoLens.Tag 2, versions__field_descriptor)])
+                (Data.Map.fromList
+                   [("tensor", tensor__field_descriptor),
+                    ("versions", versions__field_descriptor)])
+
+data SavedTensorSlices = SavedTensorSlices{_SavedTensorSlices'meta
+                                           :: !(Prelude.Maybe SavedTensorSliceMeta),
+                                           _SavedTensorSlices'data' :: !(Prelude.Maybe SavedSlice)}
+                       deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ SavedTensorSliceMeta, b ~ SavedTensorSliceMeta,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "meta" f SavedTensorSlices SavedTensorSlices a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSlices'meta
+                 (\ x__ y__ -> x__{_SavedTensorSlices'meta = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe SavedTensorSliceMeta,
+          b ~ Prelude.Maybe SavedTensorSliceMeta, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'meta" f SavedTensorSlices
+           SavedTensorSlices
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSlices'meta
+                 (\ x__ y__ -> x__{_SavedTensorSlices'meta = y__}))
+              Prelude.id
+
+instance (a ~ SavedSlice, b ~ SavedSlice, Prelude.Functor f) =>
+         Lens.Labels.HasLens "data'" f SavedTensorSlices SavedTensorSlices a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSlices'data'
+                 (\ x__ y__ -> x__{_SavedTensorSlices'data' = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe SavedSlice,
+          b ~ Prelude.Maybe SavedSlice, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'data'" f SavedTensorSlices
+           SavedTensorSlices
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _SavedTensorSlices'data'
+                 (\ x__ y__ -> x__{_SavedTensorSlices'data' = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default SavedTensorSlices where
+        def
+          = SavedTensorSlices{_SavedTensorSlices'meta = Prelude.Nothing,
+                              _SavedTensorSlices'data' = Prelude.Nothing}
+
+instance Data.ProtoLens.Message SavedTensorSlices where
+        descriptor
+          = let meta__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "meta"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SavedTensorSliceMeta)
+                      (Data.ProtoLens.OptionalField maybe'meta)
+                      :: Data.ProtoLens.FieldDescriptor SavedTensorSlices
+                data'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "data"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor SavedSlice)
+                      (Data.ProtoLens.OptionalField maybe'data')
+                      :: Data.ProtoLens.FieldDescriptor SavedTensorSlices
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.SavedTensorSlices")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, meta__field_descriptor),
+                    (Data.ProtoLens.Tag 2, data'__field_descriptor)])
+                (Data.Map.fromList
+                   [("meta", meta__field_descriptor),
+                    ("data", data'__field_descriptor)])
+
+data' ::
+      forall f s t a b . (Lens.Labels.HasLens "data'" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+data'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "data'")
+
+maybe'data' ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'data'" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'data'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'data'")
+
+maybe'meta ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'meta" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'meta
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'meta")
+
+maybe'shape ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
+
+maybe'slice ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'slice" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'slice
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'slice")
+
+maybe'versions ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'versions" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'versions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'versions")
+
+meta ::
+     forall f s t a b . (Lens.Labels.HasLens "meta" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+meta
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "meta")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+shape ::
+      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+shape
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
+
+slice ::
+      forall f s t a b . (Lens.Labels.HasLens "slice" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+slice
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "slice")
+
+tensor ::
+       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+tensor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
+
+type' ::
+      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+type'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
+
+versions ::
+         forall f s t a b . (Lens.Labels.HasLens "versions" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+versions
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "versions")
diff --git a/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/TestLog.hs b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/TestLog.hs
new file mode 100644
--- /dev/null
+++ b/.stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/global-autogen/Proto/Tensorflow/Core/Util/TestLog.hs
@@ -0,0 +1,2311 @@
+{- This file was auto-generated from tensorflow/core/util/test_log.proto by the proto-lens-protoc program. -}
+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
+  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
+  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
+  #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports#-}
+module Proto.Tensorflow.Core.Util.TestLog where
+import qualified Data.ProtoLens.Reexport.Prelude as Prelude
+import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
+import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
+import qualified Data.ProtoLens.Reexport.Data.ProtoLens
+       as Data.ProtoLens
+import qualified
+       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
+       as Data.ProtoLens.Message.Enum
+import qualified Data.ProtoLens.Reexport.Lens.Family2
+       as Lens.Family2
+import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
+       as Lens.Family2.Unchecked
+import qualified Data.ProtoLens.Reexport.Data.Default.Class
+       as Data.Default.Class
+import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
+import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
+import qualified Data.ProtoLens.Reexport.Data.ByteString
+       as Data.ByteString
+import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
+import qualified Proto.Google.Protobuf.Any
+
+data AvailableDeviceInfo = AvailableDeviceInfo{_AvailableDeviceInfo'name
+                                               :: !Data.Text.Text,
+                                               _AvailableDeviceInfo'type' :: !Data.Text.Text,
+                                               _AvailableDeviceInfo'memoryLimit :: !Data.Int.Int64,
+                                               _AvailableDeviceInfo'physicalDescription ::
+                                               !Data.Text.Text}
+                         deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f AvailableDeviceInfo
+           AvailableDeviceInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AvailableDeviceInfo'name
+                 (\ x__ y__ -> x__{_AvailableDeviceInfo'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "type'" f AvailableDeviceInfo
+           AvailableDeviceInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AvailableDeviceInfo'type'
+                 (\ x__ y__ -> x__{_AvailableDeviceInfo'type' = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryLimit" f AvailableDeviceInfo
+           AvailableDeviceInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _AvailableDeviceInfo'memoryLimit
+                 (\ x__ y__ -> x__{_AvailableDeviceInfo'memoryLimit = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "physicalDescription" f AvailableDeviceInfo
+           AvailableDeviceInfo
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _AvailableDeviceInfo'physicalDescription
+                 (\ x__ y__ -> x__{_AvailableDeviceInfo'physicalDescription = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default AvailableDeviceInfo where
+        def
+          = AvailableDeviceInfo{_AvailableDeviceInfo'name =
+                                  Data.ProtoLens.fieldDefault,
+                                _AvailableDeviceInfo'type' = Data.ProtoLens.fieldDefault,
+                                _AvailableDeviceInfo'memoryLimit = Data.ProtoLens.fieldDefault,
+                                _AvailableDeviceInfo'physicalDescription =
+                                  Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message AvailableDeviceInfo where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor AvailableDeviceInfo
+                type'__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "type"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
+                      :: Data.ProtoLens.FieldDescriptor AvailableDeviceInfo
+                memoryLimit__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_limit"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional memoryLimit)
+                      :: Data.ProtoLens.FieldDescriptor AvailableDeviceInfo
+                physicalDescription__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "physical_description"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         physicalDescription)
+                      :: Data.ProtoLens.FieldDescriptor AvailableDeviceInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.AvailableDeviceInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, type'__field_descriptor),
+                    (Data.ProtoLens.Tag 3, memoryLimit__field_descriptor),
+                    (Data.ProtoLens.Tag 4, physicalDescription__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("type", type'__field_descriptor),
+                    ("memory_limit", memoryLimit__field_descriptor),
+                    ("physical_description", physicalDescription__field_descriptor)])
+
+data BenchmarkEntries = BenchmarkEntries{_BenchmarkEntries'entry ::
+                                         ![BenchmarkEntry]}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [BenchmarkEntry], b ~ [BenchmarkEntry],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "entry" f BenchmarkEntries BenchmarkEntries a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntries'entry
+                 (\ x__ y__ -> x__{_BenchmarkEntries'entry = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BenchmarkEntries where
+        def = BenchmarkEntries{_BenchmarkEntries'entry = []}
+
+instance Data.ProtoLens.Message BenchmarkEntries where
+        descriptor
+          = let entry__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "entry"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor BenchmarkEntry)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked entry)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntries
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BenchmarkEntries")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, entry__field_descriptor)])
+                (Data.Map.fromList [("entry", entry__field_descriptor)])
+
+data BenchmarkEntry = BenchmarkEntry{_BenchmarkEntry'name ::
+                                     !Data.Text.Text,
+                                     _BenchmarkEntry'iters :: !Data.Int.Int64,
+                                     _BenchmarkEntry'cpuTime :: !Prelude.Double,
+                                     _BenchmarkEntry'wallTime :: !Prelude.Double,
+                                     _BenchmarkEntry'throughput :: !Prelude.Double,
+                                     _BenchmarkEntry'extras ::
+                                     !(Data.Map.Map Data.Text.Text EntryValue)}
+                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f BenchmarkEntry BenchmarkEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'name
+                 (\ x__ y__ -> x__{_BenchmarkEntry'name = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "iters" f BenchmarkEntry BenchmarkEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'iters
+                 (\ x__ y__ -> x__{_BenchmarkEntry'iters = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cpuTime" f BenchmarkEntry BenchmarkEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'cpuTime
+                 (\ x__ y__ -> x__{_BenchmarkEntry'cpuTime = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "wallTime" f BenchmarkEntry BenchmarkEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'wallTime
+                 (\ x__ y__ -> x__{_BenchmarkEntry'wallTime = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "throughput" f BenchmarkEntry BenchmarkEntry a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'throughput
+                 (\ x__ y__ -> x__{_BenchmarkEntry'throughput = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text EntryValue,
+          b ~ Data.Map.Map Data.Text.Text EntryValue, Prelude.Functor f) =>
+         Lens.Labels.HasLens "extras" f BenchmarkEntry BenchmarkEntry a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'extras
+                 (\ x__ y__ -> x__{_BenchmarkEntry'extras = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BenchmarkEntry where
+        def
+          = BenchmarkEntry{_BenchmarkEntry'name =
+                             Data.ProtoLens.fieldDefault,
+                           _BenchmarkEntry'iters = Data.ProtoLens.fieldDefault,
+                           _BenchmarkEntry'cpuTime = Data.ProtoLens.fieldDefault,
+                           _BenchmarkEntry'wallTime = Data.ProtoLens.fieldDefault,
+                           _BenchmarkEntry'throughput = Data.ProtoLens.fieldDefault,
+                           _BenchmarkEntry'extras = Data.Map.empty}
+
+instance Data.ProtoLens.Message BenchmarkEntry where
+        descriptor
+          = let name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry
+                iters__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "iters"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional iters)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry
+                cpuTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cpu_time"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional cpuTime)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry
+                wallTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "wall_time"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional wallTime)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry
+                throughput__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "throughput"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional throughput)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry
+                extras__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "extras"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor BenchmarkEntry'ExtrasEntry)
+                      (Data.ProtoLens.MapField key value extras)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BenchmarkEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
+                    (Data.ProtoLens.Tag 2, iters__field_descriptor),
+                    (Data.ProtoLens.Tag 3, cpuTime__field_descriptor),
+                    (Data.ProtoLens.Tag 4, wallTime__field_descriptor),
+                    (Data.ProtoLens.Tag 5, throughput__field_descriptor),
+                    (Data.ProtoLens.Tag 6, extras__field_descriptor)])
+                (Data.Map.fromList
+                   [("name", name__field_descriptor),
+                    ("iters", iters__field_descriptor),
+                    ("cpu_time", cpuTime__field_descriptor),
+                    ("wall_time", wallTime__field_descriptor),
+                    ("throughput", throughput__field_descriptor),
+                    ("extras", extras__field_descriptor)])
+
+data BenchmarkEntry'ExtrasEntry = BenchmarkEntry'ExtrasEntry{_BenchmarkEntry'ExtrasEntry'key
+                                                             :: !Data.Text.Text,
+                                                             _BenchmarkEntry'ExtrasEntry'value ::
+                                                             !(Prelude.Maybe EntryValue)}
+                                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f BenchmarkEntry'ExtrasEntry
+           BenchmarkEntry'ExtrasEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'ExtrasEntry'key
+                 (\ x__ y__ -> x__{_BenchmarkEntry'ExtrasEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ EntryValue, b ~ EntryValue, Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f BenchmarkEntry'ExtrasEntry
+           BenchmarkEntry'ExtrasEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'ExtrasEntry'value
+                 (\ x__ y__ -> x__{_BenchmarkEntry'ExtrasEntry'value = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe EntryValue,
+          b ~ Prelude.Maybe EntryValue, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'value" f BenchmarkEntry'ExtrasEntry
+           BenchmarkEntry'ExtrasEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BenchmarkEntry'ExtrasEntry'value
+                 (\ x__ y__ -> x__{_BenchmarkEntry'ExtrasEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BenchmarkEntry'ExtrasEntry
+         where
+        def
+          = BenchmarkEntry'ExtrasEntry{_BenchmarkEntry'ExtrasEntry'key =
+                                         Data.ProtoLens.fieldDefault,
+                                       _BenchmarkEntry'ExtrasEntry'value = Prelude.Nothing}
+
+instance Data.ProtoLens.Message BenchmarkEntry'ExtrasEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry'ExtrasEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor EntryValue)
+                      (Data.ProtoLens.OptionalField maybe'value)
+                      :: Data.ProtoLens.FieldDescriptor BenchmarkEntry'ExtrasEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BenchmarkEntry.ExtrasEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data BuildConfiguration = BuildConfiguration{_BuildConfiguration'mode
+                                             :: !Data.Text.Text,
+                                             _BuildConfiguration'ccFlags :: ![Data.Text.Text],
+                                             _BuildConfiguration'opts :: ![Data.Text.Text]}
+                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "mode" f BuildConfiguration BuildConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BuildConfiguration'mode
+                 (\ x__ y__ -> x__{_BuildConfiguration'mode = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "ccFlags" f BuildConfiguration
+           BuildConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BuildConfiguration'ccFlags
+                 (\ x__ y__ -> x__{_BuildConfiguration'ccFlags = y__}))
+              Prelude.id
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "opts" f BuildConfiguration BuildConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _BuildConfiguration'opts
+                 (\ x__ y__ -> x__{_BuildConfiguration'opts = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default BuildConfiguration where
+        def
+          = BuildConfiguration{_BuildConfiguration'mode =
+                                 Data.ProtoLens.fieldDefault,
+                               _BuildConfiguration'ccFlags = [], _BuildConfiguration'opts = []}
+
+instance Data.ProtoLens.Message BuildConfiguration where
+        descriptor
+          = let mode__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "mode"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional mode)
+                      :: Data.ProtoLens.FieldDescriptor BuildConfiguration
+                ccFlags__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cc_flags"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked ccFlags)
+                      :: Data.ProtoLens.FieldDescriptor BuildConfiguration
+                opts__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "opts"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked opts)
+                      :: Data.ProtoLens.FieldDescriptor BuildConfiguration
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.BuildConfiguration")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, mode__field_descriptor),
+                    (Data.ProtoLens.Tag 2, ccFlags__field_descriptor),
+                    (Data.ProtoLens.Tag 3, opts__field_descriptor)])
+                (Data.Map.fromList
+                   [("mode", mode__field_descriptor),
+                    ("cc_flags", ccFlags__field_descriptor),
+                    ("opts", opts__field_descriptor)])
+
+data CPUInfo = CPUInfo{_CPUInfo'numCores :: !Data.Int.Int64,
+                       _CPUInfo'numCoresAllowed :: !Data.Int.Int64,
+                       _CPUInfo'mhzPerCpu :: !Prelude.Double,
+                       _CPUInfo'cpuInfo :: !Data.Text.Text,
+                       _CPUInfo'cpuGovernor :: !Data.Text.Text,
+                       _CPUInfo'cacheSize ::
+                       !(Data.Map.Map Data.Text.Text Data.Int.Int64)}
+             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numCores" f CPUInfo CPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'numCores
+                 (\ x__ y__ -> x__{_CPUInfo'numCores = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "numCoresAllowed" f CPUInfo CPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'numCoresAllowed
+                 (\ x__ y__ -> x__{_CPUInfo'numCoresAllowed = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "mhzPerCpu" f CPUInfo CPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'mhzPerCpu
+                 (\ x__ y__ -> x__{_CPUInfo'mhzPerCpu = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cpuInfo" f CPUInfo CPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'cpuInfo
+                 (\ x__ y__ -> x__{_CPUInfo'cpuInfo = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cpuGovernor" f CPUInfo CPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'cpuGovernor
+                 (\ x__ y__ -> x__{_CPUInfo'cpuGovernor = y__}))
+              Prelude.id
+
+instance (a ~ Data.Map.Map Data.Text.Text Data.Int.Int64,
+          b ~ Data.Map.Map Data.Text.Text Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "cacheSize" f CPUInfo CPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'cacheSize
+                 (\ x__ y__ -> x__{_CPUInfo'cacheSize = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CPUInfo where
+        def
+          = CPUInfo{_CPUInfo'numCores = Data.ProtoLens.fieldDefault,
+                    _CPUInfo'numCoresAllowed = Data.ProtoLens.fieldDefault,
+                    _CPUInfo'mhzPerCpu = Data.ProtoLens.fieldDefault,
+                    _CPUInfo'cpuInfo = Data.ProtoLens.fieldDefault,
+                    _CPUInfo'cpuGovernor = Data.ProtoLens.fieldDefault,
+                    _CPUInfo'cacheSize = Data.Map.empty}
+
+instance Data.ProtoLens.Message CPUInfo where
+        descriptor
+          = let numCores__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_cores"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numCores)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo
+                numCoresAllowed__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "num_cores_allowed"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numCoresAllowed)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo
+                mhzPerCpu__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "mhz_per_cpu"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional mhzPerCpu)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo
+                cpuInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cpu_info"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional cpuInfo)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo
+                cpuGovernor__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cpu_governor"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional cpuGovernor)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo
+                cacheSize__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cache_size"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CPUInfo'CacheSizeEntry)
+                      (Data.ProtoLens.MapField key value cacheSize)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CPUInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, numCores__field_descriptor),
+                    (Data.ProtoLens.Tag 2, numCoresAllowed__field_descriptor),
+                    (Data.ProtoLens.Tag 3, mhzPerCpu__field_descriptor),
+                    (Data.ProtoLens.Tag 4, cpuInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 5, cpuGovernor__field_descriptor),
+                    (Data.ProtoLens.Tag 6, cacheSize__field_descriptor)])
+                (Data.Map.fromList
+                   [("num_cores", numCores__field_descriptor),
+                    ("num_cores_allowed", numCoresAllowed__field_descriptor),
+                    ("mhz_per_cpu", mhzPerCpu__field_descriptor),
+                    ("cpu_info", cpuInfo__field_descriptor),
+                    ("cpu_governor", cpuGovernor__field_descriptor),
+                    ("cache_size", cacheSize__field_descriptor)])
+
+data CPUInfo'CacheSizeEntry = CPUInfo'CacheSizeEntry{_CPUInfo'CacheSizeEntry'key
+                                                     :: !Data.Text.Text,
+                                                     _CPUInfo'CacheSizeEntry'value ::
+                                                     !Data.Int.Int64}
+                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "key" f CPUInfo'CacheSizeEntry
+           CPUInfo'CacheSizeEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'CacheSizeEntry'key
+                 (\ x__ y__ -> x__{_CPUInfo'CacheSizeEntry'key = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "value" f CPUInfo'CacheSizeEntry
+           CPUInfo'CacheSizeEntry
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CPUInfo'CacheSizeEntry'value
+                 (\ x__ y__ -> x__{_CPUInfo'CacheSizeEntry'value = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default CPUInfo'CacheSizeEntry where
+        def
+          = CPUInfo'CacheSizeEntry{_CPUInfo'CacheSizeEntry'key =
+                                     Data.ProtoLens.fieldDefault,
+                                   _CPUInfo'CacheSizeEntry'value = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message CPUInfo'CacheSizeEntry where
+        descriptor
+          = let key__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "key"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo'CacheSizeEntry
+                value__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "value"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
+                      :: Data.ProtoLens.FieldDescriptor CPUInfo'CacheSizeEntry
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CPUInfo.CacheSizeEntry")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
+                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
+                (Data.Map.fromList
+                   [("key", key__field_descriptor),
+                    ("value", value__field_descriptor)])
+
+data CommitId = CommitId{_CommitId'snapshot :: !Data.Text.Text,
+                         _CommitId'pendingChangelist :: !Data.Int.Int64,
+                         _CommitId'kind :: !(Prelude.Maybe CommitId'Kind)}
+              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data CommitId'Kind = CommitId'Changelist !Data.Int.Int64
+                   | CommitId'Hash !Data.Text.Text
+                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "snapshot" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'snapshot
+                 (\ x__ y__ -> x__{_CommitId'snapshot = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "pendingChangelist" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'pendingChangelist
+                 (\ x__ y__ -> x__{_CommitId'pendingChangelist = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe CommitId'Kind,
+          b ~ Prelude.Maybe CommitId'Kind, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'kind" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'kind
+                 (\ x__ y__ -> x__{_CommitId'kind = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Data.Int.Int64,
+          b ~ Prelude.Maybe Data.Int.Int64, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'changelist" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'kind
+                 (\ x__ y__ -> x__{_CommitId'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CommitId'Changelist x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CommitId'Changelist y__))
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "changelist" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'kind
+                 (\ x__ y__ -> x__{_CommitId'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CommitId'Changelist x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CommitId'Changelist y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Data.Text.Text,
+          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'hash" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'kind
+                 (\ x__ y__ -> x__{_CommitId'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (CommitId'Hash x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap CommitId'Hash y__))
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "hash" f CommitId CommitId a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _CommitId'kind
+                 (\ x__ y__ -> x__{_CommitId'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (CommitId'Hash x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap CommitId'Hash y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance Data.Default.Class.Default CommitId where
+        def
+          = CommitId{_CommitId'snapshot = Data.ProtoLens.fieldDefault,
+                     _CommitId'pendingChangelist = Data.ProtoLens.fieldDefault,
+                     _CommitId'kind = Prelude.Nothing}
+
+instance Data.ProtoLens.Message CommitId where
+        descriptor
+          = let snapshot__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "snapshot"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional snapshot)
+                      :: Data.ProtoLens.FieldDescriptor CommitId
+                pendingChangelist__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "pending_changelist"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         pendingChangelist)
+                      :: Data.ProtoLens.FieldDescriptor CommitId
+                changelist__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "changelist"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.OptionalField maybe'changelist)
+                      :: Data.ProtoLens.FieldDescriptor CommitId
+                hash__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "hash"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.OptionalField maybe'hash)
+                      :: Data.ProtoLens.FieldDescriptor CommitId
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.CommitId")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 3, snapshot__field_descriptor),
+                    (Data.ProtoLens.Tag 4, pendingChangelist__field_descriptor),
+                    (Data.ProtoLens.Tag 1, changelist__field_descriptor),
+                    (Data.ProtoLens.Tag 2, hash__field_descriptor)])
+                (Data.Map.fromList
+                   [("snapshot", snapshot__field_descriptor),
+                    ("pending_changelist", pendingChangelist__field_descriptor),
+                    ("changelist", changelist__field_descriptor),
+                    ("hash", hash__field_descriptor)])
+
+data EntryValue = EntryValue{_EntryValue'kind ::
+                             !(Prelude.Maybe EntryValue'Kind)}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+data EntryValue'Kind = EntryValue'DoubleValue !Prelude.Double
+                     | EntryValue'StringValue !Data.Text.Text
+                     deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Prelude.Maybe EntryValue'Kind,
+          b ~ Prelude.Maybe EntryValue'Kind, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'kind" f EntryValue EntryValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _EntryValue'kind
+                 (\ x__ y__ -> x__{_EntryValue'kind = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Maybe Prelude.Double,
+          b ~ Prelude.Maybe Prelude.Double, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'doubleValue" f EntryValue EntryValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _EntryValue'kind
+                 (\ x__ y__ -> x__{_EntryValue'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (EntryValue'DoubleValue x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap EntryValue'DoubleValue y__))
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "doubleValue" f EntryValue EntryValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _EntryValue'kind
+                 (\ x__ y__ -> x__{_EntryValue'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (EntryValue'DoubleValue x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap EntryValue'DoubleValue y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance (a ~ Prelude.Maybe Data.Text.Text,
+          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'stringValue" f EntryValue EntryValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _EntryValue'kind
+                 (\ x__ y__ -> x__{_EntryValue'kind = y__}))
+              (Lens.Family2.Unchecked.lens
+                 (\ x__ ->
+                    case x__ of
+                        Prelude.Just (EntryValue'StringValue x__val) -> Prelude.Just x__val
+                        _otherwise -> Prelude.Nothing)
+                 (\ _ y__ -> Prelude.fmap EntryValue'StringValue y__))
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "stringValue" f EntryValue EntryValue a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _EntryValue'kind
+                 (\ x__ y__ -> x__{_EntryValue'kind = y__}))
+              ((Prelude..)
+                 (Lens.Family2.Unchecked.lens
+                    (\ x__ ->
+                       case x__ of
+                           Prelude.Just (EntryValue'StringValue x__val) -> Prelude.Just x__val
+                           _otherwise -> Prelude.Nothing)
+                    (\ _ y__ -> Prelude.fmap EntryValue'StringValue y__))
+                 (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault))
+
+instance Data.Default.Class.Default EntryValue where
+        def = EntryValue{_EntryValue'kind = Prelude.Nothing}
+
+instance Data.ProtoLens.Message EntryValue where
+        descriptor
+          = let doubleValue__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "double_value"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.OptionalField maybe'doubleValue)
+                      :: Data.ProtoLens.FieldDescriptor EntryValue
+                stringValue__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "string_value"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.OptionalField maybe'stringValue)
+                      :: Data.ProtoLens.FieldDescriptor EntryValue
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.EntryValue")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, doubleValue__field_descriptor),
+                    (Data.ProtoLens.Tag 2, stringValue__field_descriptor)])
+                (Data.Map.fromList
+                   [("double_value", doubleValue__field_descriptor),
+                    ("string_value", stringValue__field_descriptor)])
+
+data GPUInfo = GPUInfo{_GPUInfo'model :: !Data.Text.Text,
+                       _GPUInfo'uuid :: !Data.Text.Text,
+                       _GPUInfo'busId :: !Data.Text.Text}
+             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "model" f GPUInfo GPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUInfo'model
+                 (\ x__ y__ -> x__{_GPUInfo'model = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "uuid" f GPUInfo GPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUInfo'uuid
+                 (\ x__ y__ -> x__{_GPUInfo'uuid = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "busId" f GPUInfo GPUInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _GPUInfo'busId
+                 (\ x__ y__ -> x__{_GPUInfo'busId = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default GPUInfo where
+        def
+          = GPUInfo{_GPUInfo'model = Data.ProtoLens.fieldDefault,
+                    _GPUInfo'uuid = Data.ProtoLens.fieldDefault,
+                    _GPUInfo'busId = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message GPUInfo where
+        descriptor
+          = let model__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "model"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional model)
+                      :: Data.ProtoLens.FieldDescriptor GPUInfo
+                uuid__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "uuid"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional uuid)
+                      :: Data.ProtoLens.FieldDescriptor GPUInfo
+                busId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bus_id"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional busId)
+                      :: Data.ProtoLens.FieldDescriptor GPUInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.GPUInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, model__field_descriptor),
+                    (Data.ProtoLens.Tag 2, uuid__field_descriptor),
+                    (Data.ProtoLens.Tag 3, busId__field_descriptor)])
+                (Data.Map.fromList
+                   [("model", model__field_descriptor),
+                    ("uuid", uuid__field_descriptor),
+                    ("bus_id", busId__field_descriptor)])
+
+data MachineConfiguration = MachineConfiguration{_MachineConfiguration'hostname
+                                                 :: !Data.Text.Text,
+                                                 _MachineConfiguration'serialIdentifier ::
+                                                 !Data.Text.Text,
+                                                 _MachineConfiguration'platformInfo ::
+                                                 !(Prelude.Maybe PlatformInfo),
+                                                 _MachineConfiguration'cpuInfo ::
+                                                 !(Prelude.Maybe CPUInfo),
+                                                 _MachineConfiguration'deviceInfo ::
+                                                 ![Proto.Google.Protobuf.Any.Any],
+                                                 _MachineConfiguration'availableDeviceInfo ::
+                                                 ![AvailableDeviceInfo],
+                                                 _MachineConfiguration'memoryInfo ::
+                                                 !(Prelude.Maybe MemoryInfo)}
+                          deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "hostname" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'hostname
+                 (\ x__ y__ -> x__{_MachineConfiguration'hostname = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "serialIdentifier" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'serialIdentifier
+                 (\ x__ y__ -> x__{_MachineConfiguration'serialIdentifier = y__}))
+              Prelude.id
+
+instance (a ~ PlatformInfo, b ~ PlatformInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "platformInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'platformInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'platformInfo = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe PlatformInfo,
+          b ~ Prelude.Maybe PlatformInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'platformInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'platformInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'platformInfo = y__}))
+              Prelude.id
+
+instance (a ~ CPUInfo, b ~ CPUInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "cpuInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'cpuInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'cpuInfo = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe CPUInfo, b ~ Prelude.Maybe CPUInfo,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'cpuInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'cpuInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'cpuInfo = y__}))
+              Prelude.id
+
+instance (a ~ [Proto.Google.Protobuf.Any.Any],
+          b ~ [Proto.Google.Protobuf.Any.Any], Prelude.Functor f) =>
+         Lens.Labels.HasLens "deviceInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'deviceInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'deviceInfo = y__}))
+              Prelude.id
+
+instance (a ~ [AvailableDeviceInfo], b ~ [AvailableDeviceInfo],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "availableDeviceInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens
+                 _MachineConfiguration'availableDeviceInfo
+                 (\ x__ y__ ->
+                    x__{_MachineConfiguration'availableDeviceInfo = y__}))
+              Prelude.id
+
+instance (a ~ MemoryInfo, b ~ MemoryInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "memoryInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'memoryInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'memoryInfo = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe MemoryInfo,
+          b ~ Prelude.Maybe MemoryInfo, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'memoryInfo" f MachineConfiguration
+           MachineConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MachineConfiguration'memoryInfo
+                 (\ x__ y__ -> x__{_MachineConfiguration'memoryInfo = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MachineConfiguration where
+        def
+          = MachineConfiguration{_MachineConfiguration'hostname =
+                                   Data.ProtoLens.fieldDefault,
+                                 _MachineConfiguration'serialIdentifier =
+                                   Data.ProtoLens.fieldDefault,
+                                 _MachineConfiguration'platformInfo = Prelude.Nothing,
+                                 _MachineConfiguration'cpuInfo = Prelude.Nothing,
+                                 _MachineConfiguration'deviceInfo = [],
+                                 _MachineConfiguration'availableDeviceInfo = [],
+                                 _MachineConfiguration'memoryInfo = Prelude.Nothing}
+
+instance Data.ProtoLens.Message MachineConfiguration where
+        descriptor
+          = let hostname__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "hostname"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional hostname)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+                serialIdentifier__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "serial_identifier"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
+                         serialIdentifier)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+                platformInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "platform_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor PlatformInfo)
+                      (Data.ProtoLens.OptionalField maybe'platformInfo)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+                cpuInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "cpu_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CPUInfo)
+                      (Data.ProtoLens.OptionalField maybe'cpuInfo)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+                deviceInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "device_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor Proto.Google.Protobuf.Any.Any)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked deviceInfo)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+                availableDeviceInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "available_device_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor AvailableDeviceInfo)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
+                         availableDeviceInfo)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+                memoryInfo__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "memory_info"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor MemoryInfo)
+                      (Data.ProtoLens.OptionalField maybe'memoryInfo)
+                      :: Data.ProtoLens.FieldDescriptor MachineConfiguration
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MachineConfiguration")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, hostname__field_descriptor),
+                    (Data.ProtoLens.Tag 7, serialIdentifier__field_descriptor),
+                    (Data.ProtoLens.Tag 2, platformInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 3, cpuInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 4, deviceInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 5, availableDeviceInfo__field_descriptor),
+                    (Data.ProtoLens.Tag 6, memoryInfo__field_descriptor)])
+                (Data.Map.fromList
+                   [("hostname", hostname__field_descriptor),
+                    ("serial_identifier", serialIdentifier__field_descriptor),
+                    ("platform_info", platformInfo__field_descriptor),
+                    ("cpu_info", cpuInfo__field_descriptor),
+                    ("device_info", deviceInfo__field_descriptor),
+                    ("available_device_info", availableDeviceInfo__field_descriptor),
+                    ("memory_info", memoryInfo__field_descriptor)])
+
+data MemoryInfo = MemoryInfo{_MemoryInfo'total :: !Data.Int.Int64,
+                             _MemoryInfo'available :: !Data.Int.Int64}
+                deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "total" f MemoryInfo MemoryInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryInfo'total
+                 (\ x__ y__ -> x__{_MemoryInfo'total = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "available" f MemoryInfo MemoryInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _MemoryInfo'available
+                 (\ x__ y__ -> x__{_MemoryInfo'available = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default MemoryInfo where
+        def
+          = MemoryInfo{_MemoryInfo'total = Data.ProtoLens.fieldDefault,
+                       _MemoryInfo'available = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message MemoryInfo where
+        descriptor
+          = let total__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "total"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional total)
+                      :: Data.ProtoLens.FieldDescriptor MemoryInfo
+                available__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "available"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional available)
+                      :: Data.ProtoLens.FieldDescriptor MemoryInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.MemoryInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, total__field_descriptor),
+                    (Data.ProtoLens.Tag 2, available__field_descriptor)])
+                (Data.Map.fromList
+                   [("total", total__field_descriptor),
+                    ("available", available__field_descriptor)])
+
+data PlatformInfo = PlatformInfo{_PlatformInfo'bits ::
+                                 !Data.Text.Text,
+                                 _PlatformInfo'linkage :: !Data.Text.Text,
+                                 _PlatformInfo'machine :: !Data.Text.Text,
+                                 _PlatformInfo'release :: !Data.Text.Text,
+                                 _PlatformInfo'system :: !Data.Text.Text,
+                                 _PlatformInfo'version :: !Data.Text.Text}
+                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "bits" f PlatformInfo PlatformInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _PlatformInfo'bits
+                 (\ x__ y__ -> x__{_PlatformInfo'bits = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "linkage" f PlatformInfo PlatformInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _PlatformInfo'linkage
+                 (\ x__ y__ -> x__{_PlatformInfo'linkage = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "machine" f PlatformInfo PlatformInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _PlatformInfo'machine
+                 (\ x__ y__ -> x__{_PlatformInfo'machine = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "release" f PlatformInfo PlatformInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _PlatformInfo'release
+                 (\ x__ y__ -> x__{_PlatformInfo'release = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "system" f PlatformInfo PlatformInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _PlatformInfo'system
+                 (\ x__ y__ -> x__{_PlatformInfo'system = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "version" f PlatformInfo PlatformInfo a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _PlatformInfo'version
+                 (\ x__ y__ -> x__{_PlatformInfo'version = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default PlatformInfo where
+        def
+          = PlatformInfo{_PlatformInfo'bits = Data.ProtoLens.fieldDefault,
+                         _PlatformInfo'linkage = Data.ProtoLens.fieldDefault,
+                         _PlatformInfo'machine = Data.ProtoLens.fieldDefault,
+                         _PlatformInfo'release = Data.ProtoLens.fieldDefault,
+                         _PlatformInfo'system = Data.ProtoLens.fieldDefault,
+                         _PlatformInfo'version = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message PlatformInfo where
+        descriptor
+          = let bits__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "bits"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional bits)
+                      :: Data.ProtoLens.FieldDescriptor PlatformInfo
+                linkage__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "linkage"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional linkage)
+                      :: Data.ProtoLens.FieldDescriptor PlatformInfo
+                machine__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "machine"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional machine)
+                      :: Data.ProtoLens.FieldDescriptor PlatformInfo
+                release__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "release"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional release)
+                      :: Data.ProtoLens.FieldDescriptor PlatformInfo
+                system__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "system"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional system)
+                      :: Data.ProtoLens.FieldDescriptor PlatformInfo
+                version__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "version"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
+                      :: Data.ProtoLens.FieldDescriptor PlatformInfo
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.PlatformInfo")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, bits__field_descriptor),
+                    (Data.ProtoLens.Tag 2, linkage__field_descriptor),
+                    (Data.ProtoLens.Tag 3, machine__field_descriptor),
+                    (Data.ProtoLens.Tag 4, release__field_descriptor),
+                    (Data.ProtoLens.Tag 5, system__field_descriptor),
+                    (Data.ProtoLens.Tag 6, version__field_descriptor)])
+                (Data.Map.fromList
+                   [("bits", bits__field_descriptor),
+                    ("linkage", linkage__field_descriptor),
+                    ("machine", machine__field_descriptor),
+                    ("release", release__field_descriptor),
+                    ("system", system__field_descriptor),
+                    ("version", version__field_descriptor)])
+
+data RunConfiguration = RunConfiguration{_RunConfiguration'argument
+                                         :: ![Data.Text.Text]}
+                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "argument" f RunConfiguration RunConfiguration
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _RunConfiguration'argument
+                 (\ x__ y__ -> x__{_RunConfiguration'argument = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default RunConfiguration where
+        def = RunConfiguration{_RunConfiguration'argument = []}
+
+instance Data.ProtoLens.Message RunConfiguration where
+        descriptor
+          = let argument__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "argument"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked argument)
+                      :: Data.ProtoLens.FieldDescriptor RunConfiguration
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.RunConfiguration")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, argument__field_descriptor)])
+                (Data.Map.fromList [("argument", argument__field_descriptor)])
+
+data TestResults = TestResults{_TestResults'target ::
+                               !Data.Text.Text,
+                               _TestResults'entries :: !(Prelude.Maybe BenchmarkEntries),
+                               _TestResults'buildConfiguration ::
+                               !(Prelude.Maybe BuildConfiguration),
+                               _TestResults'commitId :: !(Prelude.Maybe CommitId),
+                               _TestResults'startTime :: !Data.Int.Int64,
+                               _TestResults'runTime :: !Prelude.Double,
+                               _TestResults'machineConfiguration ::
+                               !(Prelude.Maybe MachineConfiguration),
+                               _TestResults'runConfiguration :: !(Prelude.Maybe RunConfiguration),
+                               _TestResults'name :: !Data.Text.Text,
+                               _TestResults'benchmarkType :: !TestResults'BenchmarkType,
+                               _TestResults'runMode :: !Data.Text.Text}
+                 deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "target" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'target
+                 (\ x__ y__ -> x__{_TestResults'target = y__}))
+              Prelude.id
+
+instance (a ~ BenchmarkEntries, b ~ BenchmarkEntries,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "entries" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'entries
+                 (\ x__ y__ -> x__{_TestResults'entries = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe BenchmarkEntries,
+          b ~ Prelude.Maybe BenchmarkEntries, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'entries" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'entries
+                 (\ x__ y__ -> x__{_TestResults'entries = y__}))
+              Prelude.id
+
+instance (a ~ BuildConfiguration, b ~ BuildConfiguration,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "buildConfiguration" f TestResults TestResults
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'buildConfiguration
+                 (\ x__ y__ -> x__{_TestResults'buildConfiguration = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe BuildConfiguration,
+          b ~ Prelude.Maybe BuildConfiguration, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'buildConfiguration" f TestResults
+           TestResults
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'buildConfiguration
+                 (\ x__ y__ -> x__{_TestResults'buildConfiguration = y__}))
+              Prelude.id
+
+instance (a ~ CommitId, b ~ CommitId, Prelude.Functor f) =>
+         Lens.Labels.HasLens "commitId" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'commitId
+                 (\ x__ y__ -> x__{_TestResults'commitId = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe CommitId, b ~ Prelude.Maybe CommitId,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'commitId" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'commitId
+                 (\ x__ y__ -> x__{_TestResults'commitId = y__}))
+              Prelude.id
+
+instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "startTime" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'startTime
+                 (\ x__ y__ -> x__{_TestResults'startTime = y__}))
+              Prelude.id
+
+instance (a ~ Prelude.Double, b ~ Prelude.Double,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "runTime" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'runTime
+                 (\ x__ y__ -> x__{_TestResults'runTime = y__}))
+              Prelude.id
+
+instance (a ~ MachineConfiguration, b ~ MachineConfiguration,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "machineConfiguration" f TestResults
+           TestResults
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'machineConfiguration
+                 (\ x__ y__ -> x__{_TestResults'machineConfiguration = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe MachineConfiguration,
+          b ~ Prelude.Maybe MachineConfiguration, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'machineConfiguration" f TestResults
+           TestResults
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'machineConfiguration
+                 (\ x__ y__ -> x__{_TestResults'machineConfiguration = y__}))
+              Prelude.id
+
+instance (a ~ RunConfiguration, b ~ RunConfiguration,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "runConfiguration" f TestResults TestResults a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'runConfiguration
+                 (\ x__ y__ -> x__{_TestResults'runConfiguration = y__}))
+              (Data.ProtoLens.maybeLens Data.Default.Class.def)
+
+instance (a ~ Prelude.Maybe RunConfiguration,
+          b ~ Prelude.Maybe RunConfiguration, Prelude.Functor f) =>
+         Lens.Labels.HasLens "maybe'runConfiguration" f TestResults
+           TestResults
+           a
+           b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'runConfiguration
+                 (\ x__ y__ -> x__{_TestResults'runConfiguration = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "name" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'name
+                 (\ x__ y__ -> x__{_TestResults'name = y__}))
+              Prelude.id
+
+instance (a ~ TestResults'BenchmarkType,
+          b ~ TestResults'BenchmarkType, Prelude.Functor f) =>
+         Lens.Labels.HasLens "benchmarkType" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'benchmarkType
+                 (\ x__ y__ -> x__{_TestResults'benchmarkType = y__}))
+              Prelude.id
+
+instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
+          Prelude.Functor f) =>
+         Lens.Labels.HasLens "runMode" f TestResults TestResults a b
+         where
+        lensOf _
+          = (Prelude..)
+              (Lens.Family2.Unchecked.lens _TestResults'runMode
+                 (\ x__ y__ -> x__{_TestResults'runMode = y__}))
+              Prelude.id
+
+instance Data.Default.Class.Default TestResults where
+        def
+          = TestResults{_TestResults'target = Data.ProtoLens.fieldDefault,
+                        _TestResults'entries = Prelude.Nothing,
+                        _TestResults'buildConfiguration = Prelude.Nothing,
+                        _TestResults'commitId = Prelude.Nothing,
+                        _TestResults'startTime = Data.ProtoLens.fieldDefault,
+                        _TestResults'runTime = Data.ProtoLens.fieldDefault,
+                        _TestResults'machineConfiguration = Prelude.Nothing,
+                        _TestResults'runConfiguration = Prelude.Nothing,
+                        _TestResults'name = Data.ProtoLens.fieldDefault,
+                        _TestResults'benchmarkType = Data.Default.Class.def,
+                        _TestResults'runMode = Data.ProtoLens.fieldDefault}
+
+instance Data.ProtoLens.Message TestResults where
+        descriptor
+          = let target__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "target"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional target)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                entries__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "entries"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor BenchmarkEntries)
+                      (Data.ProtoLens.OptionalField maybe'entries)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                buildConfiguration__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "build_configuration"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor BuildConfiguration)
+                      (Data.ProtoLens.OptionalField maybe'buildConfiguration)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                commitId__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "commit_id"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor CommitId)
+                      (Data.ProtoLens.OptionalField maybe'commitId)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                startTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "start_time"
+                      (Data.ProtoLens.Int64Field ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional startTime)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                runTime__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "run_time"
+                      (Data.ProtoLens.DoubleField ::
+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional runTime)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                machineConfiguration__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "machine_configuration"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor MachineConfiguration)
+                      (Data.ProtoLens.OptionalField maybe'machineConfiguration)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                runConfiguration__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "run_configuration"
+                      (Data.ProtoLens.MessageField ::
+                         Data.ProtoLens.FieldTypeDescriptor RunConfiguration)
+                      (Data.ProtoLens.OptionalField maybe'runConfiguration)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                name__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "name"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                benchmarkType__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "benchmark_type"
+                      (Data.ProtoLens.EnumField ::
+                         Data.ProtoLens.FieldTypeDescriptor TestResults'BenchmarkType)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional benchmarkType)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+                runMode__field_descriptor
+                  = Data.ProtoLens.FieldDescriptor "run_mode"
+                      (Data.ProtoLens.StringField ::
+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
+                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional runMode)
+                      :: Data.ProtoLens.FieldDescriptor TestResults
+              in
+              Data.ProtoLens.MessageDescriptor
+                (Data.Text.pack "tensorflow.TestResults")
+                (Data.Map.fromList
+                   [(Data.ProtoLens.Tag 1, target__field_descriptor),
+                    (Data.ProtoLens.Tag 2, entries__field_descriptor),
+                    (Data.ProtoLens.Tag 3, buildConfiguration__field_descriptor),
+                    (Data.ProtoLens.Tag 4, commitId__field_descriptor),
+                    (Data.ProtoLens.Tag 5, startTime__field_descriptor),
+                    (Data.ProtoLens.Tag 6, runTime__field_descriptor),
+                    (Data.ProtoLens.Tag 7, machineConfiguration__field_descriptor),
+                    (Data.ProtoLens.Tag 8, runConfiguration__field_descriptor),
+                    (Data.ProtoLens.Tag 9, name__field_descriptor),
+                    (Data.ProtoLens.Tag 10, benchmarkType__field_descriptor),
+                    (Data.ProtoLens.Tag 11, runMode__field_descriptor)])
+                (Data.Map.fromList
+                   [("target", target__field_descriptor),
+                    ("entries", entries__field_descriptor),
+                    ("build_configuration", buildConfiguration__field_descriptor),
+                    ("commit_id", commitId__field_descriptor),
+                    ("start_time", startTime__field_descriptor),
+                    ("run_time", runTime__field_descriptor),
+                    ("machine_configuration", machineConfiguration__field_descriptor),
+                    ("run_configuration", runConfiguration__field_descriptor),
+                    ("name", name__field_descriptor),
+                    ("benchmark_type", benchmarkType__field_descriptor),
+                    ("run_mode", runMode__field_descriptor)])
+
+data TestResults'BenchmarkType = TestResults'UNKNOWN
+                               | TestResults'CPP_MICROBENCHMARK
+                               | TestResults'PYTHON_BENCHMARK
+                               | TestResults'ANDROID_BENCHMARK
+                               deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
+
+instance Data.Default.Class.Default TestResults'BenchmarkType where
+        def = TestResults'UNKNOWN
+
+instance Data.ProtoLens.FieldDefault TestResults'BenchmarkType
+         where
+        fieldDefault = TestResults'UNKNOWN
+
+instance Data.ProtoLens.MessageEnum TestResults'BenchmarkType where
+        maybeToEnum 0 = Prelude.Just TestResults'UNKNOWN
+        maybeToEnum 1 = Prelude.Just TestResults'CPP_MICROBENCHMARK
+        maybeToEnum 2 = Prelude.Just TestResults'PYTHON_BENCHMARK
+        maybeToEnum 3 = Prelude.Just TestResults'ANDROID_BENCHMARK
+        maybeToEnum _ = Prelude.Nothing
+        showEnum TestResults'UNKNOWN = "UNKNOWN"
+        showEnum TestResults'CPP_MICROBENCHMARK = "CPP_MICROBENCHMARK"
+        showEnum TestResults'PYTHON_BENCHMARK = "PYTHON_BENCHMARK"
+        showEnum TestResults'ANDROID_BENCHMARK = "ANDROID_BENCHMARK"
+        readEnum "UNKNOWN" = Prelude.Just TestResults'UNKNOWN
+        readEnum "CPP_MICROBENCHMARK"
+          = Prelude.Just TestResults'CPP_MICROBENCHMARK
+        readEnum "PYTHON_BENCHMARK"
+          = Prelude.Just TestResults'PYTHON_BENCHMARK
+        readEnum "ANDROID_BENCHMARK"
+          = Prelude.Just TestResults'ANDROID_BENCHMARK
+        readEnum _ = Prelude.Nothing
+
+instance Prelude.Enum TestResults'BenchmarkType where
+        toEnum k__
+          = Prelude.maybe
+              (Prelude.error
+                 ((Prelude.++) "toEnum: unknown value for enum BenchmarkType: "
+                    (Prelude.show k__)))
+              Prelude.id
+              (Data.ProtoLens.maybeToEnum k__)
+        fromEnum TestResults'UNKNOWN = 0
+        fromEnum TestResults'CPP_MICROBENCHMARK = 1
+        fromEnum TestResults'PYTHON_BENCHMARK = 2
+        fromEnum TestResults'ANDROID_BENCHMARK = 3
+        succ TestResults'ANDROID_BENCHMARK
+          = Prelude.error
+              "TestResults'BenchmarkType.succ: bad argument TestResults'ANDROID_BENCHMARK. This value would be out of bounds."
+        succ TestResults'UNKNOWN = TestResults'CPP_MICROBENCHMARK
+        succ TestResults'CPP_MICROBENCHMARK = TestResults'PYTHON_BENCHMARK
+        succ TestResults'PYTHON_BENCHMARK = TestResults'ANDROID_BENCHMARK
+        pred TestResults'UNKNOWN
+          = Prelude.error
+              "TestResults'BenchmarkType.pred: bad argument TestResults'UNKNOWN. This value would be out of bounds."
+        pred TestResults'CPP_MICROBENCHMARK = TestResults'UNKNOWN
+        pred TestResults'PYTHON_BENCHMARK = TestResults'CPP_MICROBENCHMARK
+        pred TestResults'ANDROID_BENCHMARK = TestResults'PYTHON_BENCHMARK
+        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
+        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
+        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
+        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
+
+instance Prelude.Bounded TestResults'BenchmarkType where
+        minBound = TestResults'UNKNOWN
+        maxBound = TestResults'ANDROID_BENCHMARK
+
+argument ::
+         forall f s t a b . (Lens.Labels.HasLens "argument" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+argument
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "argument")
+
+available ::
+          forall f s t a b . (Lens.Labels.HasLens "available" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+available
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "available")
+
+availableDeviceInfo ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "availableDeviceInfo" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+availableDeviceInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "availableDeviceInfo")
+
+benchmarkType ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "benchmarkType" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+benchmarkType
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "benchmarkType")
+
+bits ::
+     forall f s t a b . (Lens.Labels.HasLens "bits" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+bits
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bits")
+
+buildConfiguration ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "buildConfiguration" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+buildConfiguration
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "buildConfiguration")
+
+busId ::
+      forall f s t a b . (Lens.Labels.HasLens "busId" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+busId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "busId")
+
+cacheSize ::
+          forall f s t a b . (Lens.Labels.HasLens "cacheSize" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+cacheSize
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cacheSize")
+
+ccFlags ::
+        forall f s t a b . (Lens.Labels.HasLens "ccFlags" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+ccFlags
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ccFlags")
+
+changelist ::
+           forall f s t a b . (Lens.Labels.HasLens "changelist" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+changelist
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "changelist")
+
+commitId ::
+         forall f s t a b . (Lens.Labels.HasLens "commitId" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+commitId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "commitId")
+
+cpuGovernor ::
+            forall f s t a b . (Lens.Labels.HasLens "cpuGovernor" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+cpuGovernor
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cpuGovernor")
+
+cpuInfo ::
+        forall f s t a b . (Lens.Labels.HasLens "cpuInfo" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+cpuInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cpuInfo")
+
+cpuTime ::
+        forall f s t a b . (Lens.Labels.HasLens "cpuTime" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+cpuTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "cpuTime")
+
+deviceInfo ::
+           forall f s t a b . (Lens.Labels.HasLens "deviceInfo" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+deviceInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceInfo")
+
+doubleValue ::
+            forall f s t a b . (Lens.Labels.HasLens "doubleValue" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+doubleValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doubleValue")
+
+entries ::
+        forall f s t a b . (Lens.Labels.HasLens "entries" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+entries
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "entries")
+
+entry ::
+      forall f s t a b . (Lens.Labels.HasLens "entry" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+entry
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "entry")
+
+extras ::
+       forall f s t a b . (Lens.Labels.HasLens "extras" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+extras
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extras")
+
+hash ::
+     forall f s t a b . (Lens.Labels.HasLens "hash" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+hash
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hash")
+
+hostname ::
+         forall f s t a b . (Lens.Labels.HasLens "hostname" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+hostname
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hostname")
+
+iters ::
+      forall f s t a b . (Lens.Labels.HasLens "iters" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+iters
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "iters")
+
+key ::
+    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
+      Lens.Family2.LensLike f s t a b
+key
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
+
+linkage ::
+        forall f s t a b . (Lens.Labels.HasLens "linkage" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+linkage
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "linkage")
+
+machine ::
+        forall f s t a b . (Lens.Labels.HasLens "machine" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+machine
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "machine")
+
+machineConfiguration ::
+                     forall f s t a b .
+                       (Lens.Labels.HasLens "machineConfiguration" f s t a b) =>
+                       Lens.Family2.LensLike f s t a b
+machineConfiguration
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "machineConfiguration")
+
+maybe'buildConfiguration ::
+                         forall f s t a b .
+                           (Lens.Labels.HasLens "maybe'buildConfiguration" f s t a b) =>
+                           Lens.Family2.LensLike f s t a b
+maybe'buildConfiguration
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'buildConfiguration")
+
+maybe'changelist ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'changelist" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'changelist
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'changelist")
+
+maybe'commitId ::
+               forall f s t a b .
+                 (Lens.Labels.HasLens "maybe'commitId" f s t a b) =>
+                 Lens.Family2.LensLike f s t a b
+maybe'commitId
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'commitId")
+
+maybe'cpuInfo ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'cpuInfo" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'cpuInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'cpuInfo")
+
+maybe'doubleValue ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'doubleValue" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'doubleValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'doubleValue")
+
+maybe'entries ::
+              forall f s t a b .
+                (Lens.Labels.HasLens "maybe'entries" f s t a b) =>
+                Lens.Family2.LensLike f s t a b
+maybe'entries
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'entries")
+
+maybe'hash ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'hash" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'hash
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'hash")
+
+maybe'kind ::
+           forall f s t a b . (Lens.Labels.HasLens "maybe'kind" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+maybe'kind
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'kind")
+
+maybe'machineConfiguration ::
+                           forall f s t a b .
+                             (Lens.Labels.HasLens "maybe'machineConfiguration" f s t a b) =>
+                             Lens.Family2.LensLike f s t a b
+maybe'machineConfiguration
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'machineConfiguration")
+
+maybe'memoryInfo ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "maybe'memoryInfo" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+maybe'memoryInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'memoryInfo")
+
+maybe'platformInfo ::
+                   forall f s t a b .
+                     (Lens.Labels.HasLens "maybe'platformInfo" f s t a b) =>
+                     Lens.Family2.LensLike f s t a b
+maybe'platformInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'platformInfo")
+
+maybe'runConfiguration ::
+                       forall f s t a b .
+                         (Lens.Labels.HasLens "maybe'runConfiguration" f s t a b) =>
+                         Lens.Family2.LensLike f s t a b
+maybe'runConfiguration
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "maybe'runConfiguration")
+
+maybe'stringValue ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "maybe'stringValue" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+maybe'stringValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'stringValue")
+
+maybe'value ::
+            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+maybe'value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
+
+memoryInfo ::
+           forall f s t a b . (Lens.Labels.HasLens "memoryInfo" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+memoryInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryInfo")
+
+memoryLimit ::
+            forall f s t a b . (Lens.Labels.HasLens "memoryLimit" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+memoryLimit
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memoryLimit")
+
+mhzPerCpu ::
+          forall f s t a b . (Lens.Labels.HasLens "mhzPerCpu" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+mhzPerCpu
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "mhzPerCpu")
+
+mode ::
+     forall f s t a b . (Lens.Labels.HasLens "mode" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+mode
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "mode")
+
+model ::
+      forall f s t a b . (Lens.Labels.HasLens "model" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+model
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "model")
+
+name ::
+     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+name
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
+
+numCores ::
+         forall f s t a b . (Lens.Labels.HasLens "numCores" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+numCores
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numCores")
+
+numCoresAllowed ::
+                forall f s t a b .
+                  (Lens.Labels.HasLens "numCoresAllowed" f s t a b) =>
+                  Lens.Family2.LensLike f s t a b
+numCoresAllowed
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numCoresAllowed")
+
+opts ::
+     forall f s t a b . (Lens.Labels.HasLens "opts" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+opts
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "opts")
+
+pendingChangelist ::
+                  forall f s t a b .
+                    (Lens.Labels.HasLens "pendingChangelist" f s t a b) =>
+                    Lens.Family2.LensLike f s t a b
+pendingChangelist
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pendingChangelist")
+
+physicalDescription ::
+                    forall f s t a b .
+                      (Lens.Labels.HasLens "physicalDescription" f s t a b) =>
+                      Lens.Family2.LensLike f s t a b
+physicalDescription
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) ::
+         (Lens.Labels.Proxy#) "physicalDescription")
+
+platformInfo ::
+             forall f s t a b .
+               (Lens.Labels.HasLens "platformInfo" f s t a b) =>
+               Lens.Family2.LensLike f s t a b
+platformInfo
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "platformInfo")
+
+release ::
+        forall f s t a b . (Lens.Labels.HasLens "release" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+release
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "release")
+
+runConfiguration ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "runConfiguration" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+runConfiguration
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "runConfiguration")
+
+runMode ::
+        forall f s t a b . (Lens.Labels.HasLens "runMode" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+runMode
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "runMode")
+
+runTime ::
+        forall f s t a b . (Lens.Labels.HasLens "runTime" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+runTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "runTime")
+
+serialIdentifier ::
+                 forall f s t a b .
+                   (Lens.Labels.HasLens "serialIdentifier" f s t a b) =>
+                   Lens.Family2.LensLike f s t a b
+serialIdentifier
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "serialIdentifier")
+
+snapshot ::
+         forall f s t a b . (Lens.Labels.HasLens "snapshot" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+snapshot
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "snapshot")
+
+startTime ::
+          forall f s t a b . (Lens.Labels.HasLens "startTime" f s t a b) =>
+            Lens.Family2.LensLike f s t a b
+startTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "startTime")
+
+stringValue ::
+            forall f s t a b . (Lens.Labels.HasLens "stringValue" f s t a b) =>
+              Lens.Family2.LensLike f s t a b
+stringValue
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stringValue")
+
+system ::
+       forall f s t a b . (Lens.Labels.HasLens "system" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+system
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "system")
+
+target ::
+       forall f s t a b . (Lens.Labels.HasLens "target" f s t a b) =>
+         Lens.Family2.LensLike f s t a b
+target
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "target")
+
+throughput ::
+           forall f s t a b . (Lens.Labels.HasLens "throughput" f s t a b) =>
+             Lens.Family2.LensLike f s t a b
+throughput
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "throughput")
+
+total ::
+      forall f s t a b . (Lens.Labels.HasLens "total" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+total
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "total")
+
+type' ::
+      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+type'
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
+
+uuid ::
+     forall f s t a b . (Lens.Labels.HasLens "uuid" f s t a b) =>
+       Lens.Family2.LensLike f s t a b
+uuid
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "uuid")
+
+value ::
+      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
+        Lens.Family2.LensLike f s t a b
+value
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
+
+version ::
+        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
+          Lens.Family2.LensLike f s t a b
+version
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
+
+wallTime ::
+         forall f s t a b . (Lens.Labels.HasLens "wallTime" f s t a b) =>
+           Lens.Family2.LensLike f s t a b
+wallTime
+  = Lens.Labels.lensOf
+      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "wallTime")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/AllocationDescription.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/AllocationDescription.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/AllocationDescription.hs
+++ /dev/null
@@ -1,220 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/allocation_description.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.AllocationDescription where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-
-data AllocationDescription = AllocationDescription{_AllocationDescription'requestedBytes
-                                                   :: !Data.Int.Int64,
-                                                   _AllocationDescription'allocatedBytes ::
-                                                   !Data.Int.Int64,
-                                                   _AllocationDescription'allocatorName ::
-                                                   !Data.Text.Text,
-                                                   _AllocationDescription'allocationId ::
-                                                   !Data.Int.Int64,
-                                                   _AllocationDescription'hasSingleReference ::
-                                                   !Prelude.Bool,
-                                                   _AllocationDescription'ptr :: !Data.Word.Word64}
-                           deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "requestedBytes" f AllocationDescription
-           AllocationDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocationDescription'requestedBytes
-              (\ x__ y__ -> x__{_AllocationDescription'requestedBytes = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allocatedBytes" f AllocationDescription
-           AllocationDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocationDescription'allocatedBytes
-              (\ x__ y__ -> x__{_AllocationDescription'allocatedBytes = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allocatorName" f AllocationDescription
-           AllocationDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocationDescription'allocatorName
-              (\ x__ y__ -> x__{_AllocationDescription'allocatorName = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allocationId" f AllocationDescription
-           AllocationDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocationDescription'allocationId
-              (\ x__ y__ -> x__{_AllocationDescription'allocationId = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "hasSingleReference" f AllocationDescription
-           AllocationDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _AllocationDescription'hasSingleReference
-              (\ x__ y__ -> x__{_AllocationDescription'hasSingleReference = y__})
-
-instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "ptr" f AllocationDescription
-           AllocationDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocationDescription'ptr
-              (\ x__ y__ -> x__{_AllocationDescription'ptr = y__})
-
-instance Data.Default.Class.Default AllocationDescription where
-        def
-          = AllocationDescription{_AllocationDescription'requestedBytes =
-                                    Data.ProtoLens.fieldDefault,
-                                  _AllocationDescription'allocatedBytes =
-                                    Data.ProtoLens.fieldDefault,
-                                  _AllocationDescription'allocatorName =
-                                    Data.ProtoLens.fieldDefault,
-                                  _AllocationDescription'allocationId = Data.ProtoLens.fieldDefault,
-                                  _AllocationDescription'hasSingleReference =
-                                    Data.ProtoLens.fieldDefault,
-                                  _AllocationDescription'ptr = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message AllocationDescription where
-        descriptor
-          = let requestedBytes__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "requested_bytes"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional requestedBytes)
-                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
-                allocatedBytes__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allocated_bytes"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatedBytes)
-                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
-                allocatorName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allocator_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
-                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
-                allocationId__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allocation_id"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocationId)
-                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
-                hasSingleReference__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "has_single_reference"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         hasSingleReference)
-                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
-                ptr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "ptr"
-                      (Data.ProtoLens.UInt64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional ptr)
-                      :: Data.ProtoLens.FieldDescriptor AllocationDescription
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, requestedBytes__field_descriptor),
-                    (Data.ProtoLens.Tag 2, allocatedBytes__field_descriptor),
-                    (Data.ProtoLens.Tag 3, allocatorName__field_descriptor),
-                    (Data.ProtoLens.Tag 4, allocationId__field_descriptor),
-                    (Data.ProtoLens.Tag 5, hasSingleReference__field_descriptor),
-                    (Data.ProtoLens.Tag 6, ptr__field_descriptor)])
-                (Data.Map.fromList
-                   [("requested_bytes", requestedBytes__field_descriptor),
-                    ("allocated_bytes", allocatedBytes__field_descriptor),
-                    ("allocator_name", allocatorName__field_descriptor),
-                    ("allocation_id", allocationId__field_descriptor),
-                    ("has_single_reference", hasSingleReference__field_descriptor),
-                    ("ptr", ptr__field_descriptor)])
-
-allocatedBytes ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "allocatedBytes" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-allocatedBytes
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatedBytes")
-
-allocationId ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "allocationId" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-allocationId
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocationId")
-
-allocatorName ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "allocatorName" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-allocatorName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorName")
-
-hasSingleReference ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "hasSingleReference" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-hasSingleReference
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hasSingleReference")
-
-ptr ::
-    forall f s t a b . (Lens.Labels.HasLens "ptr" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-ptr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ptr")
-
-requestedBytes ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "requestedBytes" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-requestedBytes
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "requestedBytes")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/AttrValue.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/AttrValue.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/AttrValue.hs
+++ /dev/null
@@ -1,783 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/attr_value.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.AttrValue where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.Tensor
-import qualified Proto.Tensorflow.Core.Framework.TensorShape
-import qualified Proto.Tensorflow.Core.Framework.Types
-
-data AttrValue = AttrValue{_AttrValue's ::
-                           !(Prelude.Maybe Data.ByteString.ByteString),
-                           _AttrValue'i :: !(Prelude.Maybe Data.Int.Int64),
-                           _AttrValue'f :: !(Prelude.Maybe Prelude.Float),
-                           _AttrValue'b :: !(Prelude.Maybe Prelude.Bool),
-                           _AttrValue'type' ::
-                           !(Prelude.Maybe Proto.Tensorflow.Core.Framework.Types.DataType),
-                           _AttrValue'shape ::
-                           !(Prelude.Maybe
-                               Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
-                           _AttrValue'tensor ::
-                           !(Prelude.Maybe
-                               Proto.Tensorflow.Core.Framework.Tensor.TensorProto),
-                           _AttrValue'list :: !(Prelude.Maybe AttrValue'ListValue),
-                           _AttrValue'func :: !(Prelude.Maybe NameAttrList),
-                           _AttrValue'placeholder :: !(Prelude.Maybe Data.Text.Text)}
-               deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "s" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe's
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
-          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe's" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue's
-              (\ x__ y__ -> x__{_AttrValue's = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "i" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'i
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.Int.Int64,
-          b ~ Prelude.Maybe Data.Int.Int64, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'i" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'i
-              (\ x__ y__ -> x__{_AttrValue'i = y__})
-
-instance (a ~ Prelude.Float, b ~ Prelude.Float,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "f" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'f
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Prelude.Float,
-          b ~ Prelude.Maybe Prelude.Float, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'f" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'f
-              (\ x__ y__ -> x__{_AttrValue'f = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "b" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'b
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Prelude.Bool,
-          b ~ Prelude.Maybe Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'b" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'b
-              (\ x__ y__ -> x__{_AttrValue'b = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "type'" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'type'
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Types.DataType,
-          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.Types.DataType,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'type'" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'type'
-              (\ x__ y__ -> x__{_AttrValue'type' = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "shape" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'shape
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'shape" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'shape
-              (\ x__ y__ -> x__{_AttrValue'shape = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tensor" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'tensor
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'tensor" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'tensor
-              (\ x__ y__ -> x__{_AttrValue'tensor = y__})
-
-instance (a ~ AttrValue'ListValue, b ~ AttrValue'ListValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "list" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'list
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe AttrValue'ListValue,
-          b ~ Prelude.Maybe AttrValue'ListValue, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'list" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'list
-              (\ x__ y__ -> x__{_AttrValue'list = y__})
-
-instance (a ~ NameAttrList, b ~ NameAttrList, Prelude.Functor f) =>
-         Lens.Labels.HasLens "func" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'func
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe NameAttrList,
-          b ~ Prelude.Maybe NameAttrList, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'func" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'func
-              (\ x__ y__ -> x__{_AttrValue'func = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "placeholder" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = (Prelude..) maybe'placeholder
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.Text.Text,
-          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'placeholder" f AttrValue AttrValue a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'placeholder
-              (\ x__ y__ -> x__{_AttrValue'placeholder = y__})
-
-instance Data.Default.Class.Default AttrValue where
-        def
-          = AttrValue{_AttrValue's = Prelude.Nothing,
-                      _AttrValue'i = Prelude.Nothing, _AttrValue'f = Prelude.Nothing,
-                      _AttrValue'b = Prelude.Nothing, _AttrValue'type' = Prelude.Nothing,
-                      _AttrValue'shape = Prelude.Nothing,
-                      _AttrValue'tensor = Prelude.Nothing,
-                      _AttrValue'list = Prelude.Nothing,
-                      _AttrValue'func = Prelude.Nothing,
-                      _AttrValue'placeholder = Prelude.Nothing}
-
-instance Data.ProtoLens.Message AttrValue where
-        descriptor
-          = let s__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "s"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.OptionalField maybe's)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                i__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "i"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.OptionalField maybe'i)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                f__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "f"
-                      (Data.ProtoLens.FloatField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
-                      (Data.ProtoLens.OptionalField maybe'f)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                b__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "b"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField maybe'b)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                type'__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Types.DataType)
-                      (Data.ProtoLens.OptionalField maybe'type')
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                shape__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "shape"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
-                      (Data.ProtoLens.OptionalField maybe'shape)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                tensor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tensor"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
-                      (Data.ProtoLens.OptionalField maybe'tensor)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                list__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "list"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor AttrValue'ListValue)
-                      (Data.ProtoLens.OptionalField maybe'list)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                func__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "func"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor NameAttrList)
-                      (Data.ProtoLens.OptionalField maybe'func)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-                placeholder__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "placeholder"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField maybe'placeholder)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 2, s__field_descriptor),
-                    (Data.ProtoLens.Tag 3, i__field_descriptor),
-                    (Data.ProtoLens.Tag 4, f__field_descriptor),
-                    (Data.ProtoLens.Tag 5, b__field_descriptor),
-                    (Data.ProtoLens.Tag 6, type'__field_descriptor),
-                    (Data.ProtoLens.Tag 7, shape__field_descriptor),
-                    (Data.ProtoLens.Tag 8, tensor__field_descriptor),
-                    (Data.ProtoLens.Tag 1, list__field_descriptor),
-                    (Data.ProtoLens.Tag 10, func__field_descriptor),
-                    (Data.ProtoLens.Tag 9, placeholder__field_descriptor)])
-                (Data.Map.fromList
-                   [("s", s__field_descriptor), ("i", i__field_descriptor),
-                    ("f", f__field_descriptor), ("b", b__field_descriptor),
-                    ("type", type'__field_descriptor),
-                    ("shape", shape__field_descriptor),
-                    ("tensor", tensor__field_descriptor),
-                    ("list", list__field_descriptor), ("func", func__field_descriptor),
-                    ("placeholder", placeholder__field_descriptor)])
-
-data AttrValue'ListValue = AttrValue'ListValue{_AttrValue'ListValue's
-                                               :: ![Data.ByteString.ByteString],
-                                               _AttrValue'ListValue'i :: ![Data.Int.Int64],
-                                               _AttrValue'ListValue'f :: ![Prelude.Float],
-                                               _AttrValue'ListValue'b :: ![Prelude.Bool],
-                                               _AttrValue'ListValue'type' ::
-                                               ![Proto.Tensorflow.Core.Framework.Types.DataType],
-                                               _AttrValue'ListValue'shape ::
-                                               ![Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto],
-                                               _AttrValue'ListValue'tensor ::
-                                               ![Proto.Tensorflow.Core.Framework.Tensor.TensorProto],
-                                               _AttrValue'ListValue'func :: ![NameAttrList]}
-                         deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [Data.ByteString.ByteString],
-          b ~ [Data.ByteString.ByteString], Prelude.Functor f) =>
-         Lens.Labels.HasLens "s" f AttrValue'ListValue AttrValue'ListValue a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue's
-              (\ x__ y__ -> x__{_AttrValue'ListValue's = y__})
-
-instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "i" f AttrValue'ListValue AttrValue'ListValue a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'i
-              (\ x__ y__ -> x__{_AttrValue'ListValue'i = y__})
-
-instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "f" f AttrValue'ListValue AttrValue'ListValue a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'f
-              (\ x__ y__ -> x__{_AttrValue'ListValue'f = y__})
-
-instance (a ~ [Prelude.Bool], b ~ [Prelude.Bool],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "b" f AttrValue'ListValue AttrValue'ListValue a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'b
-              (\ x__ y__ -> x__{_AttrValue'ListValue'b = y__})
-
-instance (a ~ [Proto.Tensorflow.Core.Framework.Types.DataType],
-          b ~ [Proto.Tensorflow.Core.Framework.Types.DataType],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "type'" f AttrValue'ListValue
-           AttrValue'ListValue
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'type'
-              (\ x__ y__ -> x__{_AttrValue'ListValue'type' = y__})
-
-instance (a ~
-            [Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto],
-          b ~ [Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "shape" f AttrValue'ListValue
-           AttrValue'ListValue
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'shape
-              (\ x__ y__ -> x__{_AttrValue'ListValue'shape = y__})
-
-instance (a ~ [Proto.Tensorflow.Core.Framework.Tensor.TensorProto],
-          b ~ [Proto.Tensorflow.Core.Framework.Tensor.TensorProto],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tensor" f AttrValue'ListValue
-           AttrValue'ListValue
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'tensor
-              (\ x__ y__ -> x__{_AttrValue'ListValue'tensor = y__})
-
-instance (a ~ [NameAttrList], b ~ [NameAttrList],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "func" f AttrValue'ListValue
-           AttrValue'ListValue
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AttrValue'ListValue'func
-              (\ x__ y__ -> x__{_AttrValue'ListValue'func = y__})
-
-instance Data.Default.Class.Default AttrValue'ListValue where
-        def
-          = AttrValue'ListValue{_AttrValue'ListValue's = [],
-                                _AttrValue'ListValue'i = [], _AttrValue'ListValue'f = [],
-                                _AttrValue'ListValue'b = [], _AttrValue'ListValue'type' = [],
-                                _AttrValue'ListValue'shape = [], _AttrValue'ListValue'tensor = [],
-                                _AttrValue'ListValue'func = []}
-
-instance Data.ProtoLens.Message AttrValue'ListValue where
-        descriptor
-          = let s__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "s"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked s)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                i__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "i"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed i)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                f__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "f"
-                      (Data.ProtoLens.FloatField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed f)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                b__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "b"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed b)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                type'__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Types.DataType)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed type')
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                shape__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "shape"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked shape)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                tensor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tensor"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked tensor)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-                func__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "func"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor NameAttrList)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked func)
-                      :: Data.ProtoLens.FieldDescriptor AttrValue'ListValue
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 2, s__field_descriptor),
-                    (Data.ProtoLens.Tag 3, i__field_descriptor),
-                    (Data.ProtoLens.Tag 4, f__field_descriptor),
-                    (Data.ProtoLens.Tag 5, b__field_descriptor),
-                    (Data.ProtoLens.Tag 6, type'__field_descriptor),
-                    (Data.ProtoLens.Tag 7, shape__field_descriptor),
-                    (Data.ProtoLens.Tag 8, tensor__field_descriptor),
-                    (Data.ProtoLens.Tag 9, func__field_descriptor)])
-                (Data.Map.fromList
-                   [("s", s__field_descriptor), ("i", i__field_descriptor),
-                    ("f", f__field_descriptor), ("b", b__field_descriptor),
-                    ("type", type'__field_descriptor),
-                    ("shape", shape__field_descriptor),
-                    ("tensor", tensor__field_descriptor),
-                    ("func", func__field_descriptor)])
-
-data NameAttrList = NameAttrList{_NameAttrList'name ::
-                                 !Data.Text.Text,
-                                 _NameAttrList'attr :: !(Data.Map.Map Data.Text.Text AttrValue)}
-                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f NameAttrList NameAttrList a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NameAttrList'name
-              (\ x__ y__ -> x__{_NameAttrList'name = y__})
-
-instance (a ~ Data.Map.Map Data.Text.Text AttrValue,
-          b ~ Data.Map.Map Data.Text.Text AttrValue, Prelude.Functor f) =>
-         Lens.Labels.HasLens "attr" f NameAttrList NameAttrList a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NameAttrList'attr
-              (\ x__ y__ -> x__{_NameAttrList'attr = y__})
-
-instance Data.Default.Class.Default NameAttrList where
-        def
-          = NameAttrList{_NameAttrList'name = Data.ProtoLens.fieldDefault,
-                         _NameAttrList'attr = Data.Map.empty}
-
-instance Data.ProtoLens.Message NameAttrList where
-        descriptor
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor NameAttrList
-                attr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "attr"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor NameAttrList'AttrEntry)
-                      (Data.ProtoLens.MapField key value attr)
-                      :: Data.ProtoLens.FieldDescriptor NameAttrList
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                    (Data.ProtoLens.Tag 2, attr__field_descriptor)])
-                (Data.Map.fromList
-                   [("name", name__field_descriptor),
-                    ("attr", attr__field_descriptor)])
-
-data NameAttrList'AttrEntry = NameAttrList'AttrEntry{_NameAttrList'AttrEntry'key
-                                                     :: !Data.Text.Text,
-                                                     _NameAttrList'AttrEntry'value ::
-                                                     !(Prelude.Maybe AttrValue)}
-                            deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "key" f NameAttrList'AttrEntry
-           NameAttrList'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NameAttrList'AttrEntry'key
-              (\ x__ y__ -> x__{_NameAttrList'AttrEntry'key = y__})
-
-instance (a ~ AttrValue, b ~ AttrValue, Prelude.Functor f) =>
-         Lens.Labels.HasLens "value" f NameAttrList'AttrEntry
-           NameAttrList'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'value
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe AttrValue, b ~ Prelude.Maybe AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'value" f NameAttrList'AttrEntry
-           NameAttrList'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NameAttrList'AttrEntry'value
-              (\ x__ y__ -> x__{_NameAttrList'AttrEntry'value = y__})
-
-instance Data.Default.Class.Default NameAttrList'AttrEntry where
-        def
-          = NameAttrList'AttrEntry{_NameAttrList'AttrEntry'key =
-                                     Data.ProtoLens.fieldDefault,
-                                   _NameAttrList'AttrEntry'value = Prelude.Nothing}
-
-instance Data.ProtoLens.Message NameAttrList'AttrEntry where
-        descriptor
-          = let key__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "key"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
-                      :: Data.ProtoLens.FieldDescriptor NameAttrList'AttrEntry
-                value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor AttrValue)
-                      (Data.ProtoLens.OptionalField maybe'value)
-                      :: Data.ProtoLens.FieldDescriptor NameAttrList'AttrEntry
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
-                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
-                (Data.Map.fromList
-                   [("key", key__field_descriptor),
-                    ("value", value__field_descriptor)])
-
-attr ::
-     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-attr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
-
-b ::
-  forall f s t a b . (Lens.Labels.HasLens "b" f s t a b) =>
-    Lens.Family2.LensLike f s t a b
-b = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "b")
-
-f ::
-  forall f s t a b . (Lens.Labels.HasLens "f" f s t a b) =>
-    Lens.Family2.LensLike f s t a b
-f = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "f")
-
-func ::
-     forall f s t a b . (Lens.Labels.HasLens "func" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-func
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "func")
-
-i ::
-  forall f s t a b . (Lens.Labels.HasLens "i" f s t a b) =>
-    Lens.Family2.LensLike f s t a b
-i = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "i")
-
-key ::
-    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-key
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
-
-list ::
-     forall f s t a b . (Lens.Labels.HasLens "list" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-list
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "list")
-
-maybe'b ::
-        forall f s t a b . (Lens.Labels.HasLens "maybe'b" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-maybe'b
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'b")
-
-maybe'f ::
-        forall f s t a b . (Lens.Labels.HasLens "maybe'f" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-maybe'f
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'f")
-
-maybe'func ::
-           forall f s t a b . (Lens.Labels.HasLens "maybe'func" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-maybe'func
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'func")
-
-maybe'i ::
-        forall f s t a b . (Lens.Labels.HasLens "maybe'i" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-maybe'i
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'i")
-
-maybe'list ::
-           forall f s t a b . (Lens.Labels.HasLens "maybe'list" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-maybe'list
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'list")
-
-maybe'placeholder ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "maybe'placeholder" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-maybe'placeholder
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'placeholder")
-
-maybe's ::
-        forall f s t a b . (Lens.Labels.HasLens "maybe's" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-maybe's
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe's")
-
-maybe'shape ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'shape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
-
-maybe'tensor ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "maybe'tensor" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-maybe'tensor
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensor")
-
-maybe'type' ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'type'" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'type'
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'type'")
-
-maybe'value ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
-
-name ::
-     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-name
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-
-placeholder ::
-            forall f s t a b . (Lens.Labels.HasLens "placeholder" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-placeholder
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "placeholder")
-
-s ::
-  forall f s t a b . (Lens.Labels.HasLens "s" f s t a b) =>
-    Lens.Family2.LensLike f s t a b
-s = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "s")
-
-shape ::
-      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-shape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
-
-tensor ::
-       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-tensor
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
-
-type' ::
-      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-type'
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
-
-value ::
-      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/CostGraph.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/CostGraph.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/CostGraph.hs
+++ /dev/null
@@ -1,574 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/cost_graph.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.CostGraph where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.TensorShape
-import qualified Proto.Tensorflow.Core.Framework.Types
-
-data CostGraphDef = CostGraphDef{_CostGraphDef'node ::
-                                 ![CostGraphDef'Node]}
-                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [CostGraphDef'Node], b ~ [CostGraphDef'Node],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "node" f CostGraphDef CostGraphDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'node
-              (\ x__ y__ -> x__{_CostGraphDef'node = y__})
-
-instance Data.Default.Class.Default CostGraphDef where
-        def = CostGraphDef{_CostGraphDef'node = []}
-
-instance Data.ProtoLens.Message CostGraphDef where
-        descriptor
-          = let node__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor CostGraphDef'Node)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked node)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, node__field_descriptor)])
-                (Data.Map.fromList [("node", node__field_descriptor)])
-
-data CostGraphDef'Node = CostGraphDef'Node{_CostGraphDef'Node'name
-                                           :: !Data.Text.Text,
-                                           _CostGraphDef'Node'device :: !Data.Text.Text,
-                                           _CostGraphDef'Node'id :: !Data.Int.Int32,
-                                           _CostGraphDef'Node'inputInfo ::
-                                           ![CostGraphDef'Node'InputInfo],
-                                           _CostGraphDef'Node'outputInfo ::
-                                           ![CostGraphDef'Node'OutputInfo],
-                                           _CostGraphDef'Node'temporaryMemorySize ::
-                                           !Data.Int.Int64,
-                                           _CostGraphDef'Node'computeCost :: !Data.Int.Int64,
-                                           _CostGraphDef'Node'isFinal :: !Prelude.Bool,
-                                           _CostGraphDef'Node'controlInput :: ![Data.Int.Int32]}
-                       deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f CostGraphDef'Node CostGraphDef'Node a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'name
-              (\ x__ y__ -> x__{_CostGraphDef'Node'name = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "device" f CostGraphDef'Node CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'device
-              (\ x__ y__ -> x__{_CostGraphDef'Node'device = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "id" f CostGraphDef'Node CostGraphDef'Node a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'id
-              (\ x__ y__ -> x__{_CostGraphDef'Node'id = y__})
-
-instance (a ~ [CostGraphDef'Node'InputInfo],
-          b ~ [CostGraphDef'Node'InputInfo], Prelude.Functor f) =>
-         Lens.Labels.HasLens "inputInfo" f CostGraphDef'Node
-           CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'inputInfo
-              (\ x__ y__ -> x__{_CostGraphDef'Node'inputInfo = y__})
-
-instance (a ~ [CostGraphDef'Node'OutputInfo],
-          b ~ [CostGraphDef'Node'OutputInfo], Prelude.Functor f) =>
-         Lens.Labels.HasLens "outputInfo" f CostGraphDef'Node
-           CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'outputInfo
-              (\ x__ y__ -> x__{_CostGraphDef'Node'outputInfo = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "temporaryMemorySize" f CostGraphDef'Node
-           CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _CostGraphDef'Node'temporaryMemorySize
-              (\ x__ y__ -> x__{_CostGraphDef'Node'temporaryMemorySize = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "computeCost" f CostGraphDef'Node
-           CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'computeCost
-              (\ x__ y__ -> x__{_CostGraphDef'Node'computeCost = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "isFinal" f CostGraphDef'Node CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'isFinal
-              (\ x__ y__ -> x__{_CostGraphDef'Node'isFinal = y__})
-
-instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "controlInput" f CostGraphDef'Node
-           CostGraphDef'Node
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'controlInput
-              (\ x__ y__ -> x__{_CostGraphDef'Node'controlInput = y__})
-
-instance Data.Default.Class.Default CostGraphDef'Node where
-        def
-          = CostGraphDef'Node{_CostGraphDef'Node'name =
-                                Data.ProtoLens.fieldDefault,
-                              _CostGraphDef'Node'device = Data.ProtoLens.fieldDefault,
-                              _CostGraphDef'Node'id = Data.ProtoLens.fieldDefault,
-                              _CostGraphDef'Node'inputInfo = [],
-                              _CostGraphDef'Node'outputInfo = [],
-                              _CostGraphDef'Node'temporaryMemorySize =
-                                Data.ProtoLens.fieldDefault,
-                              _CostGraphDef'Node'computeCost = Data.ProtoLens.fieldDefault,
-                              _CostGraphDef'Node'isFinal = Data.ProtoLens.fieldDefault,
-                              _CostGraphDef'Node'controlInput = []}
-
-instance Data.ProtoLens.Message CostGraphDef'Node where
-        descriptor
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                device__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "device"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                id__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "id"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional id)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                inputInfo__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "input_info"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor CostGraphDef'Node'InputInfo)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked inputInfo)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                outputInfo__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "output_info"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor CostGraphDef'Node'OutputInfo)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked outputInfo)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                temporaryMemorySize__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "temporary_memory_size"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         temporaryMemorySize)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                computeCost__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "compute_cost"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional computeCost)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                isFinal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "is_final"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isFinal)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-                controlInput__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "control_input"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed controlInput)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                    (Data.ProtoLens.Tag 2, device__field_descriptor),
-                    (Data.ProtoLens.Tag 3, id__field_descriptor),
-                    (Data.ProtoLens.Tag 4, inputInfo__field_descriptor),
-                    (Data.ProtoLens.Tag 5, outputInfo__field_descriptor),
-                    (Data.ProtoLens.Tag 6, temporaryMemorySize__field_descriptor),
-                    (Data.ProtoLens.Tag 9, computeCost__field_descriptor),
-                    (Data.ProtoLens.Tag 7, isFinal__field_descriptor),
-                    (Data.ProtoLens.Tag 8, controlInput__field_descriptor)])
-                (Data.Map.fromList
-                   [("name", name__field_descriptor),
-                    ("device", device__field_descriptor), ("id", id__field_descriptor),
-                    ("input_info", inputInfo__field_descriptor),
-                    ("output_info", outputInfo__field_descriptor),
-                    ("temporary_memory_size", temporaryMemorySize__field_descriptor),
-                    ("compute_cost", computeCost__field_descriptor),
-                    ("is_final", isFinal__field_descriptor),
-                    ("control_input", controlInput__field_descriptor)])
-
-data CostGraphDef'Node'InputInfo = CostGraphDef'Node'InputInfo{_CostGraphDef'Node'InputInfo'precedingNode
-                                                               :: !Data.Int.Int32,
-                                                               _CostGraphDef'Node'InputInfo'precedingPort
-                                                               :: !Data.Int.Int32}
-                                 deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "precedingNode" f CostGraphDef'Node'InputInfo
-           CostGraphDef'Node'InputInfo
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _CostGraphDef'Node'InputInfo'precedingNode
-              (\ x__ y__ ->
-                 x__{_CostGraphDef'Node'InputInfo'precedingNode = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "precedingPort" f CostGraphDef'Node'InputInfo
-           CostGraphDef'Node'InputInfo
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _CostGraphDef'Node'InputInfo'precedingPort
-              (\ x__ y__ ->
-                 x__{_CostGraphDef'Node'InputInfo'precedingPort = y__})
-
-instance Data.Default.Class.Default CostGraphDef'Node'InputInfo
-         where
-        def
-          = CostGraphDef'Node'InputInfo{_CostGraphDef'Node'InputInfo'precedingNode
-                                          = Data.ProtoLens.fieldDefault,
-                                        _CostGraphDef'Node'InputInfo'precedingPort =
-                                          Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message CostGraphDef'Node'InputInfo where
-        descriptor
-          = let precedingNode__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "preceding_node"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional precedingNode)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'InputInfo
-                precedingPort__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "preceding_port"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional precedingPort)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'InputInfo
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, precedingNode__field_descriptor),
-                    (Data.ProtoLens.Tag 2, precedingPort__field_descriptor)])
-                (Data.Map.fromList
-                   [("preceding_node", precedingNode__field_descriptor),
-                    ("preceding_port", precedingPort__field_descriptor)])
-
-data CostGraphDef'Node'OutputInfo = CostGraphDef'Node'OutputInfo{_CostGraphDef'Node'OutputInfo'size
-                                                                 :: !Data.Int.Int64,
-                                                                 _CostGraphDef'Node'OutputInfo'aliasInputPort
-                                                                 :: !Data.Int.Int64,
-                                                                 _CostGraphDef'Node'OutputInfo'shape
-                                                                 ::
-                                                                 !(Prelude.Maybe
-                                                                     Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
-                                                                 _CostGraphDef'Node'OutputInfo'dtype
-                                                                 ::
-                                                                 !Proto.Tensorflow.Core.Framework.Types.DataType}
-                                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "size" f CostGraphDef'Node'OutputInfo
-           CostGraphDef'Node'OutputInfo
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'size
-              (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'size = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "aliasInputPort" f CostGraphDef'Node'OutputInfo
-           CostGraphDef'Node'OutputInfo
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _CostGraphDef'Node'OutputInfo'aliasInputPort
-              (\ x__ y__ ->
-                 x__{_CostGraphDef'Node'OutputInfo'aliasInputPort = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "shape" f CostGraphDef'Node'OutputInfo
-           CostGraphDef'Node'OutputInfo
-           a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'shape
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'shape" f CostGraphDef'Node'OutputInfo
-           CostGraphDef'Node'OutputInfo
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'shape
-              (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'shape = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "dtype" f CostGraphDef'Node'OutputInfo
-           CostGraphDef'Node'OutputInfo
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _CostGraphDef'Node'OutputInfo'dtype
-              (\ x__ y__ -> x__{_CostGraphDef'Node'OutputInfo'dtype = y__})
-
-instance Data.Default.Class.Default CostGraphDef'Node'OutputInfo
-         where
-        def
-          = CostGraphDef'Node'OutputInfo{_CostGraphDef'Node'OutputInfo'size =
-                                           Data.ProtoLens.fieldDefault,
-                                         _CostGraphDef'Node'OutputInfo'aliasInputPort =
-                                           Data.ProtoLens.fieldDefault,
-                                         _CostGraphDef'Node'OutputInfo'shape = Prelude.Nothing,
-                                         _CostGraphDef'Node'OutputInfo'dtype =
-                                           Data.Default.Class.def}
-
-instance Data.ProtoLens.Message CostGraphDef'Node'OutputInfo where
-        descriptor
-          = let size__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "size"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional size)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
-                aliasInputPort__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "alias_input_port"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional aliasInputPort)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
-                shape__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "shape"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
-                      (Data.ProtoLens.OptionalField maybe'shape)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
-                dtype__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dtype"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Types.DataType)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
-                      :: Data.ProtoLens.FieldDescriptor CostGraphDef'Node'OutputInfo
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, size__field_descriptor),
-                    (Data.ProtoLens.Tag 2, aliasInputPort__field_descriptor),
-                    (Data.ProtoLens.Tag 3, shape__field_descriptor),
-                    (Data.ProtoLens.Tag 4, dtype__field_descriptor)])
-                (Data.Map.fromList
-                   [("size", size__field_descriptor),
-                    ("alias_input_port", aliasInputPort__field_descriptor),
-                    ("shape", shape__field_descriptor),
-                    ("dtype", dtype__field_descriptor)])
-
-aliasInputPort ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "aliasInputPort" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-aliasInputPort
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "aliasInputPort")
-
-computeCost ::
-            forall f s t a b . (Lens.Labels.HasLens "computeCost" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-computeCost
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "computeCost")
-
-controlInput ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "controlInput" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-controlInput
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "controlInput")
-
-device ::
-       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-device
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
-
-dtype ::
-      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-dtype
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
-
-id ::
-   forall f s t a b . (Lens.Labels.HasLens "id" f s t a b) =>
-     Lens.Family2.LensLike f s t a b
-id
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "id")
-
-inputInfo ::
-          forall f s t a b . (Lens.Labels.HasLens "inputInfo" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-inputInfo
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inputInfo")
-
-isFinal ::
-        forall f s t a b . (Lens.Labels.HasLens "isFinal" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-isFinal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isFinal")
-
-maybe'shape ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'shape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
-
-name ::
-     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-name
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-
-node ::
-     forall f s t a b . (Lens.Labels.HasLens "node" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-node
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "node")
-
-outputInfo ::
-           forall f s t a b . (Lens.Labels.HasLens "outputInfo" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-outputInfo
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputInfo")
-
-precedingNode ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "precedingNode" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-precedingNode
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "precedingNode")
-
-precedingPort ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "precedingPort" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-precedingPort
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "precedingPort")
-
-shape ::
-      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-shape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
-
-size ::
-     forall f s t a b . (Lens.Labels.HasLens "size" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-size
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "size")
-
-temporaryMemorySize ::
-                    forall f s t a b .
-                      (Lens.Labels.HasLens "temporaryMemorySize" f s t a b) =>
-                      Lens.Family2.LensLike f s t a b
-temporaryMemorySize
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "temporaryMemorySize")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Function.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/Function.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Function.hs
+++ /dev/null
@@ -1,457 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/function.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.Function where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.AttrValue
-import qualified Proto.Tensorflow.Core.Framework.NodeDef
-import qualified Proto.Tensorflow.Core.Framework.OpDef
-
-data FunctionDef = FunctionDef{_FunctionDef'signature ::
-                               !(Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpDef),
-                               _FunctionDef'attr ::
-                               !(Data.Map.Map Data.Text.Text
-                                   Proto.Tensorflow.Core.Framework.AttrValue.AttrValue),
-                               _FunctionDef'nodeDef ::
-                               ![Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
-                               _FunctionDef'ret :: !(Data.Map.Map Data.Text.Text Data.Text.Text)}
-                 deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Proto.Tensorflow.Core.Framework.OpDef.OpDef,
-          b ~ Proto.Tensorflow.Core.Framework.OpDef.OpDef,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "signature" f FunctionDef FunctionDef a b
-         where
-        lensOf _
-          = (Prelude..) maybe'signature
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpDef,
-          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.OpDef.OpDef,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'signature" f FunctionDef FunctionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'signature
-              (\ x__ y__ -> x__{_FunctionDef'signature = y__})
-
-instance (a ~
-            Data.Map.Map Data.Text.Text
-              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~
-            Data.Map.Map Data.Text.Text
-              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "attr" f FunctionDef FunctionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'attr
-              (\ x__ y__ -> x__{_FunctionDef'attr = y__})
-
-instance (a ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
-          b ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "nodeDef" f FunctionDef FunctionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'nodeDef
-              (\ x__ y__ -> x__{_FunctionDef'nodeDef = y__})
-
-instance (a ~ Data.Map.Map Data.Text.Text Data.Text.Text,
-          b ~ Data.Map.Map Data.Text.Text Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "ret" f FunctionDef FunctionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'ret
-              (\ x__ y__ -> x__{_FunctionDef'ret = y__})
-
-instance Data.Default.Class.Default FunctionDef where
-        def
-          = FunctionDef{_FunctionDef'signature = Prelude.Nothing,
-                        _FunctionDef'attr = Data.Map.empty, _FunctionDef'nodeDef = [],
-                        _FunctionDef'ret = Data.Map.empty}
-
-instance Data.ProtoLens.Message FunctionDef where
-        descriptor
-          = let signature__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "signature"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.OpDef.OpDef)
-                      (Data.ProtoLens.OptionalField maybe'signature)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef
-                attr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "attr"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor FunctionDef'AttrEntry)
-                      (Data.ProtoLens.MapField key value attr)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef
-                nodeDef__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node_def"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.NodeDef.NodeDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked nodeDef)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef
-                ret__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "ret"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor FunctionDef'RetEntry)
-                      (Data.ProtoLens.MapField key value ret)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, signature__field_descriptor),
-                    (Data.ProtoLens.Tag 5, attr__field_descriptor),
-                    (Data.ProtoLens.Tag 3, nodeDef__field_descriptor),
-                    (Data.ProtoLens.Tag 4, ret__field_descriptor)])
-                (Data.Map.fromList
-                   [("signature", signature__field_descriptor),
-                    ("attr", attr__field_descriptor),
-                    ("node_def", nodeDef__field_descriptor),
-                    ("ret", ret__field_descriptor)])
-
-data FunctionDef'AttrEntry = FunctionDef'AttrEntry{_FunctionDef'AttrEntry'key
-                                                   :: !Data.Text.Text,
-                                                   _FunctionDef'AttrEntry'value ::
-                                                   !(Prelude.Maybe
-                                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
-                           deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "key" f FunctionDef'AttrEntry
-           FunctionDef'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'AttrEntry'key
-              (\ x__ y__ -> x__{_FunctionDef'AttrEntry'key = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "value" f FunctionDef'AttrEntry
-           FunctionDef'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'value
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'value" f FunctionDef'AttrEntry
-           FunctionDef'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'AttrEntry'value
-              (\ x__ y__ -> x__{_FunctionDef'AttrEntry'value = y__})
-
-instance Data.Default.Class.Default FunctionDef'AttrEntry where
-        def
-          = FunctionDef'AttrEntry{_FunctionDef'AttrEntry'key =
-                                    Data.ProtoLens.fieldDefault,
-                                  _FunctionDef'AttrEntry'value = Prelude.Nothing}
-
-instance Data.ProtoLens.Message FunctionDef'AttrEntry where
-        descriptor
-          = let key__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "key"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef'AttrEntry
-                value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
-                      (Data.ProtoLens.OptionalField maybe'value)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef'AttrEntry
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
-                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
-                (Data.Map.fromList
-                   [("key", key__field_descriptor),
-                    ("value", value__field_descriptor)])
-
-data FunctionDef'RetEntry = FunctionDef'RetEntry{_FunctionDef'RetEntry'key
-                                                 :: !Data.Text.Text,
-                                                 _FunctionDef'RetEntry'value :: !Data.Text.Text}
-                          deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "key" f FunctionDef'RetEntry
-           FunctionDef'RetEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'RetEntry'key
-              (\ x__ y__ -> x__{_FunctionDef'RetEntry'key = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "value" f FunctionDef'RetEntry
-           FunctionDef'RetEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDef'RetEntry'value
-              (\ x__ y__ -> x__{_FunctionDef'RetEntry'value = y__})
-
-instance Data.Default.Class.Default FunctionDef'RetEntry where
-        def
-          = FunctionDef'RetEntry{_FunctionDef'RetEntry'key =
-                                   Data.ProtoLens.fieldDefault,
-                                 _FunctionDef'RetEntry'value = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message FunctionDef'RetEntry where
-        descriptor
-          = let key__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "key"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef'RetEntry
-                value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDef'RetEntry
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
-                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
-                (Data.Map.fromList
-                   [("key", key__field_descriptor),
-                    ("value", value__field_descriptor)])
-
-data FunctionDefLibrary = FunctionDefLibrary{_FunctionDefLibrary'function
-                                             :: ![FunctionDef],
-                                             _FunctionDefLibrary'gradient :: ![GradientDef]}
-                        deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [FunctionDef], b ~ [FunctionDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "function" f FunctionDefLibrary
-           FunctionDefLibrary
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDefLibrary'function
-              (\ x__ y__ -> x__{_FunctionDefLibrary'function = y__})
-
-instance (a ~ [GradientDef], b ~ [GradientDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "gradient" f FunctionDefLibrary
-           FunctionDefLibrary
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _FunctionDefLibrary'gradient
-              (\ x__ y__ -> x__{_FunctionDefLibrary'gradient = y__})
-
-instance Data.Default.Class.Default FunctionDefLibrary where
-        def
-          = FunctionDefLibrary{_FunctionDefLibrary'function = [],
-                               _FunctionDefLibrary'gradient = []}
-
-instance Data.ProtoLens.Message FunctionDefLibrary where
-        descriptor
-          = let function__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "function"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor FunctionDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked function)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDefLibrary
-                gradient__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "gradient"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor GradientDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked gradient)
-                      :: Data.ProtoLens.FieldDescriptor FunctionDefLibrary
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, function__field_descriptor),
-                    (Data.ProtoLens.Tag 2, gradient__field_descriptor)])
-                (Data.Map.fromList
-                   [("function", function__field_descriptor),
-                    ("gradient", gradient__field_descriptor)])
-
-data GradientDef = GradientDef{_GradientDef'functionName ::
-                               !Data.Text.Text,
-                               _GradientDef'gradientFunc :: !Data.Text.Text}
-                 deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "functionName" f GradientDef GradientDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GradientDef'functionName
-              (\ x__ y__ -> x__{_GradientDef'functionName = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "gradientFunc" f GradientDef GradientDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GradientDef'gradientFunc
-              (\ x__ y__ -> x__{_GradientDef'gradientFunc = y__})
-
-instance Data.Default.Class.Default GradientDef where
-        def
-          = GradientDef{_GradientDef'functionName =
-                          Data.ProtoLens.fieldDefault,
-                        _GradientDef'gradientFunc = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message GradientDef where
-        descriptor
-          = let functionName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "function_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional functionName)
-                      :: Data.ProtoLens.FieldDescriptor GradientDef
-                gradientFunc__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "gradient_func"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional gradientFunc)
-                      :: Data.ProtoLens.FieldDescriptor GradientDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, functionName__field_descriptor),
-                    (Data.ProtoLens.Tag 2, gradientFunc__field_descriptor)])
-                (Data.Map.fromList
-                   [("function_name", functionName__field_descriptor),
-                    ("gradient_func", gradientFunc__field_descriptor)])
-
-attr ::
-     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-attr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
-
-function ::
-         forall f s t a b . (Lens.Labels.HasLens "function" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-function
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "function")
-
-functionName ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "functionName" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-functionName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "functionName")
-
-gradient ::
-         forall f s t a b . (Lens.Labels.HasLens "gradient" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-gradient
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "gradient")
-
-gradientFunc ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "gradientFunc" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-gradientFunc
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "gradientFunc")
-
-key ::
-    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-key
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
-
-maybe'signature ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "maybe'signature" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-maybe'signature
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'signature")
-
-maybe'value ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
-
-nodeDef ::
-        forall f s t a b . (Lens.Labels.HasLens "nodeDef" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-nodeDef
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeDef")
-
-ret ::
-    forall f s t a b . (Lens.Labels.HasLens "ret" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-ret
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ret")
-
-signature ::
-          forall f s t a b . (Lens.Labels.HasLens "signature" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-signature
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "signature")
-
-value ::
-      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Graph.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/Graph.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Graph.hs
+++ /dev/null
@@ -1,192 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/graph.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.Graph where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.Function
-import qualified Proto.Tensorflow.Core.Framework.NodeDef
-import qualified Proto.Tensorflow.Core.Framework.Versions
-
-data GraphDef = GraphDef{_GraphDef'node ::
-                         ![Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
-                         _GraphDef'versions ::
-                         !(Prelude.Maybe
-                             Proto.Tensorflow.Core.Framework.Versions.VersionDef),
-                         _GraphDef'version :: !Data.Int.Int32,
-                         _GraphDef'library ::
-                         !(Prelude.Maybe
-                             Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary)}
-              deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
-          b ~ [Proto.Tensorflow.Core.Framework.NodeDef.NodeDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "node" f GraphDef GraphDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphDef'node
-              (\ x__ y__ -> x__{_GraphDef'node = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
-          b ~ Proto.Tensorflow.Core.Framework.Versions.VersionDef,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "versions" f GraphDef GraphDef a b
-         where
-        lensOf _
-          = (Prelude..) maybe'versions
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Versions.VersionDef,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'versions" f GraphDef GraphDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphDef'versions
-              (\ x__ y__ -> x__{_GraphDef'versions = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "version" f GraphDef GraphDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphDef'version
-              (\ x__ y__ -> x__{_GraphDef'version = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
-          b ~ Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "library" f GraphDef GraphDef a b
-         where
-        lensOf _
-          = (Prelude..) maybe'library
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'library" f GraphDef GraphDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphDef'library
-              (\ x__ y__ -> x__{_GraphDef'library = y__})
-
-instance Data.Default.Class.Default GraphDef where
-        def
-          = GraphDef{_GraphDef'node = [],
-                     _GraphDef'versions = Prelude.Nothing,
-                     _GraphDef'version = Data.ProtoLens.fieldDefault,
-                     _GraphDef'library = Prelude.Nothing}
-
-instance Data.ProtoLens.Message GraphDef where
-        descriptor
-          = let node__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.NodeDef.NodeDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked node)
-                      :: Data.ProtoLens.FieldDescriptor GraphDef
-                versions__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "versions"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Versions.VersionDef)
-                      (Data.ProtoLens.OptionalField maybe'versions)
-                      :: Data.ProtoLens.FieldDescriptor GraphDef
-                version__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "version"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
-                      :: Data.ProtoLens.FieldDescriptor GraphDef
-                library__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "library"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Function.FunctionDefLibrary)
-                      (Data.ProtoLens.OptionalField maybe'library)
-                      :: Data.ProtoLens.FieldDescriptor GraphDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, node__field_descriptor),
-                    (Data.ProtoLens.Tag 4, versions__field_descriptor),
-                    (Data.ProtoLens.Tag 3, version__field_descriptor),
-                    (Data.ProtoLens.Tag 2, library__field_descriptor)])
-                (Data.Map.fromList
-                   [("node", node__field_descriptor),
-                    ("versions", versions__field_descriptor),
-                    ("version", version__field_descriptor),
-                    ("library", library__field_descriptor)])
-
-library ::
-        forall f s t a b . (Lens.Labels.HasLens "library" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-library
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "library")
-
-maybe'library ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "maybe'library" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-maybe'library
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'library")
-
-maybe'versions ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "maybe'versions" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-maybe'versions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'versions")
-
-node ::
-     forall f s t a b . (Lens.Labels.HasLens "node" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-node
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "node")
-
-version ::
-        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-version
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
-
-versions ::
-         forall f s t a b . (Lens.Labels.HasLens "versions" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-versions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "versions")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/NodeDef.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/NodeDef.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/NodeDef.hs
+++ /dev/null
@@ -1,258 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/node_def.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.NodeDef where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.AttrValue
-
-data NodeDef = NodeDef{_NodeDef'name :: !Data.Text.Text,
-                       _NodeDef'op :: !Data.Text.Text,
-                       _NodeDef'input :: ![Data.Text.Text],
-                       _NodeDef'device :: !Data.Text.Text,
-                       _NodeDef'attr ::
-                       !(Data.Map.Map Data.Text.Text
-                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
-             deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f NodeDef NodeDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'name
-              (\ x__ y__ -> x__{_NodeDef'name = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "op" f NodeDef NodeDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'op
-              (\ x__ y__ -> x__{_NodeDef'op = y__})
-
-instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "input" f NodeDef NodeDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'input
-              (\ x__ y__ -> x__{_NodeDef'input = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "device" f NodeDef NodeDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'device
-              (\ x__ y__ -> x__{_NodeDef'device = y__})
-
-instance (a ~
-            Data.Map.Map Data.Text.Text
-              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~
-            Data.Map.Map Data.Text.Text
-              Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "attr" f NodeDef NodeDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'attr
-              (\ x__ y__ -> x__{_NodeDef'attr = y__})
-
-instance Data.Default.Class.Default NodeDef where
-        def
-          = NodeDef{_NodeDef'name = Data.ProtoLens.fieldDefault,
-                    _NodeDef'op = Data.ProtoLens.fieldDefault, _NodeDef'input = [],
-                    _NodeDef'device = Data.ProtoLens.fieldDefault,
-                    _NodeDef'attr = Data.Map.empty}
-
-instance Data.ProtoLens.Message NodeDef where
-        descriptor
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef
-                op__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "op"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional op)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef
-                input__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "input"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked input)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef
-                device__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "device"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef
-                attr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "attr"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor NodeDef'AttrEntry)
-                      (Data.ProtoLens.MapField key value attr)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                    (Data.ProtoLens.Tag 2, op__field_descriptor),
-                    (Data.ProtoLens.Tag 3, input__field_descriptor),
-                    (Data.ProtoLens.Tag 4, device__field_descriptor),
-                    (Data.ProtoLens.Tag 5, attr__field_descriptor)])
-                (Data.Map.fromList
-                   [("name", name__field_descriptor), ("op", op__field_descriptor),
-                    ("input", input__field_descriptor),
-                    ("device", device__field_descriptor),
-                    ("attr", attr__field_descriptor)])
-
-data NodeDef'AttrEntry = NodeDef'AttrEntry{_NodeDef'AttrEntry'key
-                                           :: !Data.Text.Text,
-                                           _NodeDef'AttrEntry'value ::
-                                           !(Prelude.Maybe
-                                               Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
-                       deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "key" f NodeDef'AttrEntry NodeDef'AttrEntry a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'key
-              (\ x__ y__ -> x__{_NodeDef'AttrEntry'key = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "value" f NodeDef'AttrEntry NodeDef'AttrEntry a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'value
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'value" f NodeDef'AttrEntry
-           NodeDef'AttrEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeDef'AttrEntry'value
-              (\ x__ y__ -> x__{_NodeDef'AttrEntry'value = y__})
-
-instance Data.Default.Class.Default NodeDef'AttrEntry where
-        def
-          = NodeDef'AttrEntry{_NodeDef'AttrEntry'key =
-                                Data.ProtoLens.fieldDefault,
-                              _NodeDef'AttrEntry'value = Prelude.Nothing}
-
-instance Data.ProtoLens.Message NodeDef'AttrEntry where
-        descriptor
-          = let key__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "key"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef'AttrEntry
-                value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
-                      (Data.ProtoLens.OptionalField maybe'value)
-                      :: Data.ProtoLens.FieldDescriptor NodeDef'AttrEntry
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
-                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
-                (Data.Map.fromList
-                   [("key", key__field_descriptor),
-                    ("value", value__field_descriptor)])
-
-attr ::
-     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-attr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
-
-device ::
-       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-device
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
-
-input ::
-      forall f s t a b . (Lens.Labels.HasLens "input" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-input
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "input")
-
-key ::
-    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-key
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
-
-maybe'value ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'value" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'value")
-
-name ::
-     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-name
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-
-op ::
-   forall f s t a b . (Lens.Labels.HasLens "op" f s t a b) =>
-     Lens.Family2.LensLike f s t a b
-op
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "op")
-
-value ::
-      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/OpDef.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/OpDef.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/OpDef.hs
+++ /dev/null
@@ -1,827 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/op_def.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.OpDef where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.AttrValue
-import qualified Proto.Tensorflow.Core.Framework.Types
-
-data OpDef = OpDef{_OpDef'name :: !Data.Text.Text,
-                   _OpDef'inputArg :: ![OpDef'ArgDef],
-                   _OpDef'outputArg :: ![OpDef'ArgDef],
-                   _OpDef'attr :: ![OpDef'AttrDef],
-                   _OpDef'deprecation :: !(Prelude.Maybe OpDeprecation),
-                   _OpDef'summary :: !Data.Text.Text,
-                   _OpDef'description :: !Data.Text.Text,
-                   _OpDef'isCommutative :: !Prelude.Bool,
-                   _OpDef'isAggregate :: !Prelude.Bool,
-                   _OpDef'isStateful :: !Prelude.Bool,
-                   _OpDef'allowsUninitializedInput :: !Prelude.Bool}
-           deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'name
-              (\ x__ y__ -> x__{_OpDef'name = y__})
-
-instance (a ~ [OpDef'ArgDef], b ~ [OpDef'ArgDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "inputArg" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'inputArg
-              (\ x__ y__ -> x__{_OpDef'inputArg = y__})
-
-instance (a ~ [OpDef'ArgDef], b ~ [OpDef'ArgDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "outputArg" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'outputArg
-              (\ x__ y__ -> x__{_OpDef'outputArg = y__})
-
-instance (a ~ [OpDef'AttrDef], b ~ [OpDef'AttrDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "attr" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'attr
-              (\ x__ y__ -> x__{_OpDef'attr = y__})
-
-instance (a ~ OpDeprecation, b ~ OpDeprecation,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "deprecation" f OpDef OpDef a b
-         where
-        lensOf _
-          = (Prelude..) maybe'deprecation
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe OpDeprecation,
-          b ~ Prelude.Maybe OpDeprecation, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'deprecation" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'deprecation
-              (\ x__ y__ -> x__{_OpDef'deprecation = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "summary" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'summary
-              (\ x__ y__ -> x__{_OpDef'summary = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "description" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'description
-              (\ x__ y__ -> x__{_OpDef'description = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "isCommutative" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'isCommutative
-              (\ x__ y__ -> x__{_OpDef'isCommutative = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "isAggregate" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'isAggregate
-              (\ x__ y__ -> x__{_OpDef'isAggregate = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "isStateful" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'isStateful
-              (\ x__ y__ -> x__{_OpDef'isStateful = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "allowsUninitializedInput" f OpDef OpDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'allowsUninitializedInput
-              (\ x__ y__ -> x__{_OpDef'allowsUninitializedInput = y__})
-
-instance Data.Default.Class.Default OpDef where
-        def
-          = OpDef{_OpDef'name = Data.ProtoLens.fieldDefault,
-                  _OpDef'inputArg = [], _OpDef'outputArg = [], _OpDef'attr = [],
-                  _OpDef'deprecation = Prelude.Nothing,
-                  _OpDef'summary = Data.ProtoLens.fieldDefault,
-                  _OpDef'description = Data.ProtoLens.fieldDefault,
-                  _OpDef'isCommutative = Data.ProtoLens.fieldDefault,
-                  _OpDef'isAggregate = Data.ProtoLens.fieldDefault,
-                  _OpDef'isStateful = Data.ProtoLens.fieldDefault,
-                  _OpDef'allowsUninitializedInput = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message OpDef where
-        descriptor
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                inputArg__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "input_arg"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor OpDef'ArgDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked inputArg)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                outputArg__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "output_arg"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor OpDef'ArgDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked outputArg)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                attr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "attr"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor OpDef'AttrDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked attr)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                deprecation__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecation"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor OpDeprecation)
-                      (Data.ProtoLens.OptionalField maybe'deprecation)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                summary__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "summary"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional summary)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                description__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "description"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional description)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                isCommutative__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "is_commutative"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isCommutative)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                isAggregate__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "is_aggregate"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isAggregate)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                isStateful__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "is_stateful"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isStateful)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-                allowsUninitializedInput__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allows_uninitialized_input"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         allowsUninitializedInput)
-                      :: Data.ProtoLens.FieldDescriptor OpDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                    (Data.ProtoLens.Tag 2, inputArg__field_descriptor),
-                    (Data.ProtoLens.Tag 3, outputArg__field_descriptor),
-                    (Data.ProtoLens.Tag 4, attr__field_descriptor),
-                    (Data.ProtoLens.Tag 8, deprecation__field_descriptor),
-                    (Data.ProtoLens.Tag 5, summary__field_descriptor),
-                    (Data.ProtoLens.Tag 6, description__field_descriptor),
-                    (Data.ProtoLens.Tag 18, isCommutative__field_descriptor),
-                    (Data.ProtoLens.Tag 16, isAggregate__field_descriptor),
-                    (Data.ProtoLens.Tag 17, isStateful__field_descriptor),
-                    (Data.ProtoLens.Tag 19,
-                     allowsUninitializedInput__field_descriptor)])
-                (Data.Map.fromList
-                   [("name", name__field_descriptor),
-                    ("input_arg", inputArg__field_descriptor),
-                    ("output_arg", outputArg__field_descriptor),
-                    ("attr", attr__field_descriptor),
-                    ("deprecation", deprecation__field_descriptor),
-                    ("summary", summary__field_descriptor),
-                    ("description", description__field_descriptor),
-                    ("is_commutative", isCommutative__field_descriptor),
-                    ("is_aggregate", isAggregate__field_descriptor),
-                    ("is_stateful", isStateful__field_descriptor),
-                    ("allows_uninitialized_input",
-                     allowsUninitializedInput__field_descriptor)])
-
-data OpDef'ArgDef = OpDef'ArgDef{_OpDef'ArgDef'name ::
-                                 !Data.Text.Text,
-                                 _OpDef'ArgDef'description :: !Data.Text.Text,
-                                 _OpDef'ArgDef'type' ::
-                                 !Proto.Tensorflow.Core.Framework.Types.DataType,
-                                 _OpDef'ArgDef'typeAttr :: !Data.Text.Text,
-                                 _OpDef'ArgDef'numberAttr :: !Data.Text.Text,
-                                 _OpDef'ArgDef'typeListAttr :: !Data.Text.Text,
-                                 _OpDef'ArgDef'isRef :: !Prelude.Bool}
-                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'name
-              (\ x__ y__ -> x__{_OpDef'ArgDef'name = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "description" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'description
-              (\ x__ y__ -> x__{_OpDef'ArgDef'description = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "type'" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'type'
-              (\ x__ y__ -> x__{_OpDef'ArgDef'type' = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "typeAttr" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'typeAttr
-              (\ x__ y__ -> x__{_OpDef'ArgDef'typeAttr = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "numberAttr" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'numberAttr
-              (\ x__ y__ -> x__{_OpDef'ArgDef'numberAttr = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "typeListAttr" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'typeListAttr
-              (\ x__ y__ -> x__{_OpDef'ArgDef'typeListAttr = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "isRef" f OpDef'ArgDef OpDef'ArgDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'ArgDef'isRef
-              (\ x__ y__ -> x__{_OpDef'ArgDef'isRef = y__})
-
-instance Data.Default.Class.Default OpDef'ArgDef where
-        def
-          = OpDef'ArgDef{_OpDef'ArgDef'name = Data.ProtoLens.fieldDefault,
-                         _OpDef'ArgDef'description = Data.ProtoLens.fieldDefault,
-                         _OpDef'ArgDef'type' = Data.Default.Class.def,
-                         _OpDef'ArgDef'typeAttr = Data.ProtoLens.fieldDefault,
-                         _OpDef'ArgDef'numberAttr = Data.ProtoLens.fieldDefault,
-                         _OpDef'ArgDef'typeListAttr = Data.ProtoLens.fieldDefault,
-                         _OpDef'ArgDef'isRef = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message OpDef'ArgDef where
-        descriptor
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-                description__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "description"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional description)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-                type'__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Types.DataType)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-                typeAttr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type_attr"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeAttr)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-                numberAttr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "number_attr"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numberAttr)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-                typeListAttr__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type_list_attr"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeListAttr)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-                isRef__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "is_ref"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional isRef)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'ArgDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                    (Data.ProtoLens.Tag 2, description__field_descriptor),
-                    (Data.ProtoLens.Tag 3, type'__field_descriptor),
-                    (Data.ProtoLens.Tag 4, typeAttr__field_descriptor),
-                    (Data.ProtoLens.Tag 5, numberAttr__field_descriptor),
-                    (Data.ProtoLens.Tag 6, typeListAttr__field_descriptor),
-                    (Data.ProtoLens.Tag 16, isRef__field_descriptor)])
-                (Data.Map.fromList
-                   [("name", name__field_descriptor),
-                    ("description", description__field_descriptor),
-                    ("type", type'__field_descriptor),
-                    ("type_attr", typeAttr__field_descriptor),
-                    ("number_attr", numberAttr__field_descriptor),
-                    ("type_list_attr", typeListAttr__field_descriptor),
-                    ("is_ref", isRef__field_descriptor)])
-
-data OpDef'AttrDef = OpDef'AttrDef{_OpDef'AttrDef'name ::
-                                   !Data.Text.Text,
-                                   _OpDef'AttrDef'type' :: !Data.Text.Text,
-                                   _OpDef'AttrDef'defaultValue ::
-                                   !(Prelude.Maybe
-                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue),
-                                   _OpDef'AttrDef'description :: !Data.Text.Text,
-                                   _OpDef'AttrDef'hasMinimum :: !Prelude.Bool,
-                                   _OpDef'AttrDef'minimum :: !Data.Int.Int64,
-                                   _OpDef'AttrDef'allowedValues ::
-                                   !(Prelude.Maybe
-                                       Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)}
-                   deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f OpDef'AttrDef OpDef'AttrDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'name
-              (\ x__ y__ -> x__{_OpDef'AttrDef'name = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "type'" f OpDef'AttrDef OpDef'AttrDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'type'
-              (\ x__ y__ -> x__{_OpDef'AttrDef'type' = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "defaultValue" f OpDef'AttrDef OpDef'AttrDef a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'defaultValue
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'defaultValue" f OpDef'AttrDef
-           OpDef'AttrDef
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'defaultValue
-              (\ x__ y__ -> x__{_OpDef'AttrDef'defaultValue = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "description" f OpDef'AttrDef OpDef'AttrDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'description
-              (\ x__ y__ -> x__{_OpDef'AttrDef'description = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "hasMinimum" f OpDef'AttrDef OpDef'AttrDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'hasMinimum
-              (\ x__ y__ -> x__{_OpDef'AttrDef'hasMinimum = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "minimum" f OpDef'AttrDef OpDef'AttrDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'minimum
-              (\ x__ y__ -> x__{_OpDef'AttrDef'minimum = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~ Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allowedValues" f OpDef'AttrDef OpDef'AttrDef a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'allowedValues
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.AttrValue.AttrValue,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'allowedValues" f OpDef'AttrDef
-           OpDef'AttrDef
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDef'AttrDef'allowedValues
-              (\ x__ y__ -> x__{_OpDef'AttrDef'allowedValues = y__})
-
-instance Data.Default.Class.Default OpDef'AttrDef where
-        def
-          = OpDef'AttrDef{_OpDef'AttrDef'name = Data.ProtoLens.fieldDefault,
-                          _OpDef'AttrDef'type' = Data.ProtoLens.fieldDefault,
-                          _OpDef'AttrDef'defaultValue = Prelude.Nothing,
-                          _OpDef'AttrDef'description = Data.ProtoLens.fieldDefault,
-                          _OpDef'AttrDef'hasMinimum = Data.ProtoLens.fieldDefault,
-                          _OpDef'AttrDef'minimum = Data.ProtoLens.fieldDefault,
-                          _OpDef'AttrDef'allowedValues = Prelude.Nothing}
-
-instance Data.ProtoLens.Message OpDef'AttrDef where
-        descriptor
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-                type'__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional type')
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-                defaultValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "default_value"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
-                      (Data.ProtoLens.OptionalField maybe'defaultValue)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-                description__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "description"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional description)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-                hasMinimum__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "has_minimum"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional hasMinimum)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-                minimum__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "minimum"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional minimum)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-                allowedValues__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allowed_values"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.AttrValue.AttrValue)
-                      (Data.ProtoLens.OptionalField maybe'allowedValues)
-                      :: Data.ProtoLens.FieldDescriptor OpDef'AttrDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                    (Data.ProtoLens.Tag 2, type'__field_descriptor),
-                    (Data.ProtoLens.Tag 3, defaultValue__field_descriptor),
-                    (Data.ProtoLens.Tag 4, description__field_descriptor),
-                    (Data.ProtoLens.Tag 5, hasMinimum__field_descriptor),
-                    (Data.ProtoLens.Tag 6, minimum__field_descriptor),
-                    (Data.ProtoLens.Tag 7, allowedValues__field_descriptor)])
-                (Data.Map.fromList
-                   [("name", name__field_descriptor),
-                    ("type", type'__field_descriptor),
-                    ("default_value", defaultValue__field_descriptor),
-                    ("description", description__field_descriptor),
-                    ("has_minimum", hasMinimum__field_descriptor),
-                    ("minimum", minimum__field_descriptor),
-                    ("allowed_values", allowedValues__field_descriptor)])
-
-data OpDeprecation = OpDeprecation{_OpDeprecation'version ::
-                                   !Data.Int.Int32,
-                                   _OpDeprecation'explanation :: !Data.Text.Text}
-                   deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "version" f OpDeprecation OpDeprecation a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDeprecation'version
-              (\ x__ y__ -> x__{_OpDeprecation'version = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "explanation" f OpDeprecation OpDeprecation a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpDeprecation'explanation
-              (\ x__ y__ -> x__{_OpDeprecation'explanation = y__})
-
-instance Data.Default.Class.Default OpDeprecation where
-        def
-          = OpDeprecation{_OpDeprecation'version =
-                            Data.ProtoLens.fieldDefault,
-                          _OpDeprecation'explanation = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message OpDeprecation where
-        descriptor
-          = let version__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "version"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
-                      :: Data.ProtoLens.FieldDescriptor OpDeprecation
-                explanation__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "explanation"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional explanation)
-                      :: Data.ProtoLens.FieldDescriptor OpDeprecation
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, version__field_descriptor),
-                    (Data.ProtoLens.Tag 2, explanation__field_descriptor)])
-                (Data.Map.fromList
-                   [("version", version__field_descriptor),
-                    ("explanation", explanation__field_descriptor)])
-
-data OpList = OpList{_OpList'op :: ![OpDef]}
-            deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [OpDef], b ~ [OpDef], Prelude.Functor f) =>
-         Lens.Labels.HasLens "op" f OpList OpList a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OpList'op
-              (\ x__ y__ -> x__{_OpList'op = y__})
-
-instance Data.Default.Class.Default OpList where
-        def = OpList{_OpList'op = []}
-
-instance Data.ProtoLens.Message OpList where
-        descriptor
-          = let op__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "op"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor OpDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked op)
-                      :: Data.ProtoLens.FieldDescriptor OpList
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList [(Data.ProtoLens.Tag 1, op__field_descriptor)])
-                (Data.Map.fromList [("op", op__field_descriptor)])
-
-allowedValues ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "allowedValues" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-allowedValues
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowedValues")
-
-allowsUninitializedInput ::
-                         forall f s t a b .
-                           (Lens.Labels.HasLens "allowsUninitializedInput" f s t a b) =>
-                           Lens.Family2.LensLike f s t a b
-allowsUninitializedInput
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "allowsUninitializedInput")
-
-attr ::
-     forall f s t a b . (Lens.Labels.HasLens "attr" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-attr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "attr")
-
-defaultValue ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "defaultValue" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-defaultValue
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "defaultValue")
-
-deprecation ::
-            forall f s t a b . (Lens.Labels.HasLens "deprecation" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-deprecation
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deprecation")
-
-description ::
-            forall f s t a b . (Lens.Labels.HasLens "description" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-description
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "description")
-
-explanation ::
-            forall f s t a b . (Lens.Labels.HasLens "explanation" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-explanation
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "explanation")
-
-hasMinimum ::
-           forall f s t a b . (Lens.Labels.HasLens "hasMinimum" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-hasMinimum
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hasMinimum")
-
-inputArg ::
-         forall f s t a b . (Lens.Labels.HasLens "inputArg" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-inputArg
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inputArg")
-
-isAggregate ::
-            forall f s t a b . (Lens.Labels.HasLens "isAggregate" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-isAggregate
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isAggregate")
-
-isCommutative ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "isCommutative" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-isCommutative
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isCommutative")
-
-isRef ::
-      forall f s t a b . (Lens.Labels.HasLens "isRef" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-isRef
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isRef")
-
-isStateful ::
-           forall f s t a b . (Lens.Labels.HasLens "isStateful" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-isStateful
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isStateful")
-
-maybe'allowedValues ::
-                    forall f s t a b .
-                      (Lens.Labels.HasLens "maybe'allowedValues" f s t a b) =>
-                      Lens.Family2.LensLike f s t a b
-maybe'allowedValues
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'allowedValues")
-
-maybe'defaultValue ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "maybe'defaultValue" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-maybe'defaultValue
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'defaultValue")
-
-maybe'deprecation ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "maybe'deprecation" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-maybe'deprecation
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecation")
-
-minimum ::
-        forall f s t a b . (Lens.Labels.HasLens "minimum" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-minimum
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "minimum")
-
-name ::
-     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-name
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-
-numberAttr ::
-           forall f s t a b . (Lens.Labels.HasLens "numberAttr" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-numberAttr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numberAttr")
-
-op ::
-   forall f s t a b . (Lens.Labels.HasLens "op" f s t a b) =>
-     Lens.Family2.LensLike f s t a b
-op
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "op")
-
-outputArg ::
-          forall f s t a b . (Lens.Labels.HasLens "outputArg" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-outputArg
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputArg")
-
-summary ::
-        forall f s t a b . (Lens.Labels.HasLens "summary" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-summary
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "summary")
-
-type' ::
-      forall f s t a b . (Lens.Labels.HasLens "type'" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-type'
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
-
-typeAttr ::
-         forall f s t a b . (Lens.Labels.HasLens "typeAttr" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-typeAttr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeAttr")
-
-typeListAttr ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "typeListAttr" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-typeListAttr
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeListAttr")
-
-version ::
-        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-version
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/ResourceHandle.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/ResourceHandle.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/ResourceHandle.hs
+++ /dev/null
@@ -1,167 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/resource_handle.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.ResourceHandle where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-
-data ResourceHandle = ResourceHandle{_ResourceHandle'device ::
-                                     !Data.Text.Text,
-                                     _ResourceHandle'container :: !Data.Text.Text,
-                                     _ResourceHandle'name :: !Data.Text.Text,
-                                     _ResourceHandle'hashCode :: !Data.Word.Word64,
-                                     _ResourceHandle'maybeTypeName :: !Data.Text.Text}
-                    deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "device" f ResourceHandle ResourceHandle a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ResourceHandle'device
-              (\ x__ y__ -> x__{_ResourceHandle'device = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "container" f ResourceHandle ResourceHandle a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ResourceHandle'container
-              (\ x__ y__ -> x__{_ResourceHandle'container = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f ResourceHandle ResourceHandle a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ResourceHandle'name
-              (\ x__ y__ -> x__{_ResourceHandle'name = y__})
-
-instance (a ~ Data.Word.Word64, b ~ Data.Word.Word64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "hashCode" f ResourceHandle ResourceHandle a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ResourceHandle'hashCode
-              (\ x__ y__ -> x__{_ResourceHandle'hashCode = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybeTypeName" f ResourceHandle ResourceHandle
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ResourceHandle'maybeTypeName
-              (\ x__ y__ -> x__{_ResourceHandle'maybeTypeName = y__})
-
-instance Data.Default.Class.Default ResourceHandle where
-        def
-          = ResourceHandle{_ResourceHandle'device =
-                             Data.ProtoLens.fieldDefault,
-                           _ResourceHandle'container = Data.ProtoLens.fieldDefault,
-                           _ResourceHandle'name = Data.ProtoLens.fieldDefault,
-                           _ResourceHandle'hashCode = Data.ProtoLens.fieldDefault,
-                           _ResourceHandle'maybeTypeName = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message ResourceHandle where
-        descriptor
-          = let device__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "device"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
-                      :: Data.ProtoLens.FieldDescriptor ResourceHandle
-                container__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "container"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional container)
-                      :: Data.ProtoLens.FieldDescriptor ResourceHandle
-                name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor ResourceHandle
-                hashCode__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "hash_code"
-                      (Data.ProtoLens.UInt64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional hashCode)
-                      :: Data.ProtoLens.FieldDescriptor ResourceHandle
-                maybeTypeName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "maybe_type_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional maybeTypeName)
-                      :: Data.ProtoLens.FieldDescriptor ResourceHandle
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, device__field_descriptor),
-                    (Data.ProtoLens.Tag 2, container__field_descriptor),
-                    (Data.ProtoLens.Tag 3, name__field_descriptor),
-                    (Data.ProtoLens.Tag 4, hashCode__field_descriptor),
-                    (Data.ProtoLens.Tag 5, maybeTypeName__field_descriptor)])
-                (Data.Map.fromList
-                   [("device", device__field_descriptor),
-                    ("container", container__field_descriptor),
-                    ("name", name__field_descriptor),
-                    ("hash_code", hashCode__field_descriptor),
-                    ("maybe_type_name", maybeTypeName__field_descriptor)])
-
-container ::
-          forall f s t a b . (Lens.Labels.HasLens "container" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-container
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "container")
-
-device ::
-       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-device
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
-
-hashCode ::
-         forall f s t a b . (Lens.Labels.HasLens "hashCode" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-hashCode
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "hashCode")
-
-maybeTypeName ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "maybeTypeName" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-maybeTypeName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybeTypeName")
-
-name ::
-     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-name
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/StepStats.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/StepStats.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/StepStats.hs
+++ /dev/null
@@ -1,638 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/step_stats.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.StepStats where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified
-       Proto.Tensorflow.Core.Framework.AllocationDescription
-import qualified Proto.Tensorflow.Core.Framework.TensorDescription
-
-data AllocatorMemoryUsed = AllocatorMemoryUsed{_AllocatorMemoryUsed'allocatorName
-                                               :: !Data.Text.Text,
-                                               _AllocatorMemoryUsed'totalBytes :: !Data.Int.Int64,
-                                               _AllocatorMemoryUsed'peakBytes :: !Data.Int.Int64}
-                         deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allocatorName" f AllocatorMemoryUsed
-           AllocatorMemoryUsed
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'allocatorName
-              (\ x__ y__ -> x__{_AllocatorMemoryUsed'allocatorName = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "totalBytes" f AllocatorMemoryUsed
-           AllocatorMemoryUsed
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'totalBytes
-              (\ x__ y__ -> x__{_AllocatorMemoryUsed'totalBytes = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "peakBytes" f AllocatorMemoryUsed
-           AllocatorMemoryUsed
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _AllocatorMemoryUsed'peakBytes
-              (\ x__ y__ -> x__{_AllocatorMemoryUsed'peakBytes = y__})
-
-instance Data.Default.Class.Default AllocatorMemoryUsed where
-        def
-          = AllocatorMemoryUsed{_AllocatorMemoryUsed'allocatorName =
-                                  Data.ProtoLens.fieldDefault,
-                                _AllocatorMemoryUsed'totalBytes = Data.ProtoLens.fieldDefault,
-                                _AllocatorMemoryUsed'peakBytes = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message AllocatorMemoryUsed where
-        descriptor
-          = let allocatorName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allocator_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorName)
-                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
-                totalBytes__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "total_bytes"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional totalBytes)
-                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
-                peakBytes__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "peak_bytes"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional peakBytes)
-                      :: Data.ProtoLens.FieldDescriptor AllocatorMemoryUsed
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, allocatorName__field_descriptor),
-                    (Data.ProtoLens.Tag 2, totalBytes__field_descriptor),
-                    (Data.ProtoLens.Tag 3, peakBytes__field_descriptor)])
-                (Data.Map.fromList
-                   [("allocator_name", allocatorName__field_descriptor),
-                    ("total_bytes", totalBytes__field_descriptor),
-                    ("peak_bytes", peakBytes__field_descriptor)])
-
-data DeviceStepStats = DeviceStepStats{_DeviceStepStats'device ::
-                                       !Data.Text.Text,
-                                       _DeviceStepStats'nodeStats :: ![NodeExecStats]}
-                     deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "device" f DeviceStepStats DeviceStepStats a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DeviceStepStats'device
-              (\ x__ y__ -> x__{_DeviceStepStats'device = y__})
-
-instance (a ~ [NodeExecStats], b ~ [NodeExecStats],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "nodeStats" f DeviceStepStats DeviceStepStats a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DeviceStepStats'nodeStats
-              (\ x__ y__ -> x__{_DeviceStepStats'nodeStats = y__})
-
-instance Data.Default.Class.Default DeviceStepStats where
-        def
-          = DeviceStepStats{_DeviceStepStats'device =
-                              Data.ProtoLens.fieldDefault,
-                            _DeviceStepStats'nodeStats = []}
-
-instance Data.ProtoLens.Message DeviceStepStats where
-        descriptor
-          = let device__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "device"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional device)
-                      :: Data.ProtoLens.FieldDescriptor DeviceStepStats
-                nodeStats__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node_stats"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor NodeExecStats)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked nodeStats)
-                      :: Data.ProtoLens.FieldDescriptor DeviceStepStats
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, device__field_descriptor),
-                    (Data.ProtoLens.Tag 2, nodeStats__field_descriptor)])
-                (Data.Map.fromList
-                   [("device", device__field_descriptor),
-                    ("node_stats", nodeStats__field_descriptor)])
-
-data NodeExecStats = NodeExecStats{_NodeExecStats'nodeName ::
-                                   !Data.Text.Text,
-                                   _NodeExecStats'allStartMicros :: !Data.Int.Int64,
-                                   _NodeExecStats'opStartRelMicros :: !Data.Int.Int64,
-                                   _NodeExecStats'opEndRelMicros :: !Data.Int.Int64,
-                                   _NodeExecStats'allEndRelMicros :: !Data.Int.Int64,
-                                   _NodeExecStats'memory :: ![AllocatorMemoryUsed],
-                                   _NodeExecStats'output :: ![NodeOutput],
-                                   _NodeExecStats'timelineLabel :: !Data.Text.Text,
-                                   _NodeExecStats'scheduledMicros :: !Data.Int.Int64,
-                                   _NodeExecStats'threadId :: !Data.Word.Word32,
-                                   _NodeExecStats'referencedTensor ::
-                                   ![Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription]}
-                   deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "nodeName" f NodeExecStats NodeExecStats a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'nodeName
-              (\ x__ y__ -> x__{_NodeExecStats'nodeName = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allStartMicros" f NodeExecStats NodeExecStats
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'allStartMicros
-              (\ x__ y__ -> x__{_NodeExecStats'allStartMicros = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "opStartRelMicros" f NodeExecStats
-           NodeExecStats
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'opStartRelMicros
-              (\ x__ y__ -> x__{_NodeExecStats'opStartRelMicros = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "opEndRelMicros" f NodeExecStats NodeExecStats
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'opEndRelMicros
-              (\ x__ y__ -> x__{_NodeExecStats'opEndRelMicros = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allEndRelMicros" f NodeExecStats NodeExecStats
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'allEndRelMicros
-              (\ x__ y__ -> x__{_NodeExecStats'allEndRelMicros = y__})
-
-instance (a ~ [AllocatorMemoryUsed], b ~ [AllocatorMemoryUsed],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "memory" f NodeExecStats NodeExecStats a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'memory
-              (\ x__ y__ -> x__{_NodeExecStats'memory = y__})
-
-instance (a ~ [NodeOutput], b ~ [NodeOutput], Prelude.Functor f) =>
-         Lens.Labels.HasLens "output" f NodeExecStats NodeExecStats a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'output
-              (\ x__ y__ -> x__{_NodeExecStats'output = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "timelineLabel" f NodeExecStats NodeExecStats a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'timelineLabel
-              (\ x__ y__ -> x__{_NodeExecStats'timelineLabel = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "scheduledMicros" f NodeExecStats NodeExecStats
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'scheduledMicros
-              (\ x__ y__ -> x__{_NodeExecStats'scheduledMicros = y__})
-
-instance (a ~ Data.Word.Word32, b ~ Data.Word.Word32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "threadId" f NodeExecStats NodeExecStats a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'threadId
-              (\ x__ y__ -> x__{_NodeExecStats'threadId = y__})
-
-instance (a ~
-            [Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription],
-          b ~
-            [Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "referencedTensor" f NodeExecStats
-           NodeExecStats
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeExecStats'referencedTensor
-              (\ x__ y__ -> x__{_NodeExecStats'referencedTensor = y__})
-
-instance Data.Default.Class.Default NodeExecStats where
-        def
-          = NodeExecStats{_NodeExecStats'nodeName =
-                            Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'allStartMicros = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'opStartRelMicros = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'opEndRelMicros = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'allEndRelMicros = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'memory = [], _NodeExecStats'output = [],
-                          _NodeExecStats'timelineLabel = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'scheduledMicros = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'threadId = Data.ProtoLens.fieldDefault,
-                          _NodeExecStats'referencedTensor = []}
-
-instance Data.ProtoLens.Message NodeExecStats where
-        descriptor
-          = let nodeName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional nodeName)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                allStartMicros__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "all_start_micros"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allStartMicros)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                opStartRelMicros__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "op_start_rel_micros"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         opStartRelMicros)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                opEndRelMicros__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "op_end_rel_micros"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional opEndRelMicros)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                allEndRelMicros__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "all_end_rel_micros"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allEndRelMicros)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                memory__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "memory"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor AllocatorMemoryUsed)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked memory)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                output__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "output"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor NodeOutput)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked output)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                timelineLabel__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "timeline_label"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timelineLabel)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                scheduledMicros__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "scheduled_micros"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional scheduledMicros)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                threadId__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "thread_id"
-                      (Data.ProtoLens.UInt32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional threadId)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-                referencedTensor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "referenced_tensor"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         referencedTensor)
-                      :: Data.ProtoLens.FieldDescriptor NodeExecStats
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, nodeName__field_descriptor),
-                    (Data.ProtoLens.Tag 2, allStartMicros__field_descriptor),
-                    (Data.ProtoLens.Tag 3, opStartRelMicros__field_descriptor),
-                    (Data.ProtoLens.Tag 4, opEndRelMicros__field_descriptor),
-                    (Data.ProtoLens.Tag 5, allEndRelMicros__field_descriptor),
-                    (Data.ProtoLens.Tag 6, memory__field_descriptor),
-                    (Data.ProtoLens.Tag 7, output__field_descriptor),
-                    (Data.ProtoLens.Tag 8, timelineLabel__field_descriptor),
-                    (Data.ProtoLens.Tag 9, scheduledMicros__field_descriptor),
-                    (Data.ProtoLens.Tag 10, threadId__field_descriptor),
-                    (Data.ProtoLens.Tag 11, referencedTensor__field_descriptor)])
-                (Data.Map.fromList
-                   [("node_name", nodeName__field_descriptor),
-                    ("all_start_micros", allStartMicros__field_descriptor),
-                    ("op_start_rel_micros", opStartRelMicros__field_descriptor),
-                    ("op_end_rel_micros", opEndRelMicros__field_descriptor),
-                    ("all_end_rel_micros", allEndRelMicros__field_descriptor),
-                    ("memory", memory__field_descriptor),
-                    ("output", output__field_descriptor),
-                    ("timeline_label", timelineLabel__field_descriptor),
-                    ("scheduled_micros", scheduledMicros__field_descriptor),
-                    ("thread_id", threadId__field_descriptor),
-                    ("referenced_tensor", referencedTensor__field_descriptor)])
-
-data NodeOutput = NodeOutput{_NodeOutput'slot :: !Data.Int.Int32,
-                             _NodeOutput'tensorDescription ::
-                             !(Prelude.Maybe
-                                 Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "slot" f NodeOutput NodeOutput a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeOutput'slot
-              (\ x__ y__ -> x__{_NodeOutput'slot = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
-          b ~
-            Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tensorDescription" f NodeOutput NodeOutput a b
-         where
-        lensOf _
-          = (Prelude..) maybe'tensorDescription
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'tensorDescription" f NodeOutput
-           NodeOutput
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _NodeOutput'tensorDescription
-              (\ x__ y__ -> x__{_NodeOutput'tensorDescription = y__})
-
-instance Data.Default.Class.Default NodeOutput where
-        def
-          = NodeOutput{_NodeOutput'slot = Data.ProtoLens.fieldDefault,
-                       _NodeOutput'tensorDescription = Prelude.Nothing}
-
-instance Data.ProtoLens.Message NodeOutput where
-        descriptor
-          = let slot__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "slot"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional slot)
-                      :: Data.ProtoLens.FieldDescriptor NodeOutput
-                tensorDescription__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tensor_description"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.TensorDescription.TensorDescription)
-                      (Data.ProtoLens.OptionalField maybe'tensorDescription)
-                      :: Data.ProtoLens.FieldDescriptor NodeOutput
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, slot__field_descriptor),
-                    (Data.ProtoLens.Tag 3, tensorDescription__field_descriptor)])
-                (Data.Map.fromList
-                   [("slot", slot__field_descriptor),
-                    ("tensor_description", tensorDescription__field_descriptor)])
-
-data StepStats = StepStats{_StepStats'devStats ::
-                           ![DeviceStepStats]}
-               deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [DeviceStepStats], b ~ [DeviceStepStats],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "devStats" f StepStats StepStats a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _StepStats'devStats
-              (\ x__ y__ -> x__{_StepStats'devStats = y__})
-
-instance Data.Default.Class.Default StepStats where
-        def = StepStats{_StepStats'devStats = []}
-
-instance Data.ProtoLens.Message StepStats where
-        descriptor
-          = let devStats__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dev_stats"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor DeviceStepStats)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked devStats)
-                      :: Data.ProtoLens.FieldDescriptor StepStats
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, devStats__field_descriptor)])
-                (Data.Map.fromList [("dev_stats", devStats__field_descriptor)])
-
-allEndRelMicros ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "allEndRelMicros" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-allEndRelMicros
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allEndRelMicros")
-
-allStartMicros ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "allStartMicros" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-allStartMicros
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allStartMicros")
-
-allocatorName ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "allocatorName" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-allocatorName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorName")
-
-devStats ::
-         forall f s t a b . (Lens.Labels.HasLens "devStats" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-devStats
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "devStats")
-
-device ::
-       forall f s t a b . (Lens.Labels.HasLens "device" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-device
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "device")
-
-maybe'tensorDescription ::
-                        forall f s t a b .
-                          (Lens.Labels.HasLens "maybe'tensorDescription" f s t a b) =>
-                          Lens.Family2.LensLike f s t a b
-maybe'tensorDescription
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'tensorDescription")
-
-memory ::
-       forall f s t a b . (Lens.Labels.HasLens "memory" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-memory
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "memory")
-
-nodeName ::
-         forall f s t a b . (Lens.Labels.HasLens "nodeName" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-nodeName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeName")
-
-nodeStats ::
-          forall f s t a b . (Lens.Labels.HasLens "nodeStats" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-nodeStats
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeStats")
-
-opEndRelMicros ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "opEndRelMicros" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-opEndRelMicros
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "opEndRelMicros")
-
-opStartRelMicros ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "opStartRelMicros" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-opStartRelMicros
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "opStartRelMicros")
-
-output ::
-       forall f s t a b . (Lens.Labels.HasLens "output" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-output
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "output")
-
-peakBytes ::
-          forall f s t a b . (Lens.Labels.HasLens "peakBytes" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-peakBytes
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "peakBytes")
-
-referencedTensor ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "referencedTensor" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-referencedTensor
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "referencedTensor")
-
-scheduledMicros ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "scheduledMicros" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-scheduledMicros
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "scheduledMicros")
-
-slot ::
-     forall f s t a b . (Lens.Labels.HasLens "slot" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-slot
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "slot")
-
-tensorDescription ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "tensorDescription" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-tensorDescription
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorDescription")
-
-threadId ::
-         forall f s t a b . (Lens.Labels.HasLens "threadId" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-threadId
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "threadId")
-
-timelineLabel ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "timelineLabel" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-timelineLabel
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timelineLabel")
-
-totalBytes ::
-           forall f s t a b . (Lens.Labels.HasLens "totalBytes" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-totalBytes
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "totalBytes")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Summary.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/Summary.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Summary.hs
+++ /dev/null
@@ -1,887 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/summary.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.Summary where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.Tensor
-
-data HistogramProto = HistogramProto{_HistogramProto'min ::
-                                     !Prelude.Double,
-                                     _HistogramProto'max :: !Prelude.Double,
-                                     _HistogramProto'num :: !Prelude.Double,
-                                     _HistogramProto'sum :: !Prelude.Double,
-                                     _HistogramProto'sumSquares :: !Prelude.Double,
-                                     _HistogramProto'bucketLimit :: ![Prelude.Double],
-                                     _HistogramProto'bucket :: ![Prelude.Double]}
-                    deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "min" f HistogramProto HistogramProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'min
-              (\ x__ y__ -> x__{_HistogramProto'min = y__})
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "max" f HistogramProto HistogramProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'max
-              (\ x__ y__ -> x__{_HistogramProto'max = y__})
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "num" f HistogramProto HistogramProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'num
-              (\ x__ y__ -> x__{_HistogramProto'num = y__})
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "sum" f HistogramProto HistogramProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'sum
-              (\ x__ y__ -> x__{_HistogramProto'sum = y__})
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "sumSquares" f HistogramProto HistogramProto a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'sumSquares
-              (\ x__ y__ -> x__{_HistogramProto'sumSquares = y__})
-
-instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "bucketLimit" f HistogramProto HistogramProto a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'bucketLimit
-              (\ x__ y__ -> x__{_HistogramProto'bucketLimit = y__})
-
-instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "bucket" f HistogramProto HistogramProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _HistogramProto'bucket
-              (\ x__ y__ -> x__{_HistogramProto'bucket = y__})
-
-instance Data.Default.Class.Default HistogramProto where
-        def
-          = HistogramProto{_HistogramProto'min = Data.ProtoLens.fieldDefault,
-                           _HistogramProto'max = Data.ProtoLens.fieldDefault,
-                           _HistogramProto'num = Data.ProtoLens.fieldDefault,
-                           _HistogramProto'sum = Data.ProtoLens.fieldDefault,
-                           _HistogramProto'sumSquares = Data.ProtoLens.fieldDefault,
-                           _HistogramProto'bucketLimit = [], _HistogramProto'bucket = []}
-
-instance Data.ProtoLens.Message HistogramProto where
-        descriptor
-          = let min__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "min"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional min)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-                max__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "max"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional max)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-                num__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "num"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional num)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-                sum__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "sum"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sum)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-                sumSquares__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "sum_squares"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sumSquares)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-                bucketLimit__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "bucket_limit"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed bucketLimit)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-                bucket__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "bucket"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed bucket)
-                      :: Data.ProtoLens.FieldDescriptor HistogramProto
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, min__field_descriptor),
-                    (Data.ProtoLens.Tag 2, max__field_descriptor),
-                    (Data.ProtoLens.Tag 3, num__field_descriptor),
-                    (Data.ProtoLens.Tag 4, sum__field_descriptor),
-                    (Data.ProtoLens.Tag 5, sumSquares__field_descriptor),
-                    (Data.ProtoLens.Tag 6, bucketLimit__field_descriptor),
-                    (Data.ProtoLens.Tag 7, bucket__field_descriptor)])
-                (Data.Map.fromList
-                   [("min", min__field_descriptor), ("max", max__field_descriptor),
-                    ("num", num__field_descriptor), ("sum", sum__field_descriptor),
-                    ("sum_squares", sumSquares__field_descriptor),
-                    ("bucket_limit", bucketLimit__field_descriptor),
-                    ("bucket", bucket__field_descriptor)])
-
-data Summary = Summary{_Summary'value :: ![Summary'Value]}
-             deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [Summary'Value], b ~ [Summary'Value],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "value" f Summary Summary a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'value
-              (\ x__ y__ -> x__{_Summary'value = y__})
-
-instance Data.Default.Class.Default Summary where
-        def = Summary{_Summary'value = []}
-
-instance Data.ProtoLens.Message Summary where
-        descriptor
-          = let value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor Summary'Value)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)
-                      :: Data.ProtoLens.FieldDescriptor Summary
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, value__field_descriptor)])
-                (Data.Map.fromList [("value", value__field_descriptor)])
-
-data Summary'Audio = Summary'Audio{_Summary'Audio'sampleRate ::
-                                   !Prelude.Float,
-                                   _Summary'Audio'numChannels :: !Data.Int.Int64,
-                                   _Summary'Audio'lengthFrames :: !Data.Int.Int64,
-                                   _Summary'Audio'encodedAudioString :: !Data.ByteString.ByteString,
-                                   _Summary'Audio'contentType :: !Data.Text.Text}
-                   deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Float, b ~ Prelude.Float,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "sampleRate" f Summary'Audio Summary'Audio a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Audio'sampleRate
-              (\ x__ y__ -> x__{_Summary'Audio'sampleRate = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "numChannels" f Summary'Audio Summary'Audio a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Audio'numChannels
-              (\ x__ y__ -> x__{_Summary'Audio'numChannels = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "lengthFrames" f Summary'Audio Summary'Audio a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Audio'lengthFrames
-              (\ x__ y__ -> x__{_Summary'Audio'lengthFrames = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "encodedAudioString" f Summary'Audio
-           Summary'Audio
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Audio'encodedAudioString
-              (\ x__ y__ -> x__{_Summary'Audio'encodedAudioString = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "contentType" f Summary'Audio Summary'Audio a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Audio'contentType
-              (\ x__ y__ -> x__{_Summary'Audio'contentType = y__})
-
-instance Data.Default.Class.Default Summary'Audio where
-        def
-          = Summary'Audio{_Summary'Audio'sampleRate =
-                            Data.ProtoLens.fieldDefault,
-                          _Summary'Audio'numChannels = Data.ProtoLens.fieldDefault,
-                          _Summary'Audio'lengthFrames = Data.ProtoLens.fieldDefault,
-                          _Summary'Audio'encodedAudioString = Data.ProtoLens.fieldDefault,
-                          _Summary'Audio'contentType = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message Summary'Audio where
-        descriptor
-          = let sampleRate__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "sample_rate"
-                      (Data.ProtoLens.FloatField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sampleRate)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
-                numChannels__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "num_channels"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numChannels)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
-                lengthFrames__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "length_frames"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional lengthFrames)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
-                encodedAudioString__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "encoded_audio_string"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         encodedAudioString)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
-                contentType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "content_type"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional contentType)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Audio
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, sampleRate__field_descriptor),
-                    (Data.ProtoLens.Tag 2, numChannels__field_descriptor),
-                    (Data.ProtoLens.Tag 3, lengthFrames__field_descriptor),
-                    (Data.ProtoLens.Tag 4, encodedAudioString__field_descriptor),
-                    (Data.ProtoLens.Tag 5, contentType__field_descriptor)])
-                (Data.Map.fromList
-                   [("sample_rate", sampleRate__field_descriptor),
-                    ("num_channels", numChannels__field_descriptor),
-                    ("length_frames", lengthFrames__field_descriptor),
-                    ("encoded_audio_string", encodedAudioString__field_descriptor),
-                    ("content_type", contentType__field_descriptor)])
-
-data Summary'Image = Summary'Image{_Summary'Image'height ::
-                                   !Data.Int.Int32,
-                                   _Summary'Image'width :: !Data.Int.Int32,
-                                   _Summary'Image'colorspace :: !Data.Int.Int32,
-                                   _Summary'Image'encodedImageString :: !Data.ByteString.ByteString}
-                   deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "height" f Summary'Image Summary'Image a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Image'height
-              (\ x__ y__ -> x__{_Summary'Image'height = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "width" f Summary'Image Summary'Image a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Image'width
-              (\ x__ y__ -> x__{_Summary'Image'width = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "colorspace" f Summary'Image Summary'Image a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Image'colorspace
-              (\ x__ y__ -> x__{_Summary'Image'colorspace = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "encodedImageString" f Summary'Image
-           Summary'Image
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Image'encodedImageString
-              (\ x__ y__ -> x__{_Summary'Image'encodedImageString = y__})
-
-instance Data.Default.Class.Default Summary'Image where
-        def
-          = Summary'Image{_Summary'Image'height =
-                            Data.ProtoLens.fieldDefault,
-                          _Summary'Image'width = Data.ProtoLens.fieldDefault,
-                          _Summary'Image'colorspace = Data.ProtoLens.fieldDefault,
-                          _Summary'Image'encodedImageString = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message Summary'Image where
-        descriptor
-          = let height__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "height"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional height)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Image
-                width__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "width"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional width)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Image
-                colorspace__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "colorspace"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional colorspace)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Image
-                encodedImageString__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "encoded_image_string"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         encodedImageString)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Image
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, height__field_descriptor),
-                    (Data.ProtoLens.Tag 2, width__field_descriptor),
-                    (Data.ProtoLens.Tag 3, colorspace__field_descriptor),
-                    (Data.ProtoLens.Tag 4, encodedImageString__field_descriptor)])
-                (Data.Map.fromList
-                   [("height", height__field_descriptor),
-                    ("width", width__field_descriptor),
-                    ("colorspace", colorspace__field_descriptor),
-                    ("encoded_image_string", encodedImageString__field_descriptor)])
-
-data Summary'Value = Summary'Value{_Summary'Value'nodeName ::
-                                   !Data.Text.Text,
-                                   _Summary'Value'tag :: !Data.Text.Text,
-                                   _Summary'Value'simpleValue :: !(Prelude.Maybe Prelude.Float),
-                                   _Summary'Value'obsoleteOldStyleHistogram ::
-                                   !(Prelude.Maybe Data.ByteString.ByteString),
-                                   _Summary'Value'image :: !(Prelude.Maybe Summary'Image),
-                                   _Summary'Value'histo :: !(Prelude.Maybe HistogramProto),
-                                   _Summary'Value'audio :: !(Prelude.Maybe Summary'Audio),
-                                   _Summary'Value'tensor ::
-                                   !(Prelude.Maybe
-                                       Proto.Tensorflow.Core.Framework.Tensor.TensorProto)}
-                   deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "nodeName" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'nodeName
-              (\ x__ y__ -> x__{_Summary'Value'nodeName = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tag" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'tag
-              (\ x__ y__ -> x__{_Summary'Value'tag = y__})
-
-instance (a ~ Prelude.Float, b ~ Prelude.Float,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "simpleValue" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = (Prelude..) maybe'simpleValue
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Prelude.Float,
-          b ~ Prelude.Maybe Prelude.Float, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'simpleValue" f Summary'Value
-           Summary'Value
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'simpleValue
-              (\ x__ y__ -> x__{_Summary'Value'simpleValue = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "obsoleteOldStyleHistogram" f Summary'Value
-           Summary'Value
-           a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'obsoleteOldStyleHistogram
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
-          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'obsoleteOldStyleHistogram" f
-           Summary'Value
-           Summary'Value
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _Summary'Value'obsoleteOldStyleHistogram
-              (\ x__ y__ -> x__{_Summary'Value'obsoleteOldStyleHistogram = y__})
-
-instance (a ~ Summary'Image, b ~ Summary'Image,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "image" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = (Prelude..) maybe'image
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe Summary'Image,
-          b ~ Prelude.Maybe Summary'Image, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'image" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'image
-              (\ x__ y__ -> x__{_Summary'Value'image = y__})
-
-instance (a ~ HistogramProto, b ~ HistogramProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "histo" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = (Prelude..) maybe'histo
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe HistogramProto,
-          b ~ Prelude.Maybe HistogramProto, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'histo" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'histo
-              (\ x__ y__ -> x__{_Summary'Value'histo = y__})
-
-instance (a ~ Summary'Audio, b ~ Summary'Audio,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "audio" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = (Prelude..) maybe'audio
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe Summary'Audio,
-          b ~ Prelude.Maybe Summary'Audio, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'audio" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'audio
-              (\ x__ y__ -> x__{_Summary'Value'audio = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          b ~ Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tensor" f Summary'Value Summary'Value a b
-         where
-        lensOf _
-          = (Prelude..) maybe'tensor
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Tensor.TensorProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'tensor" f Summary'Value Summary'Value a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Summary'Value'tensor
-              (\ x__ y__ -> x__{_Summary'Value'tensor = y__})
-
-instance Data.Default.Class.Default Summary'Value where
-        def
-          = Summary'Value{_Summary'Value'nodeName =
-                            Data.ProtoLens.fieldDefault,
-                          _Summary'Value'tag = Data.ProtoLens.fieldDefault,
-                          _Summary'Value'simpleValue = Prelude.Nothing,
-                          _Summary'Value'obsoleteOldStyleHistogram = Prelude.Nothing,
-                          _Summary'Value'image = Prelude.Nothing,
-                          _Summary'Value'histo = Prelude.Nothing,
-                          _Summary'Value'audio = Prelude.Nothing,
-                          _Summary'Value'tensor = Prelude.Nothing}
-
-instance Data.ProtoLens.Message Summary'Value where
-        descriptor
-          = let nodeName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional nodeName)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                tag__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tag"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tag)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                simpleValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "simple_value"
-                      (Data.ProtoLens.FloatField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
-                      (Data.ProtoLens.OptionalField maybe'simpleValue)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                obsoleteOldStyleHistogram__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "obsolete_old_style_histogram"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.OptionalField maybe'obsoleteOldStyleHistogram)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                image__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "image"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor Summary'Image)
-                      (Data.ProtoLens.OptionalField maybe'image)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                histo__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "histo"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor HistogramProto)
-                      (Data.ProtoLens.OptionalField maybe'histo)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                audio__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "audio"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor Summary'Audio)
-                      (Data.ProtoLens.OptionalField maybe'audio)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-                tensor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tensor"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Tensor.TensorProto)
-                      (Data.ProtoLens.OptionalField maybe'tensor)
-                      :: Data.ProtoLens.FieldDescriptor Summary'Value
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 7, nodeName__field_descriptor),
-                    (Data.ProtoLens.Tag 1, tag__field_descriptor),
-                    (Data.ProtoLens.Tag 2, simpleValue__field_descriptor),
-                    (Data.ProtoLens.Tag 3,
-                     obsoleteOldStyleHistogram__field_descriptor),
-                    (Data.ProtoLens.Tag 4, image__field_descriptor),
-                    (Data.ProtoLens.Tag 5, histo__field_descriptor),
-                    (Data.ProtoLens.Tag 6, audio__field_descriptor),
-                    (Data.ProtoLens.Tag 8, tensor__field_descriptor)])
-                (Data.Map.fromList
-                   [("node_name", nodeName__field_descriptor),
-                    ("tag", tag__field_descriptor),
-                    ("simple_value", simpleValue__field_descriptor),
-                    ("obsolete_old_style_histogram",
-                     obsoleteOldStyleHistogram__field_descriptor),
-                    ("image", image__field_descriptor),
-                    ("histo", histo__field_descriptor),
-                    ("audio", audio__field_descriptor),
-                    ("tensor", tensor__field_descriptor)])
-
-data SummaryDescription = SummaryDescription{_SummaryDescription'typeHint
-                                             :: !Data.Text.Text}
-                        deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "typeHint" f SummaryDescription
-           SummaryDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _SummaryDescription'typeHint
-              (\ x__ y__ -> x__{_SummaryDescription'typeHint = y__})
-
-instance Data.Default.Class.Default SummaryDescription where
-        def
-          = SummaryDescription{_SummaryDescription'typeHint =
-                                 Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message SummaryDescription where
-        descriptor
-          = let typeHint__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type_hint"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional typeHint)
-                      :: Data.ProtoLens.FieldDescriptor SummaryDescription
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, typeHint__field_descriptor)])
-                (Data.Map.fromList [("type_hint", typeHint__field_descriptor)])
-
-audio ::
-      forall f s t a b . (Lens.Labels.HasLens "audio" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-audio
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "audio")
-
-bucket ::
-       forall f s t a b . (Lens.Labels.HasLens "bucket" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-bucket
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bucket")
-
-bucketLimit ::
-            forall f s t a b . (Lens.Labels.HasLens "bucketLimit" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-bucketLimit
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "bucketLimit")
-
-colorspace ::
-           forall f s t a b . (Lens.Labels.HasLens "colorspace" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-colorspace
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "colorspace")
-
-contentType ::
-            forall f s t a b . (Lens.Labels.HasLens "contentType" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-contentType
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "contentType")
-
-encodedAudioString ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "encodedAudioString" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-encodedAudioString
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "encodedAudioString")
-
-encodedImageString ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "encodedImageString" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-encodedImageString
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "encodedImageString")
-
-height ::
-       forall f s t a b . (Lens.Labels.HasLens "height" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-height
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "height")
-
-histo ::
-      forall f s t a b . (Lens.Labels.HasLens "histo" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-histo
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "histo")
-
-image ::
-      forall f s t a b . (Lens.Labels.HasLens "image" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-image
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "image")
-
-lengthFrames ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "lengthFrames" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-lengthFrames
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "lengthFrames")
-
-max ::
-    forall f s t a b . (Lens.Labels.HasLens "max" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-max
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "max")
-
-maybe'audio ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'audio" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'audio
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'audio")
-
-maybe'histo ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'histo" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'histo
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'histo")
-
-maybe'image ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'image" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'image
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'image")
-
-maybe'obsoleteOldStyleHistogram ::
-                                forall f s t a b .
-                                  (Lens.Labels.HasLens "maybe'obsoleteOldStyleHistogram" f s t a
-                                     b) =>
-                                  Lens.Family2.LensLike f s t a b
-maybe'obsoleteOldStyleHistogram
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'obsoleteOldStyleHistogram")
-
-maybe'simpleValue ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "maybe'simpleValue" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-maybe'simpleValue
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'simpleValue")
-
-maybe'tensor ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "maybe'tensor" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-maybe'tensor
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensor")
-
-min ::
-    forall f s t a b . (Lens.Labels.HasLens "min" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-min
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "min")
-
-nodeName ::
-         forall f s t a b . (Lens.Labels.HasLens "nodeName" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-nodeName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeName")
-
-num ::
-    forall f s t a b . (Lens.Labels.HasLens "num" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-num
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "num")
-
-numChannels ::
-            forall f s t a b . (Lens.Labels.HasLens "numChannels" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-numChannels
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numChannels")
-
-obsoleteOldStyleHistogram ::
-                          forall f s t a b .
-                            (Lens.Labels.HasLens "obsoleteOldStyleHistogram" f s t a b) =>
-                            Lens.Family2.LensLike f s t a b
-obsoleteOldStyleHistogram
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "obsoleteOldStyleHistogram")
-
-sampleRate ::
-           forall f s t a b . (Lens.Labels.HasLens "sampleRate" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-sampleRate
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sampleRate")
-
-simpleValue ::
-            forall f s t a b . (Lens.Labels.HasLens "simpleValue" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-simpleValue
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "simpleValue")
-
-sum ::
-    forall f s t a b . (Lens.Labels.HasLens "sum" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-sum
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sum")
-
-sumSquares ::
-           forall f s t a b . (Lens.Labels.HasLens "sumSquares" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-sumSquares
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sumSquares")
-
-tag ::
-    forall f s t a b . (Lens.Labels.HasLens "tag" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-tag
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tag")
-
-tensor ::
-       forall f s t a b . (Lens.Labels.HasLens "tensor" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-tensor
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensor")
-
-typeHint ::
-         forall f s t a b . (Lens.Labels.HasLens "typeHint" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-typeHint
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeHint")
-
-value ::
-      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
-
-width ::
-      forall f s t a b . (Lens.Labels.HasLens "width" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-width
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "width")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Tensor.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/Tensor.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Tensor.hs
+++ /dev/null
@@ -1,425 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/tensor.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.Tensor where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.ResourceHandle
-import qualified Proto.Tensorflow.Core.Framework.TensorShape
-import qualified Proto.Tensorflow.Core.Framework.Types
-
-data TensorProto = TensorProto{_TensorProto'dtype ::
-                               !Proto.Tensorflow.Core.Framework.Types.DataType,
-                               _TensorProto'tensorShape ::
-                               !(Prelude.Maybe
-                                   Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
-                               _TensorProto'versionNumber :: !Data.Int.Int32,
-                               _TensorProto'tensorContent :: !Data.ByteString.ByteString,
-                               _TensorProto'halfVal :: ![Data.Int.Int32],
-                               _TensorProto'floatVal :: ![Prelude.Float],
-                               _TensorProto'doubleVal :: ![Prelude.Double],
-                               _TensorProto'intVal :: ![Data.Int.Int32],
-                               _TensorProto'stringVal :: ![Data.ByteString.ByteString],
-                               _TensorProto'scomplexVal :: ![Prelude.Float],
-                               _TensorProto'int64Val :: ![Data.Int.Int64],
-                               _TensorProto'boolVal :: ![Prelude.Bool],
-                               _TensorProto'dcomplexVal :: ![Prelude.Double],
-                               _TensorProto'resourceHandleVal ::
-                               ![Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandle]}
-                 deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "dtype" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'dtype
-              (\ x__ y__ -> x__{_TensorProto'dtype = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tensorShape" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = (Prelude..) maybe'tensorShape
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'tensorShape" f TensorProto TensorProto a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'tensorShape
-              (\ x__ y__ -> x__{_TensorProto'tensorShape = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "versionNumber" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'versionNumber
-              (\ x__ y__ -> x__{_TensorProto'versionNumber = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "tensorContent" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'tensorContent
-              (\ x__ y__ -> x__{_TensorProto'tensorContent = y__})
-
-instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "halfVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'halfVal
-              (\ x__ y__ -> x__{_TensorProto'halfVal = y__})
-
-instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "floatVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'floatVal
-              (\ x__ y__ -> x__{_TensorProto'floatVal = y__})
-
-instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "doubleVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'doubleVal
-              (\ x__ y__ -> x__{_TensorProto'doubleVal = y__})
-
-instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "intVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'intVal
-              (\ x__ y__ -> x__{_TensorProto'intVal = y__})
-
-instance (a ~ [Data.ByteString.ByteString],
-          b ~ [Data.ByteString.ByteString], Prelude.Functor f) =>
-         Lens.Labels.HasLens "stringVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'stringVal
-              (\ x__ y__ -> x__{_TensorProto'stringVal = y__})
-
-instance (a ~ [Prelude.Float], b ~ [Prelude.Float],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "scomplexVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'scomplexVal
-              (\ x__ y__ -> x__{_TensorProto'scomplexVal = y__})
-
-instance (a ~ [Data.Int.Int64], b ~ [Data.Int.Int64],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "int64Val" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'int64Val
-              (\ x__ y__ -> x__{_TensorProto'int64Val = y__})
-
-instance (a ~ [Prelude.Bool], b ~ [Prelude.Bool],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "boolVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'boolVal
-              (\ x__ y__ -> x__{_TensorProto'boolVal = y__})
-
-instance (a ~ [Prelude.Double], b ~ [Prelude.Double],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "dcomplexVal" f TensorProto TensorProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'dcomplexVal
-              (\ x__ y__ -> x__{_TensorProto'dcomplexVal = y__})
-
-instance (a ~
-            [Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandle],
-          b ~
-            [Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandle],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "resourceHandleVal" f TensorProto TensorProto a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorProto'resourceHandleVal
-              (\ x__ y__ -> x__{_TensorProto'resourceHandleVal = y__})
-
-instance Data.Default.Class.Default TensorProto where
-        def
-          = TensorProto{_TensorProto'dtype = Data.Default.Class.def,
-                        _TensorProto'tensorShape = Prelude.Nothing,
-                        _TensorProto'versionNumber = Data.ProtoLens.fieldDefault,
-                        _TensorProto'tensorContent = Data.ProtoLens.fieldDefault,
-                        _TensorProto'halfVal = [], _TensorProto'floatVal = [],
-                        _TensorProto'doubleVal = [], _TensorProto'intVal = [],
-                        _TensorProto'stringVal = [], _TensorProto'scomplexVal = [],
-                        _TensorProto'int64Val = [], _TensorProto'boolVal = [],
-                        _TensorProto'dcomplexVal = [], _TensorProto'resourceHandleVal = []}
-
-instance Data.ProtoLens.Message TensorProto where
-        descriptor
-          = let dtype__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dtype"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Types.DataType)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                tensorShape__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tensor_shape"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
-                      (Data.ProtoLens.OptionalField maybe'tensorShape)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                versionNumber__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "version_number"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional versionNumber)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                tensorContent__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tensor_content"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tensorContent)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                halfVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "half_val"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed halfVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                floatVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "float_val"
-                      (Data.ProtoLens.FloatField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed floatVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                doubleVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "double_val"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed doubleVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                intVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "int_val"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed intVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                stringVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "string_val"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked stringVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                scomplexVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "scomplex_val"
-                      (Data.ProtoLens.FloatField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed scomplexVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                int64Val__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "int64_val"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed int64Val)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                boolVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "bool_val"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed boolVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                dcomplexVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dcomplex_val"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed dcomplexVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-                resourceHandleVal__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "resource_handle_val"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.ResourceHandle.ResourceHandle)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         resourceHandleVal)
-                      :: Data.ProtoLens.FieldDescriptor TensorProto
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
-                    (Data.ProtoLens.Tag 2, tensorShape__field_descriptor),
-                    (Data.ProtoLens.Tag 3, versionNumber__field_descriptor),
-                    (Data.ProtoLens.Tag 4, tensorContent__field_descriptor),
-                    (Data.ProtoLens.Tag 13, halfVal__field_descriptor),
-                    (Data.ProtoLens.Tag 5, floatVal__field_descriptor),
-                    (Data.ProtoLens.Tag 6, doubleVal__field_descriptor),
-                    (Data.ProtoLens.Tag 7, intVal__field_descriptor),
-                    (Data.ProtoLens.Tag 8, stringVal__field_descriptor),
-                    (Data.ProtoLens.Tag 9, scomplexVal__field_descriptor),
-                    (Data.ProtoLens.Tag 10, int64Val__field_descriptor),
-                    (Data.ProtoLens.Tag 11, boolVal__field_descriptor),
-                    (Data.ProtoLens.Tag 12, dcomplexVal__field_descriptor),
-                    (Data.ProtoLens.Tag 14, resourceHandleVal__field_descriptor)])
-                (Data.Map.fromList
-                   [("dtype", dtype__field_descriptor),
-                    ("tensor_shape", tensorShape__field_descriptor),
-                    ("version_number", versionNumber__field_descriptor),
-                    ("tensor_content", tensorContent__field_descriptor),
-                    ("half_val", halfVal__field_descriptor),
-                    ("float_val", floatVal__field_descriptor),
-                    ("double_val", doubleVal__field_descriptor),
-                    ("int_val", intVal__field_descriptor),
-                    ("string_val", stringVal__field_descriptor),
-                    ("scomplex_val", scomplexVal__field_descriptor),
-                    ("int64_val", int64Val__field_descriptor),
-                    ("bool_val", boolVal__field_descriptor),
-                    ("dcomplex_val", dcomplexVal__field_descriptor),
-                    ("resource_handle_val", resourceHandleVal__field_descriptor)])
-
-boolVal ::
-        forall f s t a b . (Lens.Labels.HasLens "boolVal" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-boolVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "boolVal")
-
-dcomplexVal ::
-            forall f s t a b . (Lens.Labels.HasLens "dcomplexVal" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-dcomplexVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dcomplexVal")
-
-doubleVal ::
-          forall f s t a b . (Lens.Labels.HasLens "doubleVal" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-doubleVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doubleVal")
-
-dtype ::
-      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-dtype
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
-
-floatVal ::
-         forall f s t a b . (Lens.Labels.HasLens "floatVal" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-floatVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "floatVal")
-
-halfVal ::
-        forall f s t a b . (Lens.Labels.HasLens "halfVal" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-halfVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "halfVal")
-
-int64Val ::
-         forall f s t a b . (Lens.Labels.HasLens "int64Val" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-int64Val
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "int64Val")
-
-intVal ::
-       forall f s t a b . (Lens.Labels.HasLens "intVal" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-intVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "intVal")
-
-maybe'tensorShape ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "maybe'tensorShape" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-maybe'tensorShape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'tensorShape")
-
-resourceHandleVal ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "resourceHandleVal" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-resourceHandleVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "resourceHandleVal")
-
-scomplexVal ::
-            forall f s t a b . (Lens.Labels.HasLens "scomplexVal" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-scomplexVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "scomplexVal")
-
-stringVal ::
-          forall f s t a b . (Lens.Labels.HasLens "stringVal" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-stringVal
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stringVal")
-
-tensorContent ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "tensorContent" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-tensorContent
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorContent")
-
-tensorShape ::
-            forall f s t a b . (Lens.Labels.HasLens "tensorShape" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-tensorShape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tensorShape")
-
-versionNumber ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "versionNumber" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-versionNumber
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "versionNumber")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/TensorDescription.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/TensorDescription.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/TensorDescription.hs
+++ /dev/null
@@ -1,189 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/tensor_description.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.TensorDescription where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified
-       Proto.Tensorflow.Core.Framework.AllocationDescription
-import qualified Proto.Tensorflow.Core.Framework.TensorShape
-import qualified Proto.Tensorflow.Core.Framework.Types
-
-data TensorDescription = TensorDescription{_TensorDescription'dtype
-                                           :: !Proto.Tensorflow.Core.Framework.Types.DataType,
-                                           _TensorDescription'shape ::
-                                           !(Prelude.Maybe
-                                               Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto),
-                                           _TensorDescription'allocationDescription ::
-                                           !(Prelude.Maybe
-                                               Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription)}
-                       deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          b ~ Proto.Tensorflow.Core.Framework.Types.DataType,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "dtype" f TensorDescription TensorDescription a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorDescription'dtype
-              (\ x__ y__ -> x__{_TensorDescription'dtype = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~ Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "shape" f TensorDescription TensorDescription a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'shape
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'shape" f TensorDescription
-           TensorDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorDescription'shape
-              (\ x__ y__ -> x__{_TensorDescription'shape = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
-          b ~
-            Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allocationDescription" f TensorDescription
-           TensorDescription
-           a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'allocationDescription
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'allocationDescription" f
-           TensorDescription
-           TensorDescription
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _TensorDescription'allocationDescription
-              (\ x__ y__ -> x__{_TensorDescription'allocationDescription = y__})
-
-instance Data.Default.Class.Default TensorDescription where
-        def
-          = TensorDescription{_TensorDescription'dtype =
-                                Data.Default.Class.def,
-                              _TensorDescription'shape = Prelude.Nothing,
-                              _TensorDescription'allocationDescription = Prelude.Nothing}
-
-instance Data.ProtoLens.Message TensorDescription where
-        descriptor
-          = let dtype__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dtype"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Types.DataType)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional dtype)
-                      :: Data.ProtoLens.FieldDescriptor TensorDescription
-                shape__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "shape"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.TensorShape.TensorShapeProto)
-                      (Data.ProtoLens.OptionalField maybe'shape)
-                      :: Data.ProtoLens.FieldDescriptor TensorDescription
-                allocationDescription__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allocation_description"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.AllocationDescription.AllocationDescription)
-                      (Data.ProtoLens.OptionalField maybe'allocationDescription)
-                      :: Data.ProtoLens.FieldDescriptor TensorDescription
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, dtype__field_descriptor),
-                    (Data.ProtoLens.Tag 2, shape__field_descriptor),
-                    (Data.ProtoLens.Tag 4, allocationDescription__field_descriptor)])
-                (Data.Map.fromList
-                   [("dtype", dtype__field_descriptor),
-                    ("shape", shape__field_descriptor),
-                    ("allocation_description",
-                     allocationDescription__field_descriptor)])
-
-allocationDescription ::
-                      forall f s t a b .
-                        (Lens.Labels.HasLens "allocationDescription" f s t a b) =>
-                        Lens.Family2.LensLike f s t a b
-allocationDescription
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "allocationDescription")
-
-dtype ::
-      forall f s t a b . (Lens.Labels.HasLens "dtype" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-dtype
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dtype")
-
-maybe'allocationDescription ::
-                            forall f s t a b .
-                              (Lens.Labels.HasLens "maybe'allocationDescription" f s t a b) =>
-                              Lens.Family2.LensLike f s t a b
-maybe'allocationDescription
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'allocationDescription")
-
-maybe'shape ::
-            forall f s t a b . (Lens.Labels.HasLens "maybe'shape" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-maybe'shape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'shape")
-
-shape ::
-      forall f s t a b . (Lens.Labels.HasLens "shape" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-shape
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "shape")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/TensorShape.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/TensorShape.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/TensorShape.hs
+++ /dev/null
@@ -1,160 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/tensor_shape.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.TensorShape where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-
-data TensorShapeProto = TensorShapeProto{_TensorShapeProto'dim ::
-                                         ![TensorShapeProto'Dim],
-                                         _TensorShapeProto'unknownRank :: !Prelude.Bool}
-                      deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [TensorShapeProto'Dim], b ~ [TensorShapeProto'Dim],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "dim" f TensorShapeProto TensorShapeProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorShapeProto'dim
-              (\ x__ y__ -> x__{_TensorShapeProto'dim = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "unknownRank" f TensorShapeProto
-           TensorShapeProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorShapeProto'unknownRank
-              (\ x__ y__ -> x__{_TensorShapeProto'unknownRank = y__})
-
-instance Data.Default.Class.Default TensorShapeProto where
-        def
-          = TensorShapeProto{_TensorShapeProto'dim = [],
-                             _TensorShapeProto'unknownRank = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message TensorShapeProto where
-        descriptor
-          = let dim__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dim"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor TensorShapeProto'Dim)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked dim)
-                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto
-                unknownRank__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "unknown_rank"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional unknownRank)
-                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 2, dim__field_descriptor),
-                    (Data.ProtoLens.Tag 3, unknownRank__field_descriptor)])
-                (Data.Map.fromList
-                   [("dim", dim__field_descriptor),
-                    ("unknown_rank", unknownRank__field_descriptor)])
-
-data TensorShapeProto'Dim = TensorShapeProto'Dim{_TensorShapeProto'Dim'size
-                                                 :: !Data.Int.Int64,
-                                                 _TensorShapeProto'Dim'name :: !Data.Text.Text}
-                          deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "size" f TensorShapeProto'Dim
-           TensorShapeProto'Dim
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorShapeProto'Dim'size
-              (\ x__ y__ -> x__{_TensorShapeProto'Dim'size = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "name" f TensorShapeProto'Dim
-           TensorShapeProto'Dim
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TensorShapeProto'Dim'name
-              (\ x__ y__ -> x__{_TensorShapeProto'Dim'name = y__})
-
-instance Data.Default.Class.Default TensorShapeProto'Dim where
-        def
-          = TensorShapeProto'Dim{_TensorShapeProto'Dim'size =
-                                   Data.ProtoLens.fieldDefault,
-                                 _TensorShapeProto'Dim'name = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message TensorShapeProto'Dim where
-        descriptor
-          = let size__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "size"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional size)
-                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto'Dim
-                name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional name)
-                      :: Data.ProtoLens.FieldDescriptor TensorShapeProto'Dim
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, size__field_descriptor),
-                    (Data.ProtoLens.Tag 2, name__field_descriptor)])
-                (Data.Map.fromList
-                   [("size", size__field_descriptor),
-                    ("name", name__field_descriptor)])
-
-dim ::
-    forall f s t a b . (Lens.Labels.HasLens "dim" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-dim
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dim")
-
-name ::
-     forall f s t a b . (Lens.Labels.HasLens "name" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-name
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-
-size ::
-     forall f s t a b . (Lens.Labels.HasLens "size" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-size
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "size")
-
-unknownRank ::
-            forall f s t a b . (Lens.Labels.HasLens "unknownRank" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-unknownRank
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "unknownRank")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Types.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/Types.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Types.hs
+++ /dev/null
@@ -1,345 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/types.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.Types where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-
-data DataType = DT_INVALID
-              | DT_FLOAT
-              | DT_DOUBLE
-              | DT_INT32
-              | DT_UINT8
-              | DT_INT16
-              | DT_INT8
-              | DT_STRING
-              | DT_COMPLEX64
-              | DT_INT64
-              | DT_BOOL
-              | DT_QINT8
-              | DT_QUINT8
-              | DT_QINT32
-              | DT_BFLOAT16
-              | DT_QINT16
-              | DT_QUINT16
-              | DT_UINT16
-              | DT_COMPLEX128
-              | DT_HALF
-              | DT_RESOURCE
-              | DT_FLOAT_REF
-              | DT_DOUBLE_REF
-              | DT_INT32_REF
-              | DT_UINT8_REF
-              | DT_INT16_REF
-              | DT_INT8_REF
-              | DT_STRING_REF
-              | DT_COMPLEX64_REF
-              | DT_INT64_REF
-              | DT_BOOL_REF
-              | DT_QINT8_REF
-              | DT_QUINT8_REF
-              | DT_QINT32_REF
-              | DT_BFLOAT16_REF
-              | DT_QINT16_REF
-              | DT_QUINT16_REF
-              | DT_UINT16_REF
-              | DT_COMPLEX128_REF
-              | DT_HALF_REF
-              | DT_RESOURCE_REF
-              deriving (Prelude.Show, Prelude.Eq)
-
-instance Data.Default.Class.Default DataType where
-        def = DT_INVALID
-
-instance Data.ProtoLens.FieldDefault DataType where
-        fieldDefault = DT_INVALID
-
-instance Data.ProtoLens.MessageEnum DataType where
-        maybeToEnum 0 = Prelude.Just DT_INVALID
-        maybeToEnum 1 = Prelude.Just DT_FLOAT
-        maybeToEnum 2 = Prelude.Just DT_DOUBLE
-        maybeToEnum 3 = Prelude.Just DT_INT32
-        maybeToEnum 4 = Prelude.Just DT_UINT8
-        maybeToEnum 5 = Prelude.Just DT_INT16
-        maybeToEnum 6 = Prelude.Just DT_INT8
-        maybeToEnum 7 = Prelude.Just DT_STRING
-        maybeToEnum 8 = Prelude.Just DT_COMPLEX64
-        maybeToEnum 9 = Prelude.Just DT_INT64
-        maybeToEnum 10 = Prelude.Just DT_BOOL
-        maybeToEnum 11 = Prelude.Just DT_QINT8
-        maybeToEnum 12 = Prelude.Just DT_QUINT8
-        maybeToEnum 13 = Prelude.Just DT_QINT32
-        maybeToEnum 14 = Prelude.Just DT_BFLOAT16
-        maybeToEnum 15 = Prelude.Just DT_QINT16
-        maybeToEnum 16 = Prelude.Just DT_QUINT16
-        maybeToEnum 17 = Prelude.Just DT_UINT16
-        maybeToEnum 18 = Prelude.Just DT_COMPLEX128
-        maybeToEnum 19 = Prelude.Just DT_HALF
-        maybeToEnum 20 = Prelude.Just DT_RESOURCE
-        maybeToEnum 101 = Prelude.Just DT_FLOAT_REF
-        maybeToEnum 102 = Prelude.Just DT_DOUBLE_REF
-        maybeToEnum 103 = Prelude.Just DT_INT32_REF
-        maybeToEnum 104 = Prelude.Just DT_UINT8_REF
-        maybeToEnum 105 = Prelude.Just DT_INT16_REF
-        maybeToEnum 106 = Prelude.Just DT_INT8_REF
-        maybeToEnum 107 = Prelude.Just DT_STRING_REF
-        maybeToEnum 108 = Prelude.Just DT_COMPLEX64_REF
-        maybeToEnum 109 = Prelude.Just DT_INT64_REF
-        maybeToEnum 110 = Prelude.Just DT_BOOL_REF
-        maybeToEnum 111 = Prelude.Just DT_QINT8_REF
-        maybeToEnum 112 = Prelude.Just DT_QUINT8_REF
-        maybeToEnum 113 = Prelude.Just DT_QINT32_REF
-        maybeToEnum 114 = Prelude.Just DT_BFLOAT16_REF
-        maybeToEnum 115 = Prelude.Just DT_QINT16_REF
-        maybeToEnum 116 = Prelude.Just DT_QUINT16_REF
-        maybeToEnum 117 = Prelude.Just DT_UINT16_REF
-        maybeToEnum 118 = Prelude.Just DT_COMPLEX128_REF
-        maybeToEnum 119 = Prelude.Just DT_HALF_REF
-        maybeToEnum 120 = Prelude.Just DT_RESOURCE_REF
-        maybeToEnum _ = Prelude.Nothing
-        showEnum DT_INVALID = "DT_INVALID"
-        showEnum DT_FLOAT = "DT_FLOAT"
-        showEnum DT_DOUBLE = "DT_DOUBLE"
-        showEnum DT_INT32 = "DT_INT32"
-        showEnum DT_UINT8 = "DT_UINT8"
-        showEnum DT_INT16 = "DT_INT16"
-        showEnum DT_INT8 = "DT_INT8"
-        showEnum DT_STRING = "DT_STRING"
-        showEnum DT_COMPLEX64 = "DT_COMPLEX64"
-        showEnum DT_INT64 = "DT_INT64"
-        showEnum DT_BOOL = "DT_BOOL"
-        showEnum DT_QINT8 = "DT_QINT8"
-        showEnum DT_QUINT8 = "DT_QUINT8"
-        showEnum DT_QINT32 = "DT_QINT32"
-        showEnum DT_BFLOAT16 = "DT_BFLOAT16"
-        showEnum DT_QINT16 = "DT_QINT16"
-        showEnum DT_QUINT16 = "DT_QUINT16"
-        showEnum DT_UINT16 = "DT_UINT16"
-        showEnum DT_COMPLEX128 = "DT_COMPLEX128"
-        showEnum DT_HALF = "DT_HALF"
-        showEnum DT_RESOURCE = "DT_RESOURCE"
-        showEnum DT_FLOAT_REF = "DT_FLOAT_REF"
-        showEnum DT_DOUBLE_REF = "DT_DOUBLE_REF"
-        showEnum DT_INT32_REF = "DT_INT32_REF"
-        showEnum DT_UINT8_REF = "DT_UINT8_REF"
-        showEnum DT_INT16_REF = "DT_INT16_REF"
-        showEnum DT_INT8_REF = "DT_INT8_REF"
-        showEnum DT_STRING_REF = "DT_STRING_REF"
-        showEnum DT_COMPLEX64_REF = "DT_COMPLEX64_REF"
-        showEnum DT_INT64_REF = "DT_INT64_REF"
-        showEnum DT_BOOL_REF = "DT_BOOL_REF"
-        showEnum DT_QINT8_REF = "DT_QINT8_REF"
-        showEnum DT_QUINT8_REF = "DT_QUINT8_REF"
-        showEnum DT_QINT32_REF = "DT_QINT32_REF"
-        showEnum DT_BFLOAT16_REF = "DT_BFLOAT16_REF"
-        showEnum DT_QINT16_REF = "DT_QINT16_REF"
-        showEnum DT_QUINT16_REF = "DT_QUINT16_REF"
-        showEnum DT_UINT16_REF = "DT_UINT16_REF"
-        showEnum DT_COMPLEX128_REF = "DT_COMPLEX128_REF"
-        showEnum DT_HALF_REF = "DT_HALF_REF"
-        showEnum DT_RESOURCE_REF = "DT_RESOURCE_REF"
-        readEnum "DT_INVALID" = Prelude.Just DT_INVALID
-        readEnum "DT_FLOAT" = Prelude.Just DT_FLOAT
-        readEnum "DT_DOUBLE" = Prelude.Just DT_DOUBLE
-        readEnum "DT_INT32" = Prelude.Just DT_INT32
-        readEnum "DT_UINT8" = Prelude.Just DT_UINT8
-        readEnum "DT_INT16" = Prelude.Just DT_INT16
-        readEnum "DT_INT8" = Prelude.Just DT_INT8
-        readEnum "DT_STRING" = Prelude.Just DT_STRING
-        readEnum "DT_COMPLEX64" = Prelude.Just DT_COMPLEX64
-        readEnum "DT_INT64" = Prelude.Just DT_INT64
-        readEnum "DT_BOOL" = Prelude.Just DT_BOOL
-        readEnum "DT_QINT8" = Prelude.Just DT_QINT8
-        readEnum "DT_QUINT8" = Prelude.Just DT_QUINT8
-        readEnum "DT_QINT32" = Prelude.Just DT_QINT32
-        readEnum "DT_BFLOAT16" = Prelude.Just DT_BFLOAT16
-        readEnum "DT_QINT16" = Prelude.Just DT_QINT16
-        readEnum "DT_QUINT16" = Prelude.Just DT_QUINT16
-        readEnum "DT_UINT16" = Prelude.Just DT_UINT16
-        readEnum "DT_COMPLEX128" = Prelude.Just DT_COMPLEX128
-        readEnum "DT_HALF" = Prelude.Just DT_HALF
-        readEnum "DT_RESOURCE" = Prelude.Just DT_RESOURCE
-        readEnum "DT_FLOAT_REF" = Prelude.Just DT_FLOAT_REF
-        readEnum "DT_DOUBLE_REF" = Prelude.Just DT_DOUBLE_REF
-        readEnum "DT_INT32_REF" = Prelude.Just DT_INT32_REF
-        readEnum "DT_UINT8_REF" = Prelude.Just DT_UINT8_REF
-        readEnum "DT_INT16_REF" = Prelude.Just DT_INT16_REF
-        readEnum "DT_INT8_REF" = Prelude.Just DT_INT8_REF
-        readEnum "DT_STRING_REF" = Prelude.Just DT_STRING_REF
-        readEnum "DT_COMPLEX64_REF" = Prelude.Just DT_COMPLEX64_REF
-        readEnum "DT_INT64_REF" = Prelude.Just DT_INT64_REF
-        readEnum "DT_BOOL_REF" = Prelude.Just DT_BOOL_REF
-        readEnum "DT_QINT8_REF" = Prelude.Just DT_QINT8_REF
-        readEnum "DT_QUINT8_REF" = Prelude.Just DT_QUINT8_REF
-        readEnum "DT_QINT32_REF" = Prelude.Just DT_QINT32_REF
-        readEnum "DT_BFLOAT16_REF" = Prelude.Just DT_BFLOAT16_REF
-        readEnum "DT_QINT16_REF" = Prelude.Just DT_QINT16_REF
-        readEnum "DT_QUINT16_REF" = Prelude.Just DT_QUINT16_REF
-        readEnum "DT_UINT16_REF" = Prelude.Just DT_UINT16_REF
-        readEnum "DT_COMPLEX128_REF" = Prelude.Just DT_COMPLEX128_REF
-        readEnum "DT_HALF_REF" = Prelude.Just DT_HALF_REF
-        readEnum "DT_RESOURCE_REF" = Prelude.Just DT_RESOURCE_REF
-        readEnum _ = Prelude.Nothing
-
-instance Prelude.Enum DataType where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum DataType: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum DT_INVALID = 0
-        fromEnum DT_FLOAT = 1
-        fromEnum DT_DOUBLE = 2
-        fromEnum DT_INT32 = 3
-        fromEnum DT_UINT8 = 4
-        fromEnum DT_INT16 = 5
-        fromEnum DT_INT8 = 6
-        fromEnum DT_STRING = 7
-        fromEnum DT_COMPLEX64 = 8
-        fromEnum DT_INT64 = 9
-        fromEnum DT_BOOL = 10
-        fromEnum DT_QINT8 = 11
-        fromEnum DT_QUINT8 = 12
-        fromEnum DT_QINT32 = 13
-        fromEnum DT_BFLOAT16 = 14
-        fromEnum DT_QINT16 = 15
-        fromEnum DT_QUINT16 = 16
-        fromEnum DT_UINT16 = 17
-        fromEnum DT_COMPLEX128 = 18
-        fromEnum DT_HALF = 19
-        fromEnum DT_RESOURCE = 20
-        fromEnum DT_FLOAT_REF = 101
-        fromEnum DT_DOUBLE_REF = 102
-        fromEnum DT_INT32_REF = 103
-        fromEnum DT_UINT8_REF = 104
-        fromEnum DT_INT16_REF = 105
-        fromEnum DT_INT8_REF = 106
-        fromEnum DT_STRING_REF = 107
-        fromEnum DT_COMPLEX64_REF = 108
-        fromEnum DT_INT64_REF = 109
-        fromEnum DT_BOOL_REF = 110
-        fromEnum DT_QINT8_REF = 111
-        fromEnum DT_QUINT8_REF = 112
-        fromEnum DT_QINT32_REF = 113
-        fromEnum DT_BFLOAT16_REF = 114
-        fromEnum DT_QINT16_REF = 115
-        fromEnum DT_QUINT16_REF = 116
-        fromEnum DT_UINT16_REF = 117
-        fromEnum DT_COMPLEX128_REF = 118
-        fromEnum DT_HALF_REF = 119
-        fromEnum DT_RESOURCE_REF = 120
-        succ DT_RESOURCE_REF
-          = Prelude.error
-              "DataType.succ: bad argument DT_RESOURCE_REF. This value would be out of bounds."
-        succ DT_INVALID = DT_FLOAT
-        succ DT_FLOAT = DT_DOUBLE
-        succ DT_DOUBLE = DT_INT32
-        succ DT_INT32 = DT_UINT8
-        succ DT_UINT8 = DT_INT16
-        succ DT_INT16 = DT_INT8
-        succ DT_INT8 = DT_STRING
-        succ DT_STRING = DT_COMPLEX64
-        succ DT_COMPLEX64 = DT_INT64
-        succ DT_INT64 = DT_BOOL
-        succ DT_BOOL = DT_QINT8
-        succ DT_QINT8 = DT_QUINT8
-        succ DT_QUINT8 = DT_QINT32
-        succ DT_QINT32 = DT_BFLOAT16
-        succ DT_BFLOAT16 = DT_QINT16
-        succ DT_QINT16 = DT_QUINT16
-        succ DT_QUINT16 = DT_UINT16
-        succ DT_UINT16 = DT_COMPLEX128
-        succ DT_COMPLEX128 = DT_HALF
-        succ DT_HALF = DT_RESOURCE
-        succ DT_RESOURCE = DT_FLOAT_REF
-        succ DT_FLOAT_REF = DT_DOUBLE_REF
-        succ DT_DOUBLE_REF = DT_INT32_REF
-        succ DT_INT32_REF = DT_UINT8_REF
-        succ DT_UINT8_REF = DT_INT16_REF
-        succ DT_INT16_REF = DT_INT8_REF
-        succ DT_INT8_REF = DT_STRING_REF
-        succ DT_STRING_REF = DT_COMPLEX64_REF
-        succ DT_COMPLEX64_REF = DT_INT64_REF
-        succ DT_INT64_REF = DT_BOOL_REF
-        succ DT_BOOL_REF = DT_QINT8_REF
-        succ DT_QINT8_REF = DT_QUINT8_REF
-        succ DT_QUINT8_REF = DT_QINT32_REF
-        succ DT_QINT32_REF = DT_BFLOAT16_REF
-        succ DT_BFLOAT16_REF = DT_QINT16_REF
-        succ DT_QINT16_REF = DT_QUINT16_REF
-        succ DT_QUINT16_REF = DT_UINT16_REF
-        succ DT_UINT16_REF = DT_COMPLEX128_REF
-        succ DT_COMPLEX128_REF = DT_HALF_REF
-        succ DT_HALF_REF = DT_RESOURCE_REF
-        pred DT_INVALID
-          = Prelude.error
-              "DataType.pred: bad argument DT_INVALID. This value would be out of bounds."
-        pred DT_FLOAT = DT_INVALID
-        pred DT_DOUBLE = DT_FLOAT
-        pred DT_INT32 = DT_DOUBLE
-        pred DT_UINT8 = DT_INT32
-        pred DT_INT16 = DT_UINT8
-        pred DT_INT8 = DT_INT16
-        pred DT_STRING = DT_INT8
-        pred DT_COMPLEX64 = DT_STRING
-        pred DT_INT64 = DT_COMPLEX64
-        pred DT_BOOL = DT_INT64
-        pred DT_QINT8 = DT_BOOL
-        pred DT_QUINT8 = DT_QINT8
-        pred DT_QINT32 = DT_QUINT8
-        pred DT_BFLOAT16 = DT_QINT32
-        pred DT_QINT16 = DT_BFLOAT16
-        pred DT_QUINT16 = DT_QINT16
-        pred DT_UINT16 = DT_QUINT16
-        pred DT_COMPLEX128 = DT_UINT16
-        pred DT_HALF = DT_COMPLEX128
-        pred DT_RESOURCE = DT_HALF
-        pred DT_FLOAT_REF = DT_RESOURCE
-        pred DT_DOUBLE_REF = DT_FLOAT_REF
-        pred DT_INT32_REF = DT_DOUBLE_REF
-        pred DT_UINT8_REF = DT_INT32_REF
-        pred DT_INT16_REF = DT_UINT8_REF
-        pred DT_INT8_REF = DT_INT16_REF
-        pred DT_STRING_REF = DT_INT8_REF
-        pred DT_COMPLEX64_REF = DT_STRING_REF
-        pred DT_INT64_REF = DT_COMPLEX64_REF
-        pred DT_BOOL_REF = DT_INT64_REF
-        pred DT_QINT8_REF = DT_BOOL_REF
-        pred DT_QUINT8_REF = DT_QINT8_REF
-        pred DT_QINT32_REF = DT_QUINT8_REF
-        pred DT_BFLOAT16_REF = DT_QINT32_REF
-        pred DT_QINT16_REF = DT_BFLOAT16_REF
-        pred DT_QUINT16_REF = DT_QINT16_REF
-        pred DT_UINT16_REF = DT_QUINT16_REF
-        pred DT_COMPLEX128_REF = DT_UINT16_REF
-        pred DT_HALF_REF = DT_COMPLEX128_REF
-        pred DT_RESOURCE_REF = DT_HALF_REF
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-
-instance Prelude.Bounded DataType where
-        minBound = DT_INVALID
-        maxBound = DT_RESOURCE_REF
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Versions.hs b/dist/build/autogen/Proto/Tensorflow/Core/Framework/Versions.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Framework/Versions.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-{- This file was auto-generated from tensorflow/core/framework/versions.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Framework.Versions where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-
-data VersionDef = VersionDef{_VersionDef'producer ::
-                             !Data.Int.Int32,
-                             _VersionDef'minConsumer :: !Data.Int.Int32,
-                             _VersionDef'badConsumers :: ![Data.Int.Int32]}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "producer" f VersionDef VersionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _VersionDef'producer
-              (\ x__ y__ -> x__{_VersionDef'producer = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "minConsumer" f VersionDef VersionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _VersionDef'minConsumer
-              (\ x__ y__ -> x__{_VersionDef'minConsumer = y__})
-
-instance (a ~ [Data.Int.Int32], b ~ [Data.Int.Int32],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "badConsumers" f VersionDef VersionDef a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _VersionDef'badConsumers
-              (\ x__ y__ -> x__{_VersionDef'badConsumers = y__})
-
-instance Data.Default.Class.Default VersionDef where
-        def
-          = VersionDef{_VersionDef'producer = Data.ProtoLens.fieldDefault,
-                       _VersionDef'minConsumer = Data.ProtoLens.fieldDefault,
-                       _VersionDef'badConsumers = []}
-
-instance Data.ProtoLens.Message VersionDef where
-        descriptor
-          = let producer__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "producer"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional producer)
-                      :: Data.ProtoLens.FieldDescriptor VersionDef
-                minConsumer__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "min_consumer"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional minConsumer)
-                      :: Data.ProtoLens.FieldDescriptor VersionDef
-                badConsumers__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "bad_consumers"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed badConsumers)
-                      :: Data.ProtoLens.FieldDescriptor VersionDef
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, producer__field_descriptor),
-                    (Data.ProtoLens.Tag 2, minConsumer__field_descriptor),
-                    (Data.ProtoLens.Tag 3, badConsumers__field_descriptor)])
-                (Data.Map.fromList
-                   [("producer", producer__field_descriptor),
-                    ("min_consumer", minConsumer__field_descriptor),
-                    ("bad_consumers", badConsumers__field_descriptor)])
-
-badConsumers ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "badConsumers" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-badConsumers
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "badConsumers")
-
-minConsumer ::
-            forall f s t a b . (Lens.Labels.HasLens "minConsumer" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-minConsumer
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "minConsumer")
-
-producer ::
-         forall f s t a b . (Lens.Labels.HasLens "producer" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-producer
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "producer")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Protobuf/Config.hs b/dist/build/autogen/Proto/Tensorflow/Core/Protobuf/Config.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Protobuf/Config.hs
+++ /dev/null
@@ -1,1694 +0,0 @@
-{- This file was auto-generated from tensorflow/core/protobuf/config.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Protobuf.Config where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.CostGraph
-import qualified Proto.Tensorflow.Core.Framework.Graph
-import qualified Proto.Tensorflow.Core.Framework.StepStats
-import qualified Proto.Tensorflow.Core.Protobuf.Debug
-
-data ConfigProto = ConfigProto{_ConfigProto'deviceCount ::
-                               !(Data.Map.Map Data.Text.Text Data.Int.Int32),
-                               _ConfigProto'intraOpParallelismThreads :: !Data.Int.Int32,
-                               _ConfigProto'interOpParallelismThreads :: !Data.Int.Int32,
-                               _ConfigProto'usePerSessionThreads :: !Prelude.Bool,
-                               _ConfigProto'sessionInterOpThreadPool :: ![ThreadPoolOptionProto],
-                               _ConfigProto'placementPeriod :: !Data.Int.Int32,
-                               _ConfigProto'deviceFilters :: ![Data.Text.Text],
-                               _ConfigProto'gpuOptions :: !(Prelude.Maybe GPUOptions),
-                               _ConfigProto'allowSoftPlacement :: !Prelude.Bool,
-                               _ConfigProto'logDevicePlacement :: !Prelude.Bool,
-                               _ConfigProto'graphOptions :: !(Prelude.Maybe GraphOptions),
-                               _ConfigProto'operationTimeoutInMs :: !Data.Int.Int64,
-                               _ConfigProto'rpcOptions :: !(Prelude.Maybe RPCOptions)}
-                 deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Map.Map Data.Text.Text Data.Int.Int32,
-          b ~ Data.Map.Map Data.Text.Text Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "deviceCount" f ConfigProto ConfigProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'deviceCount
-              (\ x__ y__ -> x__{_ConfigProto'deviceCount = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "intraOpParallelismThreads" f ConfigProto
-           ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _ConfigProto'intraOpParallelismThreads
-              (\ x__ y__ -> x__{_ConfigProto'intraOpParallelismThreads = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "interOpParallelismThreads" f ConfigProto
-           ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _ConfigProto'interOpParallelismThreads
-              (\ x__ y__ -> x__{_ConfigProto'interOpParallelismThreads = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "usePerSessionThreads" f ConfigProto
-           ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'usePerSessionThreads
-              (\ x__ y__ -> x__{_ConfigProto'usePerSessionThreads = y__})
-
-instance (a ~ [ThreadPoolOptionProto], b ~ [ThreadPoolOptionProto],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "sessionInterOpThreadPool" f ConfigProto
-           ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'sessionInterOpThreadPool
-              (\ x__ y__ -> x__{_ConfigProto'sessionInterOpThreadPool = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "placementPeriod" f ConfigProto ConfigProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'placementPeriod
-              (\ x__ y__ -> x__{_ConfigProto'placementPeriod = y__})
-
-instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "deviceFilters" f ConfigProto ConfigProto a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'deviceFilters
-              (\ x__ y__ -> x__{_ConfigProto'deviceFilters = y__})
-
-instance (a ~ GPUOptions, b ~ GPUOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "gpuOptions" f ConfigProto ConfigProto a b
-         where
-        lensOf _
-          = (Prelude..) maybe'gpuOptions
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe GPUOptions,
-          b ~ Prelude.Maybe GPUOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'gpuOptions" f ConfigProto ConfigProto a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'gpuOptions
-              (\ x__ y__ -> x__{_ConfigProto'gpuOptions = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "allowSoftPlacement" f ConfigProto ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'allowSoftPlacement
-              (\ x__ y__ -> x__{_ConfigProto'allowSoftPlacement = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "logDevicePlacement" f ConfigProto ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'logDevicePlacement
-              (\ x__ y__ -> x__{_ConfigProto'logDevicePlacement = y__})
-
-instance (a ~ GraphOptions, b ~ GraphOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "graphOptions" f ConfigProto ConfigProto a b
-         where
-        lensOf _
-          = (Prelude..) maybe'graphOptions
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe GraphOptions,
-          b ~ Prelude.Maybe GraphOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'graphOptions" f ConfigProto ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'graphOptions
-              (\ x__ y__ -> x__{_ConfigProto'graphOptions = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "operationTimeoutInMs" f ConfigProto
-           ConfigProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'operationTimeoutInMs
-              (\ x__ y__ -> x__{_ConfigProto'operationTimeoutInMs = y__})
-
-instance (a ~ RPCOptions, b ~ RPCOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "rpcOptions" f ConfigProto ConfigProto a b
-         where
-        lensOf _
-          = (Prelude..) maybe'rpcOptions
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe RPCOptions,
-          b ~ Prelude.Maybe RPCOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'rpcOptions" f ConfigProto ConfigProto a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'rpcOptions
-              (\ x__ y__ -> x__{_ConfigProto'rpcOptions = y__})
-
-instance Data.Default.Class.Default ConfigProto where
-        def
-          = ConfigProto{_ConfigProto'deviceCount = Data.Map.empty,
-                        _ConfigProto'intraOpParallelismThreads =
-                          Data.ProtoLens.fieldDefault,
-                        _ConfigProto'interOpParallelismThreads =
-                          Data.ProtoLens.fieldDefault,
-                        _ConfigProto'usePerSessionThreads = Data.ProtoLens.fieldDefault,
-                        _ConfigProto'sessionInterOpThreadPool = [],
-                        _ConfigProto'placementPeriod = Data.ProtoLens.fieldDefault,
-                        _ConfigProto'deviceFilters = [],
-                        _ConfigProto'gpuOptions = Prelude.Nothing,
-                        _ConfigProto'allowSoftPlacement = Data.ProtoLens.fieldDefault,
-                        _ConfigProto'logDevicePlacement = Data.ProtoLens.fieldDefault,
-                        _ConfigProto'graphOptions = Prelude.Nothing,
-                        _ConfigProto'operationTimeoutInMs = Data.ProtoLens.fieldDefault,
-                        _ConfigProto'rpcOptions = Prelude.Nothing}
-
-instance Data.ProtoLens.Message ConfigProto where
-        descriptor
-          = let deviceCount__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "device_count"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor ConfigProto'DeviceCountEntry)
-                      (Data.ProtoLens.MapField key value deviceCount)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                intraOpParallelismThreads__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "intra_op_parallelism_threads"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         intraOpParallelismThreads)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                interOpParallelismThreads__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "inter_op_parallelism_threads"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         interOpParallelismThreads)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                usePerSessionThreads__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "use_per_session_threads"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         usePerSessionThreads)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                sessionInterOpThreadPool__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "session_inter_op_thread_pool"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor ThreadPoolOptionProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         sessionInterOpThreadPool)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                placementPeriod__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "placement_period"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional placementPeriod)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                deviceFilters__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "device_filters"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         deviceFilters)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                gpuOptions__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "gpu_options"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor GPUOptions)
-                      (Data.ProtoLens.OptionalField maybe'gpuOptions)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                allowSoftPlacement__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allow_soft_placement"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         allowSoftPlacement)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                logDevicePlacement__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "log_device_placement"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         logDevicePlacement)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                graphOptions__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "graph_options"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor GraphOptions)
-                      (Data.ProtoLens.OptionalField maybe'graphOptions)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                operationTimeoutInMs__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "operation_timeout_in_ms"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         operationTimeoutInMs)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-                rpcOptions__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "rpc_options"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor RPCOptions)
-                      (Data.ProtoLens.OptionalField maybe'rpcOptions)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, deviceCount__field_descriptor),
-                    (Data.ProtoLens.Tag 2,
-                     intraOpParallelismThreads__field_descriptor),
-                    (Data.ProtoLens.Tag 5,
-                     interOpParallelismThreads__field_descriptor),
-                    (Data.ProtoLens.Tag 9, usePerSessionThreads__field_descriptor),
-                    (Data.ProtoLens.Tag 12,
-                     sessionInterOpThreadPool__field_descriptor),
-                    (Data.ProtoLens.Tag 3, placementPeriod__field_descriptor),
-                    (Data.ProtoLens.Tag 4, deviceFilters__field_descriptor),
-                    (Data.ProtoLens.Tag 6, gpuOptions__field_descriptor),
-                    (Data.ProtoLens.Tag 7, allowSoftPlacement__field_descriptor),
-                    (Data.ProtoLens.Tag 8, logDevicePlacement__field_descriptor),
-                    (Data.ProtoLens.Tag 10, graphOptions__field_descriptor),
-                    (Data.ProtoLens.Tag 11, operationTimeoutInMs__field_descriptor),
-                    (Data.ProtoLens.Tag 13, rpcOptions__field_descriptor)])
-                (Data.Map.fromList
-                   [("device_count", deviceCount__field_descriptor),
-                    ("intra_op_parallelism_threads",
-                     intraOpParallelismThreads__field_descriptor),
-                    ("inter_op_parallelism_threads",
-                     interOpParallelismThreads__field_descriptor),
-                    ("use_per_session_threads",
-                     usePerSessionThreads__field_descriptor),
-                    ("session_inter_op_thread_pool",
-                     sessionInterOpThreadPool__field_descriptor),
-                    ("placement_period", placementPeriod__field_descriptor),
-                    ("device_filters", deviceFilters__field_descriptor),
-                    ("gpu_options", gpuOptions__field_descriptor),
-                    ("allow_soft_placement", allowSoftPlacement__field_descriptor),
-                    ("log_device_placement", logDevicePlacement__field_descriptor),
-                    ("graph_options", graphOptions__field_descriptor),
-                    ("operation_timeout_in_ms",
-                     operationTimeoutInMs__field_descriptor),
-                    ("rpc_options", rpcOptions__field_descriptor)])
-
-data ConfigProto'DeviceCountEntry = ConfigProto'DeviceCountEntry{_ConfigProto'DeviceCountEntry'key
-                                                                 :: !Data.Text.Text,
-                                                                 _ConfigProto'DeviceCountEntry'value
-                                                                 :: !Data.Int.Int32}
-                                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "key" f ConfigProto'DeviceCountEntry
-           ConfigProto'DeviceCountEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'DeviceCountEntry'key
-              (\ x__ y__ -> x__{_ConfigProto'DeviceCountEntry'key = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "value" f ConfigProto'DeviceCountEntry
-           ConfigProto'DeviceCountEntry
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ConfigProto'DeviceCountEntry'value
-              (\ x__ y__ -> x__{_ConfigProto'DeviceCountEntry'value = y__})
-
-instance Data.Default.Class.Default ConfigProto'DeviceCountEntry
-         where
-        def
-          = ConfigProto'DeviceCountEntry{_ConfigProto'DeviceCountEntry'key =
-                                           Data.ProtoLens.fieldDefault,
-                                         _ConfigProto'DeviceCountEntry'value =
-                                           Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message ConfigProto'DeviceCountEntry where
-        descriptor
-          = let key__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "key"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional key)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto'DeviceCountEntry
-                value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional value)
-                      :: Data.ProtoLens.FieldDescriptor ConfigProto'DeviceCountEntry
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, key__field_descriptor),
-                    (Data.ProtoLens.Tag 2, value__field_descriptor)])
-                (Data.Map.fromList
-                   [("key", key__field_descriptor),
-                    ("value", value__field_descriptor)])
-
-data GPUOptions = GPUOptions{_GPUOptions'perProcessGpuMemoryFraction
-                             :: !Prelude.Double,
-                             _GPUOptions'allocatorType :: !Data.Text.Text,
-                             _GPUOptions'deferredDeletionBytes :: !Data.Int.Int64,
-                             _GPUOptions'allowGrowth :: !Prelude.Bool,
-                             _GPUOptions'visibleDeviceList :: !Data.Text.Text}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "perProcessGpuMemoryFraction" f GPUOptions
-           GPUOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _GPUOptions'perProcessGpuMemoryFraction
-              (\ x__ y__ -> x__{_GPUOptions'perProcessGpuMemoryFraction = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "allocatorType" f GPUOptions GPUOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GPUOptions'allocatorType
-              (\ x__ y__ -> x__{_GPUOptions'allocatorType = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "deferredDeletionBytes" f GPUOptions GPUOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GPUOptions'deferredDeletionBytes
-              (\ x__ y__ -> x__{_GPUOptions'deferredDeletionBytes = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "allowGrowth" f GPUOptions GPUOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GPUOptions'allowGrowth
-              (\ x__ y__ -> x__{_GPUOptions'allowGrowth = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "visibleDeviceList" f GPUOptions GPUOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GPUOptions'visibleDeviceList
-              (\ x__ y__ -> x__{_GPUOptions'visibleDeviceList = y__})
-
-instance Data.Default.Class.Default GPUOptions where
-        def
-          = GPUOptions{_GPUOptions'perProcessGpuMemoryFraction =
-                         Data.ProtoLens.fieldDefault,
-                       _GPUOptions'allocatorType = Data.ProtoLens.fieldDefault,
-                       _GPUOptions'deferredDeletionBytes = Data.ProtoLens.fieldDefault,
-                       _GPUOptions'allowGrowth = Data.ProtoLens.fieldDefault,
-                       _GPUOptions'visibleDeviceList = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message GPUOptions where
-        descriptor
-          = let perProcessGpuMemoryFraction__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "per_process_gpu_memory_fraction"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         perProcessGpuMemoryFraction)
-                      :: Data.ProtoLens.FieldDescriptor GPUOptions
-                allocatorType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allocator_type"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allocatorType)
-                      :: Data.ProtoLens.FieldDescriptor GPUOptions
-                deferredDeletionBytes__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deferred_deletion_bytes"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         deferredDeletionBytes)
-                      :: Data.ProtoLens.FieldDescriptor GPUOptions
-                allowGrowth__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allow_growth"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional allowGrowth)
-                      :: Data.ProtoLens.FieldDescriptor GPUOptions
-                visibleDeviceList__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "visible_device_list"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         visibleDeviceList)
-                      :: Data.ProtoLens.FieldDescriptor GPUOptions
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1,
-                     perProcessGpuMemoryFraction__field_descriptor),
-                    (Data.ProtoLens.Tag 2, allocatorType__field_descriptor),
-                    (Data.ProtoLens.Tag 3, deferredDeletionBytes__field_descriptor),
-                    (Data.ProtoLens.Tag 4, allowGrowth__field_descriptor),
-                    (Data.ProtoLens.Tag 5, visibleDeviceList__field_descriptor)])
-                (Data.Map.fromList
-                   [("per_process_gpu_memory_fraction",
-                     perProcessGpuMemoryFraction__field_descriptor),
-                    ("allocator_type", allocatorType__field_descriptor),
-                    ("deferred_deletion_bytes",
-                     deferredDeletionBytes__field_descriptor),
-                    ("allow_growth", allowGrowth__field_descriptor),
-                    ("visible_device_list", visibleDeviceList__field_descriptor)])
-
-data GraphOptions = GraphOptions{_GraphOptions'enableRecvScheduling
-                                 :: !Prelude.Bool,
-                                 _GraphOptions'optimizerOptions ::
-                                 !(Prelude.Maybe OptimizerOptions),
-                                 _GraphOptions'buildCostModel :: !Data.Int.Int64,
-                                 _GraphOptions'buildCostModelAfter :: !Data.Int.Int64,
-                                 _GraphOptions'inferShapes :: !Prelude.Bool,
-                                 _GraphOptions'placePrunedGraph :: !Prelude.Bool,
-                                 _GraphOptions'enableBfloat16Sendrecv :: !Prelude.Bool,
-                                 _GraphOptions'timelineStep :: !Data.Int.Int32}
-                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "enableRecvScheduling" f GraphOptions
-           GraphOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'enableRecvScheduling
-              (\ x__ y__ -> x__{_GraphOptions'enableRecvScheduling = y__})
-
-instance (a ~ OptimizerOptions, b ~ OptimizerOptions,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "optimizerOptions" f GraphOptions GraphOptions
-           a
-           b
-         where
-        lensOf _
-          = (Prelude..) maybe'optimizerOptions
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe OptimizerOptions,
-          b ~ Prelude.Maybe OptimizerOptions, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'optimizerOptions" f GraphOptions
-           GraphOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'optimizerOptions
-              (\ x__ y__ -> x__{_GraphOptions'optimizerOptions = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "buildCostModel" f GraphOptions GraphOptions a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'buildCostModel
-              (\ x__ y__ -> x__{_GraphOptions'buildCostModel = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "buildCostModelAfter" f GraphOptions
-           GraphOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'buildCostModelAfter
-              (\ x__ y__ -> x__{_GraphOptions'buildCostModelAfter = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "inferShapes" f GraphOptions GraphOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'inferShapes
-              (\ x__ y__ -> x__{_GraphOptions'inferShapes = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "placePrunedGraph" f GraphOptions GraphOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'placePrunedGraph
-              (\ x__ y__ -> x__{_GraphOptions'placePrunedGraph = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "enableBfloat16Sendrecv" f GraphOptions
-           GraphOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'enableBfloat16Sendrecv
-              (\ x__ y__ -> x__{_GraphOptions'enableBfloat16Sendrecv = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "timelineStep" f GraphOptions GraphOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _GraphOptions'timelineStep
-              (\ x__ y__ -> x__{_GraphOptions'timelineStep = y__})
-
-instance Data.Default.Class.Default GraphOptions where
-        def
-          = GraphOptions{_GraphOptions'enableRecvScheduling =
-                           Data.ProtoLens.fieldDefault,
-                         _GraphOptions'optimizerOptions = Prelude.Nothing,
-                         _GraphOptions'buildCostModel = Data.ProtoLens.fieldDefault,
-                         _GraphOptions'buildCostModelAfter = Data.ProtoLens.fieldDefault,
-                         _GraphOptions'inferShapes = Data.ProtoLens.fieldDefault,
-                         _GraphOptions'placePrunedGraph = Data.ProtoLens.fieldDefault,
-                         _GraphOptions'enableBfloat16Sendrecv = Data.ProtoLens.fieldDefault,
-                         _GraphOptions'timelineStep = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message GraphOptions where
-        descriptor
-          = let enableRecvScheduling__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "enable_recv_scheduling"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         enableRecvScheduling)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                optimizerOptions__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "optimizer_options"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor OptimizerOptions)
-                      (Data.ProtoLens.OptionalField maybe'optimizerOptions)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                buildCostModel__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "build_cost_model"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional buildCostModel)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                buildCostModelAfter__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "build_cost_model_after"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         buildCostModelAfter)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                inferShapes__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "infer_shapes"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional inferShapes)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                placePrunedGraph__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "place_pruned_graph"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         placePrunedGraph)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                enableBfloat16Sendrecv__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "enable_bfloat16_sendrecv"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         enableBfloat16Sendrecv)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-                timelineStep__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "timeline_step"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timelineStep)
-                      :: Data.ProtoLens.FieldDescriptor GraphOptions
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 2, enableRecvScheduling__field_descriptor),
-                    (Data.ProtoLens.Tag 3, optimizerOptions__field_descriptor),
-                    (Data.ProtoLens.Tag 4, buildCostModel__field_descriptor),
-                    (Data.ProtoLens.Tag 9, buildCostModelAfter__field_descriptor),
-                    (Data.ProtoLens.Tag 5, inferShapes__field_descriptor),
-                    (Data.ProtoLens.Tag 6, placePrunedGraph__field_descriptor),
-                    (Data.ProtoLens.Tag 7, enableBfloat16Sendrecv__field_descriptor),
-                    (Data.ProtoLens.Tag 8, timelineStep__field_descriptor)])
-                (Data.Map.fromList
-                   [("enable_recv_scheduling",
-                     enableRecvScheduling__field_descriptor),
-                    ("optimizer_options", optimizerOptions__field_descriptor),
-                    ("build_cost_model", buildCostModel__field_descriptor),
-                    ("build_cost_model_after", buildCostModelAfter__field_descriptor),
-                    ("infer_shapes", inferShapes__field_descriptor),
-                    ("place_pruned_graph", placePrunedGraph__field_descriptor),
-                    ("enable_bfloat16_sendrecv",
-                     enableBfloat16Sendrecv__field_descriptor),
-                    ("timeline_step", timelineStep__field_descriptor)])
-
-data OptimizerOptions = OptimizerOptions{_OptimizerOptions'doCommonSubexpressionElimination
-                                         :: !Prelude.Bool,
-                                         _OptimizerOptions'doConstantFolding :: !Prelude.Bool,
-                                         _OptimizerOptions'doFunctionInlining :: !Prelude.Bool,
-                                         _OptimizerOptions'optLevel :: !OptimizerOptions'Level,
-                                         _OptimizerOptions'globalJitLevel ::
-                                         !OptimizerOptions'GlobalJitLevel}
-                      deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "doCommonSubexpressionElimination" f
-           OptimizerOptions
-           OptimizerOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens
-              _OptimizerOptions'doCommonSubexpressionElimination
-              (\ x__ y__ ->
-                 x__{_OptimizerOptions'doCommonSubexpressionElimination = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "doConstantFolding" f OptimizerOptions
-           OptimizerOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OptimizerOptions'doConstantFolding
-              (\ x__ y__ -> x__{_OptimizerOptions'doConstantFolding = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "doFunctionInlining" f OptimizerOptions
-           OptimizerOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OptimizerOptions'doFunctionInlining
-              (\ x__ y__ -> x__{_OptimizerOptions'doFunctionInlining = y__})
-
-instance (a ~ OptimizerOptions'Level, b ~ OptimizerOptions'Level,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "optLevel" f OptimizerOptions OptimizerOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OptimizerOptions'optLevel
-              (\ x__ y__ -> x__{_OptimizerOptions'optLevel = y__})
-
-instance (a ~ OptimizerOptions'GlobalJitLevel,
-          b ~ OptimizerOptions'GlobalJitLevel, Prelude.Functor f) =>
-         Lens.Labels.HasLens "globalJitLevel" f OptimizerOptions
-           OptimizerOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _OptimizerOptions'globalJitLevel
-              (\ x__ y__ -> x__{_OptimizerOptions'globalJitLevel = y__})
-
-instance Data.Default.Class.Default OptimizerOptions where
-        def
-          = OptimizerOptions{_OptimizerOptions'doCommonSubexpressionElimination
-                               = Data.ProtoLens.fieldDefault,
-                             _OptimizerOptions'doConstantFolding = Data.ProtoLens.fieldDefault,
-                             _OptimizerOptions'doFunctionInlining = Data.ProtoLens.fieldDefault,
-                             _OptimizerOptions'optLevel = Data.Default.Class.def,
-                             _OptimizerOptions'globalJitLevel = Data.Default.Class.def}
-
-instance Data.ProtoLens.Message OptimizerOptions where
-        descriptor
-          = let doCommonSubexpressionElimination__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor
-                      "do_common_subexpression_elimination"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         doCommonSubexpressionElimination)
-                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
-                doConstantFolding__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "do_constant_folding"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         doConstantFolding)
-                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
-                doFunctionInlining__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "do_function_inlining"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         doFunctionInlining)
-                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
-                optLevel__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "opt_level"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor OptimizerOptions'Level)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional optLevel)
-                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
-                globalJitLevel__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "global_jit_level"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor OptimizerOptions'GlobalJitLevel)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional globalJitLevel)
-                      :: Data.ProtoLens.FieldDescriptor OptimizerOptions
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1,
-                     doCommonSubexpressionElimination__field_descriptor),
-                    (Data.ProtoLens.Tag 2, doConstantFolding__field_descriptor),
-                    (Data.ProtoLens.Tag 4, doFunctionInlining__field_descriptor),
-                    (Data.ProtoLens.Tag 3, optLevel__field_descriptor),
-                    (Data.ProtoLens.Tag 5, globalJitLevel__field_descriptor)])
-                (Data.Map.fromList
-                   [("do_common_subexpression_elimination",
-                     doCommonSubexpressionElimination__field_descriptor),
-                    ("do_constant_folding", doConstantFolding__field_descriptor),
-                    ("do_function_inlining", doFunctionInlining__field_descriptor),
-                    ("opt_level", optLevel__field_descriptor),
-                    ("global_jit_level", globalJitLevel__field_descriptor)])
-
-data OptimizerOptions'GlobalJitLevel = OptimizerOptions'OFF
-                                     | OptimizerOptions'DEFAULT
-                                     | OptimizerOptions'ON_1
-                                     | OptimizerOptions'ON_2
-                                     deriving (Prelude.Show, Prelude.Eq)
-
-instance Data.Default.Class.Default OptimizerOptions'GlobalJitLevel
-         where
-        def = OptimizerOptions'OFF
-
-instance Data.ProtoLens.FieldDefault
-           OptimizerOptions'GlobalJitLevel
-         where
-        fieldDefault = OptimizerOptions'OFF
-
-instance Data.ProtoLens.MessageEnum OptimizerOptions'GlobalJitLevel
-         where
-        maybeToEnum (-1) = Prelude.Just OptimizerOptions'OFF
-        maybeToEnum 0 = Prelude.Just OptimizerOptions'DEFAULT
-        maybeToEnum 1 = Prelude.Just OptimizerOptions'ON_1
-        maybeToEnum 2 = Prelude.Just OptimizerOptions'ON_2
-        maybeToEnum _ = Prelude.Nothing
-        showEnum OptimizerOptions'OFF = "OFF"
-        showEnum OptimizerOptions'DEFAULT = "DEFAULT"
-        showEnum OptimizerOptions'ON_1 = "ON_1"
-        showEnum OptimizerOptions'ON_2 = "ON_2"
-        readEnum "OFF" = Prelude.Just OptimizerOptions'OFF
-        readEnum "DEFAULT" = Prelude.Just OptimizerOptions'DEFAULT
-        readEnum "ON_1" = Prelude.Just OptimizerOptions'ON_1
-        readEnum "ON_2" = Prelude.Just OptimizerOptions'ON_2
-        readEnum _ = Prelude.Nothing
-
-instance Prelude.Enum OptimizerOptions'GlobalJitLevel where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum GlobalJitLevel: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum OptimizerOptions'OFF = -1
-        fromEnum OptimizerOptions'DEFAULT = 0
-        fromEnum OptimizerOptions'ON_1 = 1
-        fromEnum OptimizerOptions'ON_2 = 2
-        succ OptimizerOptions'ON_2
-          = Prelude.error
-              "OptimizerOptions'GlobalJitLevel.succ: bad argument OptimizerOptions'ON_2. This value would be out of bounds."
-        succ OptimizerOptions'OFF = OptimizerOptions'DEFAULT
-        succ OptimizerOptions'DEFAULT = OptimizerOptions'ON_1
-        succ OptimizerOptions'ON_1 = OptimizerOptions'ON_2
-        pred OptimizerOptions'OFF
-          = Prelude.error
-              "OptimizerOptions'GlobalJitLevel.pred: bad argument OptimizerOptions'OFF. This value would be out of bounds."
-        pred OptimizerOptions'DEFAULT = OptimizerOptions'OFF
-        pred OptimizerOptions'ON_1 = OptimizerOptions'DEFAULT
-        pred OptimizerOptions'ON_2 = OptimizerOptions'ON_1
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-
-instance Prelude.Bounded OptimizerOptions'GlobalJitLevel where
-        minBound = OptimizerOptions'OFF
-        maxBound = OptimizerOptions'ON_2
-
-data OptimizerOptions'Level = OptimizerOptions'L0
-                            | OptimizerOptions'L1
-                            deriving (Prelude.Show, Prelude.Eq)
-
-instance Data.Default.Class.Default OptimizerOptions'Level where
-        def = OptimizerOptions'L0
-
-instance Data.ProtoLens.FieldDefault OptimizerOptions'Level where
-        fieldDefault = OptimizerOptions'L0
-
-instance Data.ProtoLens.MessageEnum OptimizerOptions'Level where
-        maybeToEnum (-1) = Prelude.Just OptimizerOptions'L0
-        maybeToEnum 0 = Prelude.Just OptimizerOptions'L1
-        maybeToEnum _ = Prelude.Nothing
-        showEnum OptimizerOptions'L0 = "L0"
-        showEnum OptimizerOptions'L1 = "L1"
-        readEnum "L0" = Prelude.Just OptimizerOptions'L0
-        readEnum "L1" = Prelude.Just OptimizerOptions'L1
-        readEnum _ = Prelude.Nothing
-
-instance Prelude.Enum OptimizerOptions'Level where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum Level: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum OptimizerOptions'L0 = -1
-        fromEnum OptimizerOptions'L1 = 0
-        succ OptimizerOptions'L1
-          = Prelude.error
-              "OptimizerOptions'Level.succ: bad argument OptimizerOptions'L1. This value would be out of bounds."
-        succ OptimizerOptions'L0 = OptimizerOptions'L1
-        pred OptimizerOptions'L0
-          = Prelude.error
-              "OptimizerOptions'Level.pred: bad argument OptimizerOptions'L0. This value would be out of bounds."
-        pred OptimizerOptions'L1 = OptimizerOptions'L0
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-
-instance Prelude.Bounded OptimizerOptions'Level where
-        minBound = OptimizerOptions'L0
-        maxBound = OptimizerOptions'L1
-
-data RPCOptions = RPCOptions{_RPCOptions'useRpcForInprocessMaster
-                             :: !Prelude.Bool}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "useRpcForInprocessMaster" f RPCOptions
-           RPCOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RPCOptions'useRpcForInprocessMaster
-              (\ x__ y__ -> x__{_RPCOptions'useRpcForInprocessMaster = y__})
-
-instance Data.Default.Class.Default RPCOptions where
-        def
-          = RPCOptions{_RPCOptions'useRpcForInprocessMaster =
-                         Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message RPCOptions where
-        descriptor
-          = let useRpcForInprocessMaster__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "use_rpc_for_inprocess_master"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         useRpcForInprocessMaster)
-                      :: Data.ProtoLens.FieldDescriptor RPCOptions
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1,
-                     useRpcForInprocessMaster__field_descriptor)])
-                (Data.Map.fromList
-                   [("use_rpc_for_inprocess_master",
-                     useRpcForInprocessMaster__field_descriptor)])
-
-data RunMetadata = RunMetadata{_RunMetadata'stepStats ::
-                               !(Prelude.Maybe
-                                   Proto.Tensorflow.Core.Framework.StepStats.StepStats),
-                               _RunMetadata'costGraph ::
-                               !(Prelude.Maybe
-                                   Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef),
-                               _RunMetadata'partitionGraphs ::
-                               ![Proto.Tensorflow.Core.Framework.Graph.GraphDef]}
-                 deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Proto.Tensorflow.Core.Framework.StepStats.StepStats,
-          b ~ Proto.Tensorflow.Core.Framework.StepStats.StepStats,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "stepStats" f RunMetadata RunMetadata a b
-         where
-        lensOf _
-          = (Prelude..) maybe'stepStats
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.StepStats.StepStats,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.StepStats.StepStats,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'stepStats" f RunMetadata RunMetadata a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunMetadata'stepStats
-              (\ x__ y__ -> x__{_RunMetadata'stepStats = y__})
-
-instance (a ~
-            Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
-          b ~ Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "costGraph" f RunMetadata RunMetadata a b
-         where
-        lensOf _
-          = (Prelude..) maybe'costGraph
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
-          b ~
-            Prelude.Maybe
-              Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'costGraph" f RunMetadata RunMetadata a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunMetadata'costGraph
-              (\ x__ y__ -> x__{_RunMetadata'costGraph = y__})
-
-instance (a ~ [Proto.Tensorflow.Core.Framework.Graph.GraphDef],
-          b ~ [Proto.Tensorflow.Core.Framework.Graph.GraphDef],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "partitionGraphs" f RunMetadata RunMetadata a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunMetadata'partitionGraphs
-              (\ x__ y__ -> x__{_RunMetadata'partitionGraphs = y__})
-
-instance Data.Default.Class.Default RunMetadata where
-        def
-          = RunMetadata{_RunMetadata'stepStats = Prelude.Nothing,
-                        _RunMetadata'costGraph = Prelude.Nothing,
-                        _RunMetadata'partitionGraphs = []}
-
-instance Data.ProtoLens.Message RunMetadata where
-        descriptor
-          = let stepStats__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "step_stats"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.StepStats.StepStats)
-                      (Data.ProtoLens.OptionalField maybe'stepStats)
-                      :: Data.ProtoLens.FieldDescriptor RunMetadata
-                costGraph__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "cost_graph"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.CostGraph.CostGraphDef)
-                      (Data.ProtoLens.OptionalField maybe'costGraph)
-                      :: Data.ProtoLens.FieldDescriptor RunMetadata
-                partitionGraphs__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "partition_graphs"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Graph.GraphDef)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         partitionGraphs)
-                      :: Data.ProtoLens.FieldDescriptor RunMetadata
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, stepStats__field_descriptor),
-                    (Data.ProtoLens.Tag 2, costGraph__field_descriptor),
-                    (Data.ProtoLens.Tag 3, partitionGraphs__field_descriptor)])
-                (Data.Map.fromList
-                   [("step_stats", stepStats__field_descriptor),
-                    ("cost_graph", costGraph__field_descriptor),
-                    ("partition_graphs", partitionGraphs__field_descriptor)])
-
-data RunOptions = RunOptions{_RunOptions'traceLevel ::
-                             !RunOptions'TraceLevel,
-                             _RunOptions'timeoutInMs :: !Data.Int.Int64,
-                             _RunOptions'interOpThreadPool :: !Data.Int.Int32,
-                             _RunOptions'outputPartitionGraphs :: !Prelude.Bool,
-                             _RunOptions'debugOptions ::
-                             !(Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions)}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ RunOptions'TraceLevel, b ~ RunOptions'TraceLevel,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "traceLevel" f RunOptions RunOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunOptions'traceLevel
-              (\ x__ y__ -> x__{_RunOptions'traceLevel = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "timeoutInMs" f RunOptions RunOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunOptions'timeoutInMs
-              (\ x__ y__ -> x__{_RunOptions'timeoutInMs = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "interOpThreadPool" f RunOptions RunOptions a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunOptions'interOpThreadPool
-              (\ x__ y__ -> x__{_RunOptions'interOpThreadPool = y__})
-
-instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
-         Lens.Labels.HasLens "outputPartitionGraphs" f RunOptions RunOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunOptions'outputPartitionGraphs
-              (\ x__ y__ -> x__{_RunOptions'outputPartitionGraphs = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
-          b ~ Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "debugOptions" f RunOptions RunOptions a b
-         where
-        lensOf _
-          = (Prelude..) maybe'debugOptions
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
-          b ~
-            Prelude.Maybe Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'debugOptions" f RunOptions RunOptions a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _RunOptions'debugOptions
-              (\ x__ y__ -> x__{_RunOptions'debugOptions = y__})
-
-instance Data.Default.Class.Default RunOptions where
-        def
-          = RunOptions{_RunOptions'traceLevel = Data.Default.Class.def,
-                       _RunOptions'timeoutInMs = Data.ProtoLens.fieldDefault,
-                       _RunOptions'interOpThreadPool = Data.ProtoLens.fieldDefault,
-                       _RunOptions'outputPartitionGraphs = Data.ProtoLens.fieldDefault,
-                       _RunOptions'debugOptions = Prelude.Nothing}
-
-instance Data.ProtoLens.Message RunOptions where
-        descriptor
-          = let traceLevel__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "trace_level"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor RunOptions'TraceLevel)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional traceLevel)
-                      :: Data.ProtoLens.FieldDescriptor RunOptions
-                timeoutInMs__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "timeout_in_ms"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional timeoutInMs)
-                      :: Data.ProtoLens.FieldDescriptor RunOptions
-                interOpThreadPool__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "inter_op_thread_pool"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         interOpThreadPool)
-                      :: Data.ProtoLens.FieldDescriptor RunOptions
-                outputPartitionGraphs__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "output_partition_graphs"
-                      (Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
-                         outputPartitionGraphs)
-                      :: Data.ProtoLens.FieldDescriptor RunOptions
-                debugOptions__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "debug_options"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Protobuf.Debug.DebugOptions)
-                      (Data.ProtoLens.OptionalField maybe'debugOptions)
-                      :: Data.ProtoLens.FieldDescriptor RunOptions
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, traceLevel__field_descriptor),
-                    (Data.ProtoLens.Tag 2, timeoutInMs__field_descriptor),
-                    (Data.ProtoLens.Tag 3, interOpThreadPool__field_descriptor),
-                    (Data.ProtoLens.Tag 5, outputPartitionGraphs__field_descriptor),
-                    (Data.ProtoLens.Tag 6, debugOptions__field_descriptor)])
-                (Data.Map.fromList
-                   [("trace_level", traceLevel__field_descriptor),
-                    ("timeout_in_ms", timeoutInMs__field_descriptor),
-                    ("inter_op_thread_pool", interOpThreadPool__field_descriptor),
-                    ("output_partition_graphs",
-                     outputPartitionGraphs__field_descriptor),
-                    ("debug_options", debugOptions__field_descriptor)])
-
-data RunOptions'TraceLevel = RunOptions'NO_TRACE
-                           | RunOptions'SOFTWARE_TRACE
-                           | RunOptions'HARDWARE_TRACE
-                           | RunOptions'FULL_TRACE
-                           deriving (Prelude.Show, Prelude.Eq)
-
-instance Data.Default.Class.Default RunOptions'TraceLevel where
-        def = RunOptions'NO_TRACE
-
-instance Data.ProtoLens.FieldDefault RunOptions'TraceLevel where
-        fieldDefault = RunOptions'NO_TRACE
-
-instance Data.ProtoLens.MessageEnum RunOptions'TraceLevel where
-        maybeToEnum 0 = Prelude.Just RunOptions'NO_TRACE
-        maybeToEnum 1 = Prelude.Just RunOptions'SOFTWARE_TRACE
-        maybeToEnum 2 = Prelude.Just RunOptions'HARDWARE_TRACE
-        maybeToEnum 3 = Prelude.Just RunOptions'FULL_TRACE
-        maybeToEnum _ = Prelude.Nothing
-        showEnum RunOptions'NO_TRACE = "NO_TRACE"
-        showEnum RunOptions'SOFTWARE_TRACE = "SOFTWARE_TRACE"
-        showEnum RunOptions'HARDWARE_TRACE = "HARDWARE_TRACE"
-        showEnum RunOptions'FULL_TRACE = "FULL_TRACE"
-        readEnum "NO_TRACE" = Prelude.Just RunOptions'NO_TRACE
-        readEnum "SOFTWARE_TRACE" = Prelude.Just RunOptions'SOFTWARE_TRACE
-        readEnum "HARDWARE_TRACE" = Prelude.Just RunOptions'HARDWARE_TRACE
-        readEnum "FULL_TRACE" = Prelude.Just RunOptions'FULL_TRACE
-        readEnum _ = Prelude.Nothing
-
-instance Prelude.Enum RunOptions'TraceLevel where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum TraceLevel: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum RunOptions'NO_TRACE = 0
-        fromEnum RunOptions'SOFTWARE_TRACE = 1
-        fromEnum RunOptions'HARDWARE_TRACE = 2
-        fromEnum RunOptions'FULL_TRACE = 3
-        succ RunOptions'FULL_TRACE
-          = Prelude.error
-              "RunOptions'TraceLevel.succ: bad argument RunOptions'FULL_TRACE. This value would be out of bounds."
-        succ RunOptions'NO_TRACE = RunOptions'SOFTWARE_TRACE
-        succ RunOptions'SOFTWARE_TRACE = RunOptions'HARDWARE_TRACE
-        succ RunOptions'HARDWARE_TRACE = RunOptions'FULL_TRACE
-        pred RunOptions'NO_TRACE
-          = Prelude.error
-              "RunOptions'TraceLevel.pred: bad argument RunOptions'NO_TRACE. This value would be out of bounds."
-        pred RunOptions'SOFTWARE_TRACE = RunOptions'NO_TRACE
-        pred RunOptions'HARDWARE_TRACE = RunOptions'SOFTWARE_TRACE
-        pred RunOptions'FULL_TRACE = RunOptions'HARDWARE_TRACE
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-
-instance Prelude.Bounded RunOptions'TraceLevel where
-        minBound = RunOptions'NO_TRACE
-        maxBound = RunOptions'FULL_TRACE
-
-data ThreadPoolOptionProto = ThreadPoolOptionProto{_ThreadPoolOptionProto'numThreads
-                                                   :: !Data.Int.Int32}
-                           deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "numThreads" f ThreadPoolOptionProto
-           ThreadPoolOptionProto
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _ThreadPoolOptionProto'numThreads
-              (\ x__ y__ -> x__{_ThreadPoolOptionProto'numThreads = y__})
-
-instance Data.Default.Class.Default ThreadPoolOptionProto where
-        def
-          = ThreadPoolOptionProto{_ThreadPoolOptionProto'numThreads =
-                                    Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message ThreadPoolOptionProto where
-        descriptor
-          = let numThreads__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "num_threads"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional numThreads)
-                      :: Data.ProtoLens.FieldDescriptor ThreadPoolOptionProto
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, numThreads__field_descriptor)])
-                (Data.Map.fromList [("num_threads", numThreads__field_descriptor)])
-
-allocatorType ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "allocatorType" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-allocatorType
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allocatorType")
-
-allowGrowth ::
-            forall f s t a b . (Lens.Labels.HasLens "allowGrowth" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-allowGrowth
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowGrowth")
-
-allowSoftPlacement ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "allowSoftPlacement" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-allowSoftPlacement
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowSoftPlacement")
-
-buildCostModel ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "buildCostModel" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-buildCostModel
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "buildCostModel")
-
-buildCostModelAfter ::
-                    forall f s t a b .
-                      (Lens.Labels.HasLens "buildCostModelAfter" f s t a b) =>
-                      Lens.Family2.LensLike f s t a b
-buildCostModelAfter
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "buildCostModelAfter")
-
-costGraph ::
-          forall f s t a b . (Lens.Labels.HasLens "costGraph" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-costGraph
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "costGraph")
-
-debugOptions ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "debugOptions" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-debugOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugOptions")
-
-deferredDeletionBytes ::
-                      forall f s t a b .
-                        (Lens.Labels.HasLens "deferredDeletionBytes" f s t a b) =>
-                        Lens.Family2.LensLike f s t a b
-deferredDeletionBytes
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "deferredDeletionBytes")
-
-deviceCount ::
-            forall f s t a b . (Lens.Labels.HasLens "deviceCount" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-deviceCount
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceCount")
-
-deviceFilters ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "deviceFilters" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-deviceFilters
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deviceFilters")
-
-doCommonSubexpressionElimination ::
-                                 forall f s t a b .
-                                   (Lens.Labels.HasLens "doCommonSubexpressionElimination" f s t a
-                                      b) =>
-                                   Lens.Family2.LensLike f s t a b
-doCommonSubexpressionElimination
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "doCommonSubexpressionElimination")
-
-doConstantFolding ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "doConstantFolding" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-doConstantFolding
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doConstantFolding")
-
-doFunctionInlining ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "doFunctionInlining" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-doFunctionInlining
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doFunctionInlining")
-
-enableBfloat16Sendrecv ::
-                       forall f s t a b .
-                         (Lens.Labels.HasLens "enableBfloat16Sendrecv" f s t a b) =>
-                         Lens.Family2.LensLike f s t a b
-enableBfloat16Sendrecv
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "enableBfloat16Sendrecv")
-
-enableRecvScheduling ::
-                     forall f s t a b .
-                       (Lens.Labels.HasLens "enableRecvScheduling" f s t a b) =>
-                       Lens.Family2.LensLike f s t a b
-enableRecvScheduling
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "enableRecvScheduling")
-
-globalJitLevel ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "globalJitLevel" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-globalJitLevel
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "globalJitLevel")
-
-gpuOptions ::
-           forall f s t a b . (Lens.Labels.HasLens "gpuOptions" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-gpuOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "gpuOptions")
-
-graphOptions ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "graphOptions" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-graphOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "graphOptions")
-
-inferShapes ::
-            forall f s t a b . (Lens.Labels.HasLens "inferShapes" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-inferShapes
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inferShapes")
-
-interOpParallelismThreads ::
-                          forall f s t a b .
-                            (Lens.Labels.HasLens "interOpParallelismThreads" f s t a b) =>
-                            Lens.Family2.LensLike f s t a b
-interOpParallelismThreads
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "interOpParallelismThreads")
-
-interOpThreadPool ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "interOpThreadPool" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-interOpThreadPool
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "interOpThreadPool")
-
-intraOpParallelismThreads ::
-                          forall f s t a b .
-                            (Lens.Labels.HasLens "intraOpParallelismThreads" f s t a b) =>
-                            Lens.Family2.LensLike f s t a b
-intraOpParallelismThreads
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "intraOpParallelismThreads")
-
-key ::
-    forall f s t a b . (Lens.Labels.HasLens "key" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-key
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "key")
-
-logDevicePlacement ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "logDevicePlacement" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-logDevicePlacement
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "logDevicePlacement")
-
-maybe'costGraph ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "maybe'costGraph" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-maybe'costGraph
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'costGraph")
-
-maybe'debugOptions ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "maybe'debugOptions" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-maybe'debugOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'debugOptions")
-
-maybe'gpuOptions ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "maybe'gpuOptions" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-maybe'gpuOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'gpuOptions")
-
-maybe'graphOptions ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "maybe'graphOptions" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-maybe'graphOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'graphOptions")
-
-maybe'optimizerOptions ::
-                       forall f s t a b .
-                         (Lens.Labels.HasLens "maybe'optimizerOptions" f s t a b) =>
-                         Lens.Family2.LensLike f s t a b
-maybe'optimizerOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'optimizerOptions")
-
-maybe'rpcOptions ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "maybe'rpcOptions" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-maybe'rpcOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'rpcOptions")
-
-maybe'stepStats ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "maybe'stepStats" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-maybe'stepStats
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'stepStats")
-
-numThreads ::
-           forall f s t a b . (Lens.Labels.HasLens "numThreads" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-numThreads
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "numThreads")
-
-operationTimeoutInMs ::
-                     forall f s t a b .
-                       (Lens.Labels.HasLens "operationTimeoutInMs" f s t a b) =>
-                       Lens.Family2.LensLike f s t a b
-operationTimeoutInMs
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "operationTimeoutInMs")
-
-optLevel ::
-         forall f s t a b . (Lens.Labels.HasLens "optLevel" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-optLevel
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optLevel")
-
-optimizerOptions ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "optimizerOptions" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-optimizerOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optimizerOptions")
-
-outputPartitionGraphs ::
-                      forall f s t a b .
-                        (Lens.Labels.HasLens "outputPartitionGraphs" f s t a b) =>
-                        Lens.Family2.LensLike f s t a b
-outputPartitionGraphs
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "outputPartitionGraphs")
-
-partitionGraphs ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "partitionGraphs" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-partitionGraphs
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "partitionGraphs")
-
-perProcessGpuMemoryFraction ::
-                            forall f s t a b .
-                              (Lens.Labels.HasLens "perProcessGpuMemoryFraction" f s t a b) =>
-                              Lens.Family2.LensLike f s t a b
-perProcessGpuMemoryFraction
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "perProcessGpuMemoryFraction")
-
-placePrunedGraph ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "placePrunedGraph" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-placePrunedGraph
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "placePrunedGraph")
-
-placementPeriod ::
-                forall f s t a b .
-                  (Lens.Labels.HasLens "placementPeriod" f s t a b) =>
-                  Lens.Family2.LensLike f s t a b
-placementPeriod
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "placementPeriod")
-
-rpcOptions ::
-           forall f s t a b . (Lens.Labels.HasLens "rpcOptions" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-rpcOptions
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "rpcOptions")
-
-sessionInterOpThreadPool ::
-                         forall f s t a b .
-                           (Lens.Labels.HasLens "sessionInterOpThreadPool" f s t a b) =>
-                           Lens.Family2.LensLike f s t a b
-sessionInterOpThreadPool
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "sessionInterOpThreadPool")
-
-stepStats ::
-          forall f s t a b . (Lens.Labels.HasLens "stepStats" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-stepStats
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stepStats")
-
-timelineStep ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "timelineStep" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-timelineStep
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timelineStep")
-
-timeoutInMs ::
-            forall f s t a b . (Lens.Labels.HasLens "timeoutInMs" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-timeoutInMs
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "timeoutInMs")
-
-traceLevel ::
-           forall f s t a b . (Lens.Labels.HasLens "traceLevel" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-traceLevel
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "traceLevel")
-
-usePerSessionThreads ::
-                     forall f s t a b .
-                       (Lens.Labels.HasLens "usePerSessionThreads" f s t a b) =>
-                       Lens.Family2.LensLike f s t a b
-usePerSessionThreads
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "usePerSessionThreads")
-
-useRpcForInprocessMaster ::
-                         forall f s t a b .
-                           (Lens.Labels.HasLens "useRpcForInprocessMaster" f s t a b) =>
-                           Lens.Family2.LensLike f s t a b
-useRpcForInprocessMaster
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "useRpcForInprocessMaster")
-
-value ::
-      forall f s t a b . (Lens.Labels.HasLens "value" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-value
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
-
-visibleDeviceList ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "visibleDeviceList" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-visibleDeviceList
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "visibleDeviceList")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Protobuf/Debug.hs b/dist/build/autogen/Proto/Tensorflow/Core/Protobuf/Debug.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Protobuf/Debug.hs
+++ /dev/null
@@ -1,191 +0,0 @@
-{- This file was auto-generated from tensorflow/core/protobuf/debug.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Protobuf.Debug where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-
-data DebugOptions = DebugOptions{_DebugOptions'debugTensorWatchOpts
-                                 :: ![DebugTensorWatch]}
-                  deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ [DebugTensorWatch], b ~ [DebugTensorWatch],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "debugTensorWatchOpts" f DebugOptions
-           DebugOptions
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DebugOptions'debugTensorWatchOpts
-              (\ x__ y__ -> x__{_DebugOptions'debugTensorWatchOpts = y__})
-
-instance Data.Default.Class.Default DebugOptions where
-        def = DebugOptions{_DebugOptions'debugTensorWatchOpts = []}
-
-instance Data.ProtoLens.Message DebugOptions where
-        descriptor
-          = let debugTensorWatchOpts__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "debug_tensor_watch_opts"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor DebugTensorWatch)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         debugTensorWatchOpts)
-                      :: Data.ProtoLens.FieldDescriptor DebugOptions
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 4, debugTensorWatchOpts__field_descriptor)])
-                (Data.Map.fromList
-                   [("debug_tensor_watch_opts",
-                     debugTensorWatchOpts__field_descriptor)])
-
-data DebugTensorWatch = DebugTensorWatch{_DebugTensorWatch'nodeName
-                                         :: !Data.Text.Text,
-                                         _DebugTensorWatch'outputSlot :: !Data.Int.Int32,
-                                         _DebugTensorWatch'debugOps :: ![Data.Text.Text],
-                                         _DebugTensorWatch'debugUrls :: ![Data.Text.Text]}
-                      deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "nodeName" f DebugTensorWatch DebugTensorWatch
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DebugTensorWatch'nodeName
-              (\ x__ y__ -> x__{_DebugTensorWatch'nodeName = y__})
-
-instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "outputSlot" f DebugTensorWatch
-           DebugTensorWatch
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DebugTensorWatch'outputSlot
-              (\ x__ y__ -> x__{_DebugTensorWatch'outputSlot = y__})
-
-instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "debugOps" f DebugTensorWatch DebugTensorWatch
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DebugTensorWatch'debugOps
-              (\ x__ y__ -> x__{_DebugTensorWatch'debugOps = y__})
-
-instance (a ~ [Data.Text.Text], b ~ [Data.Text.Text],
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "debugUrls" f DebugTensorWatch DebugTensorWatch
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _DebugTensorWatch'debugUrls
-              (\ x__ y__ -> x__{_DebugTensorWatch'debugUrls = y__})
-
-instance Data.Default.Class.Default DebugTensorWatch where
-        def
-          = DebugTensorWatch{_DebugTensorWatch'nodeName =
-                               Data.ProtoLens.fieldDefault,
-                             _DebugTensorWatch'outputSlot = Data.ProtoLens.fieldDefault,
-                             _DebugTensorWatch'debugOps = [], _DebugTensorWatch'debugUrls = []}
-
-instance Data.ProtoLens.Message DebugTensorWatch where
-        descriptor
-          = let nodeName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "node_name"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional nodeName)
-                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
-                outputSlot__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "output_slot"
-                      (Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional outputSlot)
-                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
-                debugOps__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "debug_ops"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked debugOps)
-                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
-                debugUrls__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "debug_urls"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked debugUrls)
-                      :: Data.ProtoLens.FieldDescriptor DebugTensorWatch
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, nodeName__field_descriptor),
-                    (Data.ProtoLens.Tag 2, outputSlot__field_descriptor),
-                    (Data.ProtoLens.Tag 3, debugOps__field_descriptor),
-                    (Data.ProtoLens.Tag 4, debugUrls__field_descriptor)])
-                (Data.Map.fromList
-                   [("node_name", nodeName__field_descriptor),
-                    ("output_slot", outputSlot__field_descriptor),
-                    ("debug_ops", debugOps__field_descriptor),
-                    ("debug_urls", debugUrls__field_descriptor)])
-
-debugOps ::
-         forall f s t a b . (Lens.Labels.HasLens "debugOps" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-debugOps
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugOps")
-
-debugTensorWatchOpts ::
-                     forall f s t a b .
-                       (Lens.Labels.HasLens "debugTensorWatchOpts" f s t a b) =>
-                       Lens.Family2.LensLike f s t a b
-debugTensorWatchOpts
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "debugTensorWatchOpts")
-
-debugUrls ::
-          forall f s t a b . (Lens.Labels.HasLens "debugUrls" f s t a b) =>
-            Lens.Family2.LensLike f s t a b
-debugUrls
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "debugUrls")
-
-nodeName ::
-         forall f s t a b . (Lens.Labels.HasLens "nodeName" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-nodeName
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nodeName")
-
-outputSlot ::
-           forall f s t a b . (Lens.Labels.HasLens "outputSlot" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-outputSlot
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputSlot")
diff --git a/dist/build/autogen/Proto/Tensorflow/Core/Util/Event.hs b/dist/build/autogen/Proto/Tensorflow/Core/Util/Event.hs
deleted file mode 100644
--- a/dist/build/autogen/Proto/Tensorflow/Core/Util/Event.hs
+++ /dev/null
@@ -1,738 +0,0 @@
-{- This file was auto-generated from tensorflow/core/util/event.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
-  FlexibleInstances, PatternSynonyms, MagicHash #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-module Proto.Tensorflow.Core.Util.Event where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens.Reexport.Data.ProtoLens
-       as Data.ProtoLens
-import qualified
-       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
-       as Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Reexport.Lens.Family2
-       as Lens.Family2
-import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
-       as Lens.Family2.Unchecked
-import qualified Data.ProtoLens.Reexport.Data.Default.Class
-       as Data.Default.Class
-import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
-import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
-import qualified Data.ProtoLens.Reexport.Data.ByteString
-       as Data.ByteString
-import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels
-import qualified Proto.Tensorflow.Core.Framework.Summary
-
-data Event = Event{_Event'wallTime :: !Prelude.Double,
-                   _Event'step :: !Data.Int.Int64,
-                   _Event'fileVersion :: !(Prelude.Maybe Data.Text.Text),
-                   _Event'graphDef :: !(Prelude.Maybe Data.ByteString.ByteString),
-                   _Event'summary ::
-                   !(Prelude.Maybe Proto.Tensorflow.Core.Framework.Summary.Summary),
-                   _Event'logMessage :: !(Prelude.Maybe LogMessage),
-                   _Event'sessionLog :: !(Prelude.Maybe SessionLog),
-                   _Event'taggedRunMetadata :: !(Prelude.Maybe TaggedRunMetadata),
-                   _Event'metaGraphDef :: !(Prelude.Maybe Data.ByteString.ByteString)}
-           deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Prelude.Double, b ~ Prelude.Double,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "wallTime" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'wallTime
-              (\ x__ y__ -> x__{_Event'wallTime = y__})
-
-instance (a ~ Data.Int.Int64, b ~ Data.Int.Int64,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "step" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'step
-              (\ x__ y__ -> x__{_Event'step = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "fileVersion" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'fileVersion
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.Text.Text,
-          b ~ Prelude.Maybe Data.Text.Text, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'fileVersion" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'fileVersion
-              (\ x__ y__ -> x__{_Event'fileVersion = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "graphDef" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'graphDef
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
-          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'graphDef" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'graphDef
-              (\ x__ y__ -> x__{_Event'graphDef = y__})
-
-instance (a ~ Proto.Tensorflow.Core.Framework.Summary.Summary,
-          b ~ Proto.Tensorflow.Core.Framework.Summary.Summary,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "summary" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'summary
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~
-            Prelude.Maybe Proto.Tensorflow.Core.Framework.Summary.Summary,
-          b ~ Prelude.Maybe Proto.Tensorflow.Core.Framework.Summary.Summary,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'summary" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'summary
-              (\ x__ y__ -> x__{_Event'summary = y__})
-
-instance (a ~ LogMessage, b ~ LogMessage, Prelude.Functor f) =>
-         Lens.Labels.HasLens "logMessage" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'logMessage
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe LogMessage,
-          b ~ Prelude.Maybe LogMessage, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'logMessage" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'logMessage
-              (\ x__ y__ -> x__{_Event'logMessage = y__})
-
-instance (a ~ SessionLog, b ~ SessionLog, Prelude.Functor f) =>
-         Lens.Labels.HasLens "sessionLog" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'sessionLog
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe SessionLog,
-          b ~ Prelude.Maybe SessionLog, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'sessionLog" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'sessionLog
-              (\ x__ y__ -> x__{_Event'sessionLog = y__})
-
-instance (a ~ TaggedRunMetadata, b ~ TaggedRunMetadata,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "taggedRunMetadata" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'taggedRunMetadata
-              (Data.ProtoLens.maybeLens Data.Default.Class.def)
-
-instance (a ~ Prelude.Maybe TaggedRunMetadata,
-          b ~ Prelude.Maybe TaggedRunMetadata, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'taggedRunMetadata" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'taggedRunMetadata
-              (\ x__ y__ -> x__{_Event'taggedRunMetadata = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "metaGraphDef" f Event Event a b
-         where
-        lensOf _
-          = (Prelude..) maybe'metaGraphDef
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-
-instance (a ~ Prelude.Maybe Data.ByteString.ByteString,
-          b ~ Prelude.Maybe Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "maybe'metaGraphDef" f Event Event a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _Event'metaGraphDef
-              (\ x__ y__ -> x__{_Event'metaGraphDef = y__})
-
-instance Data.Default.Class.Default Event where
-        def
-          = Event{_Event'wallTime = Data.ProtoLens.fieldDefault,
-                  _Event'step = Data.ProtoLens.fieldDefault,
-                  _Event'fileVersion = Prelude.Nothing,
-                  _Event'graphDef = Prelude.Nothing,
-                  _Event'summary = Prelude.Nothing,
-                  _Event'logMessage = Prelude.Nothing,
-                  _Event'sessionLog = Prelude.Nothing,
-                  _Event'taggedRunMetadata = Prelude.Nothing,
-                  _Event'metaGraphDef = Prelude.Nothing}
-
-instance Data.ProtoLens.Message Event where
-        descriptor
-          = let wallTime__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "wall_time"
-                      (Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional wallTime)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                step__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "step"
-                      (Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional step)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                fileVersion__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "file_version"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField maybe'fileVersion)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                graphDef__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "graph_def"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.OptionalField maybe'graphDef)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                summary__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "summary"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Tensorflow.Core.Framework.Summary.Summary)
-                      (Data.ProtoLens.OptionalField maybe'summary)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                logMessage__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "log_message"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor LogMessage)
-                      (Data.ProtoLens.OptionalField maybe'logMessage)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                sessionLog__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "session_log"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor SessionLog)
-                      (Data.ProtoLens.OptionalField maybe'sessionLog)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                taggedRunMetadata__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tagged_run_metadata"
-                      (Data.ProtoLens.MessageField ::
-                         Data.ProtoLens.FieldTypeDescriptor TaggedRunMetadata)
-                      (Data.ProtoLens.OptionalField maybe'taggedRunMetadata)
-                      :: Data.ProtoLens.FieldDescriptor Event
-                metaGraphDef__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "meta_graph_def"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.OptionalField maybe'metaGraphDef)
-                      :: Data.ProtoLens.FieldDescriptor Event
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, wallTime__field_descriptor),
-                    (Data.ProtoLens.Tag 2, step__field_descriptor),
-                    (Data.ProtoLens.Tag 3, fileVersion__field_descriptor),
-                    (Data.ProtoLens.Tag 4, graphDef__field_descriptor),
-                    (Data.ProtoLens.Tag 5, summary__field_descriptor),
-                    (Data.ProtoLens.Tag 6, logMessage__field_descriptor),
-                    (Data.ProtoLens.Tag 7, sessionLog__field_descriptor),
-                    (Data.ProtoLens.Tag 8, taggedRunMetadata__field_descriptor),
-                    (Data.ProtoLens.Tag 9, metaGraphDef__field_descriptor)])
-                (Data.Map.fromList
-                   [("wall_time", wallTime__field_descriptor),
-                    ("step", step__field_descriptor),
-                    ("file_version", fileVersion__field_descriptor),
-                    ("graph_def", graphDef__field_descriptor),
-                    ("summary", summary__field_descriptor),
-                    ("log_message", logMessage__field_descriptor),
-                    ("session_log", sessionLog__field_descriptor),
-                    ("tagged_run_metadata", taggedRunMetadata__field_descriptor),
-                    ("meta_graph_def", metaGraphDef__field_descriptor)])
-
-data LogMessage = LogMessage{_LogMessage'level ::
-                             !LogMessage'Level,
-                             _LogMessage'message :: !Data.Text.Text}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ LogMessage'Level, b ~ LogMessage'Level,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "level" f LogMessage LogMessage a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _LogMessage'level
-              (\ x__ y__ -> x__{_LogMessage'level = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "message" f LogMessage LogMessage a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _LogMessage'message
-              (\ x__ y__ -> x__{_LogMessage'message = y__})
-
-instance Data.Default.Class.Default LogMessage where
-        def
-          = LogMessage{_LogMessage'level = Data.Default.Class.def,
-                       _LogMessage'message = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message LogMessage where
-        descriptor
-          = let level__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "level"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor LogMessage'Level)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional level)
-                      :: Data.ProtoLens.FieldDescriptor LogMessage
-                message__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "message"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional message)
-                      :: Data.ProtoLens.FieldDescriptor LogMessage
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, level__field_descriptor),
-                    (Data.ProtoLens.Tag 2, message__field_descriptor)])
-                (Data.Map.fromList
-                   [("level", level__field_descriptor),
-                    ("message", message__field_descriptor)])
-
-data LogMessage'Level = LogMessage'UNKNOWN
-                      | LogMessage'DEBUG
-                      | LogMessage'INFO
-                      | LogMessage'WARN
-                      | LogMessage'ERROR
-                      | LogMessage'FATAL
-                      deriving (Prelude.Show, Prelude.Eq)
-
-instance Data.Default.Class.Default LogMessage'Level where
-        def = LogMessage'UNKNOWN
-
-instance Data.ProtoLens.FieldDefault LogMessage'Level where
-        fieldDefault = LogMessage'UNKNOWN
-
-instance Data.ProtoLens.MessageEnum LogMessage'Level where
-        maybeToEnum 0 = Prelude.Just LogMessage'UNKNOWN
-        maybeToEnum 10 = Prelude.Just LogMessage'DEBUG
-        maybeToEnum 20 = Prelude.Just LogMessage'INFO
-        maybeToEnum 30 = Prelude.Just LogMessage'WARN
-        maybeToEnum 40 = Prelude.Just LogMessage'ERROR
-        maybeToEnum 50 = Prelude.Just LogMessage'FATAL
-        maybeToEnum _ = Prelude.Nothing
-        showEnum LogMessage'UNKNOWN = "UNKNOWN"
-        showEnum LogMessage'DEBUG = "DEBUG"
-        showEnum LogMessage'INFO = "INFO"
-        showEnum LogMessage'WARN = "WARN"
-        showEnum LogMessage'ERROR = "ERROR"
-        showEnum LogMessage'FATAL = "FATAL"
-        readEnum "UNKNOWN" = Prelude.Just LogMessage'UNKNOWN
-        readEnum "DEBUG" = Prelude.Just LogMessage'DEBUG
-        readEnum "INFO" = Prelude.Just LogMessage'INFO
-        readEnum "WARN" = Prelude.Just LogMessage'WARN
-        readEnum "ERROR" = Prelude.Just LogMessage'ERROR
-        readEnum "FATAL" = Prelude.Just LogMessage'FATAL
-        readEnum _ = Prelude.Nothing
-
-instance Prelude.Enum LogMessage'Level where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum Level: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum LogMessage'UNKNOWN = 0
-        fromEnum LogMessage'DEBUG = 10
-        fromEnum LogMessage'INFO = 20
-        fromEnum LogMessage'WARN = 30
-        fromEnum LogMessage'ERROR = 40
-        fromEnum LogMessage'FATAL = 50
-        succ LogMessage'FATAL
-          = Prelude.error
-              "LogMessage'Level.succ: bad argument LogMessage'FATAL. This value would be out of bounds."
-        succ LogMessage'UNKNOWN = LogMessage'DEBUG
-        succ LogMessage'DEBUG = LogMessage'INFO
-        succ LogMessage'INFO = LogMessage'WARN
-        succ LogMessage'WARN = LogMessage'ERROR
-        succ LogMessage'ERROR = LogMessage'FATAL
-        pred LogMessage'UNKNOWN
-          = Prelude.error
-              "LogMessage'Level.pred: bad argument LogMessage'UNKNOWN. This value would be out of bounds."
-        pred LogMessage'DEBUG = LogMessage'UNKNOWN
-        pred LogMessage'INFO = LogMessage'DEBUG
-        pred LogMessage'WARN = LogMessage'INFO
-        pred LogMessage'ERROR = LogMessage'WARN
-        pred LogMessage'FATAL = LogMessage'ERROR
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-
-instance Prelude.Bounded LogMessage'Level where
-        minBound = LogMessage'UNKNOWN
-        maxBound = LogMessage'FATAL
-
-data SessionLog = SessionLog{_SessionLog'status ::
-                             !SessionLog'SessionStatus,
-                             _SessionLog'checkpointPath :: !Data.Text.Text,
-                             _SessionLog'msg :: !Data.Text.Text}
-                deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ SessionLog'SessionStatus,
-          b ~ SessionLog'SessionStatus, Prelude.Functor f) =>
-         Lens.Labels.HasLens "status" f SessionLog SessionLog a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _SessionLog'status
-              (\ x__ y__ -> x__{_SessionLog'status = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "checkpointPath" f SessionLog SessionLog a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _SessionLog'checkpointPath
-              (\ x__ y__ -> x__{_SessionLog'checkpointPath = y__})
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "msg" f SessionLog SessionLog a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _SessionLog'msg
-              (\ x__ y__ -> x__{_SessionLog'msg = y__})
-
-instance Data.Default.Class.Default SessionLog where
-        def
-          = SessionLog{_SessionLog'status = Data.Default.Class.def,
-                       _SessionLog'checkpointPath = Data.ProtoLens.fieldDefault,
-                       _SessionLog'msg = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message SessionLog where
-        descriptor
-          = let status__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "status"
-                      (Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor SessionLog'SessionStatus)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional status)
-                      :: Data.ProtoLens.FieldDescriptor SessionLog
-                checkpointPath__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "checkpoint_path"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional checkpointPath)
-                      :: Data.ProtoLens.FieldDescriptor SessionLog
-                msg__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "msg"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional msg)
-                      :: Data.ProtoLens.FieldDescriptor SessionLog
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, status__field_descriptor),
-                    (Data.ProtoLens.Tag 2, checkpointPath__field_descriptor),
-                    (Data.ProtoLens.Tag 3, msg__field_descriptor)])
-                (Data.Map.fromList
-                   [("status", status__field_descriptor),
-                    ("checkpoint_path", checkpointPath__field_descriptor),
-                    ("msg", msg__field_descriptor)])
-
-data SessionLog'SessionStatus = SessionLog'STATUS_UNSPECIFIED
-                              | SessionLog'START
-                              | SessionLog'STOP
-                              | SessionLog'CHECKPOINT
-                              deriving (Prelude.Show, Prelude.Eq)
-
-instance Data.Default.Class.Default SessionLog'SessionStatus where
-        def = SessionLog'STATUS_UNSPECIFIED
-
-instance Data.ProtoLens.FieldDefault SessionLog'SessionStatus where
-        fieldDefault = SessionLog'STATUS_UNSPECIFIED
-
-instance Data.ProtoLens.MessageEnum SessionLog'SessionStatus where
-        maybeToEnum 0 = Prelude.Just SessionLog'STATUS_UNSPECIFIED
-        maybeToEnum 1 = Prelude.Just SessionLog'START
-        maybeToEnum 2 = Prelude.Just SessionLog'STOP
-        maybeToEnum 3 = Prelude.Just SessionLog'CHECKPOINT
-        maybeToEnum _ = Prelude.Nothing
-        showEnum SessionLog'STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED"
-        showEnum SessionLog'START = "START"
-        showEnum SessionLog'STOP = "STOP"
-        showEnum SessionLog'CHECKPOINT = "CHECKPOINT"
-        readEnum "STATUS_UNSPECIFIED"
-          = Prelude.Just SessionLog'STATUS_UNSPECIFIED
-        readEnum "START" = Prelude.Just SessionLog'START
-        readEnum "STOP" = Prelude.Just SessionLog'STOP
-        readEnum "CHECKPOINT" = Prelude.Just SessionLog'CHECKPOINT
-        readEnum _ = Prelude.Nothing
-
-instance Prelude.Enum SessionLog'SessionStatus where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum SessionStatus: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum SessionLog'STATUS_UNSPECIFIED = 0
-        fromEnum SessionLog'START = 1
-        fromEnum SessionLog'STOP = 2
-        fromEnum SessionLog'CHECKPOINT = 3
-        succ SessionLog'CHECKPOINT
-          = Prelude.error
-              "SessionLog'SessionStatus.succ: bad argument SessionLog'CHECKPOINT. This value would be out of bounds."
-        succ SessionLog'STATUS_UNSPECIFIED = SessionLog'START
-        succ SessionLog'START = SessionLog'STOP
-        succ SessionLog'STOP = SessionLog'CHECKPOINT
-        pred SessionLog'STATUS_UNSPECIFIED
-          = Prelude.error
-              "SessionLog'SessionStatus.pred: bad argument SessionLog'STATUS_UNSPECIFIED. This value would be out of bounds."
-        pred SessionLog'START = SessionLog'STATUS_UNSPECIFIED
-        pred SessionLog'STOP = SessionLog'START
-        pred SessionLog'CHECKPOINT = SessionLog'STOP
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-
-instance Prelude.Bounded SessionLog'SessionStatus where
-        minBound = SessionLog'STATUS_UNSPECIFIED
-        maxBound = SessionLog'CHECKPOINT
-
-data TaggedRunMetadata = TaggedRunMetadata{_TaggedRunMetadata'tag
-                                           :: !Data.Text.Text,
-                                           _TaggedRunMetadata'runMetadata ::
-                                           !Data.ByteString.ByteString}
-                       deriving (Prelude.Show, Prelude.Eq)
-
-instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
-          Prelude.Functor f) =>
-         Lens.Labels.HasLens "tag" f TaggedRunMetadata TaggedRunMetadata a b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TaggedRunMetadata'tag
-              (\ x__ y__ -> x__{_TaggedRunMetadata'tag = y__})
-
-instance (a ~ Data.ByteString.ByteString,
-          b ~ Data.ByteString.ByteString, Prelude.Functor f) =>
-         Lens.Labels.HasLens "runMetadata" f TaggedRunMetadata
-           TaggedRunMetadata
-           a
-           b
-         where
-        lensOf _
-          = Lens.Family2.Unchecked.lens _TaggedRunMetadata'runMetadata
-              (\ x__ y__ -> x__{_TaggedRunMetadata'runMetadata = y__})
-
-instance Data.Default.Class.Default TaggedRunMetadata where
-        def
-          = TaggedRunMetadata{_TaggedRunMetadata'tag =
-                                Data.ProtoLens.fieldDefault,
-                              _TaggedRunMetadata'runMetadata = Data.ProtoLens.fieldDefault}
-
-instance Data.ProtoLens.Message TaggedRunMetadata where
-        descriptor
-          = let tag__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "tag"
-                      (Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional tag)
-                      :: Data.ProtoLens.FieldDescriptor TaggedRunMetadata
-                runMetadata__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "run_metadata"
-                      (Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional runMetadata)
-                      :: Data.ProtoLens.FieldDescriptor TaggedRunMetadata
-              in
-              Data.ProtoLens.MessageDescriptor
-                (Data.Map.fromList
-                   [(Data.ProtoLens.Tag 1, tag__field_descriptor),
-                    (Data.ProtoLens.Tag 2, runMetadata__field_descriptor)])
-                (Data.Map.fromList
-                   [("tag", tag__field_descriptor),
-                    ("run_metadata", runMetadata__field_descriptor)])
-
-checkpointPath ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "checkpointPath" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-checkpointPath
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "checkpointPath")
-
-fileVersion ::
-            forall f s t a b . (Lens.Labels.HasLens "fileVersion" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-fileVersion
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fileVersion")
-
-graphDef ::
-         forall f s t a b . (Lens.Labels.HasLens "graphDef" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-graphDef
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "graphDef")
-
-level ::
-      forall f s t a b . (Lens.Labels.HasLens "level" f s t a b) =>
-        Lens.Family2.LensLike f s t a b
-level
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "level")
-
-logMessage ::
-           forall f s t a b . (Lens.Labels.HasLens "logMessage" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-logMessage
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "logMessage")
-
-maybe'fileVersion ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "maybe'fileVersion" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-maybe'fileVersion
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'fileVersion")
-
-maybe'graphDef ::
-               forall f s t a b .
-                 (Lens.Labels.HasLens "maybe'graphDef" f s t a b) =>
-                 Lens.Family2.LensLike f s t a b
-maybe'graphDef
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'graphDef")
-
-maybe'logMessage ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "maybe'logMessage" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-maybe'logMessage
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'logMessage")
-
-maybe'metaGraphDef ::
-                   forall f s t a b .
-                     (Lens.Labels.HasLens "maybe'metaGraphDef" f s t a b) =>
-                     Lens.Family2.LensLike f s t a b
-maybe'metaGraphDef
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'metaGraphDef")
-
-maybe'sessionLog ::
-                 forall f s t a b .
-                   (Lens.Labels.HasLens "maybe'sessionLog" f s t a b) =>
-                   Lens.Family2.LensLike f s t a b
-maybe'sessionLog
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'sessionLog")
-
-maybe'summary ::
-              forall f s t a b .
-                (Lens.Labels.HasLens "maybe'summary" f s t a b) =>
-                Lens.Family2.LensLike f s t a b
-maybe'summary
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'summary")
-
-maybe'taggedRunMetadata ::
-                        forall f s t a b .
-                          (Lens.Labels.HasLens "maybe'taggedRunMetadata" f s t a b) =>
-                          Lens.Family2.LensLike f s t a b
-maybe'taggedRunMetadata
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'taggedRunMetadata")
-
-message ::
-        forall f s t a b . (Lens.Labels.HasLens "message" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-message
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "message")
-
-metaGraphDef ::
-             forall f s t a b .
-               (Lens.Labels.HasLens "metaGraphDef" f s t a b) =>
-               Lens.Family2.LensLike f s t a b
-metaGraphDef
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "metaGraphDef")
-
-msg ::
-    forall f s t a b . (Lens.Labels.HasLens "msg" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-msg
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "msg")
-
-runMetadata ::
-            forall f s t a b . (Lens.Labels.HasLens "runMetadata" f s t a b) =>
-              Lens.Family2.LensLike f s t a b
-runMetadata
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "runMetadata")
-
-sessionLog ::
-           forall f s t a b . (Lens.Labels.HasLens "sessionLog" f s t a b) =>
-             Lens.Family2.LensLike f s t a b
-sessionLog
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sessionLog")
-
-status ::
-       forall f s t a b . (Lens.Labels.HasLens "status" f s t a b) =>
-         Lens.Family2.LensLike f s t a b
-status
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "status")
-
-step ::
-     forall f s t a b . (Lens.Labels.HasLens "step" f s t a b) =>
-       Lens.Family2.LensLike f s t a b
-step
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "step")
-
-summary ::
-        forall f s t a b . (Lens.Labels.HasLens "summary" f s t a b) =>
-          Lens.Family2.LensLike f s t a b
-summary
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "summary")
-
-tag ::
-    forall f s t a b . (Lens.Labels.HasLens "tag" f s t a b) =>
-      Lens.Family2.LensLike f s t a b
-tag
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "tag")
-
-taggedRunMetadata ::
-                  forall f s t a b .
-                    (Lens.Labels.HasLens "taggedRunMetadata" f s t a b) =>
-                    Lens.Family2.LensLike f s t a b
-taggedRunMetadata
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "taggedRunMetadata")
-
-wallTime ::
-         forall f s t a b . (Lens.Labels.HasLens "wallTime" f s t a b) =>
-           Lens.Family2.LensLike f s t a b
-wallTime
-  = Lens.Labels.lensOf
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "wallTime")
diff --git a/tensorflow-proto.cabal b/tensorflow-proto.cabal
--- a/tensorflow-proto.cabal
+++ b/tensorflow-proto.cabal
@@ -1,5 +1,5 @@
 name:                tensorflow-proto
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            TensorFlow protocol buffers.
 description:         Please see README.md
 homepage:            https://github.com/tensorflow/haskell#readme
@@ -11,32 +11,56 @@
 category:            Machine Learning
 build-type:          Custom
 cabal-version:       >=1.24
-extra-source-files:  third_party/tensorflow/tensorflow/core/framework/*.proto
-                   , third_party/tensorflow/tensorflow/core/protobuf/config.proto
-                   , third_party/tensorflow/tensorflow/core/protobuf/debug.proto
-                   , third_party/tensorflow/tensorflow/core/util/event.proto
+extra-source-files:  third_party/tensorflow/tensorflow/core/example/*.proto
+                   , third_party/tensorflow/tensorflow/core/framework/*.proto
+                   , third_party/tensorflow/tensorflow/core/lib/core/error_codes.proto
+                   , third_party/tensorflow/tensorflow/core/protobuf/*.proto
+                   , third_party/tensorflow/tensorflow/core/util/*.proto
 
 library
-  exposed-modules:     Proto.Tensorflow.Core.Framework.AttrValue
+  exposed-modules:     Proto.Tensorflow.Core.Example.Example
+                     , Proto.Tensorflow.Core.Example.ExampleParserConfiguration
+                     , Proto.Tensorflow.Core.Example.Feature
+                     , Proto.Tensorflow.Core.Framework.AllocationDescription
+                     , Proto.Tensorflow.Core.Framework.AttrValue
+                     , Proto.Tensorflow.Core.Framework.CostGraph
+                     , Proto.Tensorflow.Core.Framework.DeviceAttributes
+                     , Proto.Tensorflow.Core.Framework.Function
                      , Proto.Tensorflow.Core.Framework.Graph
+                     , Proto.Tensorflow.Core.Framework.KernelDef
+                     , Proto.Tensorflow.Core.Framework.LogMemory
                      , Proto.Tensorflow.Core.Framework.NodeDef
                      , Proto.Tensorflow.Core.Framework.OpDef
                      , Proto.Tensorflow.Core.Framework.ResourceHandle
+                     , Proto.Tensorflow.Core.Framework.StepStats
                      , Proto.Tensorflow.Core.Framework.Summary
                      , Proto.Tensorflow.Core.Framework.Tensor
+                     , Proto.Tensorflow.Core.Framework.TensorDescription
                      , Proto.Tensorflow.Core.Framework.TensorShape
+                     , Proto.Tensorflow.Core.Framework.TensorSlice
                      , Proto.Tensorflow.Core.Framework.Types
-                     , Proto.Tensorflow.Core.Protobuf.Config
-                     , Proto.Tensorflow.Core.Util.Event
-  other-modules:       Proto.Tensorflow.Core.Framework.AllocationDescription
-                     , Proto.Tensorflow.Core.Framework.CostGraph
-                     , Proto.Tensorflow.Core.Framework.Function
-                     , Proto.Tensorflow.Core.Framework.StepStats
-                     , Proto.Tensorflow.Core.Framework.TensorDescription
+                     , Proto.Tensorflow.Core.Framework.Variable
                      , Proto.Tensorflow.Core.Framework.Versions
+                     , Proto.Tensorflow.Core.Lib.Core.ErrorCodes
+                     , Proto.Tensorflow.Core.Protobuf.Cluster
+                     , Proto.Tensorflow.Core.Protobuf.Config
+                     , Proto.Tensorflow.Core.Protobuf.ControlFlow
                      , Proto.Tensorflow.Core.Protobuf.Debug
-  build-depends:  proto-lens == 0.2.*
-                , proto-lens-protoc == 0.2.*
+                     , Proto.Tensorflow.Core.Protobuf.MetaGraph
+                     , Proto.Tensorflow.Core.Protobuf.NamedTensor
+                     , Proto.Tensorflow.Core.Protobuf.QueueRunner
+                     , Proto.Tensorflow.Core.Protobuf.RewriterConfig
+                     , Proto.Tensorflow.Core.Protobuf.SavedModel
+                     , Proto.Tensorflow.Core.Protobuf.Saver
+                     , Proto.Tensorflow.Core.Protobuf.TensorBundle
+                     , Proto.Tensorflow.Core.Protobuf.TensorflowServer
+                     , Proto.Tensorflow.Core.Util.Event
+                     , Proto.Tensorflow.Core.Util.MemmappedFileSystem
+                     , Proto.Tensorflow.Core.Util.SavedTensorSlice
+                     , Proto.Tensorflow.Core.Util.TestLog
+  build-depends:  proto-lens >= 0.2.2 && < 0.3
+                , proto-lens-protoc >= 0.2.2.1 && < 0.3
+                , proto-lens-protobuf-types == 0.2.*
                 , base >= 4.7 && < 5
   default-language:    Haskell2010
   include-dirs: .
diff --git a/third_party/tensorflow/tensorflow/core/example/example.proto b/third_party/tensorflow/tensorflow/core/example/example.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/example/example.proto
@@ -0,0 +1,295 @@
+// Protocol messages for describing input data Examples for machine learning
+// model training or inference.
+syntax = "proto3";
+
+import "tensorflow/core/example/feature.proto";
+option cc_enable_arenas = true;
+option java_outer_classname = "ExampleProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.example";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/example";
+package tensorflow;
+
+// An Example is a mostly-normalized data format for storing data for
+// training and inference.  It contains a key-value store (features); where
+// each key (string) maps to a Feature message (which is oneof packed BytesList,
+// FloatList, or Int64List).  This flexible and compact format allows the
+// storage of large amounts of typed data, but requires that the data shape
+// and use be determined by the configuration files and parsers that are used to
+// read and write this format.  That is, the Example is mostly *not* a
+// self-describing format.  In TensorFlow, Examples are read in row-major
+// format, so any configuration that describes data with rank-2 or above
+// should keep this in mind.  For example, to store an M x N matrix of Bytes,
+// the BytesList must contain M*N bytes, with M rows of N contiguous values
+// each.  That is, the BytesList value must store the matrix as:
+//     .... row 0 .... .... row 1 .... // ...........  // ... row M-1 ....
+//
+// An Example for a movie recommendation application:
+//   features {
+//     feature {
+//       key: "age"
+//       value { float_list {
+//         value: 29.0
+//       }}
+//     }
+//     feature {
+//       key: "movie"
+//       value { bytes_list {
+//         value: "The Shawshank Redemption"
+//         value: "Fight Club"
+//       }}
+//     }
+//     feature {
+//       key: "movie_ratings"
+//       value { float_list {
+//         value: 9.0
+//         value: 9.7
+//       }}
+//     }
+//     feature {
+//       key: "suggestion"
+//       value { bytes_list {
+//         value: "Inception"
+//       }}
+//     }
+//     # Note that this feature exists to be used as a label in training.
+//     # E.g., if training a logistic regression model to predict purchase
+//     # probability in our learning tool we would set the label feature to
+//     # "suggestion_purchased".
+//     feature {
+//       key: "suggestion_purchased"
+//       value { float_list {
+//         value: 1.0
+//       }}
+//     }
+//     # Similar to "suggestion_purchased" above this feature exists to be used
+//     # as a label in training.
+//     # E.g., if training a linear regression model to predict purchase
+//     # price in our learning tool we would set the label feature to
+//     # "purchase_price".
+//     feature {
+//       key: "purchase_price"
+//       value { float_list {
+//         value: 9.99
+//       }}
+//     }
+//  }
+//
+// A conformant Example data set obeys the following conventions:
+//   - If a Feature K exists in one example with data type T, it must be of
+//       type T in all other examples when present. It may be omitted.
+//   - The number of instances of Feature K list data may vary across examples,
+//       depending on the requirements of the model.
+//   - If a Feature K doesn't exist in an example, a K-specific default will be
+//       used, if configured.
+//   - If a Feature K exists in an example but contains no items, the intent
+//       is considered to be an empty tensor and no default will be used.
+
+message Example {
+  Features features = 1;
+};
+
+// A SequenceExample is an Example representing one or more sequences, and
+// some context.  The context contains features which apply to the entire
+// example. The feature_lists contain a key, value map where each key is
+// associated with a repeated set of Features (a FeatureList).
+// A FeatureList thus represents the values of a feature identified by its key
+// over time / frames.
+//
+// Below is a SequenceExample for a movie recommendation application recording a
+// sequence of ratings by a user. The time-independent features ("locale",
+// "age", "favorites") describing the user are part of the context. The sequence
+// of movies the user rated are part of the feature_lists. For each movie in the
+// sequence we have information on its name and actors and the user's rating.
+// This information is recorded in three separate feature_list(s).
+// In the example below there are only two movies. All three feature_list(s),
+// namely "movie_ratings", "movie_names", and "actors" have a feature value for
+// both movies. Note, that "actors" is itself a bytes_list with multiple
+// strings per movie.
+//
+// context: {
+//   feature: {
+//     key  : "locale"
+//     value: {
+//       bytes_list: {
+//         value: [ "pt_BR" ]
+//       }
+//     }
+//   }
+//   feature: {
+//     key  : "age"
+//     value: {
+//       float_list: {
+//         value: [ 19.0 ]
+//       }
+//     }
+//   }
+//   feature: {
+//     key  : "favorites"
+//     value: {
+//       bytes_list: {
+//         value: [ "Majesty Rose", "Savannah Outen", "One Direction" ]
+//       }
+//     }
+//   }
+// }
+// feature_lists: {
+//   feature_list: {
+//     key  : "movie_ratings"
+//     value: {
+//       feature: {
+//         float_list: {
+//           value: [ 4.5 ]
+//         }
+//       }
+//       feature: {
+//         float_list: {
+//           value: [ 5.0 ]
+//         }
+//       }
+//     }
+//   }
+//   feature_list: {
+//     key  : "movie_names"
+//     value: {
+//       feature: {
+//         bytes_list: {
+//           value: [ "The Shawshank Redemption" ]
+//         }
+//       }
+//       feature: {
+//         bytes_list: {
+//           value: [ "Fight Club" ]
+//         }
+//       }
+//     }
+//   }
+//   feature_list: {
+//     key  : "actors"
+//     value: {
+//       feature: {
+//         bytes_list: {
+//           value: [ "Tim Robbins", "Morgan Freeman" ]
+//         }
+//       }
+//       feature: {
+//         bytes_list: {
+//           value: [ "Brad Pitt", "Edward Norton", "Helena Bonham Carter" ]
+//         }
+//       }
+//     }
+//   }
+// }
+//
+// A conformant SequenceExample data set obeys the following conventions:
+//
+// Context:
+//   - All conformant context features K must obey the same conventions as
+//     a conformant Example's features (see above).
+// Feature lists:
+//   - A FeatureList L may be missing in an example; it is up to the
+//     parser configuration to determine if this is allowed or considered
+//     an empty list (zero length).
+//   - If a FeatureList L exists, it may be empty (zero length).
+//   - If a FeatureList L is non-empty, all features within the FeatureList
+//     must have the same data type T. Even across SequenceExamples, the type T
+//     of the FeatureList identified by the same key must be the same. An entry
+//     without any values may serve as an empty feature.
+//   - If a FeatureList L is non-empty, it is up to the parser configuration
+//     to determine if all features within the FeatureList must
+//     have the same size.  The same holds for this FeatureList across multiple
+//     examples.
+//
+// Examples of conformant and non-conformant examples' FeatureLists:
+//
+// Conformant FeatureLists:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } } }
+//    } }
+//
+// Non-conformant FeatureLists (mismatched types):
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { int64_list: { value: [ 5 ] } } }
+//    } }
+//
+// Conditionally conformant FeatureLists, the parser configuration determines
+// if the feature sizes must match:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0, 6.0 ] } } }
+//    } }
+//
+// Conformant pair of SequenceExample
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } } }
+//    } }
+// and:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } }
+//               feature: { float_list: { value: [ 2.0 ] } } }
+//    } }
+//
+// Conformant pair of SequenceExample
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } } }
+//    } }
+// and:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { }
+//    } }
+//
+// Conditionally conformant pair of SequenceExample, the parser configuration
+// determines if the second feature_lists is consistent (zero-length) or
+// invalid (missing "movie_ratings"):
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } } }
+//    } }
+// and:
+//    feature_lists: { }
+//
+// Non-conformant pair of SequenceExample (mismatched types)
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } } }
+//    } }
+// and:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { int64_list: { value: [ 4 ] } }
+//               feature: { int64_list: { value: [ 5 ] } }
+//               feature: { int64_list: { value: [ 2 ] } } }
+//    } }
+//
+// Conditionally conformant pair of SequenceExample; the parser configuration
+// determines if the feature sizes must match:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.5 ] } }
+//               feature: { float_list: { value: [ 5.0 ] } } }
+//    } }
+// and:
+//    feature_lists: { feature_list: {
+//      key: "movie_ratings"
+//      value: { feature: { float_list: { value: [ 4.0 ] } }
+//               feature: { float_list: { value: [ 5.0, 3.0 ] } }
+//    } }
+
+message SequenceExample {
+  Features context = 1;
+  FeatureLists feature_lists = 2;
+};
diff --git a/third_party/tensorflow/tensorflow/core/example/example_parser_configuration.proto b/third_party/tensorflow/tensorflow/core/example/example_parser_configuration.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/example/example_parser_configuration.proto
@@ -0,0 +1,39 @@
+// Protocol messages for describing the configuration of the ExampleParserOp.
+
+syntax = "proto3";
+
+option cc_enable_arenas = true;
+option java_outer_classname = "ExampleParserConfigurationProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.example";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/example";
+package tensorflow;
+
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/framework/types.proto";
+
+message VarLenFeatureProto {
+  tensorflow.DataType dtype = 1;
+  string values_output_tensor_name = 2;
+  string indices_output_tensor_name = 3;
+  string shapes_output_tensor_name = 4;
+};
+
+message FixedLenFeatureProto {
+  tensorflow.DataType dtype = 1;
+  tensorflow.TensorShapeProto shape = 2;
+  tensorflow.TensorProto default_value = 3;
+  string values_output_tensor_name = 4;
+};
+
+message FeatureConfiguration {
+  oneof config {
+    FixedLenFeatureProto fixed_len_feature = 1;
+    VarLenFeatureProto var_len_feature = 2;
+  }
+};
+
+message ExampleParserConfiguration {
+  map<string, FeatureConfiguration> feature_map = 1;
+};
diff --git a/third_party/tensorflow/tensorflow/core/example/feature.proto b/third_party/tensorflow/tensorflow/core/example/feature.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/example/feature.proto
@@ -0,0 +1,105 @@
+// Protocol messages for describing features for machine learning model
+// training or inference.
+//
+// There are three base Feature types:
+//   - bytes
+//   - float
+//   - int64
+//
+// A Feature contains Lists which may hold zero or more values.  These
+// lists are the base values BytesList, FloatList, Int64List.
+//
+// Features are organized into categories by name.  The Features message
+// contains the mapping from name to Feature.
+//
+// Example Features for a movie recommendation application:
+//   feature {
+//     key: "age"
+//     value { float_list {
+//       value: 29.0
+//     }}
+//   }
+//   feature {
+//     key: "movie"
+//     value { bytes_list {
+//       value: "The Shawshank Redemption"
+//       value: "Fight Club"
+//     }}
+//   }
+//   feature {
+//     key: "movie_ratings"
+//     value { float_list {
+//       value: 9.0
+//       value: 9.7
+//     }}
+//   }
+//   feature {
+//     key: "suggestion"
+//     value { bytes_list {
+//       value: "Inception"
+//     }}
+//   }
+//   feature {
+//     key: "suggestion_purchased"
+//     value { int64_list {
+//       value: 1
+//     }}
+//   }
+//   feature {
+//     key: "purchase_price"
+//     value { float_list {
+//       value: 9.99
+//     }}
+//   }
+//
+
+syntax = "proto3";
+option cc_enable_arenas = true;
+option java_outer_classname = "FeatureProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.example";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/example";
+package tensorflow;
+
+// Containers to hold repeated fundamental values.
+message BytesList {
+  repeated bytes value = 1;
+}
+message FloatList {
+  repeated float value = 1 [packed = true];
+}
+message Int64List {
+  repeated int64 value = 1 [packed = true];
+}
+
+// Containers for non-sequential data.
+message Feature {
+  // Each feature can be exactly one kind.
+  oneof kind {
+    BytesList bytes_list = 1;
+    FloatList float_list = 2;
+    Int64List int64_list = 3;
+  }
+};
+
+message Features {
+  // Map from feature name to feature.
+  map<string, Feature> feature = 1;
+};
+
+// Containers for sequential data.
+//
+// A FeatureList contains lists of Features.  These may hold zero or more
+// Feature values.
+//
+// FeatureLists are organized into categories by name.  The FeatureLists message
+// contains the mapping from name to FeatureList.
+//
+message FeatureList {
+  repeated Feature feature = 1;
+};
+
+message FeatureLists {
+  // Map from feature name to feature list.
+  map<string, FeatureList> feature_list = 1;
+};
diff --git a/third_party/tensorflow/tensorflow/core/framework/allocation_description.proto b/third_party/tensorflow/tensorflow/core/framework/allocation_description.proto
--- a/third_party/tensorflow/tensorflow/core/framework/allocation_description.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/allocation_description.proto
@@ -5,6 +5,7 @@
 option java_outer_classname = "AllocationDescriptionProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 message AllocationDescription {
   // Total number of bytes requested
diff --git a/third_party/tensorflow/tensorflow/core/framework/api_def.proto b/third_party/tensorflow/tensorflow/core/framework/api_def.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/framework/api_def.proto
@@ -0,0 +1,123 @@
+// Defines the text format for including per-op API definition and
+// overrides for client language op code generators.
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ApiDefProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/attr_value.proto";
+
+// Used to specify and override the default API & behavior in the
+// generated code for client languages, from what you would get from
+// the OpDef alone. There will be a set of ApiDefs that are common
+// to all client languages, and another set per client language.
+// The per-client-language ApiDefs will inherit values from the
+// common ApiDefs which it can either replace or modify.
+//
+// We separate the API definition from the OpDef so we can evolve the
+// API while remaining backwards compatible when interpretting old
+// graphs.  Overrides go in an "api_def.pbtxt" file with a text-format
+// ApiDefs message.
+//
+// WARNING: Be *very* careful changing the API for any existing op --
+// you can change the semantics of existing code.  These changes may
+// need to wait until a major release of TensorFlow to avoid breaking
+// our compatibility promises.
+message ApiDef {
+  // Name of the op (in the OpDef) to specify the API for.
+  string graph_op_name = 1;
+
+  enum Visibility {
+    // Normally this is "VISIBLE" unless you are inheriting a
+    // different value from another ApiDef.
+    DEFAULT_VISIBILITY = 0;
+    // Publicly visible in the API.
+    VISIBLE = 1;
+    // Do not include this op in the generated API. If visibility is
+    // set to 'SKIP', other fields are ignored for this op.
+    SKIP = 2;
+    // Hide this op by putting it into an internal namespace (or whatever
+    // is appropriate in the target language).
+    HIDDEN = 3;
+  }
+  Visibility visibility = 2;
+
+  // If you specify any endpoint, this will replace all of the
+  // inherited endpoints.  The first endpoint should be the
+  // "canonical" endpoint, and should not be deprecated (unless all
+  // endpoints are deprecated).
+  message Endpoint {
+    // Name should be either like "CamelCaseName" or
+    // "Package.CamelCaseName". Client-language-specific ApiDefs may
+    // use a snake_case convention instead of CamelCase.
+    string name = 1;
+
+    // If this endpoint is deprecated, set deprecation_message to a
+    // message that should be logged when the endpoint is used.
+    // The message should indicate alternative endpoint to use, if any.
+    string deprecation_message = 2;
+  }
+  repeated Endpoint endpoint = 3;
+
+  message Arg {
+    string name = 1;
+
+    // Change the name used to access this arg in the API from what
+    // is used in the GraphDef.  Note that these names in `backticks`
+    // will also be replaced in the summary & description fields.
+    string rename_to = 2;
+
+    // Note: this will replace any inherited arg doc. There is no
+    // current way of modifying arg descriptions (other than replacing
+    // them entirely) as can be done with op descriptions.
+    string description = 3;
+  }
+  repeated Arg in_arg = 4;
+  repeated Arg out_arg = 5;
+  // List of original in_arg names to specify new argument order.
+  // Length of arg_order should be either empty to keep current order
+  // or match size of in_arg.
+  repeated string arg_order = 11;
+
+  // Description of the graph-construction-time configuration of this
+  // Op.  That is to say, this describes the attr fields that will
+  // be specified in the NodeDef.
+  message Attr {
+    string name = 1;
+
+    // Change the name used to access this attr in the API from what
+    // is used in the GraphDef.  Note that these names in `backticks`
+    // will also be replaced in the summary & description fields.
+    string rename_to = 2;
+
+    // Specify a new default value to use for this attr.  This default
+    // will be used when creating new graphs, as opposed to the
+    // default in the OpDef, which will be used when interpreting old
+    // GraphDefs.
+    AttrValue default_value = 3;
+
+    // Note: this will replace any inherited attr doc, there is no current
+    // way of modifying attr descriptions as can be done with op descriptions.
+    string description = 4;
+  }
+  repeated Attr attr = 6;
+
+  // One-line human-readable description of what the Op does.
+  string summary = 7;
+
+  // Additional, longer human-readable description of what the Op does.
+  string description = 8;
+
+  // Modify an existing/inherited description by adding text to the beginning
+  // or end.
+  string description_prefix = 9;
+  string description_suffix = 10;
+}
+
+message ApiDefs {
+  repeated ApiDef op = 1;
+}
diff --git a/third_party/tensorflow/tensorflow/core/framework/attr_value.proto b/third_party/tensorflow/tensorflow/core/framework/attr_value.proto
--- a/third_party/tensorflow/tensorflow/core/framework/attr_value.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/attr_value.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "AttrValueProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/tensor.proto";
 import "tensorflow/core/framework/tensor_shape.proto";
 import "tensorflow/core/framework/types.proto";
diff --git a/third_party/tensorflow/tensorflow/core/framework/cost_graph.proto b/third_party/tensorflow/tensorflow/core/framework/cost_graph.proto
--- a/third_party/tensorflow/tensorflow/core/framework/cost_graph.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/cost_graph.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "CostGraphProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/tensor_shape.proto";
 import "tensorflow/core/framework/types.proto";
 
@@ -45,8 +45,23 @@
     // Temporary memory used by this node.
     int64 temporary_memory_size = 6;
 
-    // Estimate of the computational cost of this node.
+    // Persistent memory used by this node.
+    int64 persistent_memory_size = 12;
+
+    int64 host_temp_memory_size = 10 [deprecated = true];
+    int64 device_temp_memory_size = 11 [deprecated = true];
+    int64 device_persistent_memory_size = 16 [deprecated = true];
+
+    // Estimate of the computational cost of this node, in microseconds.
     int64 compute_cost = 9;
+
+    // Analytical estimate of the computational cost of this node, in
+    // microseconds.
+    int64 compute_time = 14;
+
+    // Analytical estimate of the memory access cost of this node, in
+    // microseconds.
+    int64 memory_time = 15;
 
     // If true, the output is permanent: it can't be discarded, because this
     // node is part of the "final output". Nodes may depend on final nodes.
diff --git a/third_party/tensorflow/tensorflow/core/framework/device_attributes.proto b/third_party/tensorflow/tensorflow/core/framework/device_attributes.proto
--- a/third_party/tensorflow/tensorflow/core/framework/device_attributes.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/device_attributes.proto
@@ -5,11 +5,28 @@
 option java_outer_classname = "DeviceAttributesProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
+message InterconnectLink {
+  int32 device_id = 1;
+  string type = 2;
+  int32 strength = 3;
+};
+
+message LocalLinks {
+  repeated InterconnectLink link = 1;
+};
+
 message DeviceLocality {
   // Optional bus locality of device.  Default value of 0 means
   // no specific locality.  Specific localities are indexed from 1.
   int32 bus_id = 1;
+
+  // Optional NUMA locality of device.
+  int32 numa_node = 2;
+
+  // Optional local interconnect links to other devices.
+  LocalLinks links = 3;
 };
 
 message DeviceAttributes {
diff --git a/third_party/tensorflow/tensorflow/core/framework/function.proto b/third_party/tensorflow/tensorflow/core/framework/function.proto
--- a/third_party/tensorflow/tensorflow/core/framework/function.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/function.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "FunctionProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/attr_value.proto";
 import "tensorflow/core/framework/node_def.proto";
 import "tensorflow/core/framework/op_def.proto";
@@ -30,7 +30,8 @@
   // Attributes specific to this function definition.
   map<string, AttrValue> attr = 5;
 
-  // NOTE: field id 2 deleted on Jan 11, 2016, GraphDef version 21.
+  // NOTE: field id 2 deleted on Jan 11, 2017, GraphDef version 21.
+  reserved 2;
 
   // In both of the following fields, there is the need to specify an
   // output that is used as either the input to another node (in
diff --git a/third_party/tensorflow/tensorflow/core/framework/graph.proto b/third_party/tensorflow/tensorflow/core/framework/graph.proto
--- a/third_party/tensorflow/tensorflow/core/framework/graph.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/graph.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "GraphProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/node_def.proto";
 import "tensorflow/core/framework/function.proto";
 import "tensorflow/core/framework/versions.proto";
diff --git a/third_party/tensorflow/tensorflow/core/framework/graph_transfer_info.proto b/third_party/tensorflow/tensorflow/core/framework/graph_transfer_info.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/framework/graph_transfer_info.proto
@@ -0,0 +1,69 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "GraphTransferInfoProto";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/types.proto";
+
+message GraphTransferNodeInput {
+  int32 node_id = 1;
+  int32 output_port = 2;
+}
+message GraphTransferNodeInfo {
+  string name = 1;
+  int32 node_id = 2;
+  string type_name = 3;
+  int32 soc_op_id = 4;
+  int32 padding_id = 5;
+  int32 input_count = 6;
+  int32 output_count = 7;
+};
+message GraphTransferConstNodeInfo {
+  string name = 1;
+  int32 node_id = 2;
+  repeated int64 shape = 3;
+  bytes data = 4;
+  DataType dtype = 5;
+};
+message GraphTransferNodeInputInfo {
+  int32 node_id = 1;
+  repeated GraphTransferNodeInput node_input = 2;
+};
+message GraphTransferNodeOutputInfo {
+  int32 node_id = 1;
+  repeated int32 max_byte_size = 2;
+};
+message GraphTransferGraphInputNodeInfo {
+  string name = 1;
+  repeated int64 shape = 2;
+  DataType dtype = 3;
+}
+
+message GraphTransferGraphOutputNodeInfo {
+  string name = 1;
+  repeated int64 shape = 2;
+  DataType dtype = 3;
+}
+
+// Protocol buffer representing a handle to a tensorflow resource. Handles are
+// not valid across executions, but can be serialized back and forth from within
+// a single run.
+message GraphTransferInfo {
+  enum Destination {
+    NOP = 0;
+    HEXAGON = 1;
+  }
+
+  repeated GraphTransferNodeInfo node_info = 1;
+  repeated GraphTransferConstNodeInfo const_node_info = 2;
+  repeated GraphTransferNodeInputInfo node_input_info = 3;
+  repeated GraphTransferNodeOutputInfo node_output_info = 4;
+  // Input Node parameters of transferred graph
+  repeated GraphTransferGraphInputNodeInfo graph_input_node_info = 5;
+  repeated GraphTransferGraphOutputNodeInfo graph_output_node_info = 6;
+  // Destination of graph transfer
+  Destination destination = 7;
+};
diff --git a/third_party/tensorflow/tensorflow/core/framework/iterator.proto b/third_party/tensorflow/tensorflow/core/framework/iterator.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/framework/iterator.proto
@@ -0,0 +1,18 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "IteratorProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// Protocol buffer representing the metadata for an iterator's state stored
+// as a Variant tensor.
+message IteratorStateMetadata {
+  // A user-specified version string.
+  string version = 1;
+
+  // Keys for tensors in the VariantTensorDataProto.
+  repeated string keys = 2;
+}
diff --git a/third_party/tensorflow/tensorflow/core/framework/kernel_def.proto b/third_party/tensorflow/tensorflow/core/framework/kernel_def.proto
--- a/third_party/tensorflow/tensorflow/core/framework/kernel_def.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/kernel_def.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "KernelDefProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/attr_value.proto";
 
 message KernelDef {
diff --git a/third_party/tensorflow/tensorflow/core/framework/log_memory.proto b/third_party/tensorflow/tensorflow/core/framework/log_memory.proto
--- a/third_party/tensorflow/tensorflow/core/framework/log_memory.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/log_memory.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "LogMemoryProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/tensor_description.proto";
 
 message MemoryLogStep {
diff --git a/third_party/tensorflow/tensorflow/core/framework/node_def.proto b/third_party/tensorflow/tensorflow/core/framework/node_def.proto
--- a/third_party/tensorflow/tensorflow/core/framework/node_def.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/node_def.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "NodeProto";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/attr_value.proto";
 
 message NodeDef {
@@ -29,19 +29,17 @@
   // node should be placed.
   // The expected syntax for this string is as follows:
   //
-  // DEVICE_SPEC ::= COLOCATED_NODE | PARTIAL_SPEC
+  // DEVICE_SPEC ::= PARTIAL_SPEC
   //
-  // COLOCATED_NODE ::= "@" NODE_NAME  // See NodeDef.name above.
   // PARTIAL_SPEC ::= ("/" CONSTRAINT) *
   // CONSTRAINT ::= ("job:" JOB_NAME)
   //              | ("replica:" [1-9][0-9]*)
   //              | ("task:" [1-9][0-9]*)
-  //              | ( ("gpu" | "cpu") ":" ([1-9][0-9]* | "*") )
+  //              | ("device:" [A-Za-z]* ":" ([1-9][0-9]* | "*") )
   //
   // Valid values for this string include:
-  // * "@other/node"                         (colocate with "other/node")
-  // * "/job:worker/replica:0/task:1/gpu:3"  (full specification)
-  // * "/job:worker/gpu:3"                   (partial specification)
+  // * "/job:worker/replica:0/task:1/device:GPU:3"  (full specification)
+  // * "/job:worker/device:GPU:3"                   (partial specification)
   // * ""                                    (no specification)
   //
   // If the constraints do not resolve to a single device (or if this
diff --git a/third_party/tensorflow/tensorflow/core/framework/op_def.proto b/third_party/tensorflow/tensorflow/core/framework/op_def.proto
--- a/third_party/tensorflow/tensorflow/core/framework/op_def.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/op_def.proto
@@ -5,12 +5,13 @@
 option java_outer_classname = "OpDefProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/attr_value.proto";
 import "tensorflow/core/framework/types.proto";
 
 // Defines an operation. A NodeDef in a GraphDef specifies an Op by
 // using the "op" field which should match the name of a OpDef.
+// LINT.IfChange
 message OpDef {
   // Op names starting with an underscore are reserved for internal use.
   // Names should be CamelCase and match the regexp "[A-Z][a-zA-Z0-9_]*".
@@ -125,6 +126,12 @@
   // -------------------------------------------------------------------------
   // Optimization constraints.
 
+  // Ops are marked as stateful if their behavior depends on some state beyond
+  // their input tensors (e.g. variable reading op) or if they have
+  // a side-effect (e.g. printing or asserting ops). Equivalently, stateless ops
+  // must always produce the same output for the same input and have
+  // no side-effects.
+  //
   // By default Ops may be moved between devices.  Stateful ops should
   // either not be moved, or should only be moved if that state can also
   // be moved (e.g. via some sort of save / restore).
@@ -141,6 +148,8 @@
   // input.
   bool allows_uninitialized_input = 19;  // for Assign, etc.
 };
+// LINT.ThenChange(
+//     https://www.tensorflow.org/code/tensorflow/core/framework/op_def_util.cc)
 
 // Information about version-dependent deprecation of an op
 message OpDeprecation {
diff --git a/third_party/tensorflow/tensorflow/core/framework/op_gen_overrides.proto b/third_party/tensorflow/tensorflow/core/framework/op_gen_overrides.proto
deleted file mode 100644
--- a/third_party/tensorflow/tensorflow/core/framework/op_gen_overrides.proto
+++ /dev/null
@@ -1,67 +0,0 @@
-// Defines the text format for adding per-op overrides for client
-// language op code generators.
-
-syntax = "proto3";
-
-package tensorflow;
-import "tensorflow/core/framework/attr_value.proto";
-
-// Used to override the default API & behavior in the generated code
-// for client languages, from what you would get from the OpDef alone.
-// This is so we can evolve the API while remaining backwards
-// compatible when interpretting old graphs.  Overrides go in an
-// "op_gen_overrides.pbtxt" file with a text-format OpGenOverrides
-// message.  Right now these only apply to the C++ API.
-// TODO(josh11b): In the future there will be a common set of overrides
-// and per-client-language overrides.
-//
-// WARNING: Be *very* careful using these features -- these overrides
-// can change the semantics of existing code.  These changes may need
-// to wait until a major release of TensorFlow to avoid breaking our
-// compatibility promises.
-message OpGenOverride {
-  // Name of the op to apply overrides to.
-  string name = 1;
-
-  // Do not include this op in the generated API.
-  // If `skip` is true, all other overrides are ignored for this op.
-  bool skip = 2;
-
-  // Hide this op by putting it into an internal namespace (or whatever
-  // is appropriate in the target language).
-  bool hide = 3;
-
-  // Use a different name in the API than the op's name. Note that
-  // the op's name in `backticks` will also be replaced in the docs.
-  string rename_to = 4;
-
-  // Create *additional* API endpoints with different names (contrast
-  // with rename_to, which affects the original name).
-  repeated string alias = 5;
-
-  // Map the name of an attr to a new default value to use.  This
-  // default will be used when creating new graphs, as opposed to the
-  // default in the OpDef, which will be used when interpreting old
-  // GraphDefs.  If this attr is also renamed (using attr_rename
-  // below), use the original name of the attr.
-  message AttrDefault {
-    string name = 1;
-    AttrValue value = 2;
-  }
-  repeated AttrDefault attr_default = 6;
-
-  // Change the name used to access attrs/inputs/outputs in the API
-  // from what is used in the GraphDef.  Note that these names in
-  // `backticks` will also be replaced in the docs.
-  message Rename {
-    string from = 1;
-    string to = 2;
-  }
-  repeated Rename attr_rename = 7;
-  repeated Rename input_rename = 8;
-  repeated Rename output_rename = 9;
-}
-
-message OpGenOverrides {
-  repeated OpGenOverride op = 1;
-}
diff --git a/third_party/tensorflow/tensorflow/core/framework/reader_base.proto b/third_party/tensorflow/tensorflow/core/framework/reader_base.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/framework/reader_base.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ReaderBaseProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+
+// For serializing and restoring the state of ReaderBase, see
+// reader_base.h for details.
+message ReaderBaseState {
+  int64 work_started = 1;
+  int64 work_finished = 2;
+  int64 num_records_produced = 3;
+  bytes current_work = 4;
+};
diff --git a/third_party/tensorflow/tensorflow/core/framework/remote_fused_graph_execute_info.proto b/third_party/tensorflow/tensorflow/core/framework/remote_fused_graph_execute_info.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/framework/remote_fused_graph_execute_info.proto
@@ -0,0 +1,47 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "RemoteFusedGraphExecuteInfoProto";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+
+// Protocol buffer representing a handle to a tensorflow resource. Handles are
+// not valid across executions, but can be serialized back and forth from within
+// a single run.
+message RemoteFusedGraphExecuteInfo {
+
+  message TensorShapeTypeProto {
+    DataType dtype = 1;
+    TensorShapeProto shape = 2;
+  }
+
+  // Definition of remote graph
+  GraphDef remote_graph = 1;
+
+  // Remote fused graph input node name
+  repeated string graph_input_node_name = 2;
+
+  // Remote fused graph output node name
+  repeated string graph_output_node_name = 3;
+
+  // Executor's name
+  string executor_name = 4;
+
+  // Optional: Parameters given to the executor
+  bytes serialized_executor_parameters = 5;
+
+  // Optional: Default graph input tensor shape used to allocate memory
+  // before executing op
+  repeated TensorShapeTypeProto default_graph_input_tensor_shape = 6;
+
+  // Optional: Default graph input tensor shape used to allocate memory
+  // before executing op
+  // TODO(satok): Remote output tensor shape once shape information is stored
+  // in NodeDef
+  repeated TensorShapeTypeProto default_graph_output_tensor_shape = 7;
+};
diff --git a/third_party/tensorflow/tensorflow/core/framework/resource_handle.proto b/third_party/tensorflow/tensorflow/core/framework/resource_handle.proto
--- a/third_party/tensorflow/tensorflow/core/framework/resource_handle.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/resource_handle.proto
@@ -2,14 +2,15 @@
 
 package tensorflow;
 option cc_enable_arenas = true;
-option java_outer_classname = "ResourceHandleProto";
+option java_outer_classname = "ResourceHandle";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 // Protocol buffer representing a handle to a tensorflow resource. Handles are
 // not valid across executions, but can be serialized back and forth from within
 // a single run.
-message ResourceHandle {
+message ResourceHandleProto {
   // Unique name for the device containing the resource.
   string device = 1;
 
diff --git a/third_party/tensorflow/tensorflow/core/framework/step_stats.proto b/third_party/tensorflow/tensorflow/core/framework/step_stats.proto
--- a/third_party/tensorflow/tensorflow/core/framework/step_stats.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/step_stats.proto
@@ -5,18 +5,31 @@
 option java_outer_classname = "StepStatsProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/allocation_description.proto";
 import "tensorflow/core/framework/tensor_description.proto";
 
-// TODO(tucker): The next 4 message defs are very similar to
-// the *LogEntry messages in profile.proto.  They should be
-// unified in one place.
+// An allocation/de-allocation operation performed by the allocator.
+message AllocationRecord {
+  // The timestamp of the operation.
+  int64 alloc_micros = 1;
+  // Number of bytes allocated, or de-allocated if negative.
+  int64 alloc_bytes = 2;
+}
 
 message AllocatorMemoryUsed {
   string allocator_name = 1;
+  // These are per-node allocator memory stats.
   int64 total_bytes = 2;
   int64 peak_bytes = 3;
+  // The bytes that are not deallocated.
+  int64 live_bytes = 4;
+  // The allocation and deallocation timeline.
+  repeated AllocationRecord allocation_records = 6;
+
+  // These are snapshots of the overall allocator memory stats.
+  // The number of live bytes currently allocated by the allocator.
+  int64 allocator_bytes_in_use = 5;
 }
 
 // Output sizes recorded for a single execution of a graph node.
@@ -25,6 +38,17 @@
   TensorDescription tensor_description = 3;
 };
 
+// For memory tracking.
+message MemoryStats {
+  int64 temp_memory_size = 1;
+  int64 persistent_memory_size = 3;
+  repeated int64 persistent_tensor_alloc_ids = 5;
+
+  int64 device_temp_memory_size = 2 [deprecated = true];
+  int64 device_persistent_memory_size = 4 [deprecated = true];
+  repeated int64 device_persistent_tensor_alloc_ids = 6 [deprecated = true];
+}
+
 // Time/size stats recorded for a single execution of a graph node.
 message NodeExecStats {
   // TODO(tucker): Use some more compact form of node identity than
@@ -42,6 +66,7 @@
   int64 scheduled_micros = 9;
   uint32 thread_id = 10;
   repeated AllocationDescription referenced_tensor = 11;
+  MemoryStats memory_stats = 12;
 };
 
 message DeviceStepStats {
diff --git a/third_party/tensorflow/tensorflow/core/framework/summary.proto b/third_party/tensorflow/tensorflow/core/framework/summary.proto
--- a/third_party/tensorflow/tensorflow/core/framework/summary.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/summary.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "SummaryProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/tensor.proto";
 
 // Metadata associated with a series of Summary data
@@ -33,6 +33,28 @@
   repeated double bucket = 7 [packed = true];
 };
 
+// A SummaryMetadata encapsulates information on which plugins are able to make
+// use of a certain summary value.
+message SummaryMetadata {
+  message PluginData {
+    // The name of the plugin this data pertains to.
+    string plugin_name = 1;
+
+    // The content to store for the plugin. The best practice is for this to be
+    // a binary serialized protocol buffer.
+    bytes content = 2;
+  }
+
+  // Data that associates a summary with a certain plugin.
+  PluginData plugin_data = 1;
+
+  // Display name for viewing in TensorBoard.
+  string display_name = 2;
+
+  // Longform readable description of the summary sequence. Markdown supported.
+  string summary_description = 3;
+};
+
 // A Summary is a set of named values to be displayed by the
 // visualizer.
 //
@@ -71,21 +93,20 @@
   }
 
   message Value {
-    // Name of the node that output this summary; in general, the name of a
-    // TensorSummary node. If the node in question has multiple outputs, then
-    // a ":\d+" suffix will be appended, like "some_op:13".
-    // Might not be set for legacy summaries (i.e. those not using the tensor
-    // value field)
+    // This field is deprecated and will not be set.
     string node_name = 7;
 
-    // Tag name for the data.  Will only be used by legacy summaries
-    // (ie. those not using the tensor value field)
-    // For legacy summaries, will be used as the title of the graph
-    // in the visualizer.
-    //
-    // Tag is usually "op_name:value_name", where "op_name" itself can have
-    // structure to indicate grouping.
+    // Tag name for the data. Used by TensorBoard plugins to organize data. Tags
+    // are often organized by scope (which contains slashes to convey
+    // hierarchy). For example: foo/bar/0
     string tag = 1;
+
+    // Contains metadata on the summary value such as which plugins may use it.
+    // Take note that many summary values may lack a metadata field. This is
+    // because the FileWriter only keeps a metadata object on the first summary
+    // value with a certain tag for each tag. TensorBoard then remembers which
+    // tags are associated with which plugins. This saves space.
+    SummaryMetadata metadata = 9;
 
     // Value associated with the tag.
     oneof value {
diff --git a/third_party/tensorflow/tensorflow/core/framework/tensor.proto b/third_party/tensorflow/tensorflow/core/framework/tensor.proto
--- a/third_party/tensorflow/tensorflow/core/framework/tensor.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/tensor.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "TensorProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/resource_handle.proto";
 import "tensorflow/core/framework/tensor_shape.proto";
 import "tensorflow/core/framework/types.proto";
@@ -40,8 +40,8 @@
   // be set.  The values hold the flattened representation of the tensor in
   // row major order.
 
-  // DT_HALF. Note that since protobuf has no int16 type, we'll have some
-  // pointless zero padding for each value here.
+  // DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
+  // have some pointless zero padding for each value here.
   repeated int32 half_val = 13 [packed = true];
 
   // DT_FLOAT.
@@ -71,5 +71,24 @@
   repeated double dcomplex_val = 12 [packed = true];
 
   // DT_RESOURCE
-  repeated ResourceHandle resource_handle_val = 14;
+  repeated ResourceHandleProto resource_handle_val = 14;
+
+  // DT_VARIANT
+  repeated VariantTensorDataProto variant_val = 15;
+
+  // DT_UINT32
+  repeated uint32 uint32_val = 16 [packed = true];
+
+  // DT_UINT64
+  repeated uint64 uint64_val = 17 [packed = true];
 };
+
+// Protocol buffer representing the serialization format of DT_VARIANT tensors.
+message VariantTensorDataProto {
+  // Name of the type of objects being serialized.
+  string type_name = 1;
+  // Portions of the object that are not Tensors.
+  bytes metadata = 2;
+  // Tensors contained within objects being serialized.
+  repeated TensorProto tensors = 3;
+}
diff --git a/third_party/tensorflow/tensorflow/core/framework/tensor_description.proto b/third_party/tensorflow/tensorflow/core/framework/tensor_description.proto
--- a/third_party/tensorflow/tensorflow/core/framework/tensor_description.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/tensor_description.proto
@@ -5,7 +5,7 @@
 option java_outer_classname = "TensorDescriptionProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 import "tensorflow/core/framework/types.proto";
 import "tensorflow/core/framework/tensor_shape.proto";
 import "tensorflow/core/framework/allocation_description.proto";
diff --git a/third_party/tensorflow/tensorflow/core/framework/tensor_shape.proto b/third_party/tensorflow/tensorflow/core/framework/tensor_shape.proto
--- a/third_party/tensorflow/tensorflow/core/framework/tensor_shape.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/tensor_shape.proto
@@ -5,6 +5,7 @@
 option java_outer_classname = "TensorShapeProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 package tensorflow;
 
diff --git a/third_party/tensorflow/tensorflow/core/framework/tensor_slice.proto b/third_party/tensorflow/tensorflow/core/framework/tensor_slice.proto
--- a/third_party/tensorflow/tensorflow/core/framework/tensor_slice.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/tensor_slice.proto
@@ -5,6 +5,7 @@
 option java_outer_classname = "TensorSliceProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 package tensorflow;
 
diff --git a/third_party/tensorflow/tensorflow/core/framework/types.proto b/third_party/tensorflow/tensorflow/core/framework/types.proto
--- a/third_party/tensorflow/tensorflow/core/framework/types.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/types.proto
@@ -5,6 +5,7 @@
 option java_outer_classname = "TypesProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 // LINT.IfChange
 enum DataType {
@@ -34,9 +35,9 @@
   DT_COMPLEX128 = 18;  // Double-precision complex
   DT_HALF = 19;
   DT_RESOURCE = 20;
-
-  // TODO(josh11b): DT_GENERIC_PROTO = ??;
-  // TODO(jeff,josh11b): DT_UINT64?  DT_UINT32?
+  DT_VARIANT = 21;  // Arbitrary C++ data types
+  DT_UINT32 = 22;
+  DT_UINT64 = 23;
 
   // Do not use!  These are only for parameters.  Every enum above
   // should have a corresponding value below (verified by types_test).
@@ -60,5 +61,15 @@
   DT_COMPLEX128_REF = 118;
   DT_HALF_REF = 119;
   DT_RESOURCE_REF = 120;
+  DT_VARIANT_REF = 121;
+  DT_UINT32_REF = 122;
+  DT_UINT64_REF = 123;
 }
-// LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.h,https://www.tensorflow.org/code/tensorflow/go/tensor.go)
+// LINT.ThenChange(
+//    https://www.tensorflow.org/code/tensorflow/c/c_api.h,
+//    https://www.tensorflow.org/code/tensorflow/go/tensor.go,
+//    https://www.tensorflow.org/code/tensorflow/core/framework/tensor.cc,
+//    https://www.tensorflow.org/code/tensorflow/core/framework/types.h,
+//    https://www.tensorflow.org/code/tensorflow/core/framework/types.cc,
+//    https://www.tensorflow.org/code/tensorflow/python/framework/dtypes.py,
+//    https://www.tensorflow.org/code/tensorflow/python/framework/function.py)
diff --git a/third_party/tensorflow/tensorflow/core/framework/variable.proto b/third_party/tensorflow/tensorflow/core/framework/variable.proto
--- a/third_party/tensorflow/tensorflow/core/framework/variable.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/variable.proto
@@ -5,12 +5,16 @@
 option java_outer_classname = "VariableProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 // Protocol buffer representing a Variable.
 message VariableDef {
   // Name of the variable tensor.
   string variable_name = 1;
 
+  // Name of the tensor holding the variable's initial value.
+  string initial_value_name = 6;
+
   // Name of the initializer op.
   string initializer_name = 2;
 
@@ -19,6 +23,12 @@
 
   // Support for saving variables as slices of a larger variable.
   SaveSliceInfoDef save_slice_info_def = 4;
+
+  // Whether to represent this as a ResourceVariable.
+  bool is_resource = 5;
+
+  // Whether this variable should be trained.
+  bool trainable = 7;
 }
 
 message SaveSliceInfoDef {
diff --git a/third_party/tensorflow/tensorflow/core/framework/versions.proto b/third_party/tensorflow/tensorflow/core/framework/versions.proto
--- a/third_party/tensorflow/tensorflow/core/framework/versions.proto
+++ b/third_party/tensorflow/tensorflow/core/framework/versions.proto
@@ -5,6 +5,7 @@
 option java_outer_classname = "VersionsProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework";
 
 // Version information for a piece of serialized data
 //
diff --git a/third_party/tensorflow/tensorflow/core/lib/core/error_codes.proto b/third_party/tensorflow/tensorflow/core/lib/core/error_codes.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/lib/core/error_codes.proto
@@ -0,0 +1,149 @@
+syntax = "proto3";
+
+package tensorflow.error;
+option cc_enable_arenas = true;
+option java_outer_classname = "ErrorCodesProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/lib/core";
+
+// The canonical error codes for TensorFlow APIs.
+//
+// Warnings:
+//
+// -   Do not change any numeric assignments.
+// -   Changes to this list should only be made if there is a compelling
+//     need that can't be satisfied in another way.  Such changes
+//     must be approved by at least two OWNERS.
+//
+// Sometimes multiple error codes may apply.  Services should return
+// the most specific error code that applies.  For example, prefer
+// OUT_OF_RANGE over FAILED_PRECONDITION if both codes apply.
+// Similarly prefer NOT_FOUND or ALREADY_EXISTS over FAILED_PRECONDITION.
+enum Code {
+  // Not an error; returned on success
+  OK = 0;
+
+  // The operation was cancelled (typically by the caller).
+  CANCELLED = 1;
+
+  // Unknown error.  An example of where this error may be returned is
+  // if a Status value received from another address space belongs to
+  // an error-space that is not known in this address space.  Also
+  // errors raised by APIs that do not return enough error information
+  // may be converted to this error.
+  UNKNOWN = 2;
+
+  // Client specified an invalid argument.  Note that this differs
+  // from FAILED_PRECONDITION.  INVALID_ARGUMENT indicates arguments
+  // that are problematic regardless of the state of the system
+  // (e.g., a malformed file name).
+  INVALID_ARGUMENT = 3;
+
+  // Deadline expired before operation could complete.  For operations
+  // that change the state of the system, this error may be returned
+  // even if the operation has completed successfully.  For example, a
+  // successful response from a server could have been delayed long
+  // enough for the deadline to expire.
+  DEADLINE_EXCEEDED = 4;
+
+  // Some requested entity (e.g., file or directory) was not found.
+  // For privacy reasons, this code *may* be returned when the client
+  // does not have the access right to the entity.
+  NOT_FOUND = 5;
+
+  // Some entity that we attempted to create (e.g., file or directory)
+  // already exists.
+  ALREADY_EXISTS = 6;
+
+  // The caller does not have permission to execute the specified
+  // operation.  PERMISSION_DENIED must not be used for rejections
+  // caused by exhausting some resource (use RESOURCE_EXHAUSTED
+  // instead for those errors).  PERMISSION_DENIED must not be
+  // used if the caller can not be identified (use UNAUTHENTICATED
+  // instead for those errors).
+  PERMISSION_DENIED = 7;
+
+  // The request does not have valid authentication credentials for the
+  // operation.
+  UNAUTHENTICATED = 16;
+
+  // Some resource has been exhausted, perhaps a per-user quota, or
+  // perhaps the entire file system is out of space.
+  RESOURCE_EXHAUSTED = 8;
+
+  // Operation was rejected because the system is not in a state
+  // required for the operation's execution.  For example, directory
+  // to be deleted may be non-empty, an rmdir operation is applied to
+  // a non-directory, etc.
+  //
+  // A litmus test that may help a service implementor in deciding
+  // between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:
+  //  (a) Use UNAVAILABLE if the client can retry just the failing call.
+  //  (b) Use ABORTED if the client should retry at a higher-level
+  //      (e.g., restarting a read-modify-write sequence).
+  //  (c) Use FAILED_PRECONDITION if the client should not retry until
+  //      the system state has been explicitly fixed.  E.g., if an "rmdir"
+  //      fails because the directory is non-empty, FAILED_PRECONDITION
+  //      should be returned since the client should not retry unless
+  //      they have first fixed up the directory by deleting files from it.
+  //  (d) Use FAILED_PRECONDITION if the client performs conditional
+  //      REST Get/Update/Delete on a resource and the resource on the
+  //      server does not match the condition. E.g., conflicting
+  //      read-modify-write on the same resource.
+  FAILED_PRECONDITION = 9;
+
+  // The operation was aborted, typically due to a concurrency issue
+  // like sequencer check failures, transaction aborts, etc.
+  //
+  // See litmus test above for deciding between FAILED_PRECONDITION,
+  // ABORTED, and UNAVAILABLE.
+  ABORTED = 10;
+
+  // Operation tried to iterate past the valid input range.  E.g., seeking or
+  // reading past end of file.
+  //
+  // Unlike INVALID_ARGUMENT, this error indicates a problem that may
+  // be fixed if the system state changes. For example, a 32-bit file
+  // system will generate INVALID_ARGUMENT if asked to read at an
+  // offset that is not in the range [0,2^32-1], but it will generate
+  // OUT_OF_RANGE if asked to read from an offset past the current
+  // file size.
+  //
+  // There is a fair bit of overlap between FAILED_PRECONDITION and
+  // OUT_OF_RANGE.  We recommend using OUT_OF_RANGE (the more specific
+  // error) when it applies so that callers who are iterating through
+  // a space can easily look for an OUT_OF_RANGE error to detect when
+  // they are done.
+  OUT_OF_RANGE = 11;
+
+  // Operation is not implemented or not supported/enabled in this service.
+  UNIMPLEMENTED = 12;
+
+  // Internal errors.  Means some invariant expected by the underlying
+  // system has been broken.  If you see one of these errors,
+  // something is very broken.
+  INTERNAL = 13;
+
+  // The service is currently unavailable.  This is a most likely a
+  // transient condition and may be corrected by retrying with
+  // a backoff.
+  //
+  // See litmus test above for deciding between FAILED_PRECONDITION,
+  // ABORTED, and UNAVAILABLE.
+  UNAVAILABLE = 14;
+
+  // Unrecoverable data loss or corruption.
+  DATA_LOSS = 15;
+
+  // An extra enum entry to prevent people from writing code that
+  // fails to compile when a new code is added.
+  //
+  // Nobody should ever reference this enumeration entry. In particular,
+  // if you write C++ code that switches on this enumeration, add a default:
+  // case instead of a case that mentions this enumeration entry.
+  //
+  // Nobody should rely on the value (currently 20) listed here.  It
+  // may change in the future.
+  DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_ = 20;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/checkpointable_object_graph.proto b/third_party/tensorflow/tensorflow/core/protobuf/checkpointable_object_graph.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/checkpointable_object_graph.proto
@@ -0,0 +1,55 @@
+syntax = "proto3";
+
+option cc_enable_arenas = true;
+
+package tensorflow;
+
+// A TensorBundle addition which saves extra information about the objects which
+// own variables, allowing for more robust checkpoint loading into modified
+// programs.
+
+message CheckpointableObjectGraph {
+  message CheckpointableObject {
+    message ObjectReference {
+      // An index into `CheckpointableObjectGraph.nodes`, indicating the object
+      // being referenced.
+      int32 node_id = 1;
+      // A user-provided name for the edge.
+      string local_name = 2;
+    }
+
+    message SerializedTensor {
+      // A name for the Tensor. Simple variables have only one
+      // `SerializedTensor` named "VARIABLE_VALUE" by convention. This value may
+      // be restored on object creation as an optimization.
+      string name = 1;
+      // The full name of the variable/tensor, if applicable. Used to allow
+      // name-based loading of checkpoints which were saved using an
+      // object-based API. Should match the checkpoint key which would have been
+      // assigned by tf.train.Saver.
+      string full_name = 2;
+      // The generated name of the Tensor in the checkpoint.
+      string checkpoint_key = 3;
+    }
+
+    message SlotVariableReference {
+      // An index into `CheckpointableObjectGraph.nodes`, indicating the
+      // variable object this slot was created for.
+      int32 original_variable_node_id = 1;
+      // The name of the slot (e.g. "m"/"v").
+      string slot_name = 2;
+      // An index into `CheckpointableObjectGraph.nodes`, indicating the
+      // `Object` with the value of the slot variable.
+      int32 slot_variable_node_id = 3;
+    }
+
+    // Objects which this object depends on.
+    repeated ObjectReference children = 1;
+    // Serialized data specific to this object.
+    repeated SerializedTensor attributes = 2;
+    // Slot variables owned by this object.
+    repeated SlotVariableReference slot_variables = 3;
+  }
+
+  repeated CheckpointableObject nodes = 1;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/cluster.proto b/third_party/tensorflow/tensorflow/core/protobuf/cluster.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/cluster.proto
@@ -0,0 +1,83 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ClusterProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// This file contains protos to be used when defining a TensorFlow
+// cluster.
+//
+// EXAMPLES
+// --------
+//
+// 1. A single-process cluster, containing "/job:local/task:0".
+//
+//    Cluster:
+//      job { name: 'local' tasks { key: 0 value: 'localhost:2222' } }
+//
+//    Server:
+//      cluster { $CLUSTER } job_name: 'local' task_index: 0
+//
+// 2. A two-process cluster, containing "/job:local/task:{0,1}".
+//
+//    Cluster:
+//      job { name: 'local' tasks { key: 0 value: 'localhost:2222' }
+//                          tasks { key: 1 value: 'localhost:2223' } }
+//
+//    Servers:
+//      cluster { $CLUSTER } job_name: 'local' task_index: 0
+//      cluster { $CLUSTER } job_name: 'local' task_index: 1
+//
+// 3. A two-job cluster, containing "/job:worker/task:{0,1,2}" and
+//    "/job:ps/task:{0,1}".
+//
+//    Cluster:
+//      job { name: 'worker' tasks { key: 0 value: 'worker1:2222' }
+//                           tasks { key: 1 value: 'worker2:2222' }
+//                           tasks { key: 2 value: 'worker3:2222' } }
+//      job { name: 'ps'     tasks { key: 0 value: 'ps0:2222' }
+//                           tasks { key: 1 value: 'ps1:2222' } }
+//
+//    Servers:
+//      cluster { $CLUSTER } job_name: 'worker' task_index: 0
+//      cluster { $CLUSTER } job_name: 'worker' task_index: 1
+//      cluster { $CLUSTER } job_name: 'worker' task_index: 2
+//      cluster { $CLUSTER } job_name: 'ps'     task_index: 0
+//      cluster { $CLUSTER } job_name: 'ps'     task_index: 1
+
+// Defines a single job in a TensorFlow cluster.
+message JobDef {
+  // The name of this job.
+  string name = 1;
+
+  // Mapping from task ID to "hostname:port" string.
+  //
+  // If the `name` field contains "worker", and the `tasks` map contains a
+  // mapping from 7 to "example.org:2222", then the device prefix
+  // "/job:worker/task:7" will be assigned to "example.org:2222".
+  map<int32, string> tasks = 2;
+}
+
+// Defines a TensorFlow cluster as a set of jobs.
+message ClusterDef {
+  // The jobs that comprise the cluster.
+  repeated JobDef job = 1;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/config.proto b/third_party/tensorflow/tensorflow/core/protobuf/config.proto
--- a/third_party/tensorflow/tensorflow/core/protobuf/config.proto
+++ b/third_party/tensorflow/tensorflow/core/protobuf/config.proto
@@ -5,19 +5,38 @@
 option java_outer_classname = "ConfigProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
-
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
 import "tensorflow/core/framework/cost_graph.proto";
 import "tensorflow/core/framework/graph.proto";
 import "tensorflow/core/framework/step_stats.proto";
 import "tensorflow/core/protobuf/debug.proto";
+import "tensorflow/core/protobuf/cluster.proto";
+import "tensorflow/core/protobuf/rewriter_config.proto";
 
 message GPUOptions {
-  // A value between 0 and 1 that indicates what fraction of the
-  // available GPU memory to pre-allocate for each process.  1 means
-  // to pre-allocate all of the GPU memory, 0.5 means the process
-  // allocates ~50% of the available GPU memory.
+  // Fraction of the available GPU memory to allocate for each process.
+  // 1 means to allocate all of the GPU memory, 0.5 means the process
+  // allocates up to ~50% of the available GPU memory.
+  //
+  // GPU memory is pre-allocated unless the allow_growth option is enabled.
+  //
+  // If greater than 1.0, uses CUDA unified memory to potentially oversubscribe
+  // the amount of memory available on the GPU device by using host memory as a
+  // swap space. Accessing memory not available on the device will be
+  // significantly slower as that would require memory transfer between the host
+  // and the device. Options to reduce the memory requirement should be
+  // considered before enabling this option as this may come with a negative
+  // performance impact. Oversubscription using the unified memory requires
+  // Pascal class or newer GPUs and it is currently only supported on the Linux
+  // operating system. See
+  // https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-requirements
+  // for the detailed requirements.
   double per_process_gpu_memory_fraction = 1;
 
+  // If true, the allocator does not pre-allocate the entire specified
+  // GPU memory region, instead starting small and growing as needed.
+  bool allow_growth = 4;
+
   // The type of GPU allocation strategy to use.
   //
   // Allowed values:
@@ -33,26 +52,103 @@
   // a reasonable default (several MBs).
   int64 deferred_deletion_bytes = 3;
 
-  // If true, the allocator does not pre-allocate the entire specified
-  // GPU memory region, instead starting small and growing as needed.
-  bool allow_growth = 4;
-
   // A comma-separated list of GPU ids that determines the 'visible'
   // to 'virtual' mapping of GPU devices.  For example, if TensorFlow
   // can see 8 GPU devices in the process, and one wanted to map
-  // visible GPU devices 5 and 3 as "/gpu:0", and "/gpu:1", then one
-  // would specify this field as "5,3".  This field is similar in
+  // visible GPU devices 5 and 3 as "/device:GPU:0", and "/device:GPU:1",
+  // then one would specify this field as "5,3".  This field is similar in
   // spirit to the CUDA_VISIBLE_DEVICES environment variable, except
   // it applies to the visible GPU devices in the process.
   //
-  // NOTE: The GPU driver provides the process with the visible GPUs
-  // in an order which is not guaranteed to have any correlation to
-  // the *physical* GPU id in the machine.  This field is used for
-  // remapping "visible" to "virtual", which means this operates only
-  // after the process starts.  Users are required to use vendor
-  // specific mechanisms (e.g., CUDA_VISIBLE_DEVICES) to control the
-  // physical to visible device mapping prior to invoking TensorFlow.
+  // NOTE:
+  // 1. The GPU driver provides the process with the visible GPUs
+  //    in an order which is not guaranteed to have any correlation to
+  //    the *physical* GPU id in the machine.  This field is used for
+  //    remapping "visible" to "virtual", which means this operates only
+  //    after the process starts.  Users are required to use vendor
+  //    specific mechanisms (e.g., CUDA_VISIBLE_DEVICES) to control the
+  //    physical to visible device mapping prior to invoking TensorFlow.
+  // 2. In the code, the ids in this list are also called "CUDA GPU id"s,
+  //    and the 'virtual' ids of GPU devices (i.e. the ids in the device
+  //    name "/device:GPU:<id>") are also called "TF GPU id"s. Please
+  //    refer to third_party/tensorflow/core/common_runtime/gpu/gpu_id.h
+  //    for more information.
   string visible_device_list = 5;
+
+  // In the event polling loop sleep this many microseconds between
+  // PollEvents calls, when the queue is not empty.  If value is not
+  // set or set to 0, gets set to a non-zero default.
+  int32 polling_active_delay_usecs = 6;
+
+  // This field is deprecated and ignored.
+  int32 polling_inactive_delay_msecs = 7;
+
+  // Force all tensors to be gpu_compatible. On a GPU-enabled TensorFlow,
+  // enabling this option forces all CPU tensors to be allocated with Cuda
+  // pinned memory. Normally, TensorFlow will infer which tensors should be
+  // allocated as the pinned memory. But in case where the inference is
+  // incomplete, this option can significantly speed up the cross-device memory
+  // copy performance as long as it fits the memory.
+  // Note that this option is not something that should be
+  // enabled by default for unknown or very large models, since all Cuda pinned
+  // memory is unpageable, having too much pinned memory might negatively impact
+  // the overall host system performance.
+  bool force_gpu_compatible = 8;
+
+  message Experimental {
+    // Configuration for breaking down a visible GPU into multiple "virtual"
+    // devices.
+    message VirtualDevices {
+      // Per "virtual" device memory limit, in MB. The number of elements in
+      // the list is the number of virtual devices to create on the
+      // corresponding visible GPU (see "virtual_devices" below).
+      // If empty, it will create single virtual device taking all available
+      // memory from the device.
+      //
+      // For the concept of "visible" and "virtual" GPU, see the comments for
+      // "visible_device_list" above for more information.
+      repeated float memory_limit_mb = 1;
+    }
+
+    // The multi virtual device settings. If empty (not set), it will create
+    // single virtual device on each visible GPU, according to the settings
+    // in "visible_device_list" above. Otherwise, the number of elements in the
+    // list must be the same as the number of visible GPUs (after
+    // "visible_device_list" filtering if it is set), and the string represented
+    // device names (e.g. /device:GPU:<id>) will refer to the virtual
+    // devices and have the <id> field assigned sequentially starting from 0,
+    // according to the order they appear in this list and the "memory_limit"
+    // list inside each element. For example,
+    //   visible_device_list = "1,0"
+    //   virtual_devices { memory_limit: 1GB memory_limit: 2GB }
+    //   virtual_devices {}
+    // will create three virtual devices as:
+    //   /device:GPU:0 -> visible GPU 1 with 1GB memory
+    //   /device:GPU:1 -> visible GPU 1 with 2GB memory
+    //   /device:GPU:2 -> visible GPU 0 with all available memory
+    //
+    // NOTE:
+    // 1. It's invalid to set both this and "per_process_gpu_memory_fraction"
+    //    at the same time.
+    // 2. Currently this setting is per-process, not per-session. Using
+    //    different settings in different sessions within same process will
+    //    result in undefined behavior.
+    repeated VirtualDevices virtual_devices = 1;
+
+    // If true, uses CUDA unified memory for memory allocations. If
+    // per_process_gpu_memory_fraction option is greater than 1.0, then unified
+    // memory is used regardless of the value for this field. See comments for
+    // per_process_gpu_memory_fraction field for more details and requirements
+    // of the unified memory. This option is useful to oversubscribe memory if
+    // multiple processes are sharing a single GPU while individually using less
+    // than 1.0 per process memory fraction.
+    bool use_unified_memory = 2;
+  }
+
+  // Everything inside experimental is subject to change and is not subject
+  // to API stability guarantees in
+  // https://www.tensorflow.org/guide/version_compat.
+  Experimental experimental = 9;
 };
 
 // Options passed to the graph optimizer
@@ -63,6 +159,13 @@
   // If true, perform constant folding optimization on the graph.
   bool do_constant_folding = 2;
 
+  // Constant folding optimization replaces tensors whose values can be
+  // predetermined, with constant nodes. To avoid inserting too large constants,
+  // the size of each constant created can be limited. If this value is zero, a
+  // default limit of 10 MiB will be applied. If constant folding optimization
+  // is disabled, this value is ignored.
+  int64 max_folded_constant_in_bytes = 6;
+
   // If true, perform function inlining on the graph.
   bool do_function_inlining = 4;
 
@@ -78,6 +181,8 @@
     L0 = -1;
   }
 
+  // Overall optimization level. The actual optimizations applied will be the
+  // logical OR of the flags that this level implies and any flags already set.
   Level opt_level = 3;
 
   // Control the use of the compiler/jit.  Experimental.
@@ -134,6 +239,11 @@
   // If > 0, record a timeline every this many steps.
   // EXPERIMENTAL: This currently has no effect in MasterSession.
   int32 timeline_step = 8;
+
+  // Options that control the type and amount of graph rewriting.
+  // Not currently configurable via the public Python API (i.e. there is no API
+  // stability guarantee if you import RewriterConfig explicitly).
+  RewriterConfig rewrite_options = 10;
 };
 
 message ThreadPoolOptionProto {
@@ -142,6 +252,23 @@
   // 0 means the system picks a value based on where this option proto is used
   // (see the declaration of the specific field for more info).
   int32 num_threads = 1;
+
+  // The global name of the threadpool.
+  //
+  // If empty, then the threadpool is made and used according to the scope it's
+  // in - e.g., for a session threadpool, it is used by that session only.
+  //
+  // If non-empty, then:
+  // - a global threadpool associated with this name is looked
+  //   up or created. This allows, for example, sharing one threadpool across
+  //   many sessions (e.g., like the default behavior, if
+  //   inter_op_parallelism_threads is not configured), but still partitioning
+  //   into a large and small pool.
+  // - if the threadpool for this global_name already exists, then it is an
+  //   error if the existing pool was created using a different num_threads
+  //   value as is specified on this call.
+  // - threadpools created this way are never garbage collected.
+  string global_name = 2;
 };
 
 message RPCOptions {
@@ -189,13 +316,24 @@
   bool use_per_session_threads = 9;
 
   // This option is experimental - it may be replaced with a different mechanism
-  // in the future. The intended use is for when some session invocations need
-  // to run in a background pool limited to a small number of threads.
+  // in the future.
   //
   // Configures session thread pools. If this is configured, then RunOptions for
   // a Run call can select the thread pool to use.
   //
-  // If a pool's num_threads is 0, then inter_op_parallelism_threads is used.
+  // The intended use is for when some session invocations need to run in a
+  // background pool limited to a small number of threads:
+  // - For example, a session may be configured to have one large pool (for
+  // regular compute) and one small pool (for periodic, low priority work);
+  // using the small pool is currently the mechanism for limiting the inter-op
+  // parallelism of the low priority work.  Note that it does not limit the
+  // parallelism of work spawned by a single op kernel implementation.
+  // - Using this setting is normally not needed in training, but may help some
+  // serving use cases.
+  // - It is also generally recommended to set the global_name field of this
+  // proto, to avoid creating multiple large pools. It is typically better to
+  // run the non-low-priority work, even across sessions, in a single large
+  // pool.
   repeated ThreadPoolOptionProto session_inter_op_thread_pool = 12;
 
   // Assignment of Nodes to Devices is recomputed every placement_period
@@ -233,9 +371,28 @@
 
   // Options that apply when this session uses the distributed runtime.
   RPCOptions rpc_options = 13;
+
+  // Optional list of all workers to use in this session.
+  ClusterDef cluster_def = 14;
+
+  // If true, any resources such as Variables used in the session will not be
+  // shared with other sessions.
+  bool isolate_session_state = 15;
+
+  // Everything inside Experimental is subject to change and is not subject
+  // to API stability guarantees in
+  // https://www.tensorflow.org/guide/version_compat.
+  message Experimental {
+    // Task name for group resolution.
+    string collective_group_leader = 1;
+  };
+
+  Experimental experimental = 16;
+
+  // Next: 17
 };
 
-// EXPERIMENTAL. Options for a single Run() call.
+// Options for a single Run() call.
 message RunOptions {
   // TODO(pbar) Turn this into a TraceOptions proto which allows
   // tracing to be controlled in a more orthogonal manner?
@@ -260,10 +417,30 @@
   // EXPERIMENTAL.  Options used to initialize DebuggerState, if enabled.
   DebugOptions debug_options = 6;
 
+  // When enabled, causes tensor allocation information to be included in
+  // the error message when the Run() call fails because the allocator ran
+  // out of memory (OOM).
+  //
+  // Enabling this option can slow down the Run() call.
+  bool report_tensor_allocations_upon_oom = 7;
+
+  // Everything inside Experimental is subject to change and is not subject
+  // to API stability guarantees in
+  // https://www.tensorflow.org/guide/version_compat.
+  message Experimental {
+    // If non-zero, declares that this graph is going to use collective
+    // ops and must synchronize step_ids with any other graph with this
+    // same group_key value (in a distributed computation where tasks
+    // run disjoint graphs).
+    int64 collective_graph_key = 1;
+  };
+
+  Experimental experimental = 8;
+
   reserved 4;
 }
 
-// EXPERIMENTAL. Metadata output (i.e., non-Tensor) for a single Run() call.
+// Metadata output (i.e., non-Tensor) for a single Run() call.
 message RunMetadata {
   // Statistics traced for this step. Populated if tracing is turned on via the
   // "RunOptions" proto.
@@ -275,4 +452,43 @@
 
   // Graphs of the partitions executed by executors.
   repeated GraphDef partition_graphs = 3;
+}
+
+// Defines a connection between two tensors in a `GraphDef`.
+message TensorConnection {
+  // A tensor name. The value of this tensor will be substituted for
+  // the tensor named in `to_tensor`.
+  string from_tensor = 1;
+
+  // A tensor name. The value of this tensor will be bound to the
+  // value of the tensor named in `from_tensor`.
+  string to_tensor = 2;
+}
+
+// Defines a subgraph in another `GraphDef` as a set of feed points and nodes
+// to be fetched or executed.
+//
+// Compare with the arguments to `Session::Run()`.
+message CallableOptions {
+  // Tensors to be fed in the callable. Each feed is the name of a tensor.
+  repeated string feed = 1;
+
+  // Fetches. A list of tensor names. The caller of the callable expects a
+  // tensor to be returned for each fetch[i] (see RunStepResponse.tensor). The
+  // order of specified fetches does not change the execution order.
+  repeated string fetch = 2;
+
+  // Target Nodes. A list of node names. The named nodes will be run by the
+  // callable but their outputs will not be returned.
+  repeated string target = 3;
+
+  // Options that will be applied to each run.
+  RunOptions run_options = 4;
+
+  // Tensors to be connected in the callable. Each TensorConnection denotes
+  // a pair of tensors in the graph, between which an edge will be created
+  // in the callable.
+  repeated TensorConnection tensor_connection = 5;
+
+  // Next: 6
 }
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/control_flow.proto b/third_party/tensorflow/tensorflow/core/protobuf/control_flow.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/control_flow.proto
@@ -0,0 +1,90 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ControlFlowProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// Control flow context related protocol buffers.
+
+// Protocol buffer representing the values in ControlFlowContext.
+message ValuesDef {
+  // Value names that have been seen in this context.
+  repeated string values = 1;
+
+  // Value names referenced by but external to this context.
+  map<string, string> external_values = 2;
+}
+
+// Container for any kind of control flow context. Any other control flow
+// contexts that are added below should also be added here.
+message ControlFlowContextDef {
+  oneof ctxt {
+    CondContextDef cond_ctxt = 1;
+    WhileContextDef while_ctxt = 2;
+  }
+}
+
+// Protocol buffer representing a CondContext object.
+message CondContextDef {
+  // Name of the context.
+  string context_name = 1;
+
+  // Name of the pred tensor.
+  string pred_name = 2;
+
+  // Name of the pivot tensor.
+  string pivot_name = 3;
+
+  // Branch prediction. 0 or 1.
+  int32 branch = 4;
+
+  // Values and external values in control flow context.
+  ValuesDef values_def = 5;
+
+  // Contexts contained inside this context (e.g. nested conds).
+  repeated ControlFlowContextDef nested_contexts = 6;
+}
+
+// Protocol buffer representing a WhileContext object.
+message WhileContextDef {
+  // Name of the context.
+  string context_name = 1;
+
+  // The number of iterations allowed to run in parallel.
+  int32 parallel_iterations = 2;
+
+  // Whether backprop is enabled for this while loop.
+  bool back_prop = 3;
+
+  // Whether GPU-CPU memory swap is enabled for this loop.
+  bool swap_memory = 4;
+
+  // Name of the pivot tensor.
+  string pivot_name = 5;
+
+  // Name of the pivot_for_pred tensor.
+  string pivot_for_pred_name = 6;
+
+  // Name of the pivot_for_body tensor.
+  string pivot_for_body_name = 7;
+
+  // List of names for exit tensors.
+  repeated string loop_exit_names = 8;
+
+  // List of names for enter tensors.
+  repeated string loop_enter_names = 10;
+
+  // Values and external values in control flow context.
+  ValuesDef values_def = 9;
+
+  // Optional name of the maximum_iterations tensor.
+  string maximum_iterations_name = 11;
+
+  // Contexts contained inside this context (e.g. nested whiles).
+  repeated ControlFlowContextDef nested_contexts = 12;
+
+  // Next available id: 13.
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/critical_section.proto b/third_party/tensorflow/tensorflow/core/protobuf/critical_section.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/critical_section.proto
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "CriticalSectionProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// Protocol buffer representing a CriticalSection.
+message CriticalSectionDef {
+  // Name of the critical section handle.
+  string critical_section_name = 1;
+}
+
+// Protocol buffer representing a CriticalSection execution.
+message CriticalSectionExecutionDef {
+  // Name of the critical section handle.
+  string execute_in_critical_section_name = 1;
+  // Whether this operation requires exclusive access to its resources,
+  // (i.e., no other CriticalSections may request the same resources).
+  bool exclusive_resource_access = 2;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/debug.proto b/third_party/tensorflow/tensorflow/core/protobuf/debug.proto
--- a/third_party/tensorflow/tensorflow/core/protobuf/debug.proto
+++ b/third_party/tensorflow/tensorflow/core/protobuf/debug.proto
@@ -5,6 +5,7 @@
 option java_outer_classname = "DebugProtos";
 option java_multiple_files = true;
 option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
 
 // EXPERIMENTAL. Option for watching a node.
 message DebugTensorWatch {
@@ -24,14 +25,61 @@
   repeated string debug_ops = 3;
 
   // URL(s) for debug targets(s).
-  //   E.g., "file:///foo/tfdbg_dump", "grpc://localhost:11011"
+  //
+  // Supported URL formats are:
+  //   - file:///foo/tfdbg_dump: Writes out Event content to file
+  //     /foo/tfdbg_dump.  Assumes all directories can be created if they don't
+  //     already exist.
+  //   - grpc://localhost:11011: Sends an RPC request to an EventListener
+  //     service running at localhost:11011 with the event.
+  //   - memcbk:///event_key: Routes tensors to clients using the
+  //     callback registered with the DebugCallbackRegistry for event_key.
+  //
   // Each debug op listed in debug_ops will publish its output tensor (debug
   // signal) to all URLs in debug_urls.
+  //
+  // N.B. Session::Run() supports concurrent invocations of the same inputs
+  // (feed keys), outputs and target nodes. If such concurrent invocations
+  // are to be debugged, the callers of Session::Run() must use distinct
+  // debug_urls to make sure that the streamed or dumped events do not overlap
+  // among the invocations.
+  // TODO(cais): More visible documentation of this in g3docs.
   repeated string debug_urls = 4;
+
+  // Do not error out if debug op creation fails (e.g., due to dtype
+  // incompatibility). Instead, just log the failure.
+  bool tolerate_debug_op_creation_failures = 5;
 }
 
 // EXPERIMENTAL. Options for initializing DebuggerState.
 message DebugOptions {
   // Debugging options
   repeated DebugTensorWatch debug_tensor_watch_opts = 4;
+
+  // Caller-specified global step count.
+  // Note that this is distinct from the session run count and the executor
+  // step count.
+  int64 global_step = 10;
+}
+
+message DebuggedSourceFile {
+  // The host name on which a source code file is located.
+  string host = 1;
+
+  // Path to the source code file.
+  string file_path = 2;
+
+  // The timestamp at which the source code file is last modified.
+  int64 last_modified = 3;
+
+  // Byte size of the file.
+  int64 bytes = 4;
+
+  // Line-by-line content of the source code file.
+  repeated string lines = 5;
+}
+
+message DebuggedSourceFiles {
+  // A collection of source code files.
+  repeated DebuggedSourceFile source_files = 1;
 }
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/device_properties.proto b/third_party/tensorflow/tensorflow/core/protobuf/device_properties.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/device_properties.proto
@@ -0,0 +1,57 @@
+/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "DevicePropertiesProtos";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+message DeviceProperties {
+  // Device type (CPU, GPU, ...)
+  string type = 1;
+  // Vendor (Intel, nvidia, ...)
+  string vendor = 2;
+  // Model (Haswell, K40, ...)
+  string model = 3;
+  // Core Frequency in Mhz
+  int64 frequency = 4;
+  // Number of cores
+  int64 num_cores = 5;
+  // Version of the tools and libraries used with this device (e.g. gcc 4.9,
+  // cudnn 5.1)
+  map<string, string> environment = 6;
+  // Number of registers per core.
+  int64 num_registers = 7;
+  // L1 cache size in bytes
+  int64 l1_cache_size = 8;
+  // L2 cache size in bytes
+  int64 l2_cache_size = 9;
+  // L3 cache size in bytes
+  int64 l3_cache_size = 10;
+  // Shared memory size per multiprocessor in bytes. This field is
+  // applicable to GPUs only.
+  int64 shared_memory_size_per_multiprocessor = 11;
+  // Memory size in bytes
+  int64 memory_size = 12;
+  // Memory bandwidth in KB/s
+  int64 bandwidth = 13;
+}
+
+message NamedDevice {
+  string name = 1;
+  DeviceProperties properties = 2;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/eager_service.proto b/third_party/tensorflow/tensorflow/core/protobuf/eager_service.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/eager_service.proto
@@ -0,0 +1,165 @@
+syntax = "proto3";
+
+package tensorflow.eager;
+
+import "tensorflow/core/framework/attr_value.proto";
+import "tensorflow/core/framework/device_attributes.proto";
+import "tensorflow/core/framework/function.proto";
+import "tensorflow/core/framework/versions.proto";
+import "tensorflow/core/protobuf/tensorflow_server.proto";
+
+message RemoteTensorHandle {
+  // The ID of the operation that produced this tensor.
+  int64 op_id = 1;
+  // The index into the outputs of the operation that produced this tensor.
+  int32 output_num = 2;
+}
+
+// A proto representation of an eager operation.
+message Operation {
+  // A unique identifier for the operation. Set by the client so that the client
+  // can uniquely identify the outputs of the scheduled operation.
+  //
+  // In the initial implementation, sending duplicate IDs has undefined
+  // behaviour, but additional constraints may be placed upon this in the
+  // future.
+  int64 id = 1;
+  string name = 2;
+  repeated RemoteTensorHandle inputs = 3;
+
+  // Control Operation IDs that will be respected when ops are re-ordered by
+  // async execution. If async execution (+ op re-ordering) is not enabled, this
+  // should have no effect.
+  repeated int64 control_op_ids = 4;
+  map<string, AttrValue> attrs = 5;
+  string device = 6;
+}
+
+message QueueItem {
+  // The remote executor should be able to handle either executing ops directly,
+  // or releasing any unused tensor handles, since the tensor lifetime is
+  // maintained by the client.
+  oneof item {
+    RemoteTensorHandle handle_to_decref = 1;
+    Operation operation = 2;
+  }
+}
+
+message CreateContextRequest {
+  // Identifies the full cluster, and this particular worker's position within.
+  ServerDef server_def = 1;
+
+  // Whether the ops on the worker should be executed synchronously or
+  // asynchronously. By default, ops are executed synchronously.
+  bool async = 2;
+
+  // Number of seconds to keep the context alive. If more than keep_alive_secs
+  // has passed since a particular context has been communicated with, it will
+  // be garbage collected.
+  int64 keep_alive_secs = 3;
+
+  // This is the version for all the ops that will be enqueued by the client.
+  VersionDef version_def = 4;
+}
+
+message CreateContextResponse {
+  // The ID of the created context. This is usually a randomly generated number,
+  // that will be used to identify the context in future requests to the
+  // service. Contexts are not persisted through server restarts.
+  fixed64 context_id = 1;
+
+  // List of devices that are locally accessible to the worker.
+  repeated DeviceAttributes device_attributes = 2;
+}
+
+message EnqueueRequest {
+  fixed64 context_id = 1;
+
+  repeated QueueItem queue = 3;
+}
+
+message EnqueueResponse {
+}
+
+message WaitQueueDoneRequest {
+  fixed64 context_id = 1;
+
+  // Ids to wait on. If empty, wait on everything currently pending.
+  repeated int64 op_id = 2;
+}
+
+message WaitQueueDoneResponse {
+  // TODO(nareshmodi): Consider adding NodeExecStats here to be able to
+  // propagate some stats.
+}
+
+message KeepAliveRequest {
+  fixed64 context_id = 1;
+}
+
+message KeepAliveResponse {
+}
+
+message CloseContextRequest {
+  fixed64 context_id = 1;
+}
+
+message CloseContextResponse {
+}
+
+message RegisterFunctionRequest {
+  fixed64 context_id = 1;
+
+  FunctionDef function_def = 2;
+}
+
+message RegisterFunctionResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Eager Service defines a TensorFlow service that executes operations eagerly
+// on a set of local devices, on behalf of a remote Eager executor.
+//
+// The service impl will keep track of the various clients and devices it has
+// access to and allows the client to enqueue ops on any devices that it is able
+// to access and schedule data transfers from/to any of the peers.
+//
+// A client can generate multiple contexts to be able to independently execute
+// operations, but cannot share data between the two contexts.
+//
+// NOTE: Even though contexts generated by clients should be independent, the
+// lower level tensorflow execution engine is not, so they might share some data
+// (e.g. a Device's ResourceMgr).
+//
+////////////////////////////////////////////////////////////////////////////////
+service EagerService {
+  // This initializes the worker, informing it about the other workers in the
+  // cluster and exchanging authentication tokens which will be used in all
+  // other RPCs to detect whether the worker has restarted.
+  rpc CreateContext(CreateContextRequest) returns (CreateContextResponse);
+
+  // This takes a list of Execute and DeleteTensorHandle operations and enqueues
+  // (in async mode) or executes (in sync mode) them on the remote server.
+  // All outputs of ops which were not explicitly deleted with
+  // DeleteTensorHandle entries will be assumed to be alive and are usable by
+  // future calls to Enqueue.
+  rpc Enqueue(EnqueueRequest) returns (EnqueueResponse);
+
+  // Takes a set of op IDs and waits until those ops are done. Returns any error
+  // in the stream so far.
+  rpc WaitQueueDone(WaitQueueDoneRequest) returns (WaitQueueDoneResponse);
+
+  // Contexts are always created with a deadline and no RPCs within a deadline
+  // will trigger a context garbage collection. KeepAlive calls can be used to
+  // delay this.
+  rpc KeepAlive(KeepAliveRequest) returns (KeepAliveResponse);
+
+  // Closes the context. No calls to other methods using the existing context ID
+  // are valid after this.
+  rpc CloseContext(CloseContextRequest) returns (CloseContextResponse);
+
+  // Takes a FunctionDef and makes it enqueable on the remote worker.
+  rpc RegisterFunction(RegisterFunctionRequest)
+      returns (RegisterFunctionResponse);
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/master.proto b/third_party/tensorflow/tensorflow/core/protobuf/master.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/master.proto
@@ -0,0 +1,334 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "DistributedRuntimeProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/device_attributes.proto";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/lib/core/error_codes.proto";
+import "tensorflow/core/protobuf/config.proto";
+import "tensorflow/core/protobuf/named_tensor.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CreateSession method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CreateSessionRequest {
+  // The initial graph definition.
+  GraphDef graph_def = 1;
+
+  // Configuration options.
+  ConfigProto config = 2;
+
+  // The target string used from the client's perspective.
+  string target = 3;
+}
+
+message CreateSessionResponse {
+  // The session handle to be used in subsequent calls for the created session.
+  //
+  // The client must arrange to call CloseSession with this returned
+  // session handle to close the session.
+  string session_handle = 1;
+
+  // The initial version number for the graph, to be used in the next call
+  // to ExtendSession.
+  int64 graph_version = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// ExtendSession method request/response protos.
+//
+// The "graph_def" specifies a set of nodes to be added to the session's graph.
+//
+// A typical "graph_def" will contain:
+//
+// * Zero or more new nodes with names that do not exist in the server-side
+//   graph. These will be added to the graph.
+//
+// PRECONDITION: The server-side current version is req.current_version.
+//   None of the names in req.graph_def appeared in previous successful calls to
+//   CreateSession or ExtendSession with the same session_handle.
+// POSTCONDITION: The server-side current version is resp.new_version.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message ExtendSessionRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // REQUIRED: The nodes to be added to the session's graph. If any node has
+  // the same name as an existing node, the operation will fail with
+  // ILLEGAL_ARGUMENT.
+  GraphDef graph_def = 2;
+
+  // REQUIRED: The version number of the graph to be extended. This will be
+  // tested against the current server-side version number, and the operation
+  // will fail with FAILED_PRECONDITION if they do not match.
+  int64 current_graph_version = 3;
+}
+
+message ExtendSessionResponse {
+  // TODO(mrry): Return something about the operation?
+
+  // The new version number for the extended graph, to be used in the next call
+  // to ExtendSession.
+  int64 new_graph_version = 4;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RunStep method request/response protos.
+//
+// The caller should provide the feeds needed by the graph and specify
+// what nodes should be fetched.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RunStepRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // Tensors to be fed in the step. Each feed is a named tensor.
+  repeated NamedTensorProto feed = 2;
+
+  // Fetches. A list of tensor names. The caller expects a tensor to
+  // be returned for each fetch[i] (see RunStepResponse.tensor). The
+  // order of specified fetches does not change the execution order.
+  repeated string fetch = 3;
+
+  // Target Nodes. A list of node names. The named nodes will be run
+  // to but their outputs will not be fetched.
+  repeated string target = 4;
+
+  // Options for the run call.
+  RunOptions options = 5;
+
+  // Partial run handle (optional). If specified, this will be a partial run
+  // execution, run up to the specified fetches.
+  string partial_run_handle = 6;
+
+  // If true then some errors, e.g., execution errors that have long
+  // error messages, may return an OK RunStepResponse with the actual
+  // error saved in the status_code/status_error_message fields of the
+  // response body. This is a workaround since the RPC subsystem may
+  // truncate long metadata messages.
+  bool store_errors_in_response_body = 7;
+}
+
+message RunStepResponse {
+  // NOTE: The order of the returned tensors may or may not match
+  // the fetch order specified in RunStepRequest.
+  repeated NamedTensorProto tensor = 1;
+
+  // Returned metadata if requested in the options.
+  RunMetadata metadata = 2;
+
+  // If store_errors_in_response_body is true in the request, then
+  // optionally the server may return an OK status for the RPC and
+  // fill the true status into the fields below, to allow for messages
+  // that are too long to fit in metadata.
+  error.Code status_code = 3;
+  string status_error_message = 4;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// PartialRunSetup method request/response protos.
+//
+// The caller should provide the future partial run feeds, fetches, and targets.
+// Then the caller can use RunStepRequest with is_partial set to make partial
+// run calls.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message PartialRunSetupRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // Tensors to be fed in future steps.
+  repeated string feed = 2;
+
+  // Fetches. A list of tensor names. The caller expects a tensor to be returned
+  // for each fetch[i] (see RunStepResponse.tensor), for corresponding partial
+  // RunStepRequests. The order of specified fetches does not change the
+  // execution order.
+  repeated string fetch = 3;
+
+  // Target Nodes. A list of node names. The named nodes will be run in future
+  // steps, but their outputs will not be fetched.
+  repeated string target = 4;
+}
+
+message PartialRunSetupResponse {
+  // The unique handle corresponding to the ongoing partial run call setup by
+  // the invocation to PartialRunSetup. This handle may be passed to
+  // RunStepRequest to send and receive tensors for this partial run.
+  string partial_run_handle = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CloseSession method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CloseSessionRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+}
+
+message CloseSessionResponse {
+}
+
+// Reset() allows misbehaving or slow sessions to be aborted and closed, and
+// causes their resources eventually to be released.  Reset() does not wait
+// for the computations in old sessions to cease; it merely starts the
+// process of tearing them down.  However, if a new session is started after
+// a Reset(), the new session is isolated from changes that old sessions
+// (started prior to the Reset()) may continue to make to resources, provided
+// all those resources are in containers listed in "containers".
+//
+// Old sessions may continue to have side-effects on resources not in
+// containers listed in "containers", and thus may affect future
+// sessions' results in ways that are hard to predict.  Thus, if well-defined
+// behavior is desired, is it recommended that all containers be listed in
+// "containers".  Similarly, if a device_filter is specified, results may be
+// hard to predict.
+message ResetRequest {
+  // A list of container names, which may be empty.
+  //
+  // If 'container' is not empty, releases resoures in the given
+  // containers in all devices.
+  //
+  // If 'container' is empty, releases resources in the default
+  // container in all devices.
+  repeated string container = 1;
+
+  // When any filters are present, only devices that match the filters
+  // will be reset. Each filter can be partially specified,
+  // e.g. "/job:ps" "/job:worker/replica:3", etc.
+  repeated string device_filters = 2;
+}
+
+message ResetResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// ListDevices method request/response protos.
+//
+// Returns information about the TensorFlow devices that are available
+// to this master.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message ListDevicesRequest {
+  // Optional: session_handle must be returned by a CreateSession call to the
+  // same master service.
+  //
+  // When session_handle is empty, the ClusterSpec provided when the master was
+  // started is used to compute the available devices. If the session_handle is
+  // provided but not recognized, an error is returned. Finally, if a valid
+  // session_handle is provided, the cluster configuration for that session is
+  // used when computing the response.
+  string session_handle = 1;
+}
+
+message ListDevicesResponse {
+  repeated DeviceAttributes local_device = 1;
+  repeated DeviceAttributes remote_device = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// MakeCallable method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message MakeCallableRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // Options that define the behavior of the created callable.
+  CallableOptions options = 2;
+}
+
+message MakeCallableResponse {
+  // A handle to the created callable.
+  int64 handle = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RunCallable method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RunCallableRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+  // REQUIRED: handle must be returned by a MakeCallable call to the same
+  // master service.
+  int64 handle = 2;
+
+  // Values of the tensors passed as arguments to the callable, in the order
+  // defined in the CallableOptions.feed field passed to MakeCallable.
+  repeated TensorProto feed = 3;
+}
+
+message RunCallableResponse {
+  // Values of the tensors returned by the callable, in the order defined in the
+  // CallableOptions.fetch field passed to MakeCallable.
+  repeated TensorProto fetch = 1;
+
+  // Returned metadata if requested in the options.
+  RunMetadata metadata = 2;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// ReleaseCallable method request/response protos.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message ReleaseCallableRequest {
+  // REQUIRED: session_handle must be returned by a CreateSession call
+  // to the same master service.
+  string session_handle = 1;
+
+  // REQUIRED: handle must be returned by a MakeCallable call to the same
+  // master service.
+  int64 handle = 2;
+}
+
+message ReleaseCallableResponse {
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/master_service.proto b/third_party/tensorflow/tensorflow/core/protobuf/master_service.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/master_service.proto
@@ -0,0 +1,119 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow.grpc;
+option java_outer_classname = "MasterServiceProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/protobuf/master.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// MasterService defines a TensorFlow service with which a client can
+// interact to execute a distributed TensorFlow computation.
+//
+// A master service keeps track of multiple "master sessions". Each
+// session encapsulates a computation graph and its associated state,
+// and typically corresponds to a single "client session" (e.g. a
+// `tensorflow::Session` instance).
+//
+// A session is responsible for the following:
+// * assigning each node to a device (locally or remotely) using a
+//   placement algorithm. This may make decisions based on collected
+//   statistics from the workers in the system (e.g., memory usage,
+//   bandwidth consumption, etc.)
+//
+// * inserting intermediate nodes and edges to support cross-device
+//   and cross-process data flows and resource management.
+//
+// * issuing commands to workers to execute the subgraphs associated
+//   with those workers.
+//
+// Typically, a client carries out an iterative computation
+// (e.g. training) by invoking RPCs against the master in a
+// client-side loop. The client first creates a client session that
+// connects to a particular master (using gRPC for example). The
+// master creates a corresponding master session that is hosted on
+// the master and caches state between the client's invocations.
+//
+// After the session is established, the master returns an opaque
+// handle to the client that can be used to associate the client and
+// master sessions.
+//
+// The client may send an initial graph to the master in the
+// CreateSession call, and add nodes to the graph using ExtendSession.
+//
+// The most frequent operation a master is "RunStep", which implements
+// the `Session::Run()` API. It supports feeding in arguments,
+// executing a dataflow computation, and fetching arguments.
+//
+// Finally, when the client no longer needs the session, it should
+// close the session by invoking CloseSession, which allows the master
+// to reclaim resources associated with the session. The master may
+// implement a garbage collection scheme that closes sessions that
+// have been inactive for some time.
+//
+// For example, the following pseudo-code illustrates how a client
+// interacts with a master:
+//
+// stub = NewStub("/job:mnist/replica:0/task:0")
+// {handle} = stub->CreateSession({graph_def})
+// do {
+//   stub->RunStep({handle, {feeds}, {fetches}})
+//   // The client can evaluate a predicate locally, based on the
+//   // result of `fetches`, to determine whether to terminate. For
+//   // example, it might fetch the loss and evaluate whether it is less
+//   // than some threshold.
+// } while (!should_stop({fetches}));
+// stub->CloseSession({handle})
+//
+////////////////////////////////////////////////////////////////////////////////
+
+service MasterService {
+  // Creates a session.
+  rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse);
+
+  // Extends a session.
+  rpc ExtendSession(ExtendSessionRequest) returns (ExtendSessionResponse);
+
+  // Prepares future partial run calls.
+  rpc PartialRunSetup(PartialRunSetupRequest) returns (PartialRunSetupResponse);
+
+  // Drives the graph computation.
+  rpc RunStep(RunStepRequest) returns (RunStepResponse);
+
+  // Closes a session.
+  rpc CloseSession(CloseSessionRequest) returns (CloseSessionResponse);
+
+  // List the devices usable by the master.
+  rpc ListDevices(ListDevicesRequest) returns (ListDevicesResponse);
+
+  // Close and abandon all existing sessions.  Ongoing computations
+  // will no longer affect fresh ones via the resources in containers listed in
+  // the ResetRequest.  See ResetRequest for more details.
+  rpc Reset(ResetRequest) returns (ResetResponse);
+
+  // Registers a callable for execution with RunCallable.
+  rpc MakeCallable(MakeCallableRequest) returns (MakeCallableResponse);
+
+  // Executes a callable registered with MakeCallable.
+  rpc RunCallable(RunCallableRequest) returns (RunCallableResponse);
+
+  // Frees resources associated with a callable registered with MakeCallable.
+  rpc ReleaseCallable(ReleaseCallableRequest) returns (ReleaseCallableResponse);
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/meta_graph.proto b/third_party/tensorflow/tensorflow/core/protobuf/meta_graph.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/meta_graph.proto
@@ -0,0 +1,322 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "MetaGraphProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "google/protobuf/any.proto";
+
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/op_def.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/protobuf/saver.proto";
+
+// NOTE: This protocol buffer is evolving, and will go through revisions in the
+// coming months.
+//
+// Protocol buffer containing the following which are necessary to restart
+// training, run inference. It can be used to serialize/de-serialize memory
+// objects necessary for running computation in a graph when crossing the
+// process boundary. It can be used for long term storage of graphs,
+// cross-language execution of graphs, etc.
+//   MetaInfoDef
+//   GraphDef
+//   SaverDef
+//   CollectionDef
+//   TensorInfo
+//   SignatureDef
+message MetaGraphDef {
+  // Meta information regarding the graph to be exported.  To be used by users
+  // of this protocol buffer to encode information regarding their meta graph.
+  message MetaInfoDef {
+    // User specified Version string. Can be the name of the model and revision,
+    // steps this model has been trained to, etc.
+    string meta_graph_version = 1;
+
+    // A copy of the OpDefs used by the producer of this graph_def.
+    // Descriptions and Ops not used in graph_def are stripped out.
+    OpList stripped_op_list = 2;
+
+    // A serialized protobuf. Can be the time this meta graph is created, or
+    // modified, or name of the model.
+    google.protobuf.Any any_info = 3;
+
+    // User supplied tag(s) on the meta_graph and included graph_def.
+    //
+    // MetaGraphDefs should be tagged with their capabilities or use-cases.
+    // Examples: "train", "serve", "gpu", "tpu", etc.
+    // These tags enable loaders to access the MetaGraph(s) appropriate for a
+    // specific use-case or runtime environment.
+    repeated string tags = 4;
+
+    // The __version__ string of the tensorflow build used to write this graph.
+    // This will be populated by the framework, which will overwrite any user
+    // supplied value.
+    string tensorflow_version = 5;
+
+    // The __git_version__ string of the tensorflow build used to write this
+    // graph. This will be populated by the framework, which will overwrite any
+    // user supplied value.
+    string tensorflow_git_version = 6;
+
+    // A flag to denote whether default-valued attrs have been stripped from
+    // the nodes in this graph_def.
+    bool stripped_default_attrs = 7;
+  }
+  MetaInfoDef meta_info_def = 1;
+
+  // GraphDef.
+  GraphDef graph_def = 2;
+
+  // SaverDef.
+  SaverDef saver_def = 3;
+
+  // collection_def: Map from collection name to collections.
+  // See CollectionDef section for details.
+  map<string, CollectionDef> collection_def = 4;
+
+  // signature_def: Map from user supplied key for a signature to a single
+  // SignatureDef.
+  map<string, SignatureDef> signature_def = 5;
+
+  // Asset file def to be used with the defined graph.
+  repeated AssetFileDef asset_file_def = 6;
+}
+
+// CollectionDef should cover most collections.
+// To add a user-defined collection, do one of the following:
+// 1. For simple data types, such as string, int, float:
+//      tf.add_to_collection("your_collection_name", your_simple_value)
+//    strings will be stored as bytes_list.
+//
+// 2. For Protobuf types, there are three ways to add them:
+//    1) tf.add_to_collection("your_collection_name",
+//         your_proto.SerializeToString())
+//
+//       collection_def {
+//         key: "user_defined_bytes_collection"
+//         value {
+//           bytes_list {
+//             value: "queue_name: \"test_queue\"\n"
+//           }
+//         }
+//       }
+//
+//  or
+//
+//    2) tf.add_to_collection("your_collection_name", str(your_proto))
+//
+//       collection_def {
+//         key: "user_defined_string_collection"
+//         value {
+//          bytes_list {
+//             value: "\n\ntest_queue"
+//           }
+//         }
+//       }
+//
+//  or
+//
+//    3) any_buf = any_pb2.Any()
+//       tf.add_to_collection("your_collection_name",
+//         any_buf.Pack(your_proto))
+//
+//       collection_def {
+//         key: "user_defined_any_collection"
+//         value {
+//           any_list {
+//             value {
+//               type_url: "type.googleapis.com/tensorflow.QueueRunnerDef"
+//               value: "\n\ntest_queue"
+//             }
+//           }
+//         }
+//       }
+//
+// 3. For Python objects, implement to_proto() and from_proto(), and register
+//    them in the following manner:
+//    ops.register_proto_function("your_collection_name",
+//                                proto_type,
+//                                to_proto=YourPythonObject.to_proto,
+//                                from_proto=YourPythonObject.from_proto)
+//    These functions will be invoked to serialize and de-serialize the
+//    collection. For example,
+//    ops.register_proto_function(ops.GraphKeys.GLOBAL_VARIABLES,
+//                                proto_type=variable_pb2.VariableDef,
+//                                to_proto=Variable.to_proto,
+//                                from_proto=Variable.from_proto)
+message CollectionDef {
+  // NodeList is used for collecting nodes in graph. For example
+  // collection_def {
+  //   key: "summaries"
+  //   value {
+  //     node_list {
+  //       value: "input_producer/ScalarSummary:0"
+  //       value: "shuffle_batch/ScalarSummary:0"
+  //       value: "ImageSummary:0"
+  //     }
+  //   }
+  message NodeList {
+    repeated string value = 1;
+  }
+
+  // BytesList is used for collecting strings and serialized protobufs. For
+  // example:
+  // collection_def {
+  //   key: "trainable_variables"
+  //   value {
+  //     bytes_list {
+  //       value: "\n\017conv1/weights:0\022\024conv1/weights/Assign
+  //              \032\024conv1/weights/read:0"
+  //       value: "\n\016conv1/biases:0\022\023conv1/biases/Assign\032
+  //              \023conv1/biases/read:0"
+  //     }
+  //   }
+  // }
+  message BytesList {
+    repeated bytes value = 1;
+  }
+
+  // Int64List is used for collecting int, int64 and long values.
+  message Int64List {
+    repeated int64 value = 1 [packed = true];
+  }
+
+  // FloatList is used for collecting float values.
+  message FloatList {
+    repeated float value = 1 [packed = true];
+  }
+
+  // AnyList is used for collecting Any protos.
+  message AnyList {
+    repeated google.protobuf.Any value = 1;
+  }
+
+  oneof kind {
+    NodeList node_list = 1;
+    BytesList bytes_list = 2;
+    Int64List int64_list = 3;
+    FloatList float_list = 4;
+    AnyList any_list = 5;
+  }
+}
+
+// Information about a Tensor necessary for feeding or retrieval.
+message TensorInfo {
+  // For sparse tensors, The COO encoding stores a triple of values, indices,
+  // and shape.
+  message CooSparse {
+    // The shape of the values Tensor is [?].  Its dtype must be the dtype of
+    // the SparseTensor as a whole, given in the enclosing TensorInfo.
+    string values_tensor_name = 1;
+
+    // The indices Tensor must have dtype int64 and shape [?, ?].
+    string indices_tensor_name = 2;
+
+    // The dynamic logical shape represented by the SparseTensor is recorded in
+    // the Tensor referenced here.  It must have dtype int64 and shape [?].
+    string dense_shape_tensor_name = 3;
+  }
+
+  oneof encoding {
+    // For dense `Tensor`s, the name of the tensor in the graph.
+    string name = 1;
+    // There are many possible encodings of sparse matrices
+    // (https://en.wikipedia.org/wiki/Sparse_matrix).  Currently, TensorFlow
+    // uses only the COO encoding.  This is supported and documented in the
+    // SparseTensor Python class.
+    CooSparse coo_sparse = 4;
+  }
+  DataType dtype = 2;
+  // The static shape should be recorded here, to the extent that it can
+  // be known in advance.  In the case of a SparseTensor, this field describes
+  // the logical shape of the represented tensor (aka dense_shape).
+  TensorShapeProto tensor_shape = 3;
+}
+
+// SignatureDef defines the signature of a computation supported by a TensorFlow
+// graph.
+//
+// For example, a model with two loss computations, sharing a single input,
+// might have the following signature_def map.
+//
+// Note that across the two SignatureDefs "loss_A" and "loss_B", the input key,
+// output key, and method_name are identical, and will be used by system(s) that
+// implement or rely upon this particular loss method. The output tensor names
+// differ, demonstrating how different outputs can exist for the same method.
+//
+// signature_def {
+//   key: "loss_A"
+//   value {
+//     inputs {
+//       key: "input"
+//       value {
+//         name: "input:0"
+//         dtype: DT_STRING
+//         tensor_shape: ...
+//       }
+//     }
+//     outputs {
+//       key: "loss_output"
+//       value {
+//         name: "loss_output_A:0"
+//         dtype: DT_FLOAT
+//         tensor_shape: ...
+//       }
+//     }
+//   }
+//   ...
+//   method_name: "some/package/compute_loss"
+// }
+// signature_def {
+//   key: "loss_B"
+//   value {
+//     inputs {
+//       key: "input"
+//       value {
+//         name: "input:0"
+//         dtype: DT_STRING
+//         tensor_shape: ...
+//       }
+//     }
+//     outputs {
+//       key: "loss_output"
+//       value {
+//         name: "loss_output_B:0"
+//         dtype: DT_FLOAT
+//         tensor_shape: ...
+//       }
+//     }
+//   }
+//   ...
+//   method_name: "some/package/compute_loss"
+// }
+message SignatureDef {
+  // Named input parameters.
+  map<string, TensorInfo> inputs = 1;
+  // Named output parameters.
+  map<string, TensorInfo> outputs = 2;
+  // Extensible method_name information enabling third-party users to mark a
+  // SignatureDef as supporting a particular method. This enables producers and
+  // consumers of SignatureDefs, e.g. a model definition library and a serving
+  // library to have a clear hand-off regarding the semantics of a computation.
+  //
+  // Note that multiple SignatureDefs in a single MetaGraphDef may have the same
+  // method_name. This is commonly used to support multi-headed computation,
+  // where a single graph computation may return multiple results.
+  string method_name = 3;
+}
+
+// An asset file def for a single file or a set of sharded files with the same
+// name.
+message AssetFileDef {
+  // The tensor to bind the asset filename to.
+  TensorInfo tensor_info = 1;
+  // The filename within an assets directory. Note: does not include the path
+  // prefix, i.e. directories. For an asset at /tmp/path/vocab.txt, the filename
+  // would be "vocab.txt".
+  string filename = 2;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/named_tensor.proto b/third_party/tensorflow/tensorflow/core/protobuf/named_tensor.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/named_tensor.proto
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "NamedTensorProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/tensor.proto";
+
+// A pair of tensor name and tensor values.
+message NamedTensorProto {
+  // Name of the tensor.
+  string name = 1;
+
+  // The client can populate a TensorProto using a tensorflow::Tensor`, or
+  // directly using the protobuf field accessors.
+  //
+  // The client specifies whether the returned tensor values should be
+  // filled tensor fields (float_val, int_val, etc.) or encoded in a
+  // compact form in tensor.tensor_content.
+  TensorProto tensor = 2;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/queue_runner.proto b/third_party/tensorflow/tensorflow/core/protobuf/queue_runner.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/queue_runner.proto
@@ -0,0 +1,28 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "QueueRunnerProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/lib/core/error_codes.proto";
+
+// Protocol buffer representing a QueueRunner.
+message QueueRunnerDef {
+  // Queue name.
+  string queue_name = 1;
+
+  // A list of enqueue operations.
+  repeated string enqueue_op_name = 2;
+
+  // The operation to run to close the queue.
+  string close_op_name = 3;
+
+  // The operation to run to cancel the queue.
+  string cancel_op_name = 4;
+
+  // A list of exception types considered to signal a safely closed queue
+  // if raised during enqueue operations.
+  repeated error.Code queue_closed_exception_types = 5;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/rewriter_config.proto b/third_party/tensorflow/tensorflow/core/protobuf/rewriter_config.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/rewriter_config.proto
@@ -0,0 +1,150 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "RewriterConfigProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+import "tensorflow/core/framework/attr_value.proto";
+
+message AutoParallelOptions {
+  bool enable = 1;
+  int32 num_replicas = 2;
+}
+
+message ScopedAllocatorOptions {
+  // If present, only perform optimization for these ops.
+  repeated string enable_op = 1;
+}
+
+message RewriterConfig {
+  // Graph rewriting is experimental and subject to change, not covered by any
+  // API stability guarantees.
+
+  // Configuration options for the meta-optimizer. Unless otherwise noted, these
+  // configuration options do not apply to explicitly triggered optimization
+  // passes in the optimizers field.
+
+  enum Toggle {
+    DEFAULT = 0;
+    ON = 1;
+    OFF = 2;
+    // Enable some aggressive optimizations that use assumptions that TF graphs
+    // may break. For example, assume the shape of a placeholder matches its
+    // actual feed.
+    AGGRESSIVE = 3;
+  }
+
+  // Enum controlling the number of times to run optimizers. The default is to
+  // run them once.
+  enum NumIterationsType {
+    DEFAULT_NUM_ITERS = 0;
+    ONE = 1;
+    TWO = 2;
+  }
+
+  // Optimize tensor layouts (default is ON)
+  // e.g. This will try to use NCHW layout on GPU which is faster.
+  Toggle layout_optimizer = 1;
+  // Fold constants (default is ON)
+  // Statically infer the value of tensors when possible, and materialize the
+  // result using constants.
+  Toggle constant_folding = 3;
+  // Shape optimizations (default is ON)
+  // Simplify computations made on shapes.
+  Toggle shape_optimization = 13;
+  // Remapping (default is ON)
+  // Remap subgraphs onto more efficient implementations.
+  Toggle remapping = 14;
+  // Arithmetic optimizations (default is ON)
+  // e.g. Simplify arithmetic ops; merge ops with same value (like constants).
+  Toggle arithmetic_optimization = 7;
+  // Control dependency optimizations (default is ON).
+  // Remove redundant control dependencies, which may enable other optimization.
+  Toggle dependency_optimization = 8;
+  // Loop optimizations (default is ON).
+  Toggle loop_optimization = 9;
+  // Function optimizations (default is ON).
+  Toggle function_optimization = 10;
+  // Strips debug-related nodes from the graph (off by default).
+  Toggle debug_stripper = 11;
+  // If true, don't remove unnecessary ops from the graph
+  bool disable_model_pruning = 2;
+  // Try to allocate some independent Op outputs contiguously in order to
+  // merge or eliminate downstream Ops (off by default).
+  Toggle scoped_allocator_optimization = 15;
+
+  // Controls how many times we run the optimizers in meta optimizer (default
+  // is once).
+  NumIterationsType meta_optimizer_iterations = 12;
+
+  enum MemOptType {
+    // The default setting (SCHEDULING and SWAPPING HEURISTICS only)
+    DEFAULT_MEM_OPT = 0;
+    // Disabled in the meta-optimizer.
+    NO_MEM_OPT = 1;
+    // Driven by manual op-level annotations.
+    MANUAL = 2;
+
+    // Driven by heuristics. The behavior of these heuristics is subject to
+    // change. Currently includes an experimental recomputation and swapping
+    // heuristics. Manual annotations are respected, but additional nodes are
+    // selected automatically.
+
+    // Swapping heuristic will move a tensor from the GPU to the CPU and move
+    // it back when needed to reduce peak memory usage.
+    SWAPPING_HEURISTICS = 4;
+    // Recomputation heuristics will recompute ops (such as Relu activation)
+    // during backprop instead of storing them, reducing peak memory usage.
+    RECOMPUTATION_HEURISTICS = 5;
+    // Scheduling will split big ops such as AddN and try to enforce a schedule
+    // of the new computations that decreases peak memory usage.
+    SCHEDULING_HEURISTICS = 6;
+    // Use any combination of swapping and recomputation heuristics.
+    HEURISTICS = 3;
+  }
+  // Configures memory optimization passes through the meta-optimizer. Has no
+  // effect on manually requested memory optimization passes in the optimizers
+  // field.
+  MemOptType memory_optimization = 4;
+  // A node name scope for node names which are valid outputs of recompuations.
+  // Inputs to nodes that match this scope may be recomputed (subject either to
+  // manual annotation of those input nodes or to manual annotation and
+  // heuristics depending on memory_optimization), but the nodes themselves will
+  // not be recomputed. This matches any sub-scopes as well, meaning the scope
+  // can appear not just as a top-level scope. For example, if the value is
+  // "gradients/", the default, it will match node name "gradients/foo",
+  // "foo/gradients/bar", but not "foo_gradients/"
+  string memory_optimizer_target_node_name_scope = 6;
+
+  // Configures AutoParallel optimization passes either through the
+  // meta-optimizer or when manually specified through the optimizers field.
+  AutoParallelOptions auto_parallel = 5;
+
+  ScopedAllocatorOptions scoped_allocator_opts = 16;
+
+  // If non-empty, will use this as an alternative way to specify a list of
+  // optimizations to turn on and the order of the optimizations (replacing the
+  // meta-optimizer).
+  //
+  // Of the RewriterConfig options, only the AutoParallel configuration options
+  // (the auto_parallel field) apply to manually requested optimization passes
+  // ("autoparallel"). Memory optimization passes ("memory") invoked here are
+  // not configurable (in contrast to memory optimization passes through the
+  // meta-optimizer) and act only on manual op annotations.
+  //
+  // Custom registered optimizers will be run after the base optimizers, in
+  // the order that they are specified.
+  repeated string optimizers = 100;
+
+  // Message to describe custom graph optimizer and its parameters
+  message CustomGraphOptimizer {
+    string name = 1;
+    map<string, AttrValue> parameter_map = 2;
+  }
+
+  // list of CustomGraphOptimizers to apply.
+  repeated CustomGraphOptimizer custom_optimizers = 200;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/saved_model.proto b/third_party/tensorflow/tensorflow/core/protobuf/saved_model.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/saved_model.proto
@@ -0,0 +1,21 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "SavedModelProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.framework";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/protobuf/meta_graph.proto";
+
+// SavedModel is the high level serialization format for TensorFlow Models.
+// See [todo: doc links, similar to session_bundle] for more information.
+message SavedModel {
+  // The schema version of the SavedModel instance. Used for versioning when
+  // making future changes to the specification/implementation. Initial value
+  // at release will be 1.
+  int64 saved_model_schema_version = 1;
+
+  // One or more MetaGraphs.
+  repeated MetaGraphDef meta_graphs = 2;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/saver.proto b/third_party/tensorflow/tensorflow/core/protobuf/saver.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/saver.proto
@@ -0,0 +1,47 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "SaverProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+
+// Protocol buffer representing the configuration of a Saver.
+message SaverDef {
+  // The name of the tensor in which to specify the filename when saving or
+  // restoring a model checkpoint.
+  string filename_tensor_name = 1;
+
+  // The operation to run when saving a model checkpoint.
+  string save_tensor_name = 2;
+
+  // The operation to run when restoring a model checkpoint.
+  string restore_op_name = 3;
+
+  // Maximum number of checkpoints to keep.  If 0, no checkpoints are deleted.
+  int32 max_to_keep = 4;
+
+  // Shard the save files, one per device that has Variable nodes.
+  bool sharded = 5;
+
+  // How often to keep an additional checkpoint. If not specified, only the last
+  // "max_to_keep" checkpoints are kept; if specified, in addition to keeping
+  // the last "max_to_keep" checkpoints, an additional checkpoint will be kept
+  // for every n hours of training.
+  float keep_checkpoint_every_n_hours = 6;
+
+  // A version number that identifies a different on-disk checkpoint format.
+  // Usually, each subclass of BaseSaverBuilder works with a particular
+  // version/format.  However, it is possible that the same builder may be
+  // upgraded to support a newer checkpoint format in the future.
+  enum CheckpointFormatVersion {
+    // Internal legacy format.
+    LEGACY = 0;
+    // Deprecated format: tf.Saver() which works with tensorflow::table::Table.
+    V1 = 1;
+    // Current format: more efficient.
+    V2 = 2;
+  }
+  CheckpointFormatVersion version = 7;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/tensor_bundle.proto b/third_party/tensorflow/tensorflow/core/protobuf/tensor_bundle.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/tensor_bundle.proto
@@ -0,0 +1,64 @@
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "TensorBundleProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/tensor_slice.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/framework/versions.proto";
+
+// Protos used in the tensor bundle module (tf/core/util/tensor_bundle/).
+
+// Special header that is associated with a bundle.
+//
+// TODO(zongheng,zhifengc): maybe in the future, we can add information about
+// which binary produced this checkpoint, timestamp, etc. Sometime, these can be
+// valuable debugging information. And if needed, these can be used as defensive
+// information ensuring reader (binary version) of the checkpoint and the writer
+// (binary version) must match within certain range, etc.
+message BundleHeaderProto {
+  // Number of data files in the bundle.
+  int32 num_shards = 1;
+
+  // An enum indicating the endianness of the platform that produced this
+  // bundle.  A bundle can only be read by a platform with matching endianness.
+  // Defaults to LITTLE, as most modern platforms are little-endian.
+  //
+  // Affects the binary tensor data bytes only, not the metadata in protobufs.
+  enum Endianness {
+    LITTLE = 0;
+    BIG = 1;
+  }
+  Endianness endianness = 2;
+
+  // Versioning of the tensor bundle format.
+  VersionDef version = 3;
+}
+
+// Describes the metadata related to a checkpointed tensor.
+message BundleEntryProto {
+  // The tensor dtype and shape.
+  DataType dtype = 1;
+  TensorShapeProto shape = 2;
+  // The binary content of the tensor lies in:
+  //   File "shard_id": bytes [offset, offset + size).
+  int32 shard_id = 3;
+  int64 offset = 4;
+  int64 size = 5;
+
+  // The CRC32C checksum of the tensor bytes.
+  fixed32 crc32c = 6;
+
+  // Iff present, this entry represents a partitioned tensor.  The previous
+  // fields are interpreted as follows:
+  //
+  //   "dtype", "shape": describe the full tensor.
+  //   "shard_id", "offset", "size", "crc32c": all IGNORED.
+  //      These information for each slice can be looked up in their own
+  //      BundleEntryProto, keyed by each "slice_name".
+  repeated TensorSliceProto slices = 7;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/tensorflow_server.proto b/third_party/tensorflow/tensorflow/core/protobuf/tensorflow_server.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/tensorflow_server.proto
@@ -0,0 +1,51 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+import "tensorflow/core/protobuf/config.proto";
+import "tensorflow/core/protobuf/cluster.proto";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "ServerProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+// Defines the configuration of a single TensorFlow server.
+message ServerDef {
+  // The cluster of which this server is a member.
+  ClusterDef cluster = 1;
+
+  // The name of the job of which this server is a member.
+  //
+  // NOTE(mrry): The `cluster` field must contain a `JobDef` with a `name` field
+  // that matches this name.
+  string job_name = 2;
+
+  // The task index of this server in its job.
+  //
+  // NOTE: The `cluster` field must contain a `JobDef` with a matching `name`
+  // and a mapping in its `tasks` field for this index.
+  int32 task_index = 3;
+
+  // The default configuration for sessions that run on this server.
+  ConfigProto default_session_config = 4;
+
+  // The protocol to be used by this server.
+  //
+  // Acceptable values include: "grpc".
+  string protocol = 5;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/transport_options.proto b/third_party/tensorflow/tensorflow/core/protobuf/transport_options.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/transport_options.proto
@@ -0,0 +1,8 @@
+syntax = "proto3";
+
+package tensorflow;
+
+// Extra data needed on a non-RDMA RecvBufResponse.
+message RecvBufRespExtra {
+  bytes tensor_content = 1;
+};
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/worker.proto b/third_party/tensorflow/tensorflow/core/protobuf/worker.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/worker.proto
@@ -0,0 +1,550 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "WorkerProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "google/protobuf/any.proto";
+import "tensorflow/core/framework/cost_graph.proto";
+import "tensorflow/core/framework/step_stats.proto";
+import "tensorflow/core/framework/device_attributes.proto";
+import "tensorflow/core/framework/graph.proto";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/lib/core/error_codes.proto";
+import "tensorflow/core/protobuf/config.proto";
+import "tensorflow/core/protobuf/debug.proto";
+import "tensorflow/core/protobuf/named_tensor.proto";
+import "tensorflow/core/protobuf/tensorflow_server.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// GetStatus method request/response messages
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message GetStatusRequest {
+}
+
+message GetStatusResponse {
+  repeated DeviceAttributes device_attributes = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CreateSession method request/response messages
+//
+// For each session,
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CreateWorkerSessionRequest {
+  // Sessions are identified by a given handle.
+  string session_handle = 1;
+
+  // Defines the configuration of a TensorFlow worker.
+  ServerDef server_def = 2;
+
+  // If true, any resources such as Variables used in the session will not be
+  // shared with other sessions.
+  bool isolate_session_state = 3;
+}
+
+message CreateWorkerSessionResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// DeleteSession method request/response messages
+//
+// Deletes all worker-side state associated with the given session handle.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message DeleteWorkerSessionRequest {
+  // Sessions are identified by a given handle.
+  string session_handle = 1;
+}
+
+message DeleteWorkerSessionResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RegisterGraph method request/response messages
+//
+// For each session, after the master placed every node on a device,
+// it partitions the whole graph into many subgraphs. All the nodes in
+// a subgraph were in the same worker, but potentially on many devices
+// owned by that worker (e.g. cpu0, plus gpu0, gpu1, ..., gpu7). The
+// master registers subgraphs for a worker before running any steps. A
+// successful registration returns a graph handle to be used in latter
+// RunGraph requests.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RegisterGraphRequest {
+  // Subgraphs are scoped within one session.
+  string session_handle = 1;
+
+  // Set to true if `CreateWorkerSession` was called for `session_handle`.
+  bool create_worker_session_called = 6;
+
+  // "graph_def" has the subgraph of nodes for this worker, with each node
+  // having its device_name filled in.
+  GraphDef graph_def = 2;
+
+  // True iff the graph (before partitioning) contains control flow nodes.
+  //
+  // As of 01/11/2015, this is no longer set by clients.
+  bool has_control_flow = 3 [deprecated = true];
+
+  // Configuration options for the session in which this graph was created.
+  GraphOptions graph_options = 4;
+
+  // Field(s) used by TensorFlow Debugger (tfdbg).
+  DebugOptions debug_options = 5;
+
+  // If graph_def contains any collective ops this must be a positive
+  // integer used to coordinate execution with other graphs.  All
+  // graphs in a distributed execution with the same
+  // collective_graph_key will coordinate to use the same step_id
+  // concurrently so that BufRendezvous entries will make the correct
+  // values accessible.
+  int64 collective_graph_key = 7;
+}
+
+message RegisterGraphResponse {
+  // If the registration succeeds, returns an opaque graph_handle to
+  // the master. The master calls RunGraph with graph_handle to
+  // compute different steps.
+  string graph_handle = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// DeregisterGraph method request/response messages
+//
+// The master deregisters the given graph_handle when the graph is no
+// longer needed (e.g., the overall graph is re-scheduled and nodes
+// are re-placed).
+//
+// The worker deregisters a graph_handle automatically according to on
+// a TTL-base policy in case of master restarts.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message DeregisterGraphRequest {
+  // The session_handle used when registering the graph. If session_handle is
+  // empty, a single global namespace is used.
+  string session_handle = 2;
+
+  // Set to true if `CreateWorkerSession` was called for `session_handle`.
+  bool create_worker_session_called = 3;
+
+  // REQUIRED: graph_handle must be returned by a RegisterGraph call
+  // to the same WorkerService.
+  string graph_handle = 1;
+}
+
+message DeregisterGraphResponse {
+  // TODO(mrry): Optionally add summary stats for the graph.
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CleanupAll method request/response messages
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CleanupAllRequest {
+  // A list of container names.
+  //
+  // If 'container' is not empty, releases resources in the given
+  // containers in all devices.
+  //
+  // If 'container' is empty, releases resources in the default
+  // container in all devices.
+  repeated string container = 1;
+}
+
+message CleanupAllResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RunGraph request / response messages
+//
+// The worker executes all subgraphs registered under graph_handle.
+// RunGraph returns after the execution finishes or an error is
+// encountered.
+// A sequence of RunGraphRequests with is_partial may be sent to RunGraph for
+// partial graph execution.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Options specific to the execution of a single step.
+message ExecutorOpts {
+  bool record_costs = 1;
+  bool record_timeline = 3;
+  bool record_partition_graphs = 4;
+  bool report_tensor_allocations_upon_oom = 5;
+};
+
+message RunGraphRequest {
+  // session_handle is the master-generated unique id for this session.
+  // If session_handle is non-empty, it must be the same as used when
+  // registering the graph. If it is empty, a single global namespace is used to
+  // search for the graph_handle.
+  string session_handle = 8;
+
+  // Set to true if `CreateWorkerSession` was called for `session_handle`.
+  bool create_worker_session_called = 10;
+
+  // REQUIRED: graph_handle must be returned by a RegisterGraph call
+  // to the same WorkerService.
+  string graph_handle = 1;
+
+  // A unique ID to distinguish different runs of the same graph.
+  //
+  // The master generates a global unique `step_id` to distinguish
+  // different runs of the graph computation. Subgraphs communicate
+  // (e.g., send/recv ops) with each other using `step_id` to
+  // distinguish tensors generated by different runs.
+  int64 step_id = 2;
+
+  // Options for this step.
+  ExecutorOpts exec_opts = 5;
+
+  // Runs the graph.
+  //
+  // Sends the tensors in "send" into the graph before the run and
+  // fetches the keys into `RunGraphResponse.recv` after the run.
+  repeated NamedTensorProto send = 3;
+  repeated string recv_key = 4;
+
+  // True if the RunGraphRequest is a partial run request.
+  bool is_partial = 6;
+  // True if this is the last partial run request in a sequence of requests.
+  bool is_last_partial_run = 7;
+
+  // If true then some errors, e.g., execution errors that have long
+  // error messages, may return an OK RunGraphResponse with the actual
+  // error saved in the status_code/status_error_message fields of the
+  // response body. This is a workaround since the RPC subsystem may
+  // truncate long metadata messages.
+  bool store_errors_in_response_body = 9;
+
+  // Next: 11
+}
+
+message RunGraphResponse {
+  // A list of tensors corresponding to those requested by
+  // `RunGraphRequest.recv_key`.
+  repeated NamedTensorProto recv = 1;
+
+  // If the request asked for execution stats, the cost graph, or the partition
+  // graphs, these are returned here.
+  // TODO(suharshs): Package these in a RunMetadata instead.
+  StepStats step_stats = 2;
+  CostGraphDef cost_graph = 3;
+  repeated GraphDef partition_graph = 4;
+
+  // If store_errors_in_response_body is true in the request, then
+  // optionally the server may return an OK status for the RPC and
+  // fill the true status into the fields below, to allow for messages
+  // that are too long to fit in metadata.
+  error.Code status_code = 5;
+  string status_error_message = 6;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// CleanupGraph method request/response messages
+//
+// After the master receives RunGraph responses from all workers, the
+// master instructs every worker to cleanup any remaining state of a
+// step (e.g. tensors buffered by a `Send` op but not picked up by
+// other workers). The master does not necessarily need to wait for
+// completion of CleanupGraph calls.
+//
+// Workers should cleanup step states automatically according to a
+// TTL-based policy in case of master restarts.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message CleanupGraphRequest {
+  int64 step_id = 1;
+}
+
+message CleanupGraphResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// RecvTensor method request/response messages
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RecvTensorRequest {
+  // The step in which the tensor will be produced.
+  //
+  // REQUIRED: This must eventually correspond to the `step_id` passed
+  // into a RunGraph call on the same WorkerService.
+  int64 step_id = 1;
+
+  // A key identifying the channel to receive tensors from. A RecvTensor request
+  // retrieves one tensor from the channel, but multiple tensors can be sent and
+  // received over the same channel with multiple RecvTensor requests. See
+  // rendezvous.h for details.
+  string rendezvous_key = 2;
+
+  // If true, use an out-of-band DMA mechanism to transfer the
+  // received tensor.
+  bool dma_ok = 3;
+
+  // Optional information on client-side device locality.
+  DeviceLocality client_locality = 4;
+
+  // Optional information on server-side device locality.
+  DeviceLocality server_locality = 5;
+
+  // Optional information needed by the RPC subsystem.
+  google.protobuf.Any transport_options = 6;
+
+  // Unique identifier for this request. Every RecvTensorRequest must have a
+  // unique request_id, and retried RecvTensorRequests must have the same
+  // request_id. If request_id is zero, retry detection is disabled.
+  //
+  // Retried RecvTensorRequests are problematic because a RecvTensor with no
+  // corresponding sender will wait forever, and the tensor may have been
+  // delivered to a previous retry. Workers use request_ids to reject retried
+  // RecvTensor requests instead of waiting forever.
+  int64 request_id = 7;
+}
+
+message RecvTensorResponse {
+  // The tensor as a proto.
+  TensorProto tensor = 1;
+
+  // If true, this tensor was the output of a dead node, and the
+  // content is invalid.
+  bool is_dead = 2;
+
+  // The time at which tensor was available and started to be returned.
+  int64 send_start_micros = 3;
+
+  // Optional additional information about how to receive the tensor,
+  // e.g. in the event that `RecvTensorRequest.dma_ok` was true.
+  google.protobuf.Any transport_options = 4;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Logging method request/response messages
+//
+// NOTE(mrry): This feature is not supported in the open-source
+// version, and these messages are expected to change.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Out-of-band request to begin or end logging, or
+// to retrieve logs for particular steps.
+message LoggingRequest {
+  // If true, RPC logging will be enabled.
+  bool enable_rpc_logging = 1;
+
+  // If true, RPC logging will be disabled.
+  bool disable_rpc_logging = 4;
+
+  // If true, discard any saved logging data (for all steps).
+  bool clear = 2;
+
+  // When set, requests all saved log data pertaining to the step.
+  // Any log data retrieved is eliminated from the store and cannot be
+  // retrieved again.
+  repeated int64 fetch_step_id = 3;
+}
+
+message LabeledStepStats {
+  int64 step_id = 1;
+  StepStats step_stats = 2;
+}
+
+message LoggingResponse {
+  repeated LabeledStepStats step = 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Tracing method request/response messages
+//
+// NOTE(mrry): This feature is not supported in the open-source
+// version, and these messages are expected to change.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message TraceOpts {
+  // Length of the trace to be taken, in seconds.
+  double duration = 1;
+  // If true, capture step profile locally in each worker. Currently
+  // unimplemented.
+  bool use_step_profiler = 2;
+  // If true, capture kernel events from each worker.
+  bool use_kernel_profiler = 3;
+  // If true, capture extended profiling events from TensorFlow process.
+  bool use_extended_profiler = 4;
+  // If true, capture GPU profiling events locally on each
+  // machine. Currently unimplemented.
+  bool use_gpu_profiler = 5;
+  // If true, collect sampled profile events. Currently unimplemented.
+  bool use_sample_profiler = 6;
+}
+
+// Out-of-band request to configure distributed tracing.
+message TracingRequest {
+  TraceOpts options = 1;
+}
+
+message TracingResponse {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Raw data transfers in support of Collective Ops.
+// These methods are experimental and subject to change.
+//
+// The intention is to allow collectives to take advantage of the most
+// efficient methods available on a platform, e.g. RDMA, and not be
+// constrained to use the RPC system in use by other methods.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+message RecvBufRequest {
+  // Use of the fields below may vary by implementation.  For example
+  // the buf_ptr and num_bytes may be set only for local operations and
+  // not sent on the wire, or only sent on the wire in one direction.
+
+  // Used at server side to find the correct BufRendezvous.
+  int64 step_id = 1;
+
+  // Arbitrary string identifying a BufRendezvous entry.
+  string buf_rendezvous_key = 2;
+
+  // Size of value expected, must agree with BufRendezvous entry.
+  int64 num_bytes = 3;
+
+  // When RDMA is in use, address of destination field on client.
+  fixed64 buf_ptr = 4;
+
+  // Optional information on client-side device locality.
+  DeviceLocality client_locality = 5;
+
+  // Optional information on server-side device locality.
+  DeviceLocality server_locality = 6;
+
+  // Optional, implementation-specific data.
+  google.protobuf.Any transport_options = 7;
+  // Optional, for annotating the timeline.
+  string src_device = 8;
+  string dst_device = 9;
+}
+
+message RecvBufResponse {
+  // Use of the fields below may vary by implementation.  Comments give
+  // intended use.
+
+  fixed64 buf_ptr = 1;  // Address of source field on server.
+  int64 num_bytes = 2;  // Byte length of buf_ptr field, if set.
+  bool is_dead = 3;     // True if value is 'dead' like a tensor.
+  // Optional, implementation-specific data.
+  google.protobuf.Any transport_options = 4;
+  // Optional, for timeline.
+  int64 send_start_micros = 5;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Collective Op dynamic group resolution messages.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Supplies one or more device names as members of the group identified by
+// group_key.  Service will respond when all group_size devices become known.
+// All devices in group must have same type.
+message CompleteGroupRequest {
+  int32 group_key = 1;
+  int32 group_size = 2;
+  string device_type = 3;
+  repeated string device_name = 4;
+}
+
+// Gives the complete membership of the group identified by group_key.
+message CompleteGroupResponse {
+  int32 group_key = 1;
+  int32 group_size = 2;
+  string device_type = 3;
+  int32 num_tasks = 4;  // number of distinct tasks hosting the devices
+  repeated string device_name = 5;
+  repeated string task_name = 6;  // task name prefixes of device_names
+}
+
+// Supplies data about one collective op belonging to the instance identified
+// by instance_key.  Service will respond when all group_size ops have
+// become known.  Most of the data being sent is for correctness checking,
+// to ensure that all ops in the instance share common attributes.
+message CompleteInstanceRequest {
+  string name = 1;
+  int32 type = 2;
+  DataType data_type = 3;
+  TensorShapeProto shape = 4;
+  int32 group_key = 5;
+  int32 group_size = 6;
+  int32 instance_key = 7;
+  string device_type = 8;
+  repeated int32 subdiv_offset = 9;
+  string device = 10;
+  bool is_source = 11;
+}
+
+// Confirms that every op in the instance has consistently declared itself.
+// Also gives the source_rank in case of broadcast.
+message CompleteInstanceResponse {
+  int32 instance_key = 1;
+  int32 source_rank = 2;
+}
+
+// Request for next agreed-upon step_id for the specified graph_keys.
+// This is used to enable multiple graphs containing nodes from
+// a common collective instance to coordinate using the same step_ids.
+message GetStepSequenceRequest {
+  repeated int64 graph_key = 1;
+}
+
+message StepSequence {
+  int64 graph_key = 1;
+  int64 next_step_id = 2;
+}
+
+// Next valid step_ids for one or more graph_keys.
+message GetStepSequenceResponse {
+  repeated StepSequence step_sequence = 1;
+}
diff --git a/third_party/tensorflow/tensorflow/core/protobuf/worker_service.proto b/third_party/tensorflow/tensorflow/core/protobuf/worker_service.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/protobuf/worker_service.proto
@@ -0,0 +1,89 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+syntax = "proto3";
+
+package tensorflow.grpc;
+option java_outer_classname = "WorkerServiceProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.distruntime";
+option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf";
+import "tensorflow/core/protobuf/worker.proto";
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// WorkerService defines a TensorFlow service that executes dataflow
+// graphs on a set of local devices, on behalf of a MasterService.
+//
+// A worker service keeps track of multiple "registered graphs". Each
+// registered graph is a subgraph of a client's graph, corresponding to
+// only the nodes that should execute on this worker (and any
+// additional nodes necessary for inter-process communication using
+// the `RecvTensor` method).
+//
+////////////////////////////////////////////////////////////////////////////////
+
+service WorkerService {
+  // See worker.proto for details.
+  rpc GetStatus(GetStatusRequest) returns (GetStatusResponse);
+
+  // See worker.proto for details.
+  rpc CreateWorkerSession(CreateWorkerSessionRequest)
+      returns (CreateWorkerSessionResponse);
+
+  // See worker.proto for details.
+  rpc DeleteWorkerSession(DeleteWorkerSessionRequest)
+      returns (DeleteWorkerSessionResponse);
+
+  // See worker.proto for details.
+  rpc RegisterGraph(RegisterGraphRequest) returns (RegisterGraphResponse);
+
+  // See worker.proto for details.
+  rpc DeregisterGraph(DeregisterGraphRequest) returns (DeregisterGraphResponse);
+
+  // See worker.proto for details.
+  rpc RunGraph(RunGraphRequest) returns (RunGraphResponse);
+
+  // See worker.proto for details.
+  rpc CleanupGraph(CleanupGraphRequest) returns (CleanupGraphResponse);
+
+  // See worker.proto for details.
+  rpc CleanupAll(CleanupAllRequest) returns (CleanupAllResponse);
+
+  // See worker.proto for details.
+  rpc RecvTensor(RecvTensorRequest) returns (RecvTensorResponse) {
+    // RecvTensor Method
+  }
+
+  // See worker.proto for details.
+  rpc Logging(LoggingRequest) returns (LoggingResponse);
+
+  // See worker.proto for details.
+  rpc Tracing(TracingRequest) returns (TracingResponse);
+
+  // See worker.proto for details.
+  rpc RecvBuf(RecvBufRequest) returns (RecvBufResponse) {
+  }
+
+  // See worker.proto for details.
+  rpc GetStepSequence(GetStepSequenceRequest) returns (GetStepSequenceResponse);
+
+  // See worker.proto for details.
+  rpc CompleteGroup(CompleteGroupRequest) returns (CompleteGroupResponse);
+
+  // See worker.proto for details.
+  rpc CompleteInstance(CompleteInstanceRequest)
+      returns (CompleteInstanceResponse);
+}
diff --git a/third_party/tensorflow/tensorflow/core/util/event.proto b/third_party/tensorflow/tensorflow/core/util/event.proto
--- a/third_party/tensorflow/tensorflow/core/util/event.proto
+++ b/third_party/tensorflow/tensorflow/core/util/event.proto
@@ -43,7 +43,11 @@
 message LogMessage {
   enum Level {
     UNKNOWN = 0;
-    DEBUG = 10;
+    // Note: The logging level 10 cannot be named DEBUG. Some software
+    // projects compile their C/C++ code with -DDEBUG in debug builds. So the
+    // C++ code generated from this file should not have an identifier named
+    // DEBUG.
+    DEBUGGING = 10;
     INFO = 20;
     WARN = 30;
     ERROR = 40;
@@ -75,4 +79,37 @@
   // Byte-encoded version of the `RunMetadata` proto in order to allow lazy
   // deserialization.
   bytes run_metadata = 2;
+}
+
+// Worker heartbeat messages.  Support for these operations is currently
+// internal and expected to change.
+
+// Current health status of a worker.
+enum WorkerHealth {
+  OK = 0;  // By default a worker is healthy.
+  RECEIVED_SHUTDOWN_SIGNAL = 1;
+  INTERNAL_ERROR = 2;
+}
+
+// Indicates the behavior of the worker when an internal error or shutdown
+// signal is received.
+enum WorkerShutdownMode {
+  DEFAULT = 0;
+  SHUTDOWN_IMMEDIATELY = 1;
+  WAIT_FOR_COORDINATOR = 2;
+}
+
+message WatchdogConfig {
+  int64 timeout_ms = 1;
+}
+
+message WorkerHeartbeatRequest {
+  WorkerShutdownMode shutdown_mode = 1;
+  WatchdogConfig watchdog_config = 2;
+}
+
+message WorkerHeartbeatResponse {
+  WorkerHealth health_status = 1;
+  repeated Event worker_log = 2;
+  string hostname = 3;
 }
diff --git a/third_party/tensorflow/tensorflow/core/util/example_proto_fast_parsing_test.proto b/third_party/tensorflow/tensorflow/core/util/example_proto_fast_parsing_test.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/util/example_proto_fast_parsing_test.proto
@@ -0,0 +1,21 @@
+// Protocol message for the fast Example parse unit test.
+syntax = "proto3";
+
+import "tensorflow/core/example/feature.proto";
+option cc_enable_arenas = true;
+
+package tensorflow;
+
+// This message is parallel to Example, but with additional fields to test
+// unknown fields handling in example_proto_fast_parsing_test.cc.
+message ExampleWithExtras {
+  Features features = 1;
+
+  string extra1 = 1337;
+  int64 extra2 = 1338;
+  fixed32 extra3 = 1339;
+  fixed64 extra4 = 1340;
+  double extra5 = 1341;
+  repeated float extra6 = 1342;
+  Features extra7 = 1343;
+};
diff --git a/third_party/tensorflow/tensorflow/core/util/memmapped_file_system.proto b/third_party/tensorflow/tensorflow/core/util/memmapped_file_system.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/util/memmapped_file_system.proto
@@ -0,0 +1,29 @@
+/* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+
+// A message that describes one region of memmapped file.
+message MemmappedFileSystemDirectoryElement {
+  uint64 offset = 1;
+  string name = 2;
+}
+
+// A directory of regions in a memmapped file.
+message MemmappedFileSystemDirectory {
+  repeated MemmappedFileSystemDirectoryElement element = 1;
+}
diff --git a/third_party/tensorflow/tensorflow/core/util/saved_tensor_slice.proto b/third_party/tensorflow/tensorflow/core/util/saved_tensor_slice.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/util/saved_tensor_slice.proto
@@ -0,0 +1,84 @@
+// Protocol buffers for saved tensor slices. It's used for the brain tensor
+// ops checkpoints and the V3 checkpoints in dist_belief.
+
+// A checkpoint file is an sstable. The value for each record is a serialized
+// SavedTensorSlices message (defined below).
+//
+// Each checkpoint file has a record with the empty key (""), which corresponds
+// to a SavedTensorSlices message that contains a "meta", that serves as a
+// table of contents on all the tensor slices saved in this file. Since the key
+// is "", it's always the first record in each file.
+//
+// Each of the rest of the records in a checkpoint stores the raw data of a
+// particular tensor slice, in SavedSlice format. The corresponding key is an
+// ordered code that encodes the name of the tensor and the slice
+// information. The name is also stored in the SaveSlice message for ease of
+// debugging and manual examination.
+
+syntax = "proto3";
+
+package tensorflow;
+option cc_enable_arenas = true;
+option java_outer_classname = "SavedTensorSliceProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util";
+
+import "tensorflow/core/framework/tensor_shape.proto";
+import "tensorflow/core/framework/tensor_slice.proto";
+import "tensorflow/core/framework/tensor.proto";
+import "tensorflow/core/framework/types.proto";
+import "tensorflow/core/framework/versions.proto";
+
+// Metadata describing the set of slices of the same tensor saved in a
+// checkpoint file.
+message SavedSliceMeta {
+  // Name of the tensor.
+  string name = 1;
+
+  // Shape of the tensor
+  TensorShapeProto shape = 2;
+
+  // Type of the tensor
+  DataType type = 3;
+
+  // Explicit list of slices saved in the checkpoint file.
+  repeated TensorSliceProto slice = 4;
+};
+
+// Metadata describing the set of tensor slices saved in a checkpoint file.
+// It is always stored at the beginning of each checkpoint file.
+message SavedTensorSliceMeta {
+  // Each SavedSliceMeta describes the slices for one tensor.
+  repeated SavedSliceMeta tensor = 1;
+
+  // Compatibility version of this checkpoint.  See core/public/version.h
+  // for version history.
+  VersionDef versions = 2;
+};
+
+// Saved tensor slice: it stores the name of the tensors, the slice, and the
+// raw data.
+message SavedSlice {
+  // Name of the tensor that this slice belongs to. This must be identical to
+  // the name used to encode the key for this record.
+  string name = 1;
+
+  // Extent of the slice.  Must have one entry for each of the dimension of the
+  // tensor that this slice belongs to.
+  TensorSliceProto slice = 2;
+
+  // The raw data of the slice is stored as a TensorProto. Only raw data are
+  // stored (we don't fill in fields such as dtype or tensor_shape).
+  TensorProto data = 3;
+};
+
+// Each record in a v3 checkpoint file is a serialized SavedTensorSlices
+// message.
+message SavedTensorSlices {
+  // This is only present at the first item of each checkpoint file and serves
+  // as a table of contents, listing all the tensor slices saved in this file.
+  SavedTensorSliceMeta meta = 1;
+
+  // This exists in all but the first item of each checkpoint file.
+  SavedSlice data = 2;
+};
diff --git a/third_party/tensorflow/tensorflow/core/util/test_log.proto b/third_party/tensorflow/tensorflow/core/util/test_log.proto
new file mode 100644
--- /dev/null
+++ b/third_party/tensorflow/tensorflow/core/util/test_log.proto
@@ -0,0 +1,196 @@
+// Protocol messages for describing the results of benchmarks and unit tests.
+syntax = "proto3";
+
+import "google/protobuf/any.proto";
+
+option cc_enable_arenas = true;
+option java_outer_classname = "TestLogProtos";
+option java_multiple_files = true;
+option java_package = "org.tensorflow.util.testlog";
+
+package tensorflow;
+
+message EntryValue {
+  oneof kind {
+    double double_value = 1;
+    string string_value = 2;
+  }
+};
+
+// Each unit test or benchmark in a test or benchmark run provides
+// some set of information.  Here we provide some reasonable keys
+// one would expect to see, with optional key/value pairs for things
+// we haven't considered.
+//
+// This BenchmarkEntry should be emitted by each unit test or benchmark
+// reporter.
+message BenchmarkEntry {
+  // The name of the specific benchmark or test
+  // (e.g. BM_AdjustContrast_gpu_B_W_H)
+  string name = 1;
+
+  // If a benchmark, how many iterations it was run for
+  int64 iters = 2;
+
+  // Total cpu time used for all iterations (in seconds)
+  double cpu_time = 3;
+
+  // Total wall time used for all iterations (in seconds)
+  double wall_time = 4;
+
+  // Throughput (in MB/s)
+  double throughput = 5;
+
+  // Generic map from result key to value.
+  map<string, EntryValue> extras = 6;
+};
+
+message BenchmarkEntries {
+  repeated BenchmarkEntry entry = 1;
+}
+
+message BuildConfiguration {
+  string mode = 1;               // opt, dbg, etc
+  repeated string cc_flags = 2;  // CC compiler flags, if known
+  repeated string opts = 3;      // Bazel compilation options, if known
+};
+
+message CommitId {
+  oneof kind {
+    // Submitted changelist.
+    int64 changelist = 1;
+    string hash = 2;
+  }
+  // Hash of intermediate change between hash/changelist and what was tested.
+  // Not used if the build is from a commit without modifications.
+  string snapshot = 3;
+  // Changelist tested if the change list is not already submitted.
+  int64 pending_changelist = 4;
+};
+
+message CPUInfo {
+  int64 num_cores = 1;
+
+  int64 num_cores_allowed = 2;
+
+  // How fast are these cpus?
+  double mhz_per_cpu = 3;
+
+  // Additional cpu information. For example,
+  // Intel Ivybridge with HyperThreading (24 cores) dL1:32KB dL2:256KB dL3:30MB
+  string cpu_info = 4;
+
+  // What kind of cpu scaling is enabled on the host.
+  // Examples include "performance", "ondemand", "conservative", "mixed".
+  string cpu_governor = 5;
+
+  // Cache sizes (in bytes), e.g. "L2": 262144 (for 256KB)
+  map<string, int64> cache_size = 6;
+};
+
+message MemoryInfo {
+  int64 total = 1;      // Total virtual memory in bytes
+  int64 available = 2;  // Immediately available memory in bytes
+}
+
+message GPUInfo {
+  string model = 1;  // e.g. "Tesla K40c"
+  string uuid = 2;   // Final entry in output of "nvidia-smi -L"
+  string bus_id = 3;  // e.g. "0000:04:00.0"
+};
+
+message PlatformInfo {
+  string bits = 1;       // e.g. '64bit'
+  string linkage = 2;    // e.g. 'ELF'
+  string machine = 3;    // e.g. 'i386'
+  string release = 4;    // e.g. '3.13.0-76-generic'
+  string system = 5;     // e.g. 'Linux'
+  string version = 6;    // e.g. '#120-Ubuntu SMP Mon Jan 18 15:59:10 UTC 2016'
+};
+
+message AvailableDeviceInfo {       // Matches DeviceAttributes
+  string name = 1;                  // Device name.
+  string type = 2;                  // Device type, e.g. 'CPU' or 'GPU'.
+  int64 memory_limit = 3;           // Memory capacity in bytes.
+  string physical_description = 4;  // The physical description of this device.
+};
+
+message MachineConfiguration {
+  // Host name of machine that ran the benchmark.
+  string hostname = 1;
+
+  // Unique serial number of the machine.
+  string serial_identifier = 7;
+
+  // Additional platform information.
+  PlatformInfo platform_info = 2;
+
+  // CPU Information.
+  CPUInfo cpu_info = 3;
+
+  // Other devices that are attached and relevant (e.g. GPUInfo).
+  repeated google.protobuf.Any device_info = 4;
+
+  // Devices accessible to the test (e.g. as given by list_local_devices).
+  repeated AvailableDeviceInfo available_device_info = 5;
+
+  MemoryInfo memory_info = 6;
+};
+
+// Run-specific items such as arguments to the test / benchmark.
+message RunConfiguration {
+  repeated string argument = 1;
+}
+
+// The output of one benchmark / test run.  Each run contains a list of
+// tests or benchmarks, stored as BenchmarkEntry messages.
+//
+// This message should be emitted by the reporter (which runs the
+// test / BM in a subprocess and then reads the emitted BenchmarkEntry messages;
+// usually from a serialized json file, finally collecting them along
+// with additional information about the test run.
+message TestResults {
+  // The target of the run, e.g.:
+  //  //tensorflow/core:kernels_adjust_contrast_op_benchmark_test
+  string target = 1;
+
+  // The list of tests or benchmarks in this run.
+  BenchmarkEntries entries = 2;
+
+  // The configuration of the build (compiled opt? with cuda? any copts?)
+  BuildConfiguration build_configuration = 3;
+
+  // The commit id (git hash or changelist)
+  CommitId commit_id = 4;
+
+  // The time the run started (in seconds of UTC time since Unix epoch)
+  int64 start_time = 5;
+
+  // The amount of time the total run took (wall time in seconds)
+  double run_time = 6;
+
+  // Machine-specific parameters (Platform and CPU info)
+  MachineConfiguration machine_configuration = 7;
+
+  // Run-specific parameters (arguments, etc)
+  RunConfiguration run_configuration = 8;
+
+  // Benchmark target identifier.
+  string name = 9;
+
+  // The type of benchmark.
+  enum BenchmarkType {
+    UNKNOWN = 0;  // Fallback for protos written before Type was introduced.
+    CPP_MICROBENCHMARK = 1;
+    PYTHON_BENCHMARK = 2;
+    ANDROID_BENCHMARK = 3;
+  }
+  BenchmarkType benchmark_type = 10;
+
+  // Used for differentiating between continuous and debug builds.
+  // Must be one of:
+  // * cbuild: results from continuous build.
+  // * presubmit: results from oneshot requests.
+  // * culprit: results from culprit finder rerun.
+  string run_mode = 11;
+};
