packages feed

proto-lens-protoc (empty) → 0.1.0.0

raw patch · 10 files changed

+6539/−0 lines, 10 filesdep +Cabaldep +basedep +bytestringsetup-changed

Dependencies added: Cabal, base, bytestring, containers, data-default-class, directory, filepath, haskell-src-exts, lens-family, process, proto-lens, text

Files

+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2016, Google Inc.++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Google Inc. nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ proto-lens-protoc.cabal view
@@ -0,0 +1,65 @@+name:                proto-lens-protoc+version:             0.1.0.0+synopsis:            Protocol buffer compiler for the proto-lens library.+description:+  Turn protocol buffer files (.proto) into Haskell files (.hs) which+  can be used with the proto-lens package.+license:             BSD3+license-file:        LICENSE+author:              Judah Jacobson+maintainer:          judahjacobson@google.com+copyright:           Google Inc.+category:            Data+build-type:          Simple+cabal-version:       >=1.21++library+  exposed-modules:   Data.ProtoLens.Setup+  default-language:  Haskell2010+  hs-source-dirs:    src+  build-depends:+        Cabal == 1.22.*+      , base == 4.8.*+      , bytestring == 0.10.*+      , containers == 0.5.*+      , data-default-class == 0.0.*+      , directory == 1.2.*+      , filepath == 1.4.*+      , lens-family == 1.2.*+      , process == 1.2.*+      , proto-lens == 0.1.0.0+      , text == 1.2.*+  reexported-modules:+      -- Modules that are needed by the generated Haskell files:+        Data.ByteString+      , Data.Default.Class+      , Data.Map+      , Data.ProtoLens+      , Data.ProtoLens.Message.Enum+      , Data.Text+      , Lens.Family2+      , Lens.Family2.Unchecked++executable proto-lens-protoc+  main-is:  protoc-gen-haskell.hs+  other-modules:+      Bootstrap.Proto.Google.Protobuf.Compiler.Plugin+      Bootstrap.Proto.Google.Protobuf.Descriptor+      Combinators+      Definitions+      Generate++  build-depends:+        base == 4.8.*+      , bytestring == 0.10.*+      , containers == 0.5.*+      , data-default-class == 0.0.*+      , filepath == 1.4.*+      , haskell-src-exts == 1.17.*+      , lens-family == 1.2.*+      -- Specify an exact version of `proto-lens`, since it's tied closely+      -- to the generated code.+      , proto-lens == 0.1.0.0+      , text == 1.2.*+  hs-source-dirs:      src+  default-language:    Haskell2010
+ src/Bootstrap/Proto/Google/Protobuf/Compiler/Plugin.hs view
@@ -0,0 +1,386 @@+{- This file was auto-generated from google/protobuf/compiler/plugin.proto by the proto-lens-protoc program. -}+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,+  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-unused-imports#-}+module Bootstrap.Proto.Google.Protobuf.Compiler.Plugin where+import qualified Prelude+import qualified Data.ProtoLens+import qualified Data.ProtoLens.Message.Enum+import qualified Lens.Family2+import qualified Lens.Family2.Unchecked+import qualified Data.Default.Class+import qualified Data.Text+import qualified Data.Int+import qualified Data.Word+import qualified Data.Map+import qualified Data.ByteString+import qualified Bootstrap.Proto.Google.Protobuf.Descriptor++data CodeGeneratorRequest = CodeGeneratorRequest{_CodeGeneratorRequest'fileToGenerate+                                                 :: [Data.Text.Text],+                                                 _CodeGeneratorRequest'parameter ::+                                                 Prelude.Maybe Data.Text.Text,+                                                 _CodeGeneratorRequest'protoFile ::+                                                 [Bootstrap.Proto.Google.Protobuf.Descriptor.FileDescriptorProto]}+                          deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "fileToGenerate" CodeGeneratorRequest =+     [Data.Text.Text]++instance Data.ProtoLens.HasField "fileToGenerate"+         CodeGeneratorRequest CodeGeneratorRequest where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorRequest'fileToGenerate+              (\ x__ y__ -> x__{_CodeGeneratorRequest'fileToGenerate = y__})++type instance Data.ProtoLens.Field "parameter" CodeGeneratorRequest+     = Data.Text.Text++instance Data.ProtoLens.HasField "parameter" CodeGeneratorRequest+         CodeGeneratorRequest where+        field _+          = (Prelude..) maybe'parameter+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'parameter" CodeGeneratorRequest =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'parameter"+         CodeGeneratorRequest CodeGeneratorRequest where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorRequest'parameter+              (\ x__ y__ -> x__{_CodeGeneratorRequest'parameter = y__})++type instance Data.ProtoLens.Field "protoFile" CodeGeneratorRequest+     = [Bootstrap.Proto.Google.Protobuf.Descriptor.FileDescriptorProto]++instance Data.ProtoLens.HasField "protoFile" CodeGeneratorRequest+         CodeGeneratorRequest where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorRequest'protoFile+              (\ x__ y__ -> x__{_CodeGeneratorRequest'protoFile = y__})++instance Data.Default.Class.Default CodeGeneratorRequest where+        def+          = CodeGeneratorRequest{_CodeGeneratorRequest'fileToGenerate = [],+                                 _CodeGeneratorRequest'parameter = Prelude.Nothing,+                                 _CodeGeneratorRequest'protoFile = []}++instance Data.ProtoLens.Message CodeGeneratorRequest where+        descriptor+          = let fileToGenerate__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "file_to_generate"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         fileToGenerate)+                parameter__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "parameter"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'parameter)+                protoFile__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "proto_file"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor+                           Bootstrap.Proto.Google.Protobuf.Descriptor.FileDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked protoFile)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, fileToGenerate__field_descriptor),+                    (Data.ProtoLens.Tag 2, parameter__field_descriptor),+                    (Data.ProtoLens.Tag 15, protoFile__field_descriptor)])+                (Data.Map.fromList+                   [("file_to_generate", fileToGenerate__field_descriptor),+                    ("parameter", parameter__field_descriptor),+                    ("proto_file", protoFile__field_descriptor)])++data CodeGeneratorResponse = CodeGeneratorResponse{_CodeGeneratorResponse'error+                                                   :: Prelude.Maybe Data.Text.Text,+                                                   _CodeGeneratorResponse'file ::+                                                   [CodeGeneratorResponse'File]}+                           deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "error" CodeGeneratorResponse =+     Data.Text.Text++instance Data.ProtoLens.HasField "error" CodeGeneratorResponse+         CodeGeneratorResponse where+        field _+          = (Prelude..) maybe'error+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'error" CodeGeneratorResponse =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'error"+         CodeGeneratorResponse CodeGeneratorResponse where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorResponse'error+              (\ x__ y__ -> x__{_CodeGeneratorResponse'error = y__})++type instance Data.ProtoLens.Field "file" CodeGeneratorResponse =+     [CodeGeneratorResponse'File]++instance Data.ProtoLens.HasField "file" CodeGeneratorResponse+         CodeGeneratorResponse where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorResponse'file+              (\ x__ y__ -> x__{_CodeGeneratorResponse'file = y__})++instance Data.Default.Class.Default CodeGeneratorResponse where+        def+          = CodeGeneratorResponse{_CodeGeneratorResponse'error =+                                    Prelude.Nothing,+                                  _CodeGeneratorResponse'file = []}++instance Data.ProtoLens.Message CodeGeneratorResponse where+        descriptor+          = let error__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "error"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'error)+                file__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "file"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor CodeGeneratorResponse'File)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked file)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, error__field_descriptor),+                    (Data.ProtoLens.Tag 15, file__field_descriptor)])+                (Data.Map.fromList+                   [("error", error__field_descriptor),+                    ("file", file__field_descriptor)])++data CodeGeneratorResponse'File = CodeGeneratorResponse'File{_CodeGeneratorResponse'File'name+                                                             :: Prelude.Maybe Data.Text.Text,+                                                             _CodeGeneratorResponse'File'insertionPoint+                                                             :: Prelude.Maybe Data.Text.Text,+                                                             _CodeGeneratorResponse'File'content ::+                                                             Prelude.Maybe Data.Text.Text}+                                deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "name" CodeGeneratorResponse'File =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" CodeGeneratorResponse'File+         CodeGeneratorResponse'File where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'name" CodeGeneratorResponse'File =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name"+         CodeGeneratorResponse'File CodeGeneratorResponse'File where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorResponse'File'name+              (\ x__ y__ -> x__{_CodeGeneratorResponse'File'name = y__})++type instance+     Data.ProtoLens.Field "insertionPoint" CodeGeneratorResponse'File =+     Data.Text.Text++instance Data.ProtoLens.HasField "insertionPoint"+         CodeGeneratorResponse'File CodeGeneratorResponse'File where+        field _+          = (Prelude..) maybe'insertionPoint+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'insertionPoint"+       CodeGeneratorResponse'File+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'insertionPoint"+         CodeGeneratorResponse'File CodeGeneratorResponse'File where+        field _+          = Lens.Family2.Unchecked.lens+              _CodeGeneratorResponse'File'insertionPoint+              (\ x__ y__ ->+                 x__{_CodeGeneratorResponse'File'insertionPoint = y__})++type instance+     Data.ProtoLens.Field "content" CodeGeneratorResponse'File =+     Data.Text.Text++instance Data.ProtoLens.HasField "content"+         CodeGeneratorResponse'File CodeGeneratorResponse'File where+        field _+          = (Prelude..) maybe'content+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'content" CodeGeneratorResponse'File =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'content"+         CodeGeneratorResponse'File CodeGeneratorResponse'File where+        field _+          = Lens.Family2.Unchecked.lens _CodeGeneratorResponse'File'content+              (\ x__ y__ -> x__{_CodeGeneratorResponse'File'content = y__})++instance Data.Default.Class.Default CodeGeneratorResponse'File+         where+        def+          = CodeGeneratorResponse'File{_CodeGeneratorResponse'File'name =+                                         Prelude.Nothing,+                                       _CodeGeneratorResponse'File'insertionPoint = Prelude.Nothing,+                                       _CodeGeneratorResponse'File'content = Prelude.Nothing}++instance Data.ProtoLens.Message CodeGeneratorResponse'File where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                insertionPoint__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "insertion_point"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'insertionPoint)+                content__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "content"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'content)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, insertionPoint__field_descriptor),+                    (Data.ProtoLens.Tag 15, content__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("insertion_point", insertionPoint__field_descriptor),+                    ("content", content__field_descriptor)])++content ::+        forall msg msg' . Data.ProtoLens.HasField "content" msg msg' =>+          Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "content" msg)+            (Data.ProtoLens.Field "content" msg')+content+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "content")++error ::+      forall msg msg' . Data.ProtoLens.HasField "error" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "error" msg)+          (Data.ProtoLens.Field "error" msg')+error+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "error")++file ::+     forall msg msg' . Data.ProtoLens.HasField "file" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "file" msg)+         (Data.ProtoLens.Field "file" msg')+file+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "file")++fileToGenerate ::+               forall msg msg' .+                 Data.ProtoLens.HasField "fileToGenerate" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "fileToGenerate" msg)+                   (Data.ProtoLens.Field "fileToGenerate" msg')+fileToGenerate+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "fileToGenerate")++insertionPoint ::+               forall msg msg' .+                 Data.ProtoLens.HasField "insertionPoint" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "insertionPoint" msg)+                   (Data.ProtoLens.Field "insertionPoint" msg')+insertionPoint+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "insertionPoint")++maybe'content ::+              forall msg msg' .+                Data.ProtoLens.HasField "maybe'content" msg msg' =>+                Lens.Family2.Lens msg msg'+                  (Data.ProtoLens.Field "maybe'content" msg)+                  (Data.ProtoLens.Field "maybe'content" msg')+maybe'content+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'content")++maybe'error ::+            forall msg msg' . Data.ProtoLens.HasField "maybe'error" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'error" msg)+                (Data.ProtoLens.Field "maybe'error" msg')+maybe'error+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'error")++maybe'insertionPoint ::+                     forall msg msg' .+                       Data.ProtoLens.HasField "maybe'insertionPoint" msg msg' =>+                       Lens.Family2.Lens msg msg'+                         (Data.ProtoLens.Field "maybe'insertionPoint" msg)+                         (Data.ProtoLens.Field "maybe'insertionPoint" msg')+maybe'insertionPoint+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'insertionPoint")++maybe'name ::+           forall msg msg' . Data.ProtoLens.HasField "maybe'name" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'name" msg)+               (Data.ProtoLens.Field "maybe'name" msg')+maybe'name+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'name")++maybe'parameter ::+                forall msg msg' .+                  Data.ProtoLens.HasField "maybe'parameter" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "maybe'parameter" msg)+                    (Data.ProtoLens.Field "maybe'parameter" msg')+maybe'parameter+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'parameter")++name ::+     forall msg msg' . Data.ProtoLens.HasField "name" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "name" msg)+         (Data.ProtoLens.Field "name" msg')+name+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "name")++parameter ::+          forall msg msg' . Data.ProtoLens.HasField "parameter" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "parameter" msg)+              (Data.ProtoLens.Field "parameter" msg')+parameter+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "parameter")++protoFile ::+          forall msg msg' . Data.ProtoLens.HasField "protoFile" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "protoFile" msg)+              (Data.ProtoLens.Field "protoFile" msg')+protoFile+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "protoFile")
+ src/Bootstrap/Proto/Google/Protobuf/Descriptor.hs view
@@ -0,0 +1,4833 @@+{- This file was auto-generated from google/protobuf/descriptor.proto by the proto-lens-protoc program. -}+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,+  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-unused-imports#-}+module Bootstrap.Proto.Google.Protobuf.Descriptor where+import qualified Prelude+import qualified Data.ProtoLens+import qualified Data.ProtoLens.Message.Enum+import qualified Lens.Family2+import qualified Lens.Family2.Unchecked+import qualified Data.Default.Class+import qualified Data.Text+import qualified Data.Int+import qualified Data.Word+import qualified Data.Map+import qualified Data.ByteString++data DescriptorProto = DescriptorProto{_DescriptorProto'name ::+                                       Prelude.Maybe Data.Text.Text,+                                       _DescriptorProto'field :: [FieldDescriptorProto],+                                       _DescriptorProto'extension :: [FieldDescriptorProto],+                                       _DescriptorProto'nestedType :: [DescriptorProto],+                                       _DescriptorProto'enumType :: [EnumDescriptorProto],+                                       _DescriptorProto'extensionRange ::+                                       [DescriptorProto'ExtensionRange],+                                       _DescriptorProto'oneofDecl :: [OneofDescriptorProto],+                                       _DescriptorProto'options :: Prelude.Maybe MessageOptions,+                                       _DescriptorProto'reservedRange ::+                                       [DescriptorProto'ReservedRange],+                                       _DescriptorProto'reservedName :: [Data.Text.Text]}+                     deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" DescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" DescriptorProto+         DescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'name" DescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'name+              (\ x__ y__ -> x__{_DescriptorProto'name = y__})++type instance Data.ProtoLens.Field "field" DescriptorProto =+     [FieldDescriptorProto]++instance Data.ProtoLens.HasField "field" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'field+              (\ x__ y__ -> x__{_DescriptorProto'field = y__})++type instance Data.ProtoLens.Field "extension" DescriptorProto =+     [FieldDescriptorProto]++instance Data.ProtoLens.HasField "extension" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'extension+              (\ x__ y__ -> x__{_DescriptorProto'extension = y__})++type instance Data.ProtoLens.Field "nestedType" DescriptorProto =+     [DescriptorProto]++instance Data.ProtoLens.HasField "nestedType" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'nestedType+              (\ x__ y__ -> x__{_DescriptorProto'nestedType = y__})++type instance Data.ProtoLens.Field "enumType" DescriptorProto =+     [EnumDescriptorProto]++instance Data.ProtoLens.HasField "enumType" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'enumType+              (\ x__ y__ -> x__{_DescriptorProto'enumType = y__})++type instance Data.ProtoLens.Field "extensionRange" DescriptorProto+     = [DescriptorProto'ExtensionRange]++instance Data.ProtoLens.HasField "extensionRange" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'extensionRange+              (\ x__ y__ -> x__{_DescriptorProto'extensionRange = y__})++type instance Data.ProtoLens.Field "oneofDecl" DescriptorProto =+     [OneofDescriptorProto]++instance Data.ProtoLens.HasField "oneofDecl" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'oneofDecl+              (\ x__ y__ -> x__{_DescriptorProto'oneofDecl = y__})++type instance Data.ProtoLens.Field "options" DescriptorProto =+     MessageOptions++instance Data.ProtoLens.HasField "options" DescriptorProto+         DescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance Data.ProtoLens.Field "maybe'options" DescriptorProto+     = Prelude.Maybe MessageOptions++instance Data.ProtoLens.HasField "maybe'options" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'options+              (\ x__ y__ -> x__{_DescriptorProto'options = y__})++type instance Data.ProtoLens.Field "reservedRange" DescriptorProto+     = [DescriptorProto'ReservedRange]++instance Data.ProtoLens.HasField "reservedRange" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'reservedRange+              (\ x__ y__ -> x__{_DescriptorProto'reservedRange = y__})++type instance Data.ProtoLens.Field "reservedName" DescriptorProto =+     [Data.Text.Text]++instance Data.ProtoLens.HasField "reservedName" DescriptorProto+         DescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'reservedName+              (\ x__ y__ -> x__{_DescriptorProto'reservedName = y__})++instance Data.Default.Class.Default DescriptorProto where+        def+          = DescriptorProto{_DescriptorProto'name = Prelude.Nothing,+                            _DescriptorProto'field = [], _DescriptorProto'extension = [],+                            _DescriptorProto'nestedType = [], _DescriptorProto'enumType = [],+                            _DescriptorProto'extensionRange = [],+                            _DescriptorProto'oneofDecl = [],+                            _DescriptorProto'options = Prelude.Nothing,+                            _DescriptorProto'reservedRange = [],+                            _DescriptorProto'reservedName = []}++instance Data.ProtoLens.Message DescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                field__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "field"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked field)+                extension__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "extension"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked extension)+                nestedType__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "nested_type"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked nestedType)+                enumType__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "enum_type"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked enumType)+                extensionRange__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "extension_range"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto'ExtensionRange)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         extensionRange)+                oneofDecl__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "oneof_decl"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor OneofDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked oneofDecl)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor MessageOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+                reservedRange__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "reserved_range"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto'ReservedRange)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         reservedRange)+                reservedName__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "reserved_name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked reservedName)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, field__field_descriptor),+                    (Data.ProtoLens.Tag 6, extension__field_descriptor),+                    (Data.ProtoLens.Tag 3, nestedType__field_descriptor),+                    (Data.ProtoLens.Tag 4, enumType__field_descriptor),+                    (Data.ProtoLens.Tag 5, extensionRange__field_descriptor),+                    (Data.ProtoLens.Tag 8, oneofDecl__field_descriptor),+                    (Data.ProtoLens.Tag 7, options__field_descriptor),+                    (Data.ProtoLens.Tag 9, reservedRange__field_descriptor),+                    (Data.ProtoLens.Tag 10, reservedName__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("field", field__field_descriptor),+                    ("extension", extension__field_descriptor),+                    ("nested_type", nestedType__field_descriptor),+                    ("enum_type", enumType__field_descriptor),+                    ("extension_range", extensionRange__field_descriptor),+                    ("oneof_decl", oneofDecl__field_descriptor),+                    ("options", options__field_descriptor),+                    ("reserved_range", reservedRange__field_descriptor),+                    ("reserved_name", reservedName__field_descriptor)])++data DescriptorProto'ExtensionRange = DescriptorProto'ExtensionRange{_DescriptorProto'ExtensionRange'start+                                                                     ::+                                                                     Prelude.Maybe Data.Int.Int32,+                                                                     _DescriptorProto'ExtensionRange'end+                                                                     ::+                                                                     Prelude.Maybe Data.Int.Int32}+                                    deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "start" DescriptorProto'ExtensionRange =+     Data.Int.Int32++instance Data.ProtoLens.HasField "start"+         DescriptorProto'ExtensionRange DescriptorProto'ExtensionRange where+        field _+          = (Prelude..) maybe'start+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'start" DescriptorProto'ExtensionRange =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'start"+         DescriptorProto'ExtensionRange DescriptorProto'ExtensionRange where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'ExtensionRange'start+              (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'start = y__})++type instance+     Data.ProtoLens.Field "end" DescriptorProto'ExtensionRange =+     Data.Int.Int32++instance Data.ProtoLens.HasField "end"+         DescriptorProto'ExtensionRange DescriptorProto'ExtensionRange where+        field _+          = (Prelude..) maybe'end+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'end" DescriptorProto'ExtensionRange =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'end"+         DescriptorProto'ExtensionRange DescriptorProto'ExtensionRange where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'ExtensionRange'end+              (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'end = y__})++instance Data.Default.Class.Default DescriptorProto'ExtensionRange+         where+        def+          = DescriptorProto'ExtensionRange{_DescriptorProto'ExtensionRange'start+                                             = Prelude.Nothing,+                                           _DescriptorProto'ExtensionRange'end = Prelude.Nothing}++instance Data.ProtoLens.Message DescriptorProto'ExtensionRange+         where+        descriptor+          = let start__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "start"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'start)+                end__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "end"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'end)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, start__field_descriptor),+                    (Data.ProtoLens.Tag 2, end__field_descriptor)])+                (Data.Map.fromList+                   [("start", start__field_descriptor),+                    ("end", end__field_descriptor)])++data DescriptorProto'ReservedRange = DescriptorProto'ReservedRange{_DescriptorProto'ReservedRange'start+                                                                   :: Prelude.Maybe Data.Int.Int32,+                                                                   _DescriptorProto'ReservedRange'end+                                                                   :: Prelude.Maybe Data.Int.Int32}+                                   deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "start" DescriptorProto'ReservedRange =+     Data.Int.Int32++instance Data.ProtoLens.HasField "start"+         DescriptorProto'ReservedRange DescriptorProto'ReservedRange where+        field _+          = (Prelude..) maybe'start+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'start" DescriptorProto'ReservedRange =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'start"+         DescriptorProto'ReservedRange DescriptorProto'ReservedRange where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'ReservedRange'start+              (\ x__ y__ -> x__{_DescriptorProto'ReservedRange'start = y__})++type instance+     Data.ProtoLens.Field "end" DescriptorProto'ReservedRange =+     Data.Int.Int32++instance Data.ProtoLens.HasField "end"+         DescriptorProto'ReservedRange DescriptorProto'ReservedRange where+        field _+          = (Prelude..) maybe'end+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'end" DescriptorProto'ReservedRange =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'end"+         DescriptorProto'ReservedRange DescriptorProto'ReservedRange where+        field _+          = Lens.Family2.Unchecked.lens _DescriptorProto'ReservedRange'end+              (\ x__ y__ -> x__{_DescriptorProto'ReservedRange'end = y__})++instance Data.Default.Class.Default DescriptorProto'ReservedRange+         where+        def+          = DescriptorProto'ReservedRange{_DescriptorProto'ReservedRange'start+                                            = Prelude.Nothing,+                                          _DescriptorProto'ReservedRange'end = Prelude.Nothing}++instance Data.ProtoLens.Message DescriptorProto'ReservedRange where+        descriptor+          = let start__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "start"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'start)+                end__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "end"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'end)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, start__field_descriptor),+                    (Data.ProtoLens.Tag 2, end__field_descriptor)])+                (Data.Map.fromList+                   [("start", start__field_descriptor),+                    ("end", end__field_descriptor)])++data EnumDescriptorProto = EnumDescriptorProto{_EnumDescriptorProto'name+                                               :: Prelude.Maybe Data.Text.Text,+                                               _EnumDescriptorProto'value ::+                                               [EnumValueDescriptorProto],+                                               _EnumDescriptorProto'options ::+                                               Prelude.Maybe EnumOptions}+                         deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" EnumDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" EnumDescriptorProto+         EnumDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'name" EnumDescriptorProto+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name" EnumDescriptorProto+         EnumDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _EnumDescriptorProto'name+              (\ x__ y__ -> x__{_EnumDescriptorProto'name = y__})++type instance Data.ProtoLens.Field "value" EnumDescriptorProto =+     [EnumValueDescriptorProto]++instance Data.ProtoLens.HasField "value" EnumDescriptorProto+         EnumDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _EnumDescriptorProto'value+              (\ x__ y__ -> x__{_EnumDescriptorProto'value = y__})++type instance Data.ProtoLens.Field "options" EnumDescriptorProto =+     EnumOptions++instance Data.ProtoLens.HasField "options" EnumDescriptorProto+         EnumDescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'options" EnumDescriptorProto =+     Prelude.Maybe EnumOptions++instance Data.ProtoLens.HasField "maybe'options"+         EnumDescriptorProto EnumDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _EnumDescriptorProto'options+              (\ x__ y__ -> x__{_EnumDescriptorProto'options = y__})++instance Data.Default.Class.Default EnumDescriptorProto where+        def+          = EnumDescriptorProto{_EnumDescriptorProto'name = Prelude.Nothing,+                                _EnumDescriptorProto'value = [],+                                _EnumDescriptorProto'options = Prelude.Nothing}++instance Data.ProtoLens.Message EnumDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                value__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "value"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor EnumValueDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked value)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor EnumOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, value__field_descriptor),+                    (Data.ProtoLens.Tag 3, options__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("value", value__field_descriptor),+                    ("options", options__field_descriptor)])++data EnumOptions = EnumOptions{_EnumOptions'allowAlias ::+                               Prelude.Maybe Prelude.Bool,+                               _EnumOptions'deprecated :: Prelude.Maybe Prelude.Bool,+                               _EnumOptions'uninterpretedOption :: [UninterpretedOption]}+                 deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "allowAlias" EnumOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "allowAlias" EnumOptions+         EnumOptions where+        field _+          = (Prelude..) maybe'allowAlias+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'allowAlias" EnumOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'allowAlias" EnumOptions+         EnumOptions where+        field _+          = Lens.Family2.Unchecked.lens _EnumOptions'allowAlias+              (\ x__ y__ -> x__{_EnumOptions'allowAlias = y__})++type instance Data.ProtoLens.Field "deprecated" EnumOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" EnumOptions+         EnumOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance Data.ProtoLens.Field "maybe'deprecated" EnumOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated" EnumOptions+         EnumOptions where+        field _+          = Lens.Family2.Unchecked.lens _EnumOptions'deprecated+              (\ x__ y__ -> x__{_EnumOptions'deprecated = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" EnumOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption" EnumOptions+         EnumOptions where+        field _+          = Lens.Family2.Unchecked.lens _EnumOptions'uninterpretedOption+              (\ x__ y__ -> x__{_EnumOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default EnumOptions where+        def+          = EnumOptions{_EnumOptions'allowAlias = Prelude.Nothing,+                        _EnumOptions'deprecated = Prelude.Nothing,+                        _EnumOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message EnumOptions where+        descriptor+          = let allowAlias__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "allow_alias"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'allowAlias)+                deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 2, allowAlias__field_descriptor),+                    (Data.ProtoLens.Tag 3, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("allow_alias", allowAlias__field_descriptor),+                    ("deprecated", deprecated__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data EnumValueDescriptorProto = EnumValueDescriptorProto{_EnumValueDescriptorProto'name+                                                         :: Prelude.Maybe Data.Text.Text,+                                                         _EnumValueDescriptorProto'number ::+                                                         Prelude.Maybe Data.Int.Int32,+                                                         _EnumValueDescriptorProto'options ::+                                                         Prelude.Maybe EnumValueOptions}+                              deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" EnumValueDescriptorProto+     = Data.Text.Text++instance Data.ProtoLens.HasField "name" EnumValueDescriptorProto+         EnumValueDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'name" EnumValueDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name"+         EnumValueDescriptorProto EnumValueDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'name+              (\ x__ y__ -> x__{_EnumValueDescriptorProto'name = y__})++type instance+     Data.ProtoLens.Field "number" EnumValueDescriptorProto =+     Data.Int.Int32++instance Data.ProtoLens.HasField "number" EnumValueDescriptorProto+         EnumValueDescriptorProto where+        field _+          = (Prelude..) maybe'number+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'number" EnumValueDescriptorProto =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'number"+         EnumValueDescriptorProto EnumValueDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'number+              (\ x__ y__ -> x__{_EnumValueDescriptorProto'number = y__})++type instance+     Data.ProtoLens.Field "options" EnumValueDescriptorProto =+     EnumValueOptions++instance Data.ProtoLens.HasField "options" EnumValueDescriptorProto+         EnumValueDescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'options" EnumValueDescriptorProto =+     Prelude.Maybe EnumValueOptions++instance Data.ProtoLens.HasField "maybe'options"+         EnumValueDescriptorProto EnumValueDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'options+              (\ x__ y__ -> x__{_EnumValueDescriptorProto'options = y__})++instance Data.Default.Class.Default EnumValueDescriptorProto where+        def+          = EnumValueDescriptorProto{_EnumValueDescriptorProto'name =+                                       Prelude.Nothing,+                                     _EnumValueDescriptorProto'number = Prelude.Nothing,+                                     _EnumValueDescriptorProto'options = Prelude.Nothing}++instance Data.ProtoLens.Message EnumValueDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                number__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "number"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'number)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor EnumValueOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, number__field_descriptor),+                    (Data.ProtoLens.Tag 3, options__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("number", number__field_descriptor),+                    ("options", options__field_descriptor)])++data EnumValueOptions = EnumValueOptions{_EnumValueOptions'deprecated+                                         :: Prelude.Maybe Prelude.Bool,+                                         _EnumValueOptions'uninterpretedOption ::+                                         [UninterpretedOption]}+                      deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "deprecated" EnumValueOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" EnumValueOptions+         EnumValueOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'deprecated" EnumValueOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated"+         EnumValueOptions EnumValueOptions where+        field _+          = Lens.Family2.Unchecked.lens _EnumValueOptions'deprecated+              (\ x__ y__ -> x__{_EnumValueOptions'deprecated = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" EnumValueOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption"+         EnumValueOptions EnumValueOptions where+        field _+          = Lens.Family2.Unchecked.lens _EnumValueOptions'uninterpretedOption+              (\ x__ y__ -> x__{_EnumValueOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default EnumValueOptions where+        def+          = EnumValueOptions{_EnumValueOptions'deprecated = Prelude.Nothing,+                             _EnumValueOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message EnumValueOptions where+        descriptor+          = let deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("deprecated", deprecated__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data FieldDescriptorProto = FieldDescriptorProto{_FieldDescriptorProto'name+                                                 :: Prelude.Maybe Data.Text.Text,+                                                 _FieldDescriptorProto'number ::+                                                 Prelude.Maybe Data.Int.Int32,+                                                 _FieldDescriptorProto'label ::+                                                 Prelude.Maybe FieldDescriptorProto'Label,+                                                 _FieldDescriptorProto'type' ::+                                                 Prelude.Maybe FieldDescriptorProto'Type,+                                                 _FieldDescriptorProto'typeName ::+                                                 Prelude.Maybe Data.Text.Text,+                                                 _FieldDescriptorProto'extendee ::+                                                 Prelude.Maybe Data.Text.Text,+                                                 _FieldDescriptorProto'defaultValue ::+                                                 Prelude.Maybe Data.Text.Text,+                                                 _FieldDescriptorProto'oneofIndex ::+                                                 Prelude.Maybe Data.Int.Int32,+                                                 _FieldDescriptorProto'jsonName ::+                                                 Prelude.Maybe Data.Text.Text,+                                                 _FieldDescriptorProto'options ::+                                                 Prelude.Maybe FieldOptions}+                          deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" FieldDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'name" FieldDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'name+              (\ x__ y__ -> x__{_FieldDescriptorProto'name = y__})++type instance Data.ProtoLens.Field "number" FieldDescriptorProto =+     Data.Int.Int32++instance Data.ProtoLens.HasField "number" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'number+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'number" FieldDescriptorProto =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'number"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'number+              (\ x__ y__ -> x__{_FieldDescriptorProto'number = y__})++type instance Data.ProtoLens.Field "label" FieldDescriptorProto =+     FieldDescriptorProto'Label++instance Data.ProtoLens.HasField "label" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'label+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'label" FieldDescriptorProto =+     Prelude.Maybe FieldDescriptorProto'Label++instance Data.ProtoLens.HasField "maybe'label" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'label+              (\ x__ y__ -> x__{_FieldDescriptorProto'label = y__})++type instance Data.ProtoLens.Field "type'" FieldDescriptorProto =+     FieldDescriptorProto'Type++instance Data.ProtoLens.HasField "type'" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'type'+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'type'" FieldDescriptorProto =+     Prelude.Maybe FieldDescriptorProto'Type++instance Data.ProtoLens.HasField "maybe'type'" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'type'+              (\ x__ y__ -> x__{_FieldDescriptorProto'type' = y__})++type instance Data.ProtoLens.Field "typeName" FieldDescriptorProto+     = Data.Text.Text++instance Data.ProtoLens.HasField "typeName" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'typeName+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'typeName" FieldDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'typeName"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'typeName+              (\ x__ y__ -> x__{_FieldDescriptorProto'typeName = y__})++type instance Data.ProtoLens.Field "extendee" FieldDescriptorProto+     = Data.Text.Text++instance Data.ProtoLens.HasField "extendee" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'extendee+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'extendee" FieldDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'extendee"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'extendee+              (\ x__ y__ -> x__{_FieldDescriptorProto'extendee = y__})++type instance+     Data.ProtoLens.Field "defaultValue" FieldDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "defaultValue"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = (Prelude..) maybe'defaultValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'defaultValue" FieldDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'defaultValue"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'defaultValue+              (\ x__ y__ -> x__{_FieldDescriptorProto'defaultValue = y__})++type instance+     Data.ProtoLens.Field "oneofIndex" FieldDescriptorProto =+     Data.Int.Int32++instance Data.ProtoLens.HasField "oneofIndex" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'oneofIndex+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'oneofIndex" FieldDescriptorProto =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'oneofIndex"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'oneofIndex+              (\ x__ y__ -> x__{_FieldDescriptorProto'oneofIndex = y__})++type instance Data.ProtoLens.Field "jsonName" FieldDescriptorProto+     = Data.Text.Text++instance Data.ProtoLens.HasField "jsonName" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'jsonName+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'jsonName" FieldDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'jsonName"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'jsonName+              (\ x__ y__ -> x__{_FieldDescriptorProto'jsonName = y__})++type instance Data.ProtoLens.Field "options" FieldDescriptorProto =+     FieldOptions++instance Data.ProtoLens.HasField "options" FieldDescriptorProto+         FieldDescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'options" FieldDescriptorProto =+     Prelude.Maybe FieldOptions++instance Data.ProtoLens.HasField "maybe'options"+         FieldDescriptorProto FieldDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'options+              (\ x__ y__ -> x__{_FieldDescriptorProto'options = y__})++instance Data.Default.Class.Default FieldDescriptorProto where+        def+          = FieldDescriptorProto{_FieldDescriptorProto'name =+                                   Prelude.Nothing,+                                 _FieldDescriptorProto'number = Prelude.Nothing,+                                 _FieldDescriptorProto'label = Prelude.Nothing,+                                 _FieldDescriptorProto'type' = Prelude.Nothing,+                                 _FieldDescriptorProto'typeName = Prelude.Nothing,+                                 _FieldDescriptorProto'extendee = Prelude.Nothing,+                                 _FieldDescriptorProto'defaultValue = Prelude.Nothing,+                                 _FieldDescriptorProto'oneofIndex = Prelude.Nothing,+                                 _FieldDescriptorProto'jsonName = Prelude.Nothing,+                                 _FieldDescriptorProto'options = Prelude.Nothing}++instance Data.ProtoLens.Message FieldDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                number__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "number"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'number)+                label__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "label"+                      (Data.ProtoLens.EnumField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto'Label)+                      (Data.ProtoLens.OptionalField maybe'label)+                type'__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "type"+                      (Data.ProtoLens.EnumField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto'Type)+                      (Data.ProtoLens.OptionalField maybe'type')+                typeName__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "type_name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'typeName)+                extendee__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "extendee"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'extendee)+                defaultValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "default_value"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'defaultValue)+                oneofIndex__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "oneof_index"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'oneofIndex)+                jsonName__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "json_name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'jsonName)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 3, number__field_descriptor),+                    (Data.ProtoLens.Tag 4, label__field_descriptor),+                    (Data.ProtoLens.Tag 5, type'__field_descriptor),+                    (Data.ProtoLens.Tag 6, typeName__field_descriptor),+                    (Data.ProtoLens.Tag 2, extendee__field_descriptor),+                    (Data.ProtoLens.Tag 7, defaultValue__field_descriptor),+                    (Data.ProtoLens.Tag 9, oneofIndex__field_descriptor),+                    (Data.ProtoLens.Tag 10, jsonName__field_descriptor),+                    (Data.ProtoLens.Tag 8, options__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("number", number__field_descriptor),+                    ("label", label__field_descriptor),+                    ("type", type'__field_descriptor),+                    ("type_name", typeName__field_descriptor),+                    ("extendee", extendee__field_descriptor),+                    ("default_value", defaultValue__field_descriptor),+                    ("oneof_index", oneofIndex__field_descriptor),+                    ("json_name", jsonName__field_descriptor),+                    ("options", options__field_descriptor)])++data FieldDescriptorProto'Label = FieldDescriptorProto'LABEL_OPTIONAL+                                | FieldDescriptorProto'LABEL_REQUIRED+                                | FieldDescriptorProto'LABEL_REPEATED+                                deriving (Prelude.Show, Prelude.Eq)++instance Data.Default.Class.Default FieldDescriptorProto'Label+         where+        def = FieldDescriptorProto'LABEL_OPTIONAL++instance Data.ProtoLens.FieldDefault FieldDescriptorProto'Label+         where+        fieldDefault = FieldDescriptorProto'LABEL_OPTIONAL++instance Data.ProtoLens.MessageEnum FieldDescriptorProto'Label+         where+        maybeToEnum 1 = Prelude.Just FieldDescriptorProto'LABEL_OPTIONAL+        maybeToEnum 2 = Prelude.Just FieldDescriptorProto'LABEL_REQUIRED+        maybeToEnum 3 = Prelude.Just FieldDescriptorProto'LABEL_REPEATED+        maybeToEnum _ = Prelude.Nothing+        showEnum FieldDescriptorProto'LABEL_OPTIONAL = "LABEL_OPTIONAL"+        showEnum FieldDescriptorProto'LABEL_REQUIRED = "LABEL_REQUIRED"+        showEnum FieldDescriptorProto'LABEL_REPEATED = "LABEL_REPEATED"+        readEnum "LABEL_OPTIONAL"+          = Prelude.Just FieldDescriptorProto'LABEL_OPTIONAL+        readEnum "LABEL_REQUIRED"+          = Prelude.Just FieldDescriptorProto'LABEL_REQUIRED+        readEnum "LABEL_REPEATED"+          = Prelude.Just FieldDescriptorProto'LABEL_REPEATED+        readEnum _ = Prelude.Nothing++instance Prelude.Enum FieldDescriptorProto'Label where+        toEnum k__+          = Prelude.maybe+              (Prelude.error+                 ((Prelude.++) "toEnum: unknown value for enum Label: "+                    (Prelude.show k__)))+              Prelude.id+              (Data.ProtoLens.maybeToEnum k__)+        fromEnum FieldDescriptorProto'LABEL_OPTIONAL = 1+        fromEnum FieldDescriptorProto'LABEL_REQUIRED = 2+        fromEnum FieldDescriptorProto'LABEL_REPEATED = 3+        succ FieldDescriptorProto'LABEL_REPEATED+          = Prelude.error+              "Ident \"FieldDescriptorProto'Label\".Ident \"succ\": bad argument Ident \"FieldDescriptorProto'LABEL_REPEATED\". This value would be out of bounds."+        succ FieldDescriptorProto'LABEL_OPTIONAL+          = FieldDescriptorProto'LABEL_REQUIRED+        succ FieldDescriptorProto'LABEL_REQUIRED+          = FieldDescriptorProto'LABEL_REPEATED+        pred FieldDescriptorProto'LABEL_OPTIONAL+          = Prelude.error+              "Ident \"FieldDescriptorProto'Label\".Ident \"pred\": bad argument Ident \"FieldDescriptorProto'LABEL_OPTIONAL\". This value would be out of bounds."+        pred FieldDescriptorProto'LABEL_REQUIRED+          = FieldDescriptorProto'LABEL_OPTIONAL+        pred FieldDescriptorProto'LABEL_REPEATED+          = FieldDescriptorProto'LABEL_REQUIRED+        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 FieldDescriptorProto'Label where+        minBound = FieldDescriptorProto'LABEL_OPTIONAL+        maxBound = FieldDescriptorProto'LABEL_REPEATED++data FieldDescriptorProto'Type = FieldDescriptorProto'TYPE_DOUBLE+                               | FieldDescriptorProto'TYPE_FLOAT+                               | FieldDescriptorProto'TYPE_INT64+                               | FieldDescriptorProto'TYPE_UINT64+                               | FieldDescriptorProto'TYPE_INT32+                               | FieldDescriptorProto'TYPE_FIXED64+                               | FieldDescriptorProto'TYPE_FIXED32+                               | FieldDescriptorProto'TYPE_BOOL+                               | FieldDescriptorProto'TYPE_STRING+                               | FieldDescriptorProto'TYPE_GROUP+                               | FieldDescriptorProto'TYPE_MESSAGE+                               | FieldDescriptorProto'TYPE_BYTES+                               | FieldDescriptorProto'TYPE_UINT32+                               | FieldDescriptorProto'TYPE_ENUM+                               | FieldDescriptorProto'TYPE_SFIXED32+                               | FieldDescriptorProto'TYPE_SFIXED64+                               | FieldDescriptorProto'TYPE_SINT32+                               | FieldDescriptorProto'TYPE_SINT64+                               deriving (Prelude.Show, Prelude.Eq)++instance Data.Default.Class.Default FieldDescriptorProto'Type where+        def = FieldDescriptorProto'TYPE_DOUBLE++instance Data.ProtoLens.FieldDefault FieldDescriptorProto'Type+         where+        fieldDefault = FieldDescriptorProto'TYPE_DOUBLE++instance Data.ProtoLens.MessageEnum FieldDescriptorProto'Type where+        maybeToEnum 1 = Prelude.Just FieldDescriptorProto'TYPE_DOUBLE+        maybeToEnum 2 = Prelude.Just FieldDescriptorProto'TYPE_FLOAT+        maybeToEnum 3 = Prelude.Just FieldDescriptorProto'TYPE_INT64+        maybeToEnum 4 = Prelude.Just FieldDescriptorProto'TYPE_UINT64+        maybeToEnum 5 = Prelude.Just FieldDescriptorProto'TYPE_INT32+        maybeToEnum 6 = Prelude.Just FieldDescriptorProto'TYPE_FIXED64+        maybeToEnum 7 = Prelude.Just FieldDescriptorProto'TYPE_FIXED32+        maybeToEnum 8 = Prelude.Just FieldDescriptorProto'TYPE_BOOL+        maybeToEnum 9 = Prelude.Just FieldDescriptorProto'TYPE_STRING+        maybeToEnum 10 = Prelude.Just FieldDescriptorProto'TYPE_GROUP+        maybeToEnum 11 = Prelude.Just FieldDescriptorProto'TYPE_MESSAGE+        maybeToEnum 12 = Prelude.Just FieldDescriptorProto'TYPE_BYTES+        maybeToEnum 13 = Prelude.Just FieldDescriptorProto'TYPE_UINT32+        maybeToEnum 14 = Prelude.Just FieldDescriptorProto'TYPE_ENUM+        maybeToEnum 15 = Prelude.Just FieldDescriptorProto'TYPE_SFIXED32+        maybeToEnum 16 = Prelude.Just FieldDescriptorProto'TYPE_SFIXED64+        maybeToEnum 17 = Prelude.Just FieldDescriptorProto'TYPE_SINT32+        maybeToEnum 18 = Prelude.Just FieldDescriptorProto'TYPE_SINT64+        maybeToEnum _ = Prelude.Nothing+        showEnum FieldDescriptorProto'TYPE_DOUBLE = "TYPE_DOUBLE"+        showEnum FieldDescriptorProto'TYPE_FLOAT = "TYPE_FLOAT"+        showEnum FieldDescriptorProto'TYPE_INT64 = "TYPE_INT64"+        showEnum FieldDescriptorProto'TYPE_UINT64 = "TYPE_UINT64"+        showEnum FieldDescriptorProto'TYPE_INT32 = "TYPE_INT32"+        showEnum FieldDescriptorProto'TYPE_FIXED64 = "TYPE_FIXED64"+        showEnum FieldDescriptorProto'TYPE_FIXED32 = "TYPE_FIXED32"+        showEnum FieldDescriptorProto'TYPE_BOOL = "TYPE_BOOL"+        showEnum FieldDescriptorProto'TYPE_STRING = "TYPE_STRING"+        showEnum FieldDescriptorProto'TYPE_GROUP = "TYPE_GROUP"+        showEnum FieldDescriptorProto'TYPE_MESSAGE = "TYPE_MESSAGE"+        showEnum FieldDescriptorProto'TYPE_BYTES = "TYPE_BYTES"+        showEnum FieldDescriptorProto'TYPE_UINT32 = "TYPE_UINT32"+        showEnum FieldDescriptorProto'TYPE_ENUM = "TYPE_ENUM"+        showEnum FieldDescriptorProto'TYPE_SFIXED32 = "TYPE_SFIXED32"+        showEnum FieldDescriptorProto'TYPE_SFIXED64 = "TYPE_SFIXED64"+        showEnum FieldDescriptorProto'TYPE_SINT32 = "TYPE_SINT32"+        showEnum FieldDescriptorProto'TYPE_SINT64 = "TYPE_SINT64"+        readEnum "TYPE_DOUBLE"+          = Prelude.Just FieldDescriptorProto'TYPE_DOUBLE+        readEnum "TYPE_FLOAT"+          = Prelude.Just FieldDescriptorProto'TYPE_FLOAT+        readEnum "TYPE_INT64"+          = Prelude.Just FieldDescriptorProto'TYPE_INT64+        readEnum "TYPE_UINT64"+          = Prelude.Just FieldDescriptorProto'TYPE_UINT64+        readEnum "TYPE_INT32"+          = Prelude.Just FieldDescriptorProto'TYPE_INT32+        readEnum "TYPE_FIXED64"+          = Prelude.Just FieldDescriptorProto'TYPE_FIXED64+        readEnum "TYPE_FIXED32"+          = Prelude.Just FieldDescriptorProto'TYPE_FIXED32+        readEnum "TYPE_BOOL" = Prelude.Just FieldDescriptorProto'TYPE_BOOL+        readEnum "TYPE_STRING"+          = Prelude.Just FieldDescriptorProto'TYPE_STRING+        readEnum "TYPE_GROUP"+          = Prelude.Just FieldDescriptorProto'TYPE_GROUP+        readEnum "TYPE_MESSAGE"+          = Prelude.Just FieldDescriptorProto'TYPE_MESSAGE+        readEnum "TYPE_BYTES"+          = Prelude.Just FieldDescriptorProto'TYPE_BYTES+        readEnum "TYPE_UINT32"+          = Prelude.Just FieldDescriptorProto'TYPE_UINT32+        readEnum "TYPE_ENUM" = Prelude.Just FieldDescriptorProto'TYPE_ENUM+        readEnum "TYPE_SFIXED32"+          = Prelude.Just FieldDescriptorProto'TYPE_SFIXED32+        readEnum "TYPE_SFIXED64"+          = Prelude.Just FieldDescriptorProto'TYPE_SFIXED64+        readEnum "TYPE_SINT32"+          = Prelude.Just FieldDescriptorProto'TYPE_SINT32+        readEnum "TYPE_SINT64"+          = Prelude.Just FieldDescriptorProto'TYPE_SINT64+        readEnum _ = Prelude.Nothing++instance Prelude.Enum FieldDescriptorProto'Type where+        toEnum k__+          = Prelude.maybe+              (Prelude.error+                 ((Prelude.++) "toEnum: unknown value for enum Type: "+                    (Prelude.show k__)))+              Prelude.id+              (Data.ProtoLens.maybeToEnum k__)+        fromEnum FieldDescriptorProto'TYPE_DOUBLE = 1+        fromEnum FieldDescriptorProto'TYPE_FLOAT = 2+        fromEnum FieldDescriptorProto'TYPE_INT64 = 3+        fromEnum FieldDescriptorProto'TYPE_UINT64 = 4+        fromEnum FieldDescriptorProto'TYPE_INT32 = 5+        fromEnum FieldDescriptorProto'TYPE_FIXED64 = 6+        fromEnum FieldDescriptorProto'TYPE_FIXED32 = 7+        fromEnum FieldDescriptorProto'TYPE_BOOL = 8+        fromEnum FieldDescriptorProto'TYPE_STRING = 9+        fromEnum FieldDescriptorProto'TYPE_GROUP = 10+        fromEnum FieldDescriptorProto'TYPE_MESSAGE = 11+        fromEnum FieldDescriptorProto'TYPE_BYTES = 12+        fromEnum FieldDescriptorProto'TYPE_UINT32 = 13+        fromEnum FieldDescriptorProto'TYPE_ENUM = 14+        fromEnum FieldDescriptorProto'TYPE_SFIXED32 = 15+        fromEnum FieldDescriptorProto'TYPE_SFIXED64 = 16+        fromEnum FieldDescriptorProto'TYPE_SINT32 = 17+        fromEnum FieldDescriptorProto'TYPE_SINT64 = 18+        succ FieldDescriptorProto'TYPE_SINT64+          = Prelude.error+              "Ident \"FieldDescriptorProto'Type\".Ident \"succ\": bad argument Ident \"FieldDescriptorProto'TYPE_SINT64\". This value would be out of bounds."+        succ FieldDescriptorProto'TYPE_DOUBLE+          = FieldDescriptorProto'TYPE_FLOAT+        succ FieldDescriptorProto'TYPE_FLOAT+          = FieldDescriptorProto'TYPE_INT64+        succ FieldDescriptorProto'TYPE_INT64+          = FieldDescriptorProto'TYPE_UINT64+        succ FieldDescriptorProto'TYPE_UINT64+          = FieldDescriptorProto'TYPE_INT32+        succ FieldDescriptorProto'TYPE_INT32+          = FieldDescriptorProto'TYPE_FIXED64+        succ FieldDescriptorProto'TYPE_FIXED64+          = FieldDescriptorProto'TYPE_FIXED32+        succ FieldDescriptorProto'TYPE_FIXED32+          = FieldDescriptorProto'TYPE_BOOL+        succ FieldDescriptorProto'TYPE_BOOL+          = FieldDescriptorProto'TYPE_STRING+        succ FieldDescriptorProto'TYPE_STRING+          = FieldDescriptorProto'TYPE_GROUP+        succ FieldDescriptorProto'TYPE_GROUP+          = FieldDescriptorProto'TYPE_MESSAGE+        succ FieldDescriptorProto'TYPE_MESSAGE+          = FieldDescriptorProto'TYPE_BYTES+        succ FieldDescriptorProto'TYPE_BYTES+          = FieldDescriptorProto'TYPE_UINT32+        succ FieldDescriptorProto'TYPE_UINT32+          = FieldDescriptorProto'TYPE_ENUM+        succ FieldDescriptorProto'TYPE_ENUM+          = FieldDescriptorProto'TYPE_SFIXED32+        succ FieldDescriptorProto'TYPE_SFIXED32+          = FieldDescriptorProto'TYPE_SFIXED64+        succ FieldDescriptorProto'TYPE_SFIXED64+          = FieldDescriptorProto'TYPE_SINT32+        succ FieldDescriptorProto'TYPE_SINT32+          = FieldDescriptorProto'TYPE_SINT64+        pred FieldDescriptorProto'TYPE_DOUBLE+          = Prelude.error+              "Ident \"FieldDescriptorProto'Type\".Ident \"pred\": bad argument Ident \"FieldDescriptorProto'TYPE_DOUBLE\". This value would be out of bounds."+        pred FieldDescriptorProto'TYPE_FLOAT+          = FieldDescriptorProto'TYPE_DOUBLE+        pred FieldDescriptorProto'TYPE_INT64+          = FieldDescriptorProto'TYPE_FLOAT+        pred FieldDescriptorProto'TYPE_UINT64+          = FieldDescriptorProto'TYPE_INT64+        pred FieldDescriptorProto'TYPE_INT32+          = FieldDescriptorProto'TYPE_UINT64+        pred FieldDescriptorProto'TYPE_FIXED64+          = FieldDescriptorProto'TYPE_INT32+        pred FieldDescriptorProto'TYPE_FIXED32+          = FieldDescriptorProto'TYPE_FIXED64+        pred FieldDescriptorProto'TYPE_BOOL+          = FieldDescriptorProto'TYPE_FIXED32+        pred FieldDescriptorProto'TYPE_STRING+          = FieldDescriptorProto'TYPE_BOOL+        pred FieldDescriptorProto'TYPE_GROUP+          = FieldDescriptorProto'TYPE_STRING+        pred FieldDescriptorProto'TYPE_MESSAGE+          = FieldDescriptorProto'TYPE_GROUP+        pred FieldDescriptorProto'TYPE_BYTES+          = FieldDescriptorProto'TYPE_MESSAGE+        pred FieldDescriptorProto'TYPE_UINT32+          = FieldDescriptorProto'TYPE_BYTES+        pred FieldDescriptorProto'TYPE_ENUM+          = FieldDescriptorProto'TYPE_UINT32+        pred FieldDescriptorProto'TYPE_SFIXED32+          = FieldDescriptorProto'TYPE_ENUM+        pred FieldDescriptorProto'TYPE_SFIXED64+          = FieldDescriptorProto'TYPE_SFIXED32+        pred FieldDescriptorProto'TYPE_SINT32+          = FieldDescriptorProto'TYPE_SFIXED64+        pred FieldDescriptorProto'TYPE_SINT64+          = FieldDescriptorProto'TYPE_SINT32+        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 FieldDescriptorProto'Type where+        minBound = FieldDescriptorProto'TYPE_DOUBLE+        maxBound = FieldDescriptorProto'TYPE_SINT64++data FieldOptions = FieldOptions{_FieldOptions'ctype ::+                                 Prelude.Maybe FieldOptions'CType,+                                 _FieldOptions'packed :: Prelude.Maybe Prelude.Bool,+                                 _FieldOptions'jstype :: Prelude.Maybe FieldOptions'JSType,+                                 _FieldOptions'lazy :: Prelude.Maybe Prelude.Bool,+                                 _FieldOptions'deprecated :: Prelude.Maybe Prelude.Bool,+                                 _FieldOptions'weak :: Prelude.Maybe Prelude.Bool,+                                 _FieldOptions'uninterpretedOption :: [UninterpretedOption]}+                  deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "ctype" FieldOptions =+     FieldOptions'CType++instance Data.ProtoLens.HasField "ctype" FieldOptions FieldOptions+         where+        field _+          = (Prelude..) maybe'ctype+              (Data.ProtoLens.maybeLens FieldOptions'STRING)++type instance Data.ProtoLens.Field "maybe'ctype" FieldOptions =+     Prelude.Maybe FieldOptions'CType++instance Data.ProtoLens.HasField "maybe'ctype" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'ctype+              (\ x__ y__ -> x__{_FieldOptions'ctype = y__})++type instance Data.ProtoLens.Field "packed" FieldOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "packed" FieldOptions FieldOptions+         where+        field _+          = (Prelude..) maybe'packed+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'packed" FieldOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'packed" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'packed+              (\ x__ y__ -> x__{_FieldOptions'packed = y__})++type instance Data.ProtoLens.Field "jstype" FieldOptions =+     FieldOptions'JSType++instance Data.ProtoLens.HasField "jstype" FieldOptions FieldOptions+         where+        field _+          = (Prelude..) maybe'jstype+              (Data.ProtoLens.maybeLens FieldOptions'JS_NORMAL)++type instance Data.ProtoLens.Field "maybe'jstype" FieldOptions =+     Prelude.Maybe FieldOptions'JSType++instance Data.ProtoLens.HasField "maybe'jstype" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'jstype+              (\ x__ y__ -> x__{_FieldOptions'jstype = y__})++type instance Data.ProtoLens.Field "lazy" FieldOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "lazy" FieldOptions FieldOptions+         where+        field _+          = (Prelude..) maybe'lazy (Data.ProtoLens.maybeLens Prelude.False)++type instance Data.ProtoLens.Field "maybe'lazy" FieldOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'lazy" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'lazy+              (\ x__ y__ -> x__{_FieldOptions'lazy = y__})++type instance Data.ProtoLens.Field "deprecated" FieldOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" FieldOptions+         FieldOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance Data.ProtoLens.Field "maybe'deprecated" FieldOptions+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'deprecated+              (\ x__ y__ -> x__{_FieldOptions'deprecated = y__})++type instance Data.ProtoLens.Field "weak" FieldOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "weak" FieldOptions FieldOptions+         where+        field _+          = (Prelude..) maybe'weak (Data.ProtoLens.maybeLens Prelude.False)++type instance Data.ProtoLens.Field "maybe'weak" FieldOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'weak" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'weak+              (\ x__ y__ -> x__{_FieldOptions'weak = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" FieldOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption" FieldOptions+         FieldOptions where+        field _+          = Lens.Family2.Unchecked.lens _FieldOptions'uninterpretedOption+              (\ x__ y__ -> x__{_FieldOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default FieldOptions where+        def+          = FieldOptions{_FieldOptions'ctype = Prelude.Nothing,+                         _FieldOptions'packed = Prelude.Nothing,+                         _FieldOptions'jstype = Prelude.Nothing,+                         _FieldOptions'lazy = Prelude.Nothing,+                         _FieldOptions'deprecated = Prelude.Nothing,+                         _FieldOptions'weak = Prelude.Nothing,+                         _FieldOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message FieldOptions where+        descriptor+          = let ctype__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "ctype"+                      (Data.ProtoLens.EnumField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldOptions'CType)+                      (Data.ProtoLens.OptionalField maybe'ctype)+                packed__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "packed"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'packed)+                jstype__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "jstype"+                      (Data.ProtoLens.EnumField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldOptions'JSType)+                      (Data.ProtoLens.OptionalField maybe'jstype)+                lazy__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "lazy"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'lazy)+                deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                weak__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "weak"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'weak)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, ctype__field_descriptor),+                    (Data.ProtoLens.Tag 2, packed__field_descriptor),+                    (Data.ProtoLens.Tag 6, jstype__field_descriptor),+                    (Data.ProtoLens.Tag 5, lazy__field_descriptor),+                    (Data.ProtoLens.Tag 3, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 10, weak__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("ctype", ctype__field_descriptor),+                    ("packed", packed__field_descriptor),+                    ("jstype", jstype__field_descriptor),+                    ("lazy", lazy__field_descriptor),+                    ("deprecated", deprecated__field_descriptor),+                    ("weak", weak__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data FieldOptions'CType = FieldOptions'STRING+                        | FieldOptions'CORD+                        | FieldOptions'STRING_PIECE+                        deriving (Prelude.Show, Prelude.Eq)++instance Data.Default.Class.Default FieldOptions'CType where+        def = FieldOptions'STRING++instance Data.ProtoLens.FieldDefault FieldOptions'CType where+        fieldDefault = FieldOptions'STRING++instance Data.ProtoLens.MessageEnum FieldOptions'CType where+        maybeToEnum 0 = Prelude.Just FieldOptions'STRING+        maybeToEnum 1 = Prelude.Just FieldOptions'CORD+        maybeToEnum 2 = Prelude.Just FieldOptions'STRING_PIECE+        maybeToEnum _ = Prelude.Nothing+        showEnum FieldOptions'STRING = "STRING"+        showEnum FieldOptions'CORD = "CORD"+        showEnum FieldOptions'STRING_PIECE = "STRING_PIECE"+        readEnum "STRING" = Prelude.Just FieldOptions'STRING+        readEnum "CORD" = Prelude.Just FieldOptions'CORD+        readEnum "STRING_PIECE" = Prelude.Just FieldOptions'STRING_PIECE+        readEnum _ = Prelude.Nothing++instance Prelude.Enum FieldOptions'CType where+        toEnum k__+          = Prelude.maybe+              (Prelude.error+                 ((Prelude.++) "toEnum: unknown value for enum CType: "+                    (Prelude.show k__)))+              Prelude.id+              (Data.ProtoLens.maybeToEnum k__)+        fromEnum FieldOptions'STRING = 0+        fromEnum FieldOptions'CORD = 1+        fromEnum FieldOptions'STRING_PIECE = 2+        succ FieldOptions'STRING_PIECE+          = Prelude.error+              "Ident \"FieldOptions'CType\".Ident \"succ\": bad argument Ident \"FieldOptions'STRING_PIECE\". This value would be out of bounds."+        succ FieldOptions'STRING = FieldOptions'CORD+        succ FieldOptions'CORD = FieldOptions'STRING_PIECE+        pred FieldOptions'STRING+          = Prelude.error+              "Ident \"FieldOptions'CType\".Ident \"pred\": bad argument Ident \"FieldOptions'STRING\". This value would be out of bounds."+        pred FieldOptions'CORD = FieldOptions'STRING+        pred FieldOptions'STRING_PIECE = FieldOptions'CORD+        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 FieldOptions'CType where+        minBound = FieldOptions'STRING+        maxBound = FieldOptions'STRING_PIECE++data FieldOptions'JSType = FieldOptions'JS_NORMAL+                         | FieldOptions'JS_STRING+                         | FieldOptions'JS_NUMBER+                         deriving (Prelude.Show, Prelude.Eq)++instance Data.Default.Class.Default FieldOptions'JSType where+        def = FieldOptions'JS_NORMAL++instance Data.ProtoLens.FieldDefault FieldOptions'JSType where+        fieldDefault = FieldOptions'JS_NORMAL++instance Data.ProtoLens.MessageEnum FieldOptions'JSType where+        maybeToEnum 0 = Prelude.Just FieldOptions'JS_NORMAL+        maybeToEnum 1 = Prelude.Just FieldOptions'JS_STRING+        maybeToEnum 2 = Prelude.Just FieldOptions'JS_NUMBER+        maybeToEnum _ = Prelude.Nothing+        showEnum FieldOptions'JS_NORMAL = "JS_NORMAL"+        showEnum FieldOptions'JS_STRING = "JS_STRING"+        showEnum FieldOptions'JS_NUMBER = "JS_NUMBER"+        readEnum "JS_NORMAL" = Prelude.Just FieldOptions'JS_NORMAL+        readEnum "JS_STRING" = Prelude.Just FieldOptions'JS_STRING+        readEnum "JS_NUMBER" = Prelude.Just FieldOptions'JS_NUMBER+        readEnum _ = Prelude.Nothing++instance Prelude.Enum FieldOptions'JSType where+        toEnum k__+          = Prelude.maybe+              (Prelude.error+                 ((Prelude.++) "toEnum: unknown value for enum JSType: "+                    (Prelude.show k__)))+              Prelude.id+              (Data.ProtoLens.maybeToEnum k__)+        fromEnum FieldOptions'JS_NORMAL = 0+        fromEnum FieldOptions'JS_STRING = 1+        fromEnum FieldOptions'JS_NUMBER = 2+        succ FieldOptions'JS_NUMBER+          = Prelude.error+              "Ident \"FieldOptions'JSType\".Ident \"succ\": bad argument Ident \"FieldOptions'JS_NUMBER\". This value would be out of bounds."+        succ FieldOptions'JS_NORMAL = FieldOptions'JS_STRING+        succ FieldOptions'JS_STRING = FieldOptions'JS_NUMBER+        pred FieldOptions'JS_NORMAL+          = Prelude.error+              "Ident \"FieldOptions'JSType\".Ident \"pred\": bad argument Ident \"FieldOptions'JS_NORMAL\". This value would be out of bounds."+        pred FieldOptions'JS_STRING = FieldOptions'JS_NORMAL+        pred FieldOptions'JS_NUMBER = FieldOptions'JS_STRING+        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 FieldOptions'JSType where+        minBound = FieldOptions'JS_NORMAL+        maxBound = FieldOptions'JS_NUMBER++data FileDescriptorProto = FileDescriptorProto{_FileDescriptorProto'name+                                               :: Prelude.Maybe Data.Text.Text,+                                               _FileDescriptorProto'package ::+                                               Prelude.Maybe Data.Text.Text,+                                               _FileDescriptorProto'dependency :: [Data.Text.Text],+                                               _FileDescriptorProto'publicDependency ::+                                               [Data.Int.Int32],+                                               _FileDescriptorProto'weakDependency ::+                                               [Data.Int.Int32],+                                               _FileDescriptorProto'messageType ::+                                               [DescriptorProto],+                                               _FileDescriptorProto'enumType ::+                                               [EnumDescriptorProto],+                                               _FileDescriptorProto'service ::+                                               [ServiceDescriptorProto],+                                               _FileDescriptorProto'extension ::+                                               [FieldDescriptorProto],+                                               _FileDescriptorProto'options ::+                                               Prelude.Maybe FileOptions,+                                               _FileDescriptorProto'sourceCodeInfo ::+                                               Prelude.Maybe SourceCodeInfo,+                                               _FileDescriptorProto'syntax ::+                                               Prelude.Maybe Data.Text.Text}+                         deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" FileDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" FileDescriptorProto+         FileDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'name" FileDescriptorProto+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'name+              (\ x__ y__ -> x__{_FileDescriptorProto'name = y__})++type instance Data.ProtoLens.Field "package" FileDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "package" FileDescriptorProto+         FileDescriptorProto where+        field _+          = (Prelude..) maybe'package+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'package" FileDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'package"+         FileDescriptorProto FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'package+              (\ x__ y__ -> x__{_FileDescriptorProto'package = y__})++type instance Data.ProtoLens.Field "dependency" FileDescriptorProto+     = [Data.Text.Text]++instance Data.ProtoLens.HasField "dependency" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'dependency+              (\ x__ y__ -> x__{_FileDescriptorProto'dependency = y__})++type instance+     Data.ProtoLens.Field "publicDependency" FileDescriptorProto =+     [Data.Int.Int32]++instance Data.ProtoLens.HasField "publicDependency"+         FileDescriptorProto FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'publicDependency+              (\ x__ y__ -> x__{_FileDescriptorProto'publicDependency = y__})++type instance+     Data.ProtoLens.Field "weakDependency" FileDescriptorProto =+     [Data.Int.Int32]++instance Data.ProtoLens.HasField "weakDependency"+         FileDescriptorProto FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'weakDependency+              (\ x__ y__ -> x__{_FileDescriptorProto'weakDependency = y__})++type instance+     Data.ProtoLens.Field "messageType" FileDescriptorProto =+     [DescriptorProto]++instance Data.ProtoLens.HasField "messageType" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'messageType+              (\ x__ y__ -> x__{_FileDescriptorProto'messageType = y__})++type instance Data.ProtoLens.Field "enumType" FileDescriptorProto =+     [EnumDescriptorProto]++instance Data.ProtoLens.HasField "enumType" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'enumType+              (\ x__ y__ -> x__{_FileDescriptorProto'enumType = y__})++type instance Data.ProtoLens.Field "service" FileDescriptorProto =+     [ServiceDescriptorProto]++instance Data.ProtoLens.HasField "service" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'service+              (\ x__ y__ -> x__{_FileDescriptorProto'service = y__})++type instance Data.ProtoLens.Field "extension" FileDescriptorProto+     = [FieldDescriptorProto]++instance Data.ProtoLens.HasField "extension" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'extension+              (\ x__ y__ -> x__{_FileDescriptorProto'extension = y__})++type instance Data.ProtoLens.Field "options" FileDescriptorProto =+     FileOptions++instance Data.ProtoLens.HasField "options" FileDescriptorProto+         FileDescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'options" FileDescriptorProto =+     Prelude.Maybe FileOptions++instance Data.ProtoLens.HasField "maybe'options"+         FileDescriptorProto FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'options+              (\ x__ y__ -> x__{_FileDescriptorProto'options = y__})++type instance+     Data.ProtoLens.Field "sourceCodeInfo" FileDescriptorProto =+     SourceCodeInfo++instance Data.ProtoLens.HasField "sourceCodeInfo"+         FileDescriptorProto FileDescriptorProto where+        field _+          = (Prelude..) maybe'sourceCodeInfo+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'sourceCodeInfo" FileDescriptorProto =+     Prelude.Maybe SourceCodeInfo++instance Data.ProtoLens.HasField "maybe'sourceCodeInfo"+         FileDescriptorProto FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'sourceCodeInfo+              (\ x__ y__ -> x__{_FileDescriptorProto'sourceCodeInfo = y__})++type instance Data.ProtoLens.Field "syntax" FileDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "syntax" FileDescriptorProto+         FileDescriptorProto where+        field _+          = (Prelude..) maybe'syntax+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'syntax" FileDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'syntax" FileDescriptorProto+         FileDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorProto'syntax+              (\ x__ y__ -> x__{_FileDescriptorProto'syntax = y__})++instance Data.Default.Class.Default FileDescriptorProto where+        def+          = FileDescriptorProto{_FileDescriptorProto'name = Prelude.Nothing,+                                _FileDescriptorProto'package = Prelude.Nothing,+                                _FileDescriptorProto'dependency = [],+                                _FileDescriptorProto'publicDependency = [],+                                _FileDescriptorProto'weakDependency = [],+                                _FileDescriptorProto'messageType = [],+                                _FileDescriptorProto'enumType = [],+                                _FileDescriptorProto'service = [],+                                _FileDescriptorProto'extension = [],+                                _FileDescriptorProto'options = Prelude.Nothing,+                                _FileDescriptorProto'sourceCodeInfo = Prelude.Nothing,+                                _FileDescriptorProto'syntax = Prelude.Nothing}++instance Data.ProtoLens.Message FileDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                package__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "package"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'package)+                dependency__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "dependency"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked dependency)+                publicDependency__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "public_dependency"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         publicDependency)+                weakDependency__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "weak_dependency"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         weakDependency)+                messageType__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "message_type"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked messageType)+                enumType__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "enum_type"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked enumType)+                service__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "service"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor ServiceDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked service)+                extension__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "extension"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked extension)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor FileOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+                sourceCodeInfo__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "source_code_info"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor SourceCodeInfo)+                      (Data.ProtoLens.OptionalField maybe'sourceCodeInfo)+                syntax__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "syntax"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'syntax)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, package__field_descriptor),+                    (Data.ProtoLens.Tag 3, dependency__field_descriptor),+                    (Data.ProtoLens.Tag 10, publicDependency__field_descriptor),+                    (Data.ProtoLens.Tag 11, weakDependency__field_descriptor),+                    (Data.ProtoLens.Tag 4, messageType__field_descriptor),+                    (Data.ProtoLens.Tag 5, enumType__field_descriptor),+                    (Data.ProtoLens.Tag 6, service__field_descriptor),+                    (Data.ProtoLens.Tag 7, extension__field_descriptor),+                    (Data.ProtoLens.Tag 8, options__field_descriptor),+                    (Data.ProtoLens.Tag 9, sourceCodeInfo__field_descriptor),+                    (Data.ProtoLens.Tag 12, syntax__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("package", package__field_descriptor),+                    ("dependency", dependency__field_descriptor),+                    ("public_dependency", publicDependency__field_descriptor),+                    ("weak_dependency", weakDependency__field_descriptor),+                    ("message_type", messageType__field_descriptor),+                    ("enum_type", enumType__field_descriptor),+                    ("service", service__field_descriptor),+                    ("extension", extension__field_descriptor),+                    ("options", options__field_descriptor),+                    ("source_code_info", sourceCodeInfo__field_descriptor),+                    ("syntax", syntax__field_descriptor)])++data FileDescriptorSet = FileDescriptorSet{_FileDescriptorSet'file+                                           :: [FileDescriptorProto]}+                       deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "file" FileDescriptorSet =+     [FileDescriptorProto]++instance Data.ProtoLens.HasField "file" FileDescriptorSet+         FileDescriptorSet where+        field _+          = Lens.Family2.Unchecked.lens _FileDescriptorSet'file+              (\ x__ y__ -> x__{_FileDescriptorSet'file = y__})++instance Data.Default.Class.Default FileDescriptorSet where+        def = FileDescriptorSet{_FileDescriptorSet'file = []}++instance Data.ProtoLens.Message FileDescriptorSet where+        descriptor+          = let file__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "file"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor FileDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked file)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, file__field_descriptor)])+                (Data.Map.fromList [("file", file__field_descriptor)])++data FileOptions = FileOptions{_FileOptions'javaPackage ::+                               Prelude.Maybe Data.Text.Text,+                               _FileOptions'javaOuterClassname :: Prelude.Maybe Data.Text.Text,+                               _FileOptions'javaMultipleFiles :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'javaGenerateEqualsAndHash ::+                               Prelude.Maybe Prelude.Bool,+                               _FileOptions'javaStringCheckUtf8 :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'optimizeFor :: Prelude.Maybe FileOptions'OptimizeMode,+                               _FileOptions'goPackage :: Prelude.Maybe Data.Text.Text,+                               _FileOptions'ccGenericServices :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'javaGenericServices :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'pyGenericServices :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'deprecated :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'ccEnableArenas :: Prelude.Maybe Prelude.Bool,+                               _FileOptions'objcClassPrefix :: Prelude.Maybe Data.Text.Text,+                               _FileOptions'csharpNamespace :: Prelude.Maybe Data.Text.Text,+                               _FileOptions'uninterpretedOption :: [UninterpretedOption]}+                 deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "javaPackage" FileOptions =+     Data.Text.Text++instance Data.ProtoLens.HasField "javaPackage" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'javaPackage+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'javaPackage" FileOptions+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'javaPackage" FileOptions+         FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'javaPackage+              (\ x__ y__ -> x__{_FileOptions'javaPackage = y__})++type instance Data.ProtoLens.Field "javaOuterClassname" FileOptions+     = Data.Text.Text++instance Data.ProtoLens.HasField "javaOuterClassname" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'javaOuterClassname+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'javaOuterClassname" FileOptions =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'javaOuterClassname"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'javaOuterClassname+              (\ x__ y__ -> x__{_FileOptions'javaOuterClassname = y__})++type instance Data.ProtoLens.Field "javaMultipleFiles" FileOptions+     = Prelude.Bool++instance Data.ProtoLens.HasField "javaMultipleFiles" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'javaMultipleFiles+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'javaMultipleFiles" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'javaMultipleFiles"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'javaMultipleFiles+              (\ x__ y__ -> x__{_FileOptions'javaMultipleFiles = y__})++type instance+     Data.ProtoLens.Field "javaGenerateEqualsAndHash" FileOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "javaGenerateEqualsAndHash"+         FileOptions FileOptions where+        field _+          = (Prelude..) maybe'javaGenerateEqualsAndHash+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'javaGenerateEqualsAndHash" FileOptions+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'javaGenerateEqualsAndHash"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens+              _FileOptions'javaGenerateEqualsAndHash+              (\ x__ y__ -> x__{_FileOptions'javaGenerateEqualsAndHash = y__})++type instance+     Data.ProtoLens.Field "javaStringCheckUtf8" FileOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "javaStringCheckUtf8" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'javaStringCheckUtf8+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'javaStringCheckUtf8" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'javaStringCheckUtf8"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'javaStringCheckUtf8+              (\ x__ y__ -> x__{_FileOptions'javaStringCheckUtf8 = y__})++type instance Data.ProtoLens.Field "optimizeFor" FileOptions =+     FileOptions'OptimizeMode++instance Data.ProtoLens.HasField "optimizeFor" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'optimizeFor+              (Data.ProtoLens.maybeLens FileOptions'SPEED)++type instance Data.ProtoLens.Field "maybe'optimizeFor" FileOptions+     = Prelude.Maybe FileOptions'OptimizeMode++instance Data.ProtoLens.HasField "maybe'optimizeFor" FileOptions+         FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'optimizeFor+              (\ x__ y__ -> x__{_FileOptions'optimizeFor = y__})++type instance Data.ProtoLens.Field "goPackage" FileOptions =+     Data.Text.Text++instance Data.ProtoLens.HasField "goPackage" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'goPackage+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'goPackage" FileOptions =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'goPackage" FileOptions+         FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'goPackage+              (\ x__ y__ -> x__{_FileOptions'goPackage = y__})++type instance Data.ProtoLens.Field "ccGenericServices" FileOptions+     = Prelude.Bool++instance Data.ProtoLens.HasField "ccGenericServices" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'ccGenericServices+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'ccGenericServices" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'ccGenericServices"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'ccGenericServices+              (\ x__ y__ -> x__{_FileOptions'ccGenericServices = y__})++type instance+     Data.ProtoLens.Field "javaGenericServices" FileOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "javaGenericServices" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'javaGenericServices+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'javaGenericServices" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'javaGenericServices"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'javaGenericServices+              (\ x__ y__ -> x__{_FileOptions'javaGenericServices = y__})++type instance Data.ProtoLens.Field "pyGenericServices" FileOptions+     = Prelude.Bool++instance Data.ProtoLens.HasField "pyGenericServices" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'pyGenericServices+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'pyGenericServices" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'pyGenericServices"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'pyGenericServices+              (\ x__ y__ -> x__{_FileOptions'pyGenericServices = y__})++type instance Data.ProtoLens.Field "deprecated" FileOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance Data.ProtoLens.Field "maybe'deprecated" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated" FileOptions+         FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'deprecated+              (\ x__ y__ -> x__{_FileOptions'deprecated = y__})++type instance Data.ProtoLens.Field "ccEnableArenas" FileOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "ccEnableArenas" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'ccEnableArenas+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'ccEnableArenas" FileOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'ccEnableArenas" FileOptions+         FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'ccEnableArenas+              (\ x__ y__ -> x__{_FileOptions'ccEnableArenas = y__})++type instance Data.ProtoLens.Field "objcClassPrefix" FileOptions =+     Data.Text.Text++instance Data.ProtoLens.HasField "objcClassPrefix" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'objcClassPrefix+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'objcClassPrefix" FileOptions =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'objcClassPrefix"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'objcClassPrefix+              (\ x__ y__ -> x__{_FileOptions'objcClassPrefix = y__})++type instance Data.ProtoLens.Field "csharpNamespace" FileOptions =+     Data.Text.Text++instance Data.ProtoLens.HasField "csharpNamespace" FileOptions+         FileOptions where+        field _+          = (Prelude..) maybe'csharpNamespace+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'csharpNamespace" FileOptions =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'csharpNamespace"+         FileOptions FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'csharpNamespace+              (\ x__ y__ -> x__{_FileOptions'csharpNamespace = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" FileOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption" FileOptions+         FileOptions where+        field _+          = Lens.Family2.Unchecked.lens _FileOptions'uninterpretedOption+              (\ x__ y__ -> x__{_FileOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default FileOptions where+        def+          = FileOptions{_FileOptions'javaPackage = Prelude.Nothing,+                        _FileOptions'javaOuterClassname = Prelude.Nothing,+                        _FileOptions'javaMultipleFiles = Prelude.Nothing,+                        _FileOptions'javaGenerateEqualsAndHash = Prelude.Nothing,+                        _FileOptions'javaStringCheckUtf8 = Prelude.Nothing,+                        _FileOptions'optimizeFor = Prelude.Nothing,+                        _FileOptions'goPackage = Prelude.Nothing,+                        _FileOptions'ccGenericServices = Prelude.Nothing,+                        _FileOptions'javaGenericServices = Prelude.Nothing,+                        _FileOptions'pyGenericServices = Prelude.Nothing,+                        _FileOptions'deprecated = Prelude.Nothing,+                        _FileOptions'ccEnableArenas = Prelude.Nothing,+                        _FileOptions'objcClassPrefix = Prelude.Nothing,+                        _FileOptions'csharpNamespace = Prelude.Nothing,+                        _FileOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message FileOptions where+        descriptor+          = let javaPackage__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "java_package"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'javaPackage)+                javaOuterClassname__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "java_outer_classname"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'javaOuterClassname)+                javaMultipleFiles__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "java_multiple_files"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'javaMultipleFiles)+                javaGenerateEqualsAndHash__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "java_generate_equals_and_hash"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'javaGenerateEqualsAndHash)+                javaStringCheckUtf8__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "java_string_check_utf8"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'javaStringCheckUtf8)+                optimizeFor__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "optimize_for"+                      (Data.ProtoLens.EnumField ::+                         Data.ProtoLens.FieldTypeDescriptor FileOptions'OptimizeMode)+                      (Data.ProtoLens.OptionalField maybe'optimizeFor)+                goPackage__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "go_package"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'goPackage)+                ccGenericServices__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "cc_generic_services"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'ccGenericServices)+                javaGenericServices__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "java_generic_services"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'javaGenericServices)+                pyGenericServices__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "py_generic_services"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'pyGenericServices)+                deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                ccEnableArenas__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "cc_enable_arenas"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'ccEnableArenas)+                objcClassPrefix__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "objc_class_prefix"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'objcClassPrefix)+                csharpNamespace__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "csharp_namespace"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'csharpNamespace)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, javaPackage__field_descriptor),+                    (Data.ProtoLens.Tag 8, javaOuterClassname__field_descriptor),+                    (Data.ProtoLens.Tag 10, javaMultipleFiles__field_descriptor),+                    (Data.ProtoLens.Tag 20,+                     javaGenerateEqualsAndHash__field_descriptor),+                    (Data.ProtoLens.Tag 27, javaStringCheckUtf8__field_descriptor),+                    (Data.ProtoLens.Tag 9, optimizeFor__field_descriptor),+                    (Data.ProtoLens.Tag 11, goPackage__field_descriptor),+                    (Data.ProtoLens.Tag 16, ccGenericServices__field_descriptor),+                    (Data.ProtoLens.Tag 17, javaGenericServices__field_descriptor),+                    (Data.ProtoLens.Tag 18, pyGenericServices__field_descriptor),+                    (Data.ProtoLens.Tag 23, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 31, ccEnableArenas__field_descriptor),+                    (Data.ProtoLens.Tag 36, objcClassPrefix__field_descriptor),+                    (Data.ProtoLens.Tag 37, csharpNamespace__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("java_package", javaPackage__field_descriptor),+                    ("java_outer_classname", javaOuterClassname__field_descriptor),+                    ("java_multiple_files", javaMultipleFiles__field_descriptor),+                    ("java_generate_equals_and_hash",+                     javaGenerateEqualsAndHash__field_descriptor),+                    ("java_string_check_utf8", javaStringCheckUtf8__field_descriptor),+                    ("optimize_for", optimizeFor__field_descriptor),+                    ("go_package", goPackage__field_descriptor),+                    ("cc_generic_services", ccGenericServices__field_descriptor),+                    ("java_generic_services", javaGenericServices__field_descriptor),+                    ("py_generic_services", pyGenericServices__field_descriptor),+                    ("deprecated", deprecated__field_descriptor),+                    ("cc_enable_arenas", ccEnableArenas__field_descriptor),+                    ("objc_class_prefix", objcClassPrefix__field_descriptor),+                    ("csharp_namespace", csharpNamespace__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data FileOptions'OptimizeMode = FileOptions'SPEED+                              | FileOptions'CODE_SIZE+                              | FileOptions'LITE_RUNTIME+                              deriving (Prelude.Show, Prelude.Eq)++instance Data.Default.Class.Default FileOptions'OptimizeMode where+        def = FileOptions'SPEED++instance Data.ProtoLens.FieldDefault FileOptions'OptimizeMode where+        fieldDefault = FileOptions'SPEED++instance Data.ProtoLens.MessageEnum FileOptions'OptimizeMode where+        maybeToEnum 1 = Prelude.Just FileOptions'SPEED+        maybeToEnum 2 = Prelude.Just FileOptions'CODE_SIZE+        maybeToEnum 3 = Prelude.Just FileOptions'LITE_RUNTIME+        maybeToEnum _ = Prelude.Nothing+        showEnum FileOptions'SPEED = "SPEED"+        showEnum FileOptions'CODE_SIZE = "CODE_SIZE"+        showEnum FileOptions'LITE_RUNTIME = "LITE_RUNTIME"+        readEnum "SPEED" = Prelude.Just FileOptions'SPEED+        readEnum "CODE_SIZE" = Prelude.Just FileOptions'CODE_SIZE+        readEnum "LITE_RUNTIME" = Prelude.Just FileOptions'LITE_RUNTIME+        readEnum _ = Prelude.Nothing++instance Prelude.Enum FileOptions'OptimizeMode where+        toEnum k__+          = Prelude.maybe+              (Prelude.error+                 ((Prelude.++) "toEnum: unknown value for enum OptimizeMode: "+                    (Prelude.show k__)))+              Prelude.id+              (Data.ProtoLens.maybeToEnum k__)+        fromEnum FileOptions'SPEED = 1+        fromEnum FileOptions'CODE_SIZE = 2+        fromEnum FileOptions'LITE_RUNTIME = 3+        succ FileOptions'LITE_RUNTIME+          = Prelude.error+              "Ident \"FileOptions'OptimizeMode\".Ident \"succ\": bad argument Ident \"FileOptions'LITE_RUNTIME\". This value would be out of bounds."+        succ FileOptions'SPEED = FileOptions'CODE_SIZE+        succ FileOptions'CODE_SIZE = FileOptions'LITE_RUNTIME+        pred FileOptions'SPEED+          = Prelude.error+              "Ident \"FileOptions'OptimizeMode\".Ident \"pred\": bad argument Ident \"FileOptions'SPEED\". This value would be out of bounds."+        pred FileOptions'CODE_SIZE = FileOptions'SPEED+        pred FileOptions'LITE_RUNTIME = FileOptions'CODE_SIZE+        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 FileOptions'OptimizeMode where+        minBound = FileOptions'SPEED+        maxBound = FileOptions'LITE_RUNTIME++data GeneratedCodeInfo = GeneratedCodeInfo{_GeneratedCodeInfo'annotation+                                           :: [GeneratedCodeInfo'Annotation]}+                       deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "annotation" GeneratedCodeInfo =+     [GeneratedCodeInfo'Annotation]++instance Data.ProtoLens.HasField "annotation" GeneratedCodeInfo+         GeneratedCodeInfo where+        field _+          = Lens.Family2.Unchecked.lens _GeneratedCodeInfo'annotation+              (\ x__ y__ -> x__{_GeneratedCodeInfo'annotation = y__})++instance Data.Default.Class.Default GeneratedCodeInfo where+        def = GeneratedCodeInfo{_GeneratedCodeInfo'annotation = []}++instance Data.ProtoLens.Message GeneratedCodeInfo where+        descriptor+          = let annotation__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "annotation"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor GeneratedCodeInfo'Annotation)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked annotation)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, annotation__field_descriptor)])+                (Data.Map.fromList [("annotation", annotation__field_descriptor)])++data GeneratedCodeInfo'Annotation = GeneratedCodeInfo'Annotation{_GeneratedCodeInfo'Annotation'path+                                                                 :: [Data.Int.Int32],+                                                                 _GeneratedCodeInfo'Annotation'sourceFile+                                                                 :: Prelude.Maybe Data.Text.Text,+                                                                 _GeneratedCodeInfo'Annotation'begin+                                                                 :: Prelude.Maybe Data.Int.Int32,+                                                                 _GeneratedCodeInfo'Annotation'end+                                                                 :: Prelude.Maybe Data.Int.Int32}+                                  deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "path" GeneratedCodeInfo'Annotation =+     [Data.Int.Int32]++instance Data.ProtoLens.HasField "path"+         GeneratedCodeInfo'Annotation GeneratedCodeInfo'Annotation where+        field _+          = Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'path+              (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'path = y__})++type instance+     Data.ProtoLens.Field "sourceFile" GeneratedCodeInfo'Annotation =+     Data.Text.Text++instance Data.ProtoLens.HasField "sourceFile"+         GeneratedCodeInfo'Annotation GeneratedCodeInfo'Annotation where+        field _+          = (Prelude..) maybe'sourceFile+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'sourceFile"+       GeneratedCodeInfo'Annotation+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'sourceFile"+         GeneratedCodeInfo'Annotation GeneratedCodeInfo'Annotation where+        field _+          = Lens.Family2.Unchecked.lens+              _GeneratedCodeInfo'Annotation'sourceFile+              (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'sourceFile = y__})++type instance+     Data.ProtoLens.Field "begin" GeneratedCodeInfo'Annotation =+     Data.Int.Int32++instance Data.ProtoLens.HasField "begin"+         GeneratedCodeInfo'Annotation GeneratedCodeInfo'Annotation where+        field _+          = (Prelude..) maybe'begin+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'begin" GeneratedCodeInfo'Annotation =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'begin"+         GeneratedCodeInfo'Annotation GeneratedCodeInfo'Annotation where+        field _+          = Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'begin+              (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'begin = y__})++type instance+     Data.ProtoLens.Field "end" GeneratedCodeInfo'Annotation =+     Data.Int.Int32++instance Data.ProtoLens.HasField "end" GeneratedCodeInfo'Annotation+         GeneratedCodeInfo'Annotation where+        field _+          = (Prelude..) maybe'end+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'end" GeneratedCodeInfo'Annotation =+     Prelude.Maybe Data.Int.Int32++instance Data.ProtoLens.HasField "maybe'end"+         GeneratedCodeInfo'Annotation GeneratedCodeInfo'Annotation where+        field _+          = Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'end+              (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'end = y__})++instance Data.Default.Class.Default GeneratedCodeInfo'Annotation+         where+        def+          = GeneratedCodeInfo'Annotation{_GeneratedCodeInfo'Annotation'path =+                                           [],+                                         _GeneratedCodeInfo'Annotation'sourceFile = Prelude.Nothing,+                                         _GeneratedCodeInfo'Annotation'begin = Prelude.Nothing,+                                         _GeneratedCodeInfo'Annotation'end = Prelude.Nothing}++instance Data.ProtoLens.Message GeneratedCodeInfo'Annotation where+        descriptor+          = let path__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "path"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed path)+                sourceFile__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "source_file"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'sourceFile)+                begin__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "begin"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'begin)+                end__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "end"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.OptionalField maybe'end)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, path__field_descriptor),+                    (Data.ProtoLens.Tag 2, sourceFile__field_descriptor),+                    (Data.ProtoLens.Tag 3, begin__field_descriptor),+                    (Data.ProtoLens.Tag 4, end__field_descriptor)])+                (Data.Map.fromList+                   [("path", path__field_descriptor),+                    ("source_file", sourceFile__field_descriptor),+                    ("begin", begin__field_descriptor),+                    ("end", end__field_descriptor)])++data MessageOptions = MessageOptions{_MessageOptions'messageSetWireFormat+                                     :: Prelude.Maybe Prelude.Bool,+                                     _MessageOptions'noStandardDescriptorAccessor ::+                                     Prelude.Maybe Prelude.Bool,+                                     _MessageOptions'deprecated :: Prelude.Maybe Prelude.Bool,+                                     _MessageOptions'mapEntry :: Prelude.Maybe Prelude.Bool,+                                     _MessageOptions'uninterpretedOption :: [UninterpretedOption]}+                    deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "messageSetWireFormat" MessageOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "messageSetWireFormat"+         MessageOptions MessageOptions where+        field _+          = (Prelude..) maybe'messageSetWireFormat+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'messageSetWireFormat" MessageOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'messageSetWireFormat"+         MessageOptions MessageOptions where+        field _+          = Lens.Family2.Unchecked.lens _MessageOptions'messageSetWireFormat+              (\ x__ y__ -> x__{_MessageOptions'messageSetWireFormat = y__})++type instance+     Data.ProtoLens.Field "noStandardDescriptorAccessor" MessageOptions+     = Prelude.Bool++instance Data.ProtoLens.HasField "noStandardDescriptorAccessor"+         MessageOptions MessageOptions where+        field _+          = (Prelude..) maybe'noStandardDescriptorAccessor+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'noStandardDescriptorAccessor"+       MessageOptions+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField+         "maybe'noStandardDescriptorAccessor" MessageOptions MessageOptions+         where+        field _+          = Lens.Family2.Unchecked.lens+              _MessageOptions'noStandardDescriptorAccessor+              (\ x__ y__ ->+                 x__{_MessageOptions'noStandardDescriptorAccessor = y__})++type instance Data.ProtoLens.Field "deprecated" MessageOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" MessageOptions+         MessageOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'deprecated" MessageOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated" MessageOptions+         MessageOptions where+        field _+          = Lens.Family2.Unchecked.lens _MessageOptions'deprecated+              (\ x__ y__ -> x__{_MessageOptions'deprecated = y__})++type instance Data.ProtoLens.Field "mapEntry" MessageOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "mapEntry" MessageOptions+         MessageOptions where+        field _+          = (Prelude..) maybe'mapEntry+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance Data.ProtoLens.Field "maybe'mapEntry" MessageOptions+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'mapEntry" MessageOptions+         MessageOptions where+        field _+          = Lens.Family2.Unchecked.lens _MessageOptions'mapEntry+              (\ x__ y__ -> x__{_MessageOptions'mapEntry = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" MessageOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption"+         MessageOptions MessageOptions where+        field _+          = Lens.Family2.Unchecked.lens _MessageOptions'uninterpretedOption+              (\ x__ y__ -> x__{_MessageOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default MessageOptions where+        def+          = MessageOptions{_MessageOptions'messageSetWireFormat =+                             Prelude.Nothing,+                           _MessageOptions'noStandardDescriptorAccessor = Prelude.Nothing,+                           _MessageOptions'deprecated = Prelude.Nothing,+                           _MessageOptions'mapEntry = Prelude.Nothing,+                           _MessageOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message MessageOptions where+        descriptor+          = let messageSetWireFormat__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "message_set_wire_format"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'messageSetWireFormat)+                noStandardDescriptorAccessor__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "no_standard_descriptor_accessor"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'noStandardDescriptorAccessor)+                deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                mapEntry__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "map_entry"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'mapEntry)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, messageSetWireFormat__field_descriptor),+                    (Data.ProtoLens.Tag 2,+                     noStandardDescriptorAccessor__field_descriptor),+                    (Data.ProtoLens.Tag 3, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 7, mapEntry__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("message_set_wire_format",+                     messageSetWireFormat__field_descriptor),+                    ("no_standard_descriptor_accessor",+                     noStandardDescriptorAccessor__field_descriptor),+                    ("deprecated", deprecated__field_descriptor),+                    ("map_entry", mapEntry__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data MethodDescriptorProto = MethodDescriptorProto{_MethodDescriptorProto'name+                                                   :: Prelude.Maybe Data.Text.Text,+                                                   _MethodDescriptorProto'inputType ::+                                                   Prelude.Maybe Data.Text.Text,+                                                   _MethodDescriptorProto'outputType ::+                                                   Prelude.Maybe Data.Text.Text,+                                                   _MethodDescriptorProto'options ::+                                                   Prelude.Maybe MethodOptions,+                                                   _MethodDescriptorProto'clientStreaming ::+                                                   Prelude.Maybe Prelude.Bool,+                                                   _MethodDescriptorProto'serverStreaming ::+                                                   Prelude.Maybe Prelude.Bool}+                           deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" MethodDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" MethodDescriptorProto+         MethodDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'name" MethodDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name" MethodDescriptorProto+         MethodDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _MethodDescriptorProto'name+              (\ x__ y__ -> x__{_MethodDescriptorProto'name = y__})++type instance+     Data.ProtoLens.Field "inputType" MethodDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "inputType" MethodDescriptorProto+         MethodDescriptorProto where+        field _+          = (Prelude..) maybe'inputType+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'inputType" MethodDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'inputType"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _MethodDescriptorProto'inputType+              (\ x__ y__ -> x__{_MethodDescriptorProto'inputType = y__})++type instance+     Data.ProtoLens.Field "outputType" MethodDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "outputType" MethodDescriptorProto+         MethodDescriptorProto where+        field _+          = (Prelude..) maybe'outputType+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'outputType" MethodDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'outputType"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _MethodDescriptorProto'outputType+              (\ x__ y__ -> x__{_MethodDescriptorProto'outputType = y__})++type instance Data.ProtoLens.Field "options" MethodDescriptorProto+     = MethodOptions++instance Data.ProtoLens.HasField "options" MethodDescriptorProto+         MethodDescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'options" MethodDescriptorProto =+     Prelude.Maybe MethodOptions++instance Data.ProtoLens.HasField "maybe'options"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _MethodDescriptorProto'options+              (\ x__ y__ -> x__{_MethodDescriptorProto'options = y__})++type instance+     Data.ProtoLens.Field "clientStreaming" MethodDescriptorProto =+     Prelude.Bool++instance Data.ProtoLens.HasField "clientStreaming"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = (Prelude..) maybe'clientStreaming+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'clientStreaming" MethodDescriptorProto+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'clientStreaming"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens+              _MethodDescriptorProto'clientStreaming+              (\ x__ y__ -> x__{_MethodDescriptorProto'clientStreaming = y__})++type instance+     Data.ProtoLens.Field "serverStreaming" MethodDescriptorProto =+     Prelude.Bool++instance Data.ProtoLens.HasField "serverStreaming"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = (Prelude..) maybe'serverStreaming+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'serverStreaming" MethodDescriptorProto+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'serverStreaming"+         MethodDescriptorProto MethodDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens+              _MethodDescriptorProto'serverStreaming+              (\ x__ y__ -> x__{_MethodDescriptorProto'serverStreaming = y__})++instance Data.Default.Class.Default MethodDescriptorProto where+        def+          = MethodDescriptorProto{_MethodDescriptorProto'name =+                                    Prelude.Nothing,+                                  _MethodDescriptorProto'inputType = Prelude.Nothing,+                                  _MethodDescriptorProto'outputType = Prelude.Nothing,+                                  _MethodDescriptorProto'options = Prelude.Nothing,+                                  _MethodDescriptorProto'clientStreaming = Prelude.Nothing,+                                  _MethodDescriptorProto'serverStreaming = Prelude.Nothing}++instance Data.ProtoLens.Message MethodDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                inputType__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "input_type"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'inputType)+                outputType__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "output_type"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'outputType)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor MethodOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+                clientStreaming__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "client_streaming"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'clientStreaming)+                serverStreaming__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "server_streaming"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'serverStreaming)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, inputType__field_descriptor),+                    (Data.ProtoLens.Tag 3, outputType__field_descriptor),+                    (Data.ProtoLens.Tag 4, options__field_descriptor),+                    (Data.ProtoLens.Tag 5, clientStreaming__field_descriptor),+                    (Data.ProtoLens.Tag 6, serverStreaming__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("input_type", inputType__field_descriptor),+                    ("output_type", outputType__field_descriptor),+                    ("options", options__field_descriptor),+                    ("client_streaming", clientStreaming__field_descriptor),+                    ("server_streaming", serverStreaming__field_descriptor)])++data MethodOptions = MethodOptions{_MethodOptions'deprecated ::+                                   Prelude.Maybe Prelude.Bool,+                                   _MethodOptions'uninterpretedOption :: [UninterpretedOption]}+                   deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "deprecated" MethodOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" MethodOptions+         MethodOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance Data.ProtoLens.Field "maybe'deprecated" MethodOptions+     = Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated" MethodOptions+         MethodOptions where+        field _+          = Lens.Family2.Unchecked.lens _MethodOptions'deprecated+              (\ x__ y__ -> x__{_MethodOptions'deprecated = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" MethodOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption"+         MethodOptions MethodOptions where+        field _+          = Lens.Family2.Unchecked.lens _MethodOptions'uninterpretedOption+              (\ x__ y__ -> x__{_MethodOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default MethodOptions where+        def+          = MethodOptions{_MethodOptions'deprecated = Prelude.Nothing,+                          _MethodOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message MethodOptions where+        descriptor+          = let deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 33, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("deprecated", deprecated__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data OneofDescriptorProto = OneofDescriptorProto{_OneofDescriptorProto'name+                                                 :: Prelude.Maybe Data.Text.Text}+                          deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" OneofDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" OneofDescriptorProto+         OneofDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'name" OneofDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name" OneofDescriptorProto+         OneofDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _OneofDescriptorProto'name+              (\ x__ y__ -> x__{_OneofDescriptorProto'name = y__})++instance Data.Default.Class.Default OneofDescriptorProto where+        def+          = OneofDescriptorProto{_OneofDescriptorProto'name =+                                   Prelude.Nothing}++instance Data.ProtoLens.Message OneofDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor)])+                (Data.Map.fromList [("name", name__field_descriptor)])++data ServiceDescriptorProto = ServiceDescriptorProto{_ServiceDescriptorProto'name+                                                     :: Prelude.Maybe Data.Text.Text,+                                                     _ServiceDescriptorProto'method ::+                                                     [MethodDescriptorProto],+                                                     _ServiceDescriptorProto'options ::+                                                     Prelude.Maybe ServiceOptions}+                            deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" ServiceDescriptorProto =+     Data.Text.Text++instance Data.ProtoLens.HasField "name" ServiceDescriptorProto+         ServiceDescriptorProto where+        field _+          = (Prelude..) maybe'name+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'name" ServiceDescriptorProto =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'name"+         ServiceDescriptorProto ServiceDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _ServiceDescriptorProto'name+              (\ x__ y__ -> x__{_ServiceDescriptorProto'name = y__})++type instance Data.ProtoLens.Field "method" ServiceDescriptorProto+     = [MethodDescriptorProto]++instance Data.ProtoLens.HasField "method" ServiceDescriptorProto+         ServiceDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _ServiceDescriptorProto'method+              (\ x__ y__ -> x__{_ServiceDescriptorProto'method = y__})++type instance Data.ProtoLens.Field "options" ServiceDescriptorProto+     = ServiceOptions++instance Data.ProtoLens.HasField "options" ServiceDescriptorProto+         ServiceDescriptorProto where+        field _+          = (Prelude..) maybe'options+              (Data.ProtoLens.maybeLens Data.Default.Class.def)++type instance+     Data.ProtoLens.Field "maybe'options" ServiceDescriptorProto =+     Prelude.Maybe ServiceOptions++instance Data.ProtoLens.HasField "maybe'options"+         ServiceDescriptorProto ServiceDescriptorProto where+        field _+          = Lens.Family2.Unchecked.lens _ServiceDescriptorProto'options+              (\ x__ y__ -> x__{_ServiceDescriptorProto'options = y__})++instance Data.Default.Class.Default ServiceDescriptorProto where+        def+          = ServiceDescriptorProto{_ServiceDescriptorProto'name =+                                     Prelude.Nothing,+                                   _ServiceDescriptorProto'method = [],+                                   _ServiceDescriptorProto'options = Prelude.Nothing}++instance Data.ProtoLens.Message ServiceDescriptorProto where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'name)+                method__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "method"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor MethodDescriptorProto)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked method)+                options__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "options"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor ServiceOptions)+                      (Data.ProtoLens.OptionalField maybe'options)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, name__field_descriptor),+                    (Data.ProtoLens.Tag 2, method__field_descriptor),+                    (Data.ProtoLens.Tag 3, options__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("method", method__field_descriptor),+                    ("options", options__field_descriptor)])++data ServiceOptions = ServiceOptions{_ServiceOptions'deprecated ::+                                     Prelude.Maybe Prelude.Bool,+                                     _ServiceOptions'uninterpretedOption :: [UninterpretedOption]}+                    deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "deprecated" ServiceOptions =+     Prelude.Bool++instance Data.ProtoLens.HasField "deprecated" ServiceOptions+         ServiceOptions where+        field _+          = (Prelude..) maybe'deprecated+              (Data.ProtoLens.maybeLens Prelude.False)++type instance+     Data.ProtoLens.Field "maybe'deprecated" ServiceOptions =+     Prelude.Maybe Prelude.Bool++instance Data.ProtoLens.HasField "maybe'deprecated" ServiceOptions+         ServiceOptions where+        field _+          = Lens.Family2.Unchecked.lens _ServiceOptions'deprecated+              (\ x__ y__ -> x__{_ServiceOptions'deprecated = y__})++type instance+     Data.ProtoLens.Field "uninterpretedOption" ServiceOptions =+     [UninterpretedOption]++instance Data.ProtoLens.HasField "uninterpretedOption"+         ServiceOptions ServiceOptions where+        field _+          = Lens.Family2.Unchecked.lens _ServiceOptions'uninterpretedOption+              (\ x__ y__ -> x__{_ServiceOptions'uninterpretedOption = y__})++instance Data.Default.Class.Default ServiceOptions where+        def+          = ServiceOptions{_ServiceOptions'deprecated = Prelude.Nothing,+                           _ServiceOptions'uninterpretedOption = []}++instance Data.ProtoLens.Message ServiceOptions where+        descriptor+          = let deprecated__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "deprecated"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.OptionalField maybe'deprecated)+                uninterpretedOption__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         uninterpretedOption)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 33, deprecated__field_descriptor),+                    (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)])+                (Data.Map.fromList+                   [("deprecated", deprecated__field_descriptor),+                    ("uninterpreted_option", uninterpretedOption__field_descriptor)])++data SourceCodeInfo = SourceCodeInfo{_SourceCodeInfo'location ::+                                     [SourceCodeInfo'Location]}+                    deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "location" SourceCodeInfo =+     [SourceCodeInfo'Location]++instance Data.ProtoLens.HasField "location" SourceCodeInfo+         SourceCodeInfo where+        field _+          = Lens.Family2.Unchecked.lens _SourceCodeInfo'location+              (\ x__ y__ -> x__{_SourceCodeInfo'location = y__})++instance Data.Default.Class.Default SourceCodeInfo where+        def = SourceCodeInfo{_SourceCodeInfo'location = []}++instance Data.ProtoLens.Message SourceCodeInfo where+        descriptor+          = let location__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "location"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor SourceCodeInfo'Location)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked location)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, location__field_descriptor)])+                (Data.Map.fromList [("location", location__field_descriptor)])++data SourceCodeInfo'Location = SourceCodeInfo'Location{_SourceCodeInfo'Location'path+                                                       :: [Data.Int.Int32],+                                                       _SourceCodeInfo'Location'span ::+                                                       [Data.Int.Int32],+                                                       _SourceCodeInfo'Location'leadingComments ::+                                                       Prelude.Maybe Data.Text.Text,+                                                       _SourceCodeInfo'Location'trailingComments ::+                                                       Prelude.Maybe Data.Text.Text,+                                                       _SourceCodeInfo'Location'leadingDetachedComments+                                                       :: [Data.Text.Text]}+                             deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "path" SourceCodeInfo'Location =+     [Data.Int.Int32]++instance Data.ProtoLens.HasField "path" SourceCodeInfo'Location+         SourceCodeInfo'Location where+        field _+          = Lens.Family2.Unchecked.lens _SourceCodeInfo'Location'path+              (\ x__ y__ -> x__{_SourceCodeInfo'Location'path = y__})++type instance Data.ProtoLens.Field "span" SourceCodeInfo'Location =+     [Data.Int.Int32]++instance Data.ProtoLens.HasField "span" SourceCodeInfo'Location+         SourceCodeInfo'Location where+        field _+          = Lens.Family2.Unchecked.lens _SourceCodeInfo'Location'span+              (\ x__ y__ -> x__{_SourceCodeInfo'Location'span = y__})++type instance+     Data.ProtoLens.Field "leadingComments" SourceCodeInfo'Location =+     Data.Text.Text++instance Data.ProtoLens.HasField "leadingComments"+         SourceCodeInfo'Location SourceCodeInfo'Location where+        field _+          = (Prelude..) maybe'leadingComments+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'leadingComments"+       SourceCodeInfo'Location+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'leadingComments"+         SourceCodeInfo'Location SourceCodeInfo'Location where+        field _+          = Lens.Family2.Unchecked.lens+              _SourceCodeInfo'Location'leadingComments+              (\ x__ y__ -> x__{_SourceCodeInfo'Location'leadingComments = y__})++type instance+     Data.ProtoLens.Field "trailingComments" SourceCodeInfo'Location =+     Data.Text.Text++instance Data.ProtoLens.HasField "trailingComments"+         SourceCodeInfo'Location SourceCodeInfo'Location where+        field _+          = (Prelude..) maybe'trailingComments+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'trailingComments"+       SourceCodeInfo'Location+     = Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'trailingComments"+         SourceCodeInfo'Location SourceCodeInfo'Location where+        field _+          = Lens.Family2.Unchecked.lens+              _SourceCodeInfo'Location'trailingComments+              (\ x__ y__ -> x__{_SourceCodeInfo'Location'trailingComments = y__})++type instance+     Data.ProtoLens.Field "leadingDetachedComments"+       SourceCodeInfo'Location+     = [Data.Text.Text]++instance Data.ProtoLens.HasField "leadingDetachedComments"+         SourceCodeInfo'Location SourceCodeInfo'Location where+        field _+          = Lens.Family2.Unchecked.lens+              _SourceCodeInfo'Location'leadingDetachedComments+              (\ x__ y__ ->+                 x__{_SourceCodeInfo'Location'leadingDetachedComments = y__})++instance Data.Default.Class.Default SourceCodeInfo'Location where+        def+          = SourceCodeInfo'Location{_SourceCodeInfo'Location'path = [],+                                    _SourceCodeInfo'Location'span = [],+                                    _SourceCodeInfo'Location'leadingComments = Prelude.Nothing,+                                    _SourceCodeInfo'Location'trailingComments = Prelude.Nothing,+                                    _SourceCodeInfo'Location'leadingDetachedComments = []}++instance Data.ProtoLens.Message SourceCodeInfo'Location where+        descriptor+          = let path__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "path"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed path)+                span__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "span"+                      (Data.ProtoLens.Int32Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed span)+                leadingComments__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "leading_comments"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'leadingComments)+                trailingComments__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "trailing_comments"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'trailingComments)+                leadingDetachedComments__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "leading_detached_comments"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked+                         leadingDetachedComments)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, path__field_descriptor),+                    (Data.ProtoLens.Tag 2, span__field_descriptor),+                    (Data.ProtoLens.Tag 3, leadingComments__field_descriptor),+                    (Data.ProtoLens.Tag 4, trailingComments__field_descriptor),+                    (Data.ProtoLens.Tag 6, leadingDetachedComments__field_descriptor)])+                (Data.Map.fromList+                   [("path", path__field_descriptor),+                    ("span", span__field_descriptor),+                    ("leading_comments", leadingComments__field_descriptor),+                    ("trailing_comments", trailingComments__field_descriptor),+                    ("leading_detached_comments",+                     leadingDetachedComments__field_descriptor)])++data UninterpretedOption = UninterpretedOption{_UninterpretedOption'name+                                               :: [UninterpretedOption'NamePart],+                                               _UninterpretedOption'identifierValue ::+                                               Prelude.Maybe Data.Text.Text,+                                               _UninterpretedOption'positiveIntValue ::+                                               Prelude.Maybe Data.Word.Word64,+                                               _UninterpretedOption'negativeIntValue ::+                                               Prelude.Maybe Data.Int.Int64,+                                               _UninterpretedOption'doubleValue ::+                                               Prelude.Maybe Prelude.Double,+                                               _UninterpretedOption'stringValue ::+                                               Prelude.Maybe Data.ByteString.ByteString,+                                               _UninterpretedOption'aggregateValue ::+                                               Prelude.Maybe Data.Text.Text}+                         deriving (Prelude.Show, Prelude.Eq)++type instance Data.ProtoLens.Field "name" UninterpretedOption =+     [UninterpretedOption'NamePart]++instance Data.ProtoLens.HasField "name" UninterpretedOption+         UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'name+              (\ x__ y__ -> x__{_UninterpretedOption'name = y__})++type instance+     Data.ProtoLens.Field "identifierValue" UninterpretedOption =+     Data.Text.Text++instance Data.ProtoLens.HasField "identifierValue"+         UninterpretedOption UninterpretedOption where+        field _+          = (Prelude..) maybe'identifierValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'identifierValue" UninterpretedOption =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'identifierValue"+         UninterpretedOption UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'identifierValue+              (\ x__ y__ -> x__{_UninterpretedOption'identifierValue = y__})++type instance+     Data.ProtoLens.Field "positiveIntValue" UninterpretedOption =+     Data.Word.Word64++instance Data.ProtoLens.HasField "positiveIntValue"+         UninterpretedOption UninterpretedOption where+        field _+          = (Prelude..) maybe'positiveIntValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'positiveIntValue" UninterpretedOption =+     Prelude.Maybe Data.Word.Word64++instance Data.ProtoLens.HasField "maybe'positiveIntValue"+         UninterpretedOption UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'positiveIntValue+              (\ x__ y__ -> x__{_UninterpretedOption'positiveIntValue = y__})++type instance+     Data.ProtoLens.Field "negativeIntValue" UninterpretedOption =+     Data.Int.Int64++instance Data.ProtoLens.HasField "negativeIntValue"+         UninterpretedOption UninterpretedOption where+        field _+          = (Prelude..) maybe'negativeIntValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'negativeIntValue" UninterpretedOption =+     Prelude.Maybe Data.Int.Int64++instance Data.ProtoLens.HasField "maybe'negativeIntValue"+         UninterpretedOption UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'negativeIntValue+              (\ x__ y__ -> x__{_UninterpretedOption'negativeIntValue = y__})++type instance+     Data.ProtoLens.Field "doubleValue" UninterpretedOption =+     Prelude.Double++instance Data.ProtoLens.HasField "doubleValue" UninterpretedOption+         UninterpretedOption where+        field _+          = (Prelude..) maybe'doubleValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'doubleValue" UninterpretedOption =+     Prelude.Maybe Prelude.Double++instance Data.ProtoLens.HasField "maybe'doubleValue"+         UninterpretedOption UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'doubleValue+              (\ x__ y__ -> x__{_UninterpretedOption'doubleValue = y__})++type instance+     Data.ProtoLens.Field "stringValue" UninterpretedOption =+     Data.ByteString.ByteString++instance Data.ProtoLens.HasField "stringValue" UninterpretedOption+         UninterpretedOption where+        field _+          = (Prelude..) maybe'stringValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'stringValue" UninterpretedOption =+     Prelude.Maybe Data.ByteString.ByteString++instance Data.ProtoLens.HasField "maybe'stringValue"+         UninterpretedOption UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'stringValue+              (\ x__ y__ -> x__{_UninterpretedOption'stringValue = y__})++type instance+     Data.ProtoLens.Field "aggregateValue" UninterpretedOption =+     Data.Text.Text++instance Data.ProtoLens.HasField "aggregateValue"+         UninterpretedOption UninterpretedOption where+        field _+          = (Prelude..) maybe'aggregateValue+              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)++type instance+     Data.ProtoLens.Field "maybe'aggregateValue" UninterpretedOption =+     Prelude.Maybe Data.Text.Text++instance Data.ProtoLens.HasField "maybe'aggregateValue"+         UninterpretedOption UninterpretedOption where+        field _+          = Lens.Family2.Unchecked.lens _UninterpretedOption'aggregateValue+              (\ x__ y__ -> x__{_UninterpretedOption'aggregateValue = y__})++instance Data.Default.Class.Default UninterpretedOption where+        def+          = UninterpretedOption{_UninterpretedOption'name = [],+                                _UninterpretedOption'identifierValue = Prelude.Nothing,+                                _UninterpretedOption'positiveIntValue = Prelude.Nothing,+                                _UninterpretedOption'negativeIntValue = Prelude.Nothing,+                                _UninterpretedOption'doubleValue = Prelude.Nothing,+                                _UninterpretedOption'stringValue = Prelude.Nothing,+                                _UninterpretedOption'aggregateValue = Prelude.Nothing}++instance Data.ProtoLens.Message UninterpretedOption where+        descriptor+          = let name__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name"+                      (Data.ProtoLens.MessageField ::+                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption'NamePart)+                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked name)+                identifierValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "identifier_value"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'identifierValue)+                positiveIntValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "positive_int_value"+                      (Data.ProtoLens.UInt64Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)+                      (Data.ProtoLens.OptionalField maybe'positiveIntValue)+                negativeIntValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "negative_int_value"+                      (Data.ProtoLens.Int64Field ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)+                      (Data.ProtoLens.OptionalField maybe'negativeIntValue)+                doubleValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "double_value"+                      (Data.ProtoLens.DoubleField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)+                      (Data.ProtoLens.OptionalField maybe'doubleValue)+                stringValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "string_value"+                      (Data.ProtoLens.BytesField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)+                      (Data.ProtoLens.OptionalField maybe'stringValue)+                aggregateValue__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "aggregate_value"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.OptionalField maybe'aggregateValue)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 2, name__field_descriptor),+                    (Data.ProtoLens.Tag 3, identifierValue__field_descriptor),+                    (Data.ProtoLens.Tag 4, positiveIntValue__field_descriptor),+                    (Data.ProtoLens.Tag 5, negativeIntValue__field_descriptor),+                    (Data.ProtoLens.Tag 6, doubleValue__field_descriptor),+                    (Data.ProtoLens.Tag 7, stringValue__field_descriptor),+                    (Data.ProtoLens.Tag 8, aggregateValue__field_descriptor)])+                (Data.Map.fromList+                   [("name", name__field_descriptor),+                    ("identifier_value", identifierValue__field_descriptor),+                    ("positive_int_value", positiveIntValue__field_descriptor),+                    ("negative_int_value", negativeIntValue__field_descriptor),+                    ("double_value", doubleValue__field_descriptor),+                    ("string_value", stringValue__field_descriptor),+                    ("aggregate_value", aggregateValue__field_descriptor)])++data UninterpretedOption'NamePart = UninterpretedOption'NamePart{_UninterpretedOption'NamePart'namePart+                                                                 :: Data.Text.Text,+                                                                 _UninterpretedOption'NamePart'isExtension+                                                                 :: Prelude.Bool}+                                  deriving (Prelude.Show, Prelude.Eq)++type instance+     Data.ProtoLens.Field "namePart" UninterpretedOption'NamePart =+     Data.Text.Text++instance Data.ProtoLens.HasField "namePart"+         UninterpretedOption'NamePart UninterpretedOption'NamePart where+        field _+          = Lens.Family2.Unchecked.lens+              _UninterpretedOption'NamePart'namePart+              (\ x__ y__ -> x__{_UninterpretedOption'NamePart'namePart = y__})++type instance+     Data.ProtoLens.Field "isExtension" UninterpretedOption'NamePart =+     Prelude.Bool++instance Data.ProtoLens.HasField "isExtension"+         UninterpretedOption'NamePart UninterpretedOption'NamePart where+        field _+          = Lens.Family2.Unchecked.lens+              _UninterpretedOption'NamePart'isExtension+              (\ x__ y__ -> x__{_UninterpretedOption'NamePart'isExtension = y__})++instance Data.Default.Class.Default UninterpretedOption'NamePart+         where+        def+          = UninterpretedOption'NamePart{_UninterpretedOption'NamePart'namePart+                                           = Data.ProtoLens.fieldDefault,+                                         _UninterpretedOption'NamePart'isExtension =+                                           Data.ProtoLens.fieldDefault}++instance Data.ProtoLens.Message UninterpretedOption'NamePart where+        descriptor+          = let namePart__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "name_part"+                      (Data.ProtoLens.StringField ::+                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+                      (Data.ProtoLens.PlainField Data.ProtoLens.Required namePart)+                isExtension__field_descriptor+                  = Data.ProtoLens.FieldDescriptor "is_extension"+                      (Data.ProtoLens.BoolField ::+                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+                      (Data.ProtoLens.PlainField Data.ProtoLens.Required isExtension)+              in+              Data.ProtoLens.MessageDescriptor+                (Data.Map.fromList+                   [(Data.ProtoLens.Tag 1, namePart__field_descriptor),+                    (Data.ProtoLens.Tag 2, isExtension__field_descriptor)])+                (Data.Map.fromList+                   [("name_part", namePart__field_descriptor),+                    ("is_extension", isExtension__field_descriptor)])++aggregateValue ::+               forall msg msg' .+                 Data.ProtoLens.HasField "aggregateValue" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "aggregateValue" msg)+                   (Data.ProtoLens.Field "aggregateValue" msg')+aggregateValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "aggregateValue")++allowAlias ::+           forall msg msg' . Data.ProtoLens.HasField "allowAlias" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "allowAlias" msg)+               (Data.ProtoLens.Field "allowAlias" msg')+allowAlias+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "allowAlias")++annotation ::+           forall msg msg' . Data.ProtoLens.HasField "annotation" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "annotation" msg)+               (Data.ProtoLens.Field "annotation" msg')+annotation+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "annotation")++begin ::+      forall msg msg' . Data.ProtoLens.HasField "begin" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "begin" msg)+          (Data.ProtoLens.Field "begin" msg')+begin+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "begin")++ccEnableArenas ::+               forall msg msg' .+                 Data.ProtoLens.HasField "ccEnableArenas" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "ccEnableArenas" msg)+                   (Data.ProtoLens.Field "ccEnableArenas" msg')+ccEnableArenas+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "ccEnableArenas")++ccGenericServices ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "ccGenericServices" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "ccGenericServices" msg)+                      (Data.ProtoLens.Field "ccGenericServices" msg')+ccGenericServices+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "ccGenericServices")++clientStreaming ::+                forall msg msg' .+                  Data.ProtoLens.HasField "clientStreaming" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "clientStreaming" msg)+                    (Data.ProtoLens.Field "clientStreaming" msg')+clientStreaming+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "clientStreaming")++csharpNamespace ::+                forall msg msg' .+                  Data.ProtoLens.HasField "csharpNamespace" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "csharpNamespace" msg)+                    (Data.ProtoLens.Field "csharpNamespace" msg')+csharpNamespace+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "csharpNamespace")++ctype ::+      forall msg msg' . Data.ProtoLens.HasField "ctype" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "ctype" msg)+          (Data.ProtoLens.Field "ctype" msg')+ctype+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "ctype")++defaultValue ::+             forall msg msg' .+               Data.ProtoLens.HasField "defaultValue" msg msg' =>+               Lens.Family2.Lens msg msg'+                 (Data.ProtoLens.Field "defaultValue" msg)+                 (Data.ProtoLens.Field "defaultValue" msg')+defaultValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "defaultValue")++dependency ::+           forall msg msg' . Data.ProtoLens.HasField "dependency" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "dependency" msg)+               (Data.ProtoLens.Field "dependency" msg')+dependency+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "dependency")++deprecated ::+           forall msg msg' . Data.ProtoLens.HasField "deprecated" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "deprecated" msg)+               (Data.ProtoLens.Field "deprecated" msg')+deprecated+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "deprecated")++doubleValue ::+            forall msg msg' . Data.ProtoLens.HasField "doubleValue" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "doubleValue" msg)+                (Data.ProtoLens.Field "doubleValue" msg')+doubleValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "doubleValue")++end ::+    forall msg msg' . Data.ProtoLens.HasField "end" msg msg' =>+      Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "end" msg)+        (Data.ProtoLens.Field "end" msg')+end+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "end")++enumType ::+         forall msg msg' . Data.ProtoLens.HasField "enumType" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "enumType" msg)+             (Data.ProtoLens.Field "enumType" msg')+enumType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "enumType")++extendee ::+         forall msg msg' . Data.ProtoLens.HasField "extendee" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "extendee" msg)+             (Data.ProtoLens.Field "extendee" msg')+extendee+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "extendee")++extension ::+          forall msg msg' . Data.ProtoLens.HasField "extension" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "extension" msg)+              (Data.ProtoLens.Field "extension" msg')+extension+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "extension")++extensionRange ::+               forall msg msg' .+                 Data.ProtoLens.HasField "extensionRange" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "extensionRange" msg)+                   (Data.ProtoLens.Field "extensionRange" msg')+extensionRange+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "extensionRange")++field ::+      forall msg msg' . Data.ProtoLens.HasField "field" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "field" msg)+          (Data.ProtoLens.Field "field" msg')+field+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "field")++file ::+     forall msg msg' . Data.ProtoLens.HasField "file" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "file" msg)+         (Data.ProtoLens.Field "file" msg')+file+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "file")++goPackage ::+          forall msg msg' . Data.ProtoLens.HasField "goPackage" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "goPackage" msg)+              (Data.ProtoLens.Field "goPackage" msg')+goPackage+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "goPackage")++identifierValue ::+                forall msg msg' .+                  Data.ProtoLens.HasField "identifierValue" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "identifierValue" msg)+                    (Data.ProtoLens.Field "identifierValue" msg')+identifierValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "identifierValue")++inputType ::+          forall msg msg' . Data.ProtoLens.HasField "inputType" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "inputType" msg)+              (Data.ProtoLens.Field "inputType" msg')+inputType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "inputType")++isExtension ::+            forall msg msg' . Data.ProtoLens.HasField "isExtension" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "isExtension" msg)+                (Data.ProtoLens.Field "isExtension" msg')+isExtension+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "isExtension")++javaGenerateEqualsAndHash ::+                          forall msg msg' .+                            Data.ProtoLens.HasField "javaGenerateEqualsAndHash" msg msg' =>+                            Lens.Family2.Lens msg msg'+                              (Data.ProtoLens.Field "javaGenerateEqualsAndHash" msg)+                              (Data.ProtoLens.Field "javaGenerateEqualsAndHash" msg')+javaGenerateEqualsAndHash+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "javaGenerateEqualsAndHash")++javaGenericServices ::+                    forall msg msg' .+                      Data.ProtoLens.HasField "javaGenericServices" msg msg' =>+                      Lens.Family2.Lens msg msg'+                        (Data.ProtoLens.Field "javaGenericServices" msg)+                        (Data.ProtoLens.Field "javaGenericServices" msg')+javaGenericServices+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "javaGenericServices")++javaMultipleFiles ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "javaMultipleFiles" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "javaMultipleFiles" msg)+                      (Data.ProtoLens.Field "javaMultipleFiles" msg')+javaMultipleFiles+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "javaMultipleFiles")++javaOuterClassname ::+                   forall msg msg' .+                     Data.ProtoLens.HasField "javaOuterClassname" msg msg' =>+                     Lens.Family2.Lens msg msg'+                       (Data.ProtoLens.Field "javaOuterClassname" msg)+                       (Data.ProtoLens.Field "javaOuterClassname" msg')+javaOuterClassname+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "javaOuterClassname")++javaPackage ::+            forall msg msg' . Data.ProtoLens.HasField "javaPackage" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "javaPackage" msg)+                (Data.ProtoLens.Field "javaPackage" msg')+javaPackage+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "javaPackage")++javaStringCheckUtf8 ::+                    forall msg msg' .+                      Data.ProtoLens.HasField "javaStringCheckUtf8" msg msg' =>+                      Lens.Family2.Lens msg msg'+                        (Data.ProtoLens.Field "javaStringCheckUtf8" msg)+                        (Data.ProtoLens.Field "javaStringCheckUtf8" msg')+javaStringCheckUtf8+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "javaStringCheckUtf8")++jsonName ::+         forall msg msg' . Data.ProtoLens.HasField "jsonName" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "jsonName" msg)+             (Data.ProtoLens.Field "jsonName" msg')+jsonName+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "jsonName")++jstype ::+       forall msg msg' . Data.ProtoLens.HasField "jstype" msg msg' =>+         Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "jstype" msg)+           (Data.ProtoLens.Field "jstype" msg')+jstype+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "jstype")++label ::+      forall msg msg' . Data.ProtoLens.HasField "label" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "label" msg)+          (Data.ProtoLens.Field "label" msg')+label+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "label")++lazy ::+     forall msg msg' . Data.ProtoLens.HasField "lazy" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "lazy" msg)+         (Data.ProtoLens.Field "lazy" msg')+lazy+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "lazy")++leadingComments ::+                forall msg msg' .+                  Data.ProtoLens.HasField "leadingComments" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "leadingComments" msg)+                    (Data.ProtoLens.Field "leadingComments" msg')+leadingComments+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "leadingComments")++leadingDetachedComments ::+                        forall msg msg' .+                          Data.ProtoLens.HasField "leadingDetachedComments" msg msg' =>+                          Lens.Family2.Lens msg msg'+                            (Data.ProtoLens.Field "leadingDetachedComments" msg)+                            (Data.ProtoLens.Field "leadingDetachedComments" msg')+leadingDetachedComments+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "leadingDetachedComments")++location ::+         forall msg msg' . Data.ProtoLens.HasField "location" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "location" msg)+             (Data.ProtoLens.Field "location" msg')+location+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "location")++mapEntry ::+         forall msg msg' . Data.ProtoLens.HasField "mapEntry" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "mapEntry" msg)+             (Data.ProtoLens.Field "mapEntry" msg')+mapEntry+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "mapEntry")++maybe'aggregateValue ::+                     forall msg msg' .+                       Data.ProtoLens.HasField "maybe'aggregateValue" msg msg' =>+                       Lens.Family2.Lens msg msg'+                         (Data.ProtoLens.Field "maybe'aggregateValue" msg)+                         (Data.ProtoLens.Field "maybe'aggregateValue" msg')+maybe'aggregateValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'aggregateValue")++maybe'allowAlias ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "maybe'allowAlias" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "maybe'allowAlias" msg)+                     (Data.ProtoLens.Field "maybe'allowAlias" msg')+maybe'allowAlias+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'allowAlias")++maybe'begin ::+            forall msg msg' . Data.ProtoLens.HasField "maybe'begin" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'begin" msg)+                (Data.ProtoLens.Field "maybe'begin" msg')+maybe'begin+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'begin")++maybe'ccEnableArenas ::+                     forall msg msg' .+                       Data.ProtoLens.HasField "maybe'ccEnableArenas" msg msg' =>+                       Lens.Family2.Lens msg msg'+                         (Data.ProtoLens.Field "maybe'ccEnableArenas" msg)+                         (Data.ProtoLens.Field "maybe'ccEnableArenas" msg')+maybe'ccEnableArenas+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'ccEnableArenas")++maybe'ccGenericServices ::+                        forall msg msg' .+                          Data.ProtoLens.HasField "maybe'ccGenericServices" msg msg' =>+                          Lens.Family2.Lens msg msg'+                            (Data.ProtoLens.Field "maybe'ccGenericServices" msg)+                            (Data.ProtoLens.Field "maybe'ccGenericServices" msg')+maybe'ccGenericServices+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'ccGenericServices")++maybe'clientStreaming ::+                      forall msg msg' .+                        Data.ProtoLens.HasField "maybe'clientStreaming" msg msg' =>+                        Lens.Family2.Lens msg msg'+                          (Data.ProtoLens.Field "maybe'clientStreaming" msg)+                          (Data.ProtoLens.Field "maybe'clientStreaming" msg')+maybe'clientStreaming+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'clientStreaming")++maybe'csharpNamespace ::+                      forall msg msg' .+                        Data.ProtoLens.HasField "maybe'csharpNamespace" msg msg' =>+                        Lens.Family2.Lens msg msg'+                          (Data.ProtoLens.Field "maybe'csharpNamespace" msg)+                          (Data.ProtoLens.Field "maybe'csharpNamespace" msg')+maybe'csharpNamespace+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'csharpNamespace")++maybe'ctype ::+            forall msg msg' . Data.ProtoLens.HasField "maybe'ctype" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'ctype" msg)+                (Data.ProtoLens.Field "maybe'ctype" msg')+maybe'ctype+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'ctype")++maybe'defaultValue ::+                   forall msg msg' .+                     Data.ProtoLens.HasField "maybe'defaultValue" msg msg' =>+                     Lens.Family2.Lens msg msg'+                       (Data.ProtoLens.Field "maybe'defaultValue" msg)+                       (Data.ProtoLens.Field "maybe'defaultValue" msg')+maybe'defaultValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'defaultValue")++maybe'deprecated ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "maybe'deprecated" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "maybe'deprecated" msg)+                     (Data.ProtoLens.Field "maybe'deprecated" msg')+maybe'deprecated+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'deprecated")++maybe'doubleValue ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "maybe'doubleValue" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "maybe'doubleValue" msg)+                      (Data.ProtoLens.Field "maybe'doubleValue" msg')+maybe'doubleValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'doubleValue")++maybe'end ::+          forall msg msg' . Data.ProtoLens.HasField "maybe'end" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'end" msg)+              (Data.ProtoLens.Field "maybe'end" msg')+maybe'end+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'end")++maybe'extendee ::+               forall msg msg' .+                 Data.ProtoLens.HasField "maybe'extendee" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "maybe'extendee" msg)+                   (Data.ProtoLens.Field "maybe'extendee" msg')+maybe'extendee+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'extendee")++maybe'goPackage ::+                forall msg msg' .+                  Data.ProtoLens.HasField "maybe'goPackage" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "maybe'goPackage" msg)+                    (Data.ProtoLens.Field "maybe'goPackage" msg')+maybe'goPackage+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'goPackage")++maybe'identifierValue ::+                      forall msg msg' .+                        Data.ProtoLens.HasField "maybe'identifierValue" msg msg' =>+                        Lens.Family2.Lens msg msg'+                          (Data.ProtoLens.Field "maybe'identifierValue" msg)+                          (Data.ProtoLens.Field "maybe'identifierValue" msg')+maybe'identifierValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'identifierValue")++maybe'inputType ::+                forall msg msg' .+                  Data.ProtoLens.HasField "maybe'inputType" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "maybe'inputType" msg)+                    (Data.ProtoLens.Field "maybe'inputType" msg')+maybe'inputType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'inputType")++maybe'javaGenerateEqualsAndHash ::+                                forall msg msg' .+                                  Data.ProtoLens.HasField "maybe'javaGenerateEqualsAndHash" msg+                                    msg' =>+                                  Lens.Family2.Lens msg msg'+                                    (Data.ProtoLens.Field "maybe'javaGenerateEqualsAndHash" msg)+                                    (Data.ProtoLens.Field "maybe'javaGenerateEqualsAndHash" msg')+maybe'javaGenerateEqualsAndHash+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'javaGenerateEqualsAndHash")++maybe'javaGenericServices ::+                          forall msg msg' .+                            Data.ProtoLens.HasField "maybe'javaGenericServices" msg msg' =>+                            Lens.Family2.Lens msg msg'+                              (Data.ProtoLens.Field "maybe'javaGenericServices" msg)+                              (Data.ProtoLens.Field "maybe'javaGenericServices" msg')+maybe'javaGenericServices+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'javaGenericServices")++maybe'javaMultipleFiles ::+                        forall msg msg' .+                          Data.ProtoLens.HasField "maybe'javaMultipleFiles" msg msg' =>+                          Lens.Family2.Lens msg msg'+                            (Data.ProtoLens.Field "maybe'javaMultipleFiles" msg)+                            (Data.ProtoLens.Field "maybe'javaMultipleFiles" msg')+maybe'javaMultipleFiles+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'javaMultipleFiles")++maybe'javaOuterClassname ::+                         forall msg msg' .+                           Data.ProtoLens.HasField "maybe'javaOuterClassname" msg msg' =>+                           Lens.Family2.Lens msg msg'+                             (Data.ProtoLens.Field "maybe'javaOuterClassname" msg)+                             (Data.ProtoLens.Field "maybe'javaOuterClassname" msg')+maybe'javaOuterClassname+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'javaOuterClassname")++maybe'javaPackage ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "maybe'javaPackage" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "maybe'javaPackage" msg)+                      (Data.ProtoLens.Field "maybe'javaPackage" msg')+maybe'javaPackage+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'javaPackage")++maybe'javaStringCheckUtf8 ::+                          forall msg msg' .+                            Data.ProtoLens.HasField "maybe'javaStringCheckUtf8" msg msg' =>+                            Lens.Family2.Lens msg msg'+                              (Data.ProtoLens.Field "maybe'javaStringCheckUtf8" msg)+                              (Data.ProtoLens.Field "maybe'javaStringCheckUtf8" msg')+maybe'javaStringCheckUtf8+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'javaStringCheckUtf8")++maybe'jsonName ::+               forall msg msg' .+                 Data.ProtoLens.HasField "maybe'jsonName" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "maybe'jsonName" msg)+                   (Data.ProtoLens.Field "maybe'jsonName" msg')+maybe'jsonName+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'jsonName")++maybe'jstype ::+             forall msg msg' .+               Data.ProtoLens.HasField "maybe'jstype" msg msg' =>+               Lens.Family2.Lens msg msg'+                 (Data.ProtoLens.Field "maybe'jstype" msg)+                 (Data.ProtoLens.Field "maybe'jstype" msg')+maybe'jstype+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'jstype")++maybe'label ::+            forall msg msg' . Data.ProtoLens.HasField "maybe'label" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'label" msg)+                (Data.ProtoLens.Field "maybe'label" msg')+maybe'label+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'label")++maybe'lazy ::+           forall msg msg' . Data.ProtoLens.HasField "maybe'lazy" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'lazy" msg)+               (Data.ProtoLens.Field "maybe'lazy" msg')+maybe'lazy+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'lazy")++maybe'leadingComments ::+                      forall msg msg' .+                        Data.ProtoLens.HasField "maybe'leadingComments" msg msg' =>+                        Lens.Family2.Lens msg msg'+                          (Data.ProtoLens.Field "maybe'leadingComments" msg)+                          (Data.ProtoLens.Field "maybe'leadingComments" msg')+maybe'leadingComments+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'leadingComments")++maybe'mapEntry ::+               forall msg msg' .+                 Data.ProtoLens.HasField "maybe'mapEntry" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "maybe'mapEntry" msg)+                   (Data.ProtoLens.Field "maybe'mapEntry" msg')+maybe'mapEntry+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'mapEntry")++maybe'messageSetWireFormat ::+                           forall msg msg' .+                             Data.ProtoLens.HasField "maybe'messageSetWireFormat" msg msg' =>+                             Lens.Family2.Lens msg msg'+                               (Data.ProtoLens.Field "maybe'messageSetWireFormat" msg)+                               (Data.ProtoLens.Field "maybe'messageSetWireFormat" msg')+maybe'messageSetWireFormat+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'messageSetWireFormat")++maybe'name ::+           forall msg msg' . Data.ProtoLens.HasField "maybe'name" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'name" msg)+               (Data.ProtoLens.Field "maybe'name" msg')+maybe'name+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'name")++maybe'negativeIntValue ::+                       forall msg msg' .+                         Data.ProtoLens.HasField "maybe'negativeIntValue" msg msg' =>+                         Lens.Family2.Lens msg msg'+                           (Data.ProtoLens.Field "maybe'negativeIntValue" msg)+                           (Data.ProtoLens.Field "maybe'negativeIntValue" msg')+maybe'negativeIntValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'negativeIntValue")++maybe'noStandardDescriptorAccessor ::+                                   forall msg msg' .+                                     Data.ProtoLens.HasField "maybe'noStandardDescriptorAccessor"+                                       msg msg' =>+                                     Lens.Family2.Lens msg msg'+                                       (Data.ProtoLens.Field "maybe'noStandardDescriptorAccessor"+                                          msg)+                                       (Data.ProtoLens.Field "maybe'noStandardDescriptorAccessor"+                                          msg')+maybe'noStandardDescriptorAccessor+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'noStandardDescriptorAccessor")++maybe'number ::+             forall msg msg' .+               Data.ProtoLens.HasField "maybe'number" msg msg' =>+               Lens.Family2.Lens msg msg'+                 (Data.ProtoLens.Field "maybe'number" msg)+                 (Data.ProtoLens.Field "maybe'number" msg')+maybe'number+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'number")++maybe'objcClassPrefix ::+                      forall msg msg' .+                        Data.ProtoLens.HasField "maybe'objcClassPrefix" msg msg' =>+                        Lens.Family2.Lens msg msg'+                          (Data.ProtoLens.Field "maybe'objcClassPrefix" msg)+                          (Data.ProtoLens.Field "maybe'objcClassPrefix" msg')+maybe'objcClassPrefix+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'objcClassPrefix")++maybe'oneofIndex ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "maybe'oneofIndex" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "maybe'oneofIndex" msg)+                     (Data.ProtoLens.Field "maybe'oneofIndex" msg')+maybe'oneofIndex+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'oneofIndex")++maybe'optimizeFor ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "maybe'optimizeFor" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "maybe'optimizeFor" msg)+                      (Data.ProtoLens.Field "maybe'optimizeFor" msg')+maybe'optimizeFor+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'optimizeFor")++maybe'options ::+              forall msg msg' .+                Data.ProtoLens.HasField "maybe'options" msg msg' =>+                Lens.Family2.Lens msg msg'+                  (Data.ProtoLens.Field "maybe'options" msg)+                  (Data.ProtoLens.Field "maybe'options" msg')+maybe'options+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'options")++maybe'outputType ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "maybe'outputType" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "maybe'outputType" msg)+                     (Data.ProtoLens.Field "maybe'outputType" msg')+maybe'outputType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'outputType")++maybe'package ::+              forall msg msg' .+                Data.ProtoLens.HasField "maybe'package" msg msg' =>+                Lens.Family2.Lens msg msg'+                  (Data.ProtoLens.Field "maybe'package" msg)+                  (Data.ProtoLens.Field "maybe'package" msg')+maybe'package+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'package")++maybe'packed ::+             forall msg msg' .+               Data.ProtoLens.HasField "maybe'packed" msg msg' =>+               Lens.Family2.Lens msg msg'+                 (Data.ProtoLens.Field "maybe'packed" msg)+                 (Data.ProtoLens.Field "maybe'packed" msg')+maybe'packed+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'packed")++maybe'positiveIntValue ::+                       forall msg msg' .+                         Data.ProtoLens.HasField "maybe'positiveIntValue" msg msg' =>+                         Lens.Family2.Lens msg msg'+                           (Data.ProtoLens.Field "maybe'positiveIntValue" msg)+                           (Data.ProtoLens.Field "maybe'positiveIntValue" msg')+maybe'positiveIntValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'positiveIntValue")++maybe'pyGenericServices ::+                        forall msg msg' .+                          Data.ProtoLens.HasField "maybe'pyGenericServices" msg msg' =>+                          Lens.Family2.Lens msg msg'+                            (Data.ProtoLens.Field "maybe'pyGenericServices" msg)+                            (Data.ProtoLens.Field "maybe'pyGenericServices" msg')+maybe'pyGenericServices+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'pyGenericServices")++maybe'serverStreaming ::+                      forall msg msg' .+                        Data.ProtoLens.HasField "maybe'serverStreaming" msg msg' =>+                        Lens.Family2.Lens msg msg'+                          (Data.ProtoLens.Field "maybe'serverStreaming" msg)+                          (Data.ProtoLens.Field "maybe'serverStreaming" msg')+maybe'serverStreaming+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'serverStreaming")++maybe'sourceCodeInfo ::+                     forall msg msg' .+                       Data.ProtoLens.HasField "maybe'sourceCodeInfo" msg msg' =>+                       Lens.Family2.Lens msg msg'+                         (Data.ProtoLens.Field "maybe'sourceCodeInfo" msg)+                         (Data.ProtoLens.Field "maybe'sourceCodeInfo" msg')+maybe'sourceCodeInfo+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'sourceCodeInfo")++maybe'sourceFile ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "maybe'sourceFile" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "maybe'sourceFile" msg)+                     (Data.ProtoLens.Field "maybe'sourceFile" msg')+maybe'sourceFile+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'sourceFile")++maybe'start ::+            forall msg msg' . Data.ProtoLens.HasField "maybe'start" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'start" msg)+                (Data.ProtoLens.Field "maybe'start" msg')+maybe'start+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'start")++maybe'stringValue ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "maybe'stringValue" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "maybe'stringValue" msg)+                      (Data.ProtoLens.Field "maybe'stringValue" msg')+maybe'stringValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'stringValue")++maybe'syntax ::+             forall msg msg' .+               Data.ProtoLens.HasField "maybe'syntax" msg msg' =>+               Lens.Family2.Lens msg msg'+                 (Data.ProtoLens.Field "maybe'syntax" msg)+                 (Data.ProtoLens.Field "maybe'syntax" msg')+maybe'syntax+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'syntax")++maybe'trailingComments ::+                       forall msg msg' .+                         Data.ProtoLens.HasField "maybe'trailingComments" msg msg' =>+                         Lens.Family2.Lens msg msg'+                           (Data.ProtoLens.Field "maybe'trailingComments" msg)+                           (Data.ProtoLens.Field "maybe'trailingComments" msg')+maybe'trailingComments+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'trailingComments")++maybe'type' ::+            forall msg msg' . Data.ProtoLens.HasField "maybe'type'" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'type'" msg)+                (Data.ProtoLens.Field "maybe'type'" msg')+maybe'type'+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'type'")++maybe'typeName ::+               forall msg msg' .+                 Data.ProtoLens.HasField "maybe'typeName" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "maybe'typeName" msg)+                   (Data.ProtoLens.Field "maybe'typeName" msg')+maybe'typeName+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "maybe'typeName")++maybe'weak ::+           forall msg msg' . Data.ProtoLens.HasField "maybe'weak" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "maybe'weak" msg)+               (Data.ProtoLens.Field "maybe'weak" msg')+maybe'weak+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "maybe'weak")++messageSetWireFormat ::+                     forall msg msg' .+                       Data.ProtoLens.HasField "messageSetWireFormat" msg msg' =>+                       Lens.Family2.Lens msg msg'+                         (Data.ProtoLens.Field "messageSetWireFormat" msg)+                         (Data.ProtoLens.Field "messageSetWireFormat" msg')+messageSetWireFormat+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "messageSetWireFormat")++messageType ::+            forall msg msg' . Data.ProtoLens.HasField "messageType" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "messageType" msg)+                (Data.ProtoLens.Field "messageType" msg')+messageType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "messageType")++method ::+       forall msg msg' . Data.ProtoLens.HasField "method" msg msg' =>+         Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "method" msg)+           (Data.ProtoLens.Field "method" msg')+method+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "method")++name ::+     forall msg msg' . Data.ProtoLens.HasField "name" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "name" msg)+         (Data.ProtoLens.Field "name" msg')+name+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "name")++namePart ::+         forall msg msg' . Data.ProtoLens.HasField "namePart" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "namePart" msg)+             (Data.ProtoLens.Field "namePart" msg')+namePart+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "namePart")++negativeIntValue ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "negativeIntValue" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "negativeIntValue" msg)+                     (Data.ProtoLens.Field "negativeIntValue" msg')+negativeIntValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "negativeIntValue")++nestedType ::+           forall msg msg' . Data.ProtoLens.HasField "nestedType" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "nestedType" msg)+               (Data.ProtoLens.Field "nestedType" msg')+nestedType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "nestedType")++noStandardDescriptorAccessor ::+                             forall msg msg' .+                               Data.ProtoLens.HasField "noStandardDescriptorAccessor" msg msg' =>+                               Lens.Family2.Lens msg msg'+                                 (Data.ProtoLens.Field "noStandardDescriptorAccessor" msg)+                                 (Data.ProtoLens.Field "noStandardDescriptorAccessor" msg')+noStandardDescriptorAccessor+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "noStandardDescriptorAccessor")++number ::+       forall msg msg' . Data.ProtoLens.HasField "number" msg msg' =>+         Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "number" msg)+           (Data.ProtoLens.Field "number" msg')+number+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "number")++objcClassPrefix ::+                forall msg msg' .+                  Data.ProtoLens.HasField "objcClassPrefix" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "objcClassPrefix" msg)+                    (Data.ProtoLens.Field "objcClassPrefix" msg')+objcClassPrefix+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "objcClassPrefix")++oneofDecl ::+          forall msg msg' . Data.ProtoLens.HasField "oneofDecl" msg msg' =>+            Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "oneofDecl" msg)+              (Data.ProtoLens.Field "oneofDecl" msg')+oneofDecl+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "oneofDecl")++oneofIndex ::+           forall msg msg' . Data.ProtoLens.HasField "oneofIndex" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "oneofIndex" msg)+               (Data.ProtoLens.Field "oneofIndex" msg')+oneofIndex+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "oneofIndex")++optimizeFor ::+            forall msg msg' . Data.ProtoLens.HasField "optimizeFor" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "optimizeFor" msg)+                (Data.ProtoLens.Field "optimizeFor" msg')+optimizeFor+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "optimizeFor")++options ::+        forall msg msg' . Data.ProtoLens.HasField "options" msg msg' =>+          Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "options" msg)+            (Data.ProtoLens.Field "options" msg')+options+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "options")++outputType ::+           forall msg msg' . Data.ProtoLens.HasField "outputType" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "outputType" msg)+               (Data.ProtoLens.Field "outputType" msg')+outputType+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "outputType")++package ::+        forall msg msg' . Data.ProtoLens.HasField "package" msg msg' =>+          Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "package" msg)+            (Data.ProtoLens.Field "package" msg')+package+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "package")++packed ::+       forall msg msg' . Data.ProtoLens.HasField "packed" msg msg' =>+         Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "packed" msg)+           (Data.ProtoLens.Field "packed" msg')+packed+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "packed")++path ::+     forall msg msg' . Data.ProtoLens.HasField "path" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "path" msg)+         (Data.ProtoLens.Field "path" msg')+path+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "path")++positiveIntValue ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "positiveIntValue" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "positiveIntValue" msg)+                     (Data.ProtoLens.Field "positiveIntValue" msg')+positiveIntValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "positiveIntValue")++publicDependency ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "publicDependency" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "publicDependency" msg)+                     (Data.ProtoLens.Field "publicDependency" msg')+publicDependency+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "publicDependency")++pyGenericServices ::+                  forall msg msg' .+                    Data.ProtoLens.HasField "pyGenericServices" msg msg' =>+                    Lens.Family2.Lens msg msg'+                      (Data.ProtoLens.Field "pyGenericServices" msg)+                      (Data.ProtoLens.Field "pyGenericServices" msg')+pyGenericServices+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "pyGenericServices")++reservedName ::+             forall msg msg' .+               Data.ProtoLens.HasField "reservedName" msg msg' =>+               Lens.Family2.Lens msg msg'+                 (Data.ProtoLens.Field "reservedName" msg)+                 (Data.ProtoLens.Field "reservedName" msg')+reservedName+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "reservedName")++reservedRange ::+              forall msg msg' .+                Data.ProtoLens.HasField "reservedRange" msg msg' =>+                Lens.Family2.Lens msg msg'+                  (Data.ProtoLens.Field "reservedRange" msg)+                  (Data.ProtoLens.Field "reservedRange" msg')+reservedRange+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "reservedRange")++serverStreaming ::+                forall msg msg' .+                  Data.ProtoLens.HasField "serverStreaming" msg msg' =>+                  Lens.Family2.Lens msg msg'+                    (Data.ProtoLens.Field "serverStreaming" msg)+                    (Data.ProtoLens.Field "serverStreaming" msg')+serverStreaming+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "serverStreaming")++service ::+        forall msg msg' . Data.ProtoLens.HasField "service" msg msg' =>+          Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "service" msg)+            (Data.ProtoLens.Field "service" msg')+service+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "service")++sourceCodeInfo ::+               forall msg msg' .+                 Data.ProtoLens.HasField "sourceCodeInfo" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "sourceCodeInfo" msg)+                   (Data.ProtoLens.Field "sourceCodeInfo" msg')+sourceCodeInfo+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "sourceCodeInfo")++sourceFile ::+           forall msg msg' . Data.ProtoLens.HasField "sourceFile" msg msg' =>+             Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "sourceFile" msg)+               (Data.ProtoLens.Field "sourceFile" msg')+sourceFile+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "sourceFile")++span ::+     forall msg msg' . Data.ProtoLens.HasField "span" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "span" msg)+         (Data.ProtoLens.Field "span" msg')+span+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "span")++start ::+      forall msg msg' . Data.ProtoLens.HasField "start" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "start" msg)+          (Data.ProtoLens.Field "start" msg')+start+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "start")++stringValue ::+            forall msg msg' . Data.ProtoLens.HasField "stringValue" msg msg' =>+              Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "stringValue" msg)+                (Data.ProtoLens.Field "stringValue" msg')+stringValue+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "stringValue")++syntax ::+       forall msg msg' . Data.ProtoLens.HasField "syntax" msg msg' =>+         Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "syntax" msg)+           (Data.ProtoLens.Field "syntax" msg')+syntax+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "syntax")++trailingComments ::+                 forall msg msg' .+                   Data.ProtoLens.HasField "trailingComments" msg msg' =>+                   Lens.Family2.Lens msg msg'+                     (Data.ProtoLens.Field "trailingComments" msg)+                     (Data.ProtoLens.Field "trailingComments" msg')+trailingComments+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "trailingComments")++type' ::+      forall msg msg' . Data.ProtoLens.HasField "type'" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "type'" msg)+          (Data.ProtoLens.Field "type'" msg')+type'+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "type'")++typeName ::+         forall msg msg' . Data.ProtoLens.HasField "typeName" msg msg' =>+           Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "typeName" msg)+             (Data.ProtoLens.Field "typeName" msg')+typeName+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "typeName")++uninterpretedOption ::+                    forall msg msg' .+                      Data.ProtoLens.HasField "uninterpretedOption" msg msg' =>+                      Lens.Family2.Lens msg msg'+                        (Data.ProtoLens.Field "uninterpretedOption" msg)+                        (Data.ProtoLens.Field "uninterpretedOption" msg')+uninterpretedOption+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "uninterpretedOption")++value ::+      forall msg msg' . Data.ProtoLens.HasField "value" msg msg' =>+        Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "value" msg)+          (Data.ProtoLens.Field "value" msg')+value+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "value")++weak ::+     forall msg msg' . Data.ProtoLens.HasField "weak" msg msg' =>+       Lens.Family2.Lens msg msg' (Data.ProtoLens.Field "weak" msg)+         (Data.ProtoLens.Field "weak" msg')+weak+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym :: Data.ProtoLens.ProxySym "weak")++weakDependency ::+               forall msg msg' .+                 Data.ProtoLens.HasField "weakDependency" msg msg' =>+                 Lens.Family2.Lens msg msg'+                   (Data.ProtoLens.Field "weakDependency" msg)+                   (Data.ProtoLens.Field "weakDependency" msg')+weakDependency+  = Data.ProtoLens.field+      (Data.ProtoLens.ProxySym ::+         Data.ProtoLens.ProxySym "weakDependency")
+ src/Combinators.hs view
@@ -0,0 +1,98 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++{-# OPTIONS_GHC -fno-warn-orphans #-}+-- | Some utility functions, classes and instances for nicer code generation+-- with haskell-src-exts.+--+-- In particular, we define orphan instances of IsString for various syntax+-- datatypes, with some intelligence about Haskell names.  For example, @"foo"+-- :: Exp@ is treated as a variable and @"Foo" :: Exp@ is treated as a+-- constructor.+module Combinators where++import Data.Char (isAlphaNum, isUpper)+import Data.String (IsString(..))+import Language.Haskell.Exts.SrcLoc (noLoc)+import Language.Haskell.Exts.Syntax as Syntax++-- | Application of a Haskell type or expression to an argument.+-- For example, to represent @f x y@, you can write+--+-- > "f" @@ "x" @@ "y"+class App a where+    (@@) :: a -> a -> a+    infixl 2 @@++instance App Type where+    (@@) = TyApp++instance App Exp where+    (@@) = App++instance IsString Name where+    fromString s+        -- TODO: better handle the case of mixed ident and symbol characters.+        | all isIdentChar s = Ident s+        | otherwise = Symbol s++-- | Whether this character belongs to an Ident (e.g., "foo") or a symbol+-- (e.g., "<$>").+isIdentChar :: Char -> Bool+isIdentChar c = isAlphaNum c || c `elem` "_'"++instance IsString ModuleName where+    fromString = ModuleName++instance IsString QName where+    fromString f+      -- TODO: support qualified operators (e.g., "Control.Applicative.<$>")+      -- Currently we ignore them due to edge-cases+      -- like the composition operator "Prelude.."+      | isIdentChar (last f), '.' `elem` f+      -- Split "Foo.Bar.baz" into ("Foo.Bar", "baz")+      , (f', '.':f'') <- span (/='.') (reverse f)+            = Qual (fromString $ reverse f'') (fromString $ reverse f')+      | otherwise = UnQual $ fromString f++instance IsString Type where+  fromString fs@(f:_)+      | isUpper f = TyCon $ fromString fs+  fromString fs = TyVar $ fromString fs++instance IsString Exp where+    fromString fs@(f:_)+        | isUpper f = Con $ fromString fs+    fromString fs = Var $ fromString fs++instance IsString Pat where+    fromString = PVar . fromString++instance IsString TyVarBind where+    fromString = UnkindedVar . fromString+++-- Helper functions for literal numbers, since haskell-src-exts doesn't+-- put parentheses around negative numbers automatically.++litInt :: Integer -> Exp+litInt n+    | n >= 0 = Lit $ Int n+    | otherwise = NegApp $ Lit $ Int $ negate n++litFrac :: Rational -> Exp+litFrac x+    | x >= 0 = Lit $ Frac x+    | otherwise = NegApp $ Lit $ Frac $ negate x++pLitInt :: Integer -> Pat+pLitInt n+    | n >= 0 = PLit Signless $ Int n+    | otherwise = PLit Negative $ Int $ negate n++-- | A simple clause of a function binding.+match :: Name -> [Pat] -> Exp -> Match+match n ps e = Match noLoc n ps Nothing (UnGuardedRhs e) Nothing
+ src/Data/ProtoLens/Setup.hs view
@@ -0,0 +1,112 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++-- | Helper functions to generate proto files as part of a @Setup.hs@ script.+--+-- These functions assume that the @proto-lens-protoc@ executable is on the+-- PATH, and throw an exception otherwise.  That executable will be installed+-- automatically as part of installing this package; in particular, it should+-- be enough to just list `proto-lens-protoc` in a user package's+-- `build-dependencies`.+--+-- See @README.md@ for instructions on how to use proto-lens with Cabal.+module Data.ProtoLens.Setup+    ( defaultMainGeneratingProtos+    , generatingProtos+    , generateProtos+    ) where++import Distribution.PackageDescription (extraSrcFiles)+import Distribution.Simple.BuildPaths (autogenModulesDir)+import Distribution.Simple.Program (knownPrograms, ConfiguredProgram(..))+import Distribution.Simple.Program.Types (simpleProgram)+import Distribution.Simple.Utils (matchFileGlob)+import Distribution.Simple+    ( defaultMainWithHooks+    , simpleUserHooks+    , UserHooks(..)+    )+import System.FilePath+    ( (</>)+    , equalFilePath+    , isRelative+    , makeRelative+    , takeExtension+    )+import System.Directory (createDirectoryIfMissing, findExecutable)+import System.Process (callProcess)++-- | This behaves the same as 'Distribution.Simple.defaultMain', but+-- auto-generates Haskell files from the .proto files listed in+-- the @.cabal@ file under @extra-source-files@ which are located under the+-- given root directory.+--+-- Writes the generated files to the autogen directory (@dist\/build\/autogen@+-- for Cabal, and @.stack-work\/dist\/...\/build\/autogen@ for stack).+--+-- Throws an exception if the @proto-lens-protoc@ executable is not on the PATH.+defaultMainGeneratingProtos+    :: FilePath -- ^ The root directory under which .proto files can be found.+    -> IO ()+defaultMainGeneratingProtos root+    = defaultMainWithHooks $ generatingProtos root simpleUserHooks++-- | Augment the given 'UserHooks' to auto-generate Haskell files from the+-- .proto files listed in the @.cabal@ file under @extra-source-files@ which+-- are located under the given root directory.+--+-- Writes the generated files to the autogen directory (@dist\/build\/autogen@+-- for Cabal, and @.stack-work\/dist\/...\/build\/autogen@ for stack).+--+-- Throws an exception if the @proto-lens-protoc@ executable is not on the PATH.+generatingProtos+    :: FilePath -- ^ The root directory under which .proto files can be found.+    -> UserHooks -> UserHooks+generatingProtos root hooks = hooks+    { buildHook = \p l h f -> generateSources p l >> buildHook hooks p l h f+    , haddockHook = \p l h f -> generateSources p l >> haddockHook hooks p l h f+    -- TODO: add a hook for sdist.+    }+  where+    generateSources p l = do+        -- Replicate Cabal's own logic for parsing file globs.+        files <- concat <$> mapM matchFileGlob (extraSrcFiles p)+        generateProtos root (autogenModulesDir l)+            $ filter (isSubdirectoryOf root)+            $ filter (\f -> takeExtension f == ".proto")+                files++-- | Returns whether the @root@ is a parent folder of @f@.+isSubdirectoryOf :: FilePath -> FilePath -> Bool+isSubdirectoryOf root f+    = isRelative f+      -- Note: `makeRelative root f` returns `f` when f doesn't live under the+      -- root.+      && equalFilePath f (root </> makeRelative root f)++-- | Run the proto compiler to generate Haskell files from the given .proto files.+--+-- Writes the generated files to the autogen directory (@dist\/build\/autogen@+-- for Cabal, and @.stack-work\/dist\/...\/build\/autogen@ for stack).+--+-- Throws an exception if the @proto-lens-protoc@ executable is not on the PATH.+generateProtos+    :: FilePath -- ^ The root directory under which .proto files can be found.+    -> FilePath -- ^ The output directory for the generated Haskell files.+    -> [FilePath] -- ^ The .proto files to process.+    -> IO ()+generateProtos root output files = do+    maybeProtoLensProtoc <- findExecutable "proto-lens-protoc"+    case maybeProtoLensProtoc of+        Nothing -> error "Couldn't find executable proto-lens-protoc."+        Just protoLensProtoc -> do+            createDirectoryIfMissing True output+            callProcess "protoc" $+                [ "--plugin=protoc-gen-haskell=" ++ protoLensProtoc+                , "--haskell_out=" ++ output+                , "--proto_path=" ++ root+                ]+                ++ files
+ src/Definitions.hs view
@@ -0,0 +1,223 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++-- | This module takes care of collecting all the definitions in a .proto file+-- and assigning Haskell names to all of the defined things (messages, enums+-- and field names).+{-# LANGUAGE DeriveFunctor, OverloadedStrings #-}+module Definitions+    ( Env+    , Definition(..)+    , MessageInfo(..)+    , FieldInfo(..)+    , EnumInfo(..)+    , qualifyEnv+    , unqualifyEnv+    , collectDefinitions+    , definedFieldType+    ) where++import Data.Char (toUpper)+import qualified Data.Map as Map+import Data.Maybe (fromMaybe)+import Data.Monoid+import qualified Data.Set as Set+import Data.Text (Text, cons, splitOn, toLower, uncons, unpack)+import qualified Data.Text as T+import Language.Haskell.Exts.Syntax (Name(..), QName(..), ModuleName(..))+import Lens.Family2 ((^.))+import Bootstrap.Proto.Google.Protobuf.Descriptor+    ( DescriptorProto+    , EnumDescriptorProto+    , FieldDescriptorProto+    , FileDescriptorProto+    , enumType+    , field+    , messageType+    , name+    , nestedType+    , package+    , typeName+    , value+    )++-- | 'Env' contains a mapping of proto names (as specified in the .proto file)+-- to Haskell names.  The keys are fully-qualified names, for example,+-- ".package.Message.Submessage".  (The protocol_compiler tool emits all+-- message field types in this form, even if they refer to local definitions.)+--+-- The type 'n' can be either a 'Name' (when talking about definitions within+-- the current file) or a (qualified) 'QName' (when talking about definitions+-- either from this or another file).+type Env n = Map.Map Text (Definition n)++data Definition n = Message (MessageInfo n) | Enum (EnumInfo n)+    deriving Functor++-- | All the information needed to define or use a proto message type.+data MessageInfo n = MessageInfo+    { messageName :: n  -- ^ Haskell type name+    , messageDescriptor :: DescriptorProto+    , messageFields :: [FieldInfo]+      -- ^ The Haskell names for each field.+      -- This list corresponds 1-1 with "field" in messageDescriptor.+    } deriving Functor++-- | Information about a single field of a proto message.+data FieldInfo = FieldInfo+    { overloadedField :: String+      -- ^ The Haskell overloaded name of this field; may be shared between two+      -- different message data types.+    , recordFieldName :: Name+      -- ^ The Haskell name of this internal record field.  Unique within each+      -- module.+    , fieldDescriptor :: FieldDescriptorProto+    }++-- | All the information needed to define or use a proto enum type.+data EnumInfo n = EnumInfo+    { enumName :: n+    , enumDescriptor :: EnumDescriptorProto+    , enumValueNames :: [n]+      -- ^ The Haskell name of each enum value.+      -- This corresponds 1-1 with "value" in EnumDescriptorProto.+    } deriving Functor++mapEnv :: (n -> n') -> Env n -> Env n'+mapEnv f = fmap $ fmap f++-- Lift a set of local definitions into references to a specific module.+qualifyEnv :: ModuleName -> Env Name -> Env QName+qualifyEnv m = mapEnv (Qual m)++-- Lift a set of local definitions into references to the current module.+unqualifyEnv :: Env Name -> Env QName+unqualifyEnv = mapEnv UnQual++-- | Look up the type definition for a given field.+definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName+definedFieldType fd env = fromMaybe err $ Map.lookup (fd ^. typeName) env+  where+    err = error $ "definedFieldType: Field type " ++ unpack (fd ^. typeName)+                  ++ " not found in environment."++-- | Collect all the definitions in the given file (including definitions+-- nested in other messages), and assign Haskell names to them.+collectDefinitions :: FileDescriptorProto -> Env Name+collectDefinitions fd = let+    protoPrefix = "." <> (fd ^. package) <> "."+    hsPrefix = ""+    in Map.fromList $ messageAndEnumDefs protoPrefix hsPrefix+                          (fd ^. messageType) (fd ^. enumType)++messageAndEnumDefs :: Text -> String -> [DescriptorProto]+                   -> [EnumDescriptorProto] -> [(Text, Definition Name)]+messageAndEnumDefs protoPrefix hsPrefix messages enums+    = concatMap (messageDefs protoPrefix hsPrefix) messages+        ++ map (enumDef protoPrefix hsPrefix) enums++-- | Generate the definitions for a message and its nested types (if any).+messageDefs :: Text -> String -> DescriptorProto+            -> [(Text, Definition Name)]+messageDefs protoPrefix hsPrefix d+    = thisDef : subDefs+  where+    protoName = d ^. name+    hsName = unpack $ capitalize $ d ^. name+    thisDef = (protoPrefix <> protoName+              , Message MessageInfo+                  { messageName = Ident $ hsPrefix ++ hsName+                  , messageDescriptor = d+                  , messageFields =+                      [ FieldInfo+                          { overloadedField = n+                          , recordFieldName = Ident $ "_" ++ hsPrefix' ++ n+                          , fieldDescriptor = f+                          }+                      | f <- d ^. field+                      , let n = fieldName (f ^. name)+                      ]+                  })+    subDefs = messageAndEnumDefs protoPrefix' hsPrefix'+                  (d ^. nestedType) (d ^. enumType)+    protoPrefix' = protoPrefix <> protoName <> "."+    hsPrefix' = hsPrefix ++ hsName ++ "'"++-- | Get the name in Haskell of a proto field, taking care of camel casing and+-- clashes with language keywords.+fieldName :: Text -> String+fieldName = unpack . disambiguate . camelCase+  where+    disambiguate s+        -- TODO: use a more comprehensive blacklist of Haskell keywords.+        | s `Set.member` reservedKeywords = s <> "'"+        | otherwise = s+    camelCase s+        -- Preserve any initial underlines (e.g., "_foo_bar" -> "_fooBar").+        | (underlines, rest) <- T.span (== '_') s+            = case splitOn "_" rest of+                -- splitOn always returns a list with at least one element.+                [] -> error $ "camelCase: splitOn returned empty list: "+                                ++ show rest+                [""] -> error "camelCase: name consists only of underscores"+                s':ss -> T.concat $ underlines : toLower s' : map capitalize ss++-- | A list of reserved keywords that aren't valid as variable names.+reservedKeywords :: Set.Set Text+reservedKeywords = Set.fromList $+    -- Haskell2010 keywords:+    -- https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-180002.4+    -- We don't include keywords that are allowed to be variable names,+    -- in particular: "as", "forall", and "hiding".+    [ "case"+    , "class"+    , "data"+    , "default"+    , "deriving"+    , "do"+    , "else"+    , "foreign"+    , "if"+    , "import"+    , "in"+    , "infix"+    , "infixl"+    , "infixr"+    , "instance"+    , "let"+    , "module"+    , "newtype"+    , "of"+    , "then"+    , "type"+    , "where"+    ]+    ++  -- Nonstandard extensions+    [ "mdo"   -- RecursiveDo+    , "rec"   -- Arrows, RecursiveDo+    , "proc"  -- Arrows+    ]++-- | Generate the definition for an enum type.+enumDef :: Text -> String -> EnumDescriptorProto+          -> (Text, Definition Name)+enumDef protoPrefix hsPrefix d = let+    mkText n = protoPrefix <> n+    mkHsName n = Ident $ hsPrefix ++ unpack n+    in (mkText (d ^. name)+       , Enum EnumInfo+            { enumName = mkHsName (d ^. name)+            , enumDescriptor = d+            , enumValueNames = fmap (mkHsName . (^. name)) (d ^. value)+            })++-- Haskell types must start with an uppercase letter, so we capitalize message+-- and enum names.+-- Name collisions will show up as build errors in the generated haskell file.+capitalize :: Text -> Text+capitalize s+    | Just (c, s') <- uncons s = cons (toUpper c) s'+    | otherwise = s
+ src/Generate.hs view
@@ -0,0 +1,648 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++-- | This module builds the actual, generated Haskell file+-- for a given input .proto file.+{-# LANGUAGE OverloadedStrings #-}+module Generate(+    generateModule,+    fileSyntaxType,+    ) where+++import Control.Applicative ((<$>))+import Control.Arrow (second)+import qualified Data.Foldable as F+import qualified Data.List as List+import qualified Data.Map as Map+import Data.Maybe (isNothing)+import Data.Ord (comparing)+import qualified Data.Set as Set+import Data.String (fromString)+import Data.Text (unpack)+import qualified Data.Text as T+import Data.Tuple (swap)+import Language.Haskell.Exts.Syntax as Syntax+import Language.Haskell.Exts.SrcLoc (noLoc)+import Lens.Family2 ((^.))+import Bootstrap.Proto.Google.Protobuf.Descriptor+    ( FieldDescriptorProto+    , FieldDescriptorProto'Label(..)+    , FieldDescriptorProto'Type(..)+    , FileDescriptorProto+    , defaultValue+    , label+    , mapEntry+    , maybe'oneofIndex+    , name+    , number+    , options+    , packed+    , syntax+    , type'+    , typeName+    , value+    )++import Combinators+import Definitions++data SyntaxType = Proto2 | Proto3+    deriving Eq++fileSyntaxType :: FileDescriptorProto -> SyntaxType+fileSyntaxType f = case f ^. syntax of+    "proto2" -> Proto2+    "proto3" -> Proto3+    "" -> Proto2  -- The proto compiler doesn't set syntax for proto2 files.+    s -> error $ "Unknown syntax type " ++ show s++-- | Generate a Haskell module for the given input file(s).+-- input contains all defined names, incl. those in this module+generateModule :: ModuleName+               -> [ModuleName]  -- ^ The imported modules+               -> SyntaxType+               -> Env Name      -- ^ Definitions in this file+               -> Env QName     -- ^ Definitions in the imported modules+               -> Module+generateModule modName imports syntaxType definitions importedEnv+    = Module noLoc modName+          [ LanguagePragma noLoc $ map Ident+              ["ScopedTypeVariables", "DataKinds", "TypeFamilies",+               "MultiParamTypeClasses", "FlexibleContexts", "FlexibleInstances"]+              -- Allow unused imports in case we don't import anything from+              -- Data.Text, Data.Int, etc.+          , OptionsPragma noLoc (Just GHC) "-fno-warn-unused-imports"+          ]+          Nothing  -- no warning text+          Nothing  -- no explicit exports; we export everything.+                   -- TODO: Also export public imports, taking care not to+                   -- cause a name conflict between field accessors.+          (map importDecl+              -- Note: we import Prelude explicitly to make it qualified.+              $ [ "Prelude", "Data.ProtoLens", "Data.ProtoLens.Message.Enum"+                , "Lens.Family2", "Lens.Family2.Unchecked", "Data.Default.Class"+                , "Data.Text", "Data.Int"+                , "Data.Word", "Data.Map" , "Data.ByteString"+                ]+                ++ imports)+          (concatMap generateDecls (Map.elems definitions)+           ++ concatMap generateFieldDecls allFieldNames)+  where+    env = Map.union (unqualifyEnv definitions) importedEnv+    generateDecls (Message m) = generateMessageDecls syntaxType env m+    generateDecls (Enum e) = generateEnumDecls e+    allFieldNames = F.toList $ Set.fromList+        [ fieldSymbol i+        | Message m <- Map.elems definitions+        , f <- messageFields m+        , i <- fieldInstances (lensInfo syntaxType env f)+        ]++importDecl :: ModuleName -> ImportDecl+importDecl m = ImportDecl+    { importLoc = noLoc+    , importModule = m+    -- Import qualified to avoid clashes with names defined in this module.+    , importQualified = True+    , importSrc = False+    , importSafe = False+    , importPkg = Nothing+    , importAs = Nothing+    , importSpecs = Nothing+    }++generateMessageDecls :: SyntaxType -> Env QName -> MessageInfo Name -> [Decl]+generateMessageDecls syntaxType env info =+    -- data Bar = Bar {+    --    foo :: Baz+    -- }+    [ DataDecl noLoc DataType [] dataName []+        [QualConDecl noLoc [] [] $ RecDecl dataName+                  [([recordFieldName f],+                        internalType (lensInfo syntaxType env f))+                  | f <- fields+                  ]+        ]+        [("Prelude.Show", []), ("Prelude.Eq", [])]+    ]+    +++    -- type instance Field.Field "foo" Bar = Baz+    -- instance Field.HasField "foo" Bar where+    --   field _ = ...+    -- Note: for optional fields, this generates an instance both for "foo" and+    -- for "maybe'foo" (see lensInfo below).+    concat+        [ [ TypeInsDecl noLoc+              ("Data.ProtoLens.Field" @@ sym @@ dataType)+              (fieldTypeInstance i)+          , InstDecl noLoc Nothing [] [] "Data.ProtoLens.HasField"+              [sym, dataType, dataType]+              [InsDecl $ FunBind [match "field" [PWildCard] $ fieldAccessor i]]+          ]+        | f <- fields+        , i <- fieldInstances (lensInfo syntaxType env f)+        , let sym = TyPromoted $ PromotedString $ fieldSymbol i+        ]+    +++    -- instance Data.Default.Class.Default Bar where+    [ InstDecl noLoc Nothing [] [] "Data.Default.Class.Default" [dataType]+        -- def = Bar { _Bar_foo = 0 }+        [ InsDecl $ FunBind+            [ match "def" []+                $ RecConstr (UnQual dataName)+                      [ FieldUpdate (UnQual $ recordFieldName f)+                            (hsFieldDefault syntaxType env (fieldDescriptor f))+                      | f <- fields+                      ]+            ]+        ]+    -- instance Message.Message Bar where+    , InstDecl noLoc Nothing [] [] "Data.ProtoLens.Message" [dataType]+        [ InsDecl $ FunBind+            [ match "descriptor" [] $ descriptorExpr syntaxType env info]+        ]+    ]+  where+    dataType = TyCon $ UnQual dataName+    MessageInfo { messageName = dataName, messageFields = fields} = info++generateEnumDecls :: EnumInfo Name -> [Decl]+generateEnumDecls info =+    [ DataDecl noLoc DataType [] dataName []+        [QualConDecl noLoc [] [] $ ConDecl n [] | (n, _) <- values]+        [(c, []) | c <- ["Prelude.Show", "Prelude.Eq"]]+    -- instance Data.Default.Class.Default Foo where+    --   def = FirstEnumValue+    , InstDecl noLoc Nothing [] [] "Data.Default.Class.Default" [dataType]+        [ InsDecl $ FunBind [match "def" [] defaultCon]+        ]+    -- instance Data.ProtoLens.FieldDefault Foo where+    --   fieldDefault = FirstEnumValue+    , InstDecl noLoc Nothing [] [] "Data.ProtoLens.FieldDefault" [dataType]+        [ InsDecl $ FunBind [match "fieldDefault" [] defaultCon]+        ]+    -- instance MessageEnum Foo where+    --    maybeToEnum 1 = Just Foo1+    --    maybeToEnum 2 = Just Foo2+    --    ...+    --    maybeToEnum _ = Nothing+    --    showEnum Foo1 = "Foo1"+    --    showEnum Foo2 = "Foo2"+    --    ...+    --    readEnum "Foo1" = Just Foo1+    --    readEnum "Foo2" = Just Foo2+    --    ...+    --    readEnum _ = Nothing+    , InstDecl noLoc Nothing [] [] "Data.ProtoLens.MessageEnum" [dataType]+        [ InsDecl $ FunBind $+            [ match "maybeToEnum" [pLitInt k] $ "Prelude.Just" @@ Con (UnQual n)+            | (n, k) <- values+            ]+            +++            [ match "maybeToEnum" [PWildCard] "Prelude.Nothing"+            ]+            +++            [ match "showEnum" [PVar n] $ Lit $ Syntax.String $ T.unpack ev+            | (n, ev) <- names+            ]+            +++            [ match "readEnum"+                [PLit Signless . Syntax.String $ T.unpack ev]+                $ "Prelude.Just" @@ Con (UnQual n)+            | (n, ev) <- names+            ]+            +++            [ match "readEnum" [PWildCard] "Prelude.Nothing"+            ]+        ]+    -- instance Enum Foo where+    --    toEnum k = maybe (error ("Foo.toEnum: unknown argument for enum Foo: "+    --                                ++ show k))+    --                  id (maybeToEnum k)+    --    fromEnum Foo1 = 1+    --    fromEnum Foo2 = 2+    --    ..+    --    succ FooN = error "Foo.succ: bad argument FooN."+    --    succ Foo1 = Foo2+    --    succ Foo2 = Foo3+    --    ..+    --    pred Foo1 = error "Foo.succ: bad argument Foo1."+    --    pred Foo2 = Foo1+    --    pred Foo3 = Foo2+    --    ..+    --    enumFrom = messageEnumFrom+    --    enumFromTo = messageEnumFromTo+    --    enumFromThen = messageEnumFromThen+    --    enumFromThenTo = messageEnumFromThenTo+    , InstDecl noLoc Nothing [] [] "Prelude.Enum" [dataType]+        [ InsDecl $ FunBind+            [ match "toEnum" ["k__"]+                  $ "Prelude.maybe" @@ errorMessageExpr @@ "Prelude.id"+                        @@ ("Data.ProtoLens.maybeToEnum" @@ "k__")+            ]+        , InsDecl $ FunBind+            [ match "fromEnum" [PApp (UnQual c) []] $ litInt k+            | (c, k) <- values+            ]+        , succDecl "succ" maxBoundName succPairs+        , succDecl "pred" minBoundName $ map swap succPairs+        , alias "enumFrom" "Data.ProtoLens.Message.Enum.messageEnumFrom"+        , alias "enumFromTo" "Data.ProtoLens.Message.Enum.messageEnumFromTo"+        , alias "enumFromThen" "Data.ProtoLens.Message.Enum.messageEnumFromThen"+        , alias "enumFromThenTo"+            "Data.ProtoLens.Message.Enum.messageEnumFromThenTo"+        ]+    -- instance Bounded Foo where+    --    minBound = Foo1+    --    maxBound = FooN+    , InstDecl noLoc Nothing [] [] "Prelude.Bounded" [dataType]+        [ InsDecl $ FunBind+            [ match "minBound" [] $ Con $ UnQual minBoundName+            , match "maxBound" [] $ Con $ UnQual maxBoundName+            ]+        ]+    ]+  where+    dataType = TyCon $ UnQual dataName+    EnumInfo+        { enumName = dataName+        , enumValueNames = valueNames+        , enumDescriptor = ed+        } = info+    namesAndValues = zip valueNames (ed ^. value)+    names = map (second (^. name)) namesAndValues+    values = List.sortBy (comparing snd) $+        map (second (fromIntegral . (^. number))) namesAndValues+    minBoundName = fst $ head values+    maxBoundName = fst $ last values++    succPairs = zip ctorNames $ tail ctorNames+      where ctorNames = map fst values+    succDecl funName boundName thePairs = InsDecl $ FunBind $+        match funName [PApp (UnQual boundName) []] (+            "Prelude.error" @@ Lit (Syntax.String $ concat+                [ show dataName, ".", show funName, ": bad argument "+                , show boundName, ". This value would be out of bounds."+                ]))+        :+        [ match funName [PApp (UnQual from) []] $ Con $ UnQual to+        | (from, to) <- thePairs+        ]+    alias funName implName = InsDecl $ FunBind [match funName [] implName]++    defaultCon = Con $ UnQual $ fst $ head names+    errorMessageExpr = "Prelude.error"+                          @@ ("Prelude.++" @@ Lit (Syntax.String errorMessage)+                              @@ ("Prelude.show" @@ "k__"))+    errorMessage = "toEnum: unknown value for enum " ++ unpack (ed ^. name)+                      ++ ": "++generateFieldDecls :: String -> [Decl]+generateFieldDecls fStr =+    -- foo :: forall msg msg' . Field.HasField "foo" msg msg'+    --        => Lens.Lens msg msg' (Field.Field "foo" msg)+    --                              (Field.Field "foo" msg')+    -- foo = Field.field (Field.ProxySym :: Field.Proxy "foo")+    [ TypeSig noLoc [f]+          $ TyForall (Just ["msg", "msg'"])+                  [ClassA "Data.ProtoLens.HasField" [fSym, "msg", "msg'"]]+                  $ "Lens.Family2.Lens" @@ "msg" @@ "msg'"+                    @@ ("Data.ProtoLens.Field" @@ fSym @@ "msg")+                    @@ ("Data.ProtoLens.Field" @@ fSym @@ "msg'")+    , FunBind [match f []+                  $ "Data.ProtoLens.field"+                      @@ ExpTypeSig noLoc "Data.ProtoLens.ProxySym"+                          ("Data.ProtoLens.ProxySym" @@ fSym)+              ]+    ]+  where+    f = Ident fStr+    fSym = TyPromoted $ PromotedString fStr++------------------------------------------++-- | The Haskell types and lenses for an individual field of a message.+-- This is used to generate both the data record Decl and the instances of+-- HasField.+data LensInfo = LensInfo+    { internalType :: Type  -- ^ Internal type in the record+    , fieldInstances :: [FieldInstanceInfo]  -- ^ All instances of Field/HasField+    }++data FieldInstanceInfo = FieldInstanceInfo+    { fieldSymbol :: String      -- ^ The name of the Symbol corresponding to+                                 --   this field.+    , fieldTypeInstance :: Type  -- ^ The type instance for Field, i.e.,+                                 --     type instance Field "foo" Bar = ...+    , fieldAccessor :: Exp       -- ^ The value of the "field" lens for this+                                 --   field, i.e.,+                                 --     field _ = ...+    }++-- | Compile information about the record field type and type/class instances+-- for this particular field.+lensInfo :: SyntaxType -> Env QName -> FieldInfo -> LensInfo+lensInfo syntaxType env f = case fd ^. label of+    -- data Foo = Foo { _Foo_bar :: Bar }+    -- type instance Field "bar" Foo = Bar+    FieldDescriptorProto'LABEL_REQUIRED -> LensInfo baseType+                  [FieldInstanceInfo+                      { fieldSymbol = baseName+                      , fieldTypeInstance = baseType+                      , fieldAccessor = rawAccessor+                      }]+    FieldDescriptorProto'LABEL_OPTIONAL+        | isDefaultingOptional syntaxType fd+              -> LensInfo baseType+                    [FieldInstanceInfo+                      { fieldSymbol = baseName+                      , fieldTypeInstance = baseType+                      , fieldAccessor = rawAccessor+                      }]+    FieldDescriptorProto'LABEL_REPEATED+        -- data Foo = Foo { _Foo_bar :: Map Bar Baz }+        -- type instance Field "foo" Foo = Map Bar Baz+        | Just (k,v) <- getMapFields env fd -> let+            mapType = "Data.Map.Map" @@ hsFieldType env (fieldDescriptor k)+                                     @@ hsFieldType env (fieldDescriptor v)+            in LensInfo mapType+                  [FieldInstanceInfo+                       { fieldSymbol = baseName+                       , fieldTypeInstance = mapType+                       , fieldAccessor = rawAccessor+                       }]+        -- data Foo = Foo { _Foo_bar :: [Bar] }+        -- type instance Field "bar" Foo = [Bar]+        | otherwise -> LensInfo listType+                  [FieldInstanceInfo+                      { fieldSymbol = baseName+                      , fieldTypeInstance = listType+                      , fieldAccessor = rawAccessor+                      }]+    -- data Foo = Foo { _Foo_bar :: Maybe Bar }+    -- type instance Field "bar" Foo = Bar+    -- type instance Field "maybe'bar" Foo = Maybe Bar+    FieldDescriptorProto'LABEL_OPTIONAL -> LensInfo maybeType+                  [FieldInstanceInfo+                      { fieldSymbol = baseName+                      , fieldTypeInstance = baseType+                      , fieldAccessor = maybeAccessor+                      }+                  , FieldInstanceInfo+                      { fieldSymbol = maybeName+                      , fieldTypeInstance = "Prelude.Maybe" @@ baseType+                      , fieldAccessor = rawAccessor+                      }+                  ]+  where+    baseName = overloadedField f+    fd = fieldDescriptor f+    baseType = hsFieldType env fd+    listType = TyList baseType+    maybeType = "Prelude.Maybe" @@ baseType+    maybeName = "maybe'" ++ baseName+    maybeAccessor = "Prelude.." @@ fromString maybeName+                        @@ ("Data.ProtoLens.maybeLens"+                                @@ hsFieldValueDefault env fd)+    rawAccessor = rawFieldAccessor $ UnQual $ recordFieldName f++-- Get the key/value types of this type, if it is really a map.+getMapFields :: Env QName -> FieldDescriptorProto+             -> Maybe (FieldInfo, FieldInfo)+getMapFields env f+    | f ^. type' == FieldDescriptorProto'TYPE_MESSAGE+    , Message m@MessageInfo { messageDescriptor = d } <- definedFieldType f env+    , d ^. options.mapEntry+    , [f1, f2] <- messageFields m = Just (f1, f2)+    | otherwise = Nothing++hsFieldType :: Env QName -> FieldDescriptorProto -> Type+hsFieldType env fd = case fd ^. type' of+    FieldDescriptorProto'TYPE_DOUBLE -> "Prelude.Double"+    FieldDescriptorProto'TYPE_FLOAT -> "Prelude.Float"+    FieldDescriptorProto'TYPE_INT64 -> "Data.Int.Int64"+    FieldDescriptorProto'TYPE_UINT64 -> "Data.Word.Word64"+    FieldDescriptorProto'TYPE_INT32 -> "Data.Int.Int32"+    FieldDescriptorProto'TYPE_FIXED64 -> "Data.Word.Word64"+    FieldDescriptorProto'TYPE_FIXED32 -> "Data.Word.Word32"+    FieldDescriptorProto'TYPE_BOOL -> "Prelude.Bool"+    FieldDescriptorProto'TYPE_STRING -> "Data.Text.Text"+    FieldDescriptorProto'TYPE_GROUP+        | Message m <- definedFieldType fd env -> TyCon $ messageName m+        | otherwise -> error $ "expected TYPE_GROUP for type name"+                              ++ unpack (fd ^. typeName)+    FieldDescriptorProto'TYPE_MESSAGE+        | Message m <- definedFieldType fd env -> TyCon $ messageName m+        | otherwise -> error $ "expected TYPE_MESSAGE for type name"+                              ++ unpack (fd ^. typeName)+    FieldDescriptorProto'TYPE_BYTES -> "Data.ByteString.ByteString"+    FieldDescriptorProto'TYPE_UINT32 -> "Data.Word.Word32"+    FieldDescriptorProto'TYPE_ENUM+        | Enum e <- definedFieldType fd env -> TyCon $ enumName e+        | otherwise -> error $ "expected TYPE_ENUM for type name"+                              ++ unpack (fd ^. typeName)+    FieldDescriptorProto'TYPE_SFIXED32 -> "Data.Int.Int32"+    FieldDescriptorProto'TYPE_SFIXED64 -> "Data.Int.Int64"+    FieldDescriptorProto'TYPE_SINT32 -> "Data.Int.Int32"+    FieldDescriptorProto'TYPE_SINT64 -> "Data.Int.Int64"++hsFieldDefault :: SyntaxType -> Env QName -> FieldDescriptorProto -> Exp+hsFieldDefault syntaxType env fd+    = case fd ^. label of+          FieldDescriptorProto'LABEL_OPTIONAL+              | isDefaultingOptional syntaxType fd -> hsFieldValueDefault env fd+              | otherwise -> "Prelude.Nothing"+          FieldDescriptorProto'LABEL_REPEATED+              | Just _ <- getMapFields env fd -> "Data.Map.empty"+              | otherwise -> List []+          -- TODO: More sensible initialization of required fields.+          FieldDescriptorProto'LABEL_REQUIRED -> hsFieldValueDefault env fd++hsFieldValueDefault :: Env QName -> FieldDescriptorProto -> Exp+hsFieldValueDefault env fd = case fd ^. type' of+    FieldDescriptorProto'TYPE_MESSAGE -> "Data.Default.Class.def"+    FieldDescriptorProto'TYPE_GROUP -> "Data.Default.Class.def"+    FieldDescriptorProto'TYPE_ENUM+        | T.null def -> "Data.Default.Class.def"+        | Enum e <- definedFieldType fd env+        , Just v <- List.lookup def [ (vd ^. name, n)+                                    | (vd, n) <- zip (enumDescriptor e ^. value)+                                                     (enumValueNames e)+                                    ]+            -> Con v+        | otherwise -> errorMessage "enum"+    -- The rest of the cases are for scalar fields that have a fieldDefault+    -- instance.+    _ | T.null def -> "Data.ProtoLens.fieldDefault"+    FieldDescriptorProto'TYPE_BOOL+        | def == "true" -> "Prelude.True"+        | def == "false" -> "Prelude.False"+        | otherwise -> errorMessage "bool"+    FieldDescriptorProto'TYPE_STRING+        -> "Data.Text.pack" @@ Lit (String $ T.unpack def)+    FieldDescriptorProto'TYPE_BYTES+        -> "Data.ByteString.pack"+                @@ List ((mkByte . fromEnum) <$> T.unpack def)+      where mkByte c+              | c > 0 && c < 255 = litInt $ fromIntegral c+              | otherwise = errorMessage "bytes"+    FieldDescriptorProto'TYPE_FLOAT -> defaultFrac $ T.unpack def+    FieldDescriptorProto'TYPE_DOUBLE -> defaultFrac $ T.unpack def+    -- Otherwise, assume it's an integral field:+    _ -> defaultInt $ T.unpack def+  where+    def = fd ^. defaultValue+    errorMessage fieldType+        = error $ "Bad default value " ++ show (T.unpack def)+                    ++ " in default value for " ++ fieldType ++ " field "+                    ++ unpack (fd ^. name)+    -- float/double fields can use nan, inf and -inf as default values.+    -- The Prelude doesn't provide names for them, so we implement+    -- them as division by zero.+    defaultFrac "nan" = "Prelude./" @@ litFrac 0 @@ litFrac 0+    defaultFrac "inf" = "Prelude./" @@ litFrac 1 @@ litFrac 0+    defaultFrac "-inf" = "Prelude./" @@ litFrac (negate 1) @@ litFrac 0+    defaultFrac s = case reads s of+        [(x, "")] -> litFrac $ toRational (x :: Double)+        _ -> errorMessage "fractional"+    defaultInt s = case reads s of+        [(x, "")] -> litInt x+        _ -> errorMessage "integral"++-- | A lens to access an internal field.+--+--   lens _Foo_bar (\x__ y__ -> x__ { _Foo_bar = y__ })+rawFieldAccessor :: QName -> Exp+rawFieldAccessor f = "Lens.Family2.Unchecked.lens" @@ getter @@ setter+  where+    getter = Var f+    setter = Lambda noLoc ["x__", "y__"]+                    $ RecUpdate "x__" [FieldUpdate f "y__"]++descriptorExpr :: SyntaxType -> Env QName -> MessageInfo Name -> Exp+descriptorExpr syntaxType env m+    -- let foo__field_descriptor = ...+    --     ...+    -- in Message.MessageDescriptor+    --      (Data.Map.fromList [(Tag 1, foo__field_descriptor),...])+    --      (Data.Map.fromList [("foo", foo__field_descriptor),...])+    --+    -- (Note that the two maps have the same elements but different keys.  We+    -- use the "let" expression to share elements between the two maps.)+    = Let (BDecls $ map fieldDescriptorVarBind $ messageFields m)+        $ "Data.ProtoLens.MessageDescriptor"+          @@ ("Data.Map.fromList" @@ List fieldsByTag)+          @@ ("Data.Map.fromList" @@ List fieldsByTextFormatName)+  where+    fieldsByTag =+        [Tuple Boxed+              [ t, fieldDescriptorVar f ]+              | f <- messageFields m+              , let t = "Data.ProtoLens.Tag"+                          @@ litInt (fromIntegral+                                      $ fieldDescriptor f ^. number)+              ]+    fieldsByTextFormatName =+        [Tuple Boxed+              [ t, fieldDescriptorVar f ]+              | f <- messageFields m+              , let t = Lit $ Syntax.String $ T.unpack+                            $ textFormatFieldName env (fieldDescriptor f)+              ]+    fieldDescriptorVar = fromString . fieldDescriptorName+    fieldDescriptorName f+        = fromString $ overloadedField f ++ "__field_descriptor"+    fieldDescriptorVarBind f+        = FunBind+              [match (fromString $ fieldDescriptorName f) []+                  $ fieldDescriptorExpr syntaxType env f+              ]++-- | Get the name of the field when used in a text format proto. Groups are+-- special because their text format field name is the name of their type,+-- not the name of the field in the descriptor (e.g. "Foo", not "foo").+textFormatFieldName :: Env QName -> FieldDescriptorProto -> T.Text+textFormatFieldName env descr = case descr ^. type' of+    FieldDescriptorProto'TYPE_GROUP+        | Message msg <- definedFieldType descr env+              -> messageDescriptor msg ^. name+        | otherwise -> error $ "expected TYPE_GROUP for type name"+                           ++ T.unpack (descr ^. typeName)+    _ -> descr ^. name++fieldDescriptorExpr :: SyntaxType -> Env QName -> FieldInfo+                    -> Exp+fieldDescriptorExpr syntaxType env f+    = "Data.ProtoLens.FieldDescriptor"+        -- Record the original .proto name for text format+        @@ Lit (Syntax.String (T.unpack $ fd ^. name))+        -- Force the type signature since it can't be inferred for Map entry+        -- types.+        @@ ExpTypeSig noLoc (fieldTypeDescriptorExpr (fd ^. type'))+                      ("Data.ProtoLens.FieldTypeDescriptor"+                          @@ hsFieldType env fd)+        @@ fieldAccessorExpr syntaxType env f+  where+    fd = fieldDescriptor f++fieldAccessorExpr :: SyntaxType -> Env QName -> FieldInfo -> Exp+-- (PlainField Required foo), (OptionalField foo), etc...+fieldAccessorExpr syntaxType env f = accessorCon @@ Var (UnQual hsFieldName)+  where+    fd = fieldDescriptor f+    accessorCon = case fd ^. label of+          FieldDescriptorProto'LABEL_REQUIRED+              -> "Data.ProtoLens.PlainField" @@ "Data.ProtoLens.Required"+          FieldDescriptorProto'LABEL_OPTIONAL+              | isDefaultingOptional syntaxType fd+                  -> "Data.ProtoLens.PlainField" @@ "Data.ProtoLens.Optional"+              | otherwise -> "Data.ProtoLens.OptionalField"+          FieldDescriptorProto'LABEL_REPEATED+              | Just (k, v) <- getMapFields env fd+                  -> "Data.ProtoLens.MapField"+                         @@ fromString (overloadedField k)+                         @@ fromString (overloadedField v)+              | otherwise -> "Data.ProtoLens.RepeatedField"+                  @@ if fd ^. options.packed+                        then "Data.ProtoLens.Packed"+                        else "Data.ProtoLens.Unpacked"+    hsFieldName+        = Ident $ case fd ^. label of+              FieldDescriptorProto'LABEL_OPTIONAL+                  | not (isDefaultingOptional syntaxType fd)+                      -> "maybe'" ++ overloadedField f+              _ -> overloadedField f++isDefaultingOptional :: SyntaxType -> FieldDescriptorProto -> Bool+isDefaultingOptional syntaxType f+    = f ^. label == FieldDescriptorProto'LABEL_OPTIONAL+          && syntaxType == Proto3+          && f ^. type' /= FieldDescriptorProto'TYPE_MESSAGE+          -- For now, we treat oneof's like proto2 optional fields.+          && isNothing (f ^. maybe'oneofIndex)++fieldTypeDescriptorExpr :: FieldDescriptorProto'Type -> Exp+fieldTypeDescriptorExpr =+    (\n -> fromString $ "Data.ProtoLens." ++ n ++ "Field") . \t -> case t of+    FieldDescriptorProto'TYPE_DOUBLE -> "Double"+    FieldDescriptorProto'TYPE_FLOAT -> "Float"+    FieldDescriptorProto'TYPE_INT64 -> "Int64"+    FieldDescriptorProto'TYPE_UINT64 -> "UInt64"+    FieldDescriptorProto'TYPE_INT32 -> "Int32"+    FieldDescriptorProto'TYPE_FIXED64 -> "Fixed64"+    FieldDescriptorProto'TYPE_FIXED32 -> "Fixed32"+    FieldDescriptorProto'TYPE_BOOL -> "Bool"+    FieldDescriptorProto'TYPE_STRING -> "String"+    FieldDescriptorProto'TYPE_GROUP -> "Group"+    FieldDescriptorProto'TYPE_MESSAGE -> "Message"+    FieldDescriptorProto'TYPE_BYTES -> "Bytes"+    FieldDescriptorProto'TYPE_UINT32 -> "UInt32"+    FieldDescriptorProto'TYPE_ENUM -> "Enum"+    FieldDescriptorProto'TYPE_SFIXED32 -> "SFixed32"+    FieldDescriptorProto'TYPE_SFIXED64 -> "SFixed64"+    FieldDescriptorProto'TYPE_SINT32 -> "SInt32"+    FieldDescriptorProto'TYPE_SINT64 -> "SInt64"
+ src/protoc-gen-haskell.hs view
@@ -0,0 +1,142 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++{-# LANGUAGE OverloadedStrings #-}+module Main where++import qualified Data.ByteString as B+import Data.Char (toUpper)+import Data.List (foldl', intercalate)+import qualified Data.Map.Strict as Map+import Data.Map.Strict (Map, unions, (!))+import Data.Monoid ((<>))+import qualified Data.Set as Set+import qualified Data.Text as T+import Data.Text (Text, pack)+import Data.ProtoLens (decodeMessage, def, encodeMessage)+import Language.Haskell.Exts.Pretty (prettyPrint)+import Language.Haskell.Exts.Syntax (ModuleName(..))+import Lens.Family2+import Bootstrap.Proto.Google.Protobuf.Compiler.Plugin+    ( CodeGeneratorRequest+    , CodeGeneratorResponse+    , content+    , file+    , fileToGenerate+    , parameter+    , protoFile+    )+import Bootstrap.Proto.Google.Protobuf.Descriptor+    (FileDescriptorProto, name, dependency, publicDependency)+import System.Environment (getProgName)+import System.Exit (exitWith, ExitCode(..))+import System.IO as IO+import System.FilePath (dropExtension, replaceExtension, splitDirectories)+++import Definitions+import Generate++main = do+    contents <- B.getContents+    progName <- getProgName+    case decodeMessage contents of+        Left e -> IO.hPutStrLn stderr e >> exitWith (ExitFailure 1)+        Right x -> B.putStr $ encodeMessage $ makeResponse progName x++makeResponse :: String -> CodeGeneratorRequest -> CodeGeneratorResponse+makeResponse prog request = let+    outputFiles = generateFiles (request ^. parameter) header+                      (request ^. protoFile)+                      (request ^. fileToGenerate)+    header :: FileDescriptorProto -> Text+    header f = "{- This file was auto-generated from "+                <> (f ^. name)+                <> " by the " <> pack prog <> " program. -}\n"+    in def & file .~ [ def & name .~ outputName+                           & content .~ outputContent+                     | (outputName, outputContent) <- outputFiles+                     ]++-- | The filename of an input .proto file.+type ProtoFileName = Text++generateFiles :: Text -> (FileDescriptorProto -> Text) -> [FileDescriptorProto]+              -> [ProtoFileName] -> [(Text, Text)]+generateFiles modulePrefix header files toGenerate = let+  filesByName = Map.fromList [(f ^. name, f) | f <- files]+  moduleNames = fmap (moduleName modulePrefix) filesByName+  -- The definitions in each input proto file, indexed by filename.+  definitions = fmap collectDefinitions filesByName+  -- The exports from each .proto file (including any "public import"+  -- dependencies), as they appear to other modules that are importing them;+  -- i.e., qualified by module name.+  exports = transitiveExports files+  localExports = Map.intersectionWith qualifyEnv moduleNames definitions+  exportedEnvs = fmap (\es -> unions [localExports ! e | e <- es]) exports+  -- The contents of the generated Haskell file for a given .proto file.+  buildFile fileName = let+      f = filesByName ! fileName+      deps = f ^. dependency+      env = unions $ fmap (exportedEnvs !) deps+      imports = Set.toAscList $ Set.fromList+                  [ moduleNames ! exportName+                  | dep <- deps+                  , exportName <- exports ! dep+                  ]+      in generateModule (moduleNames ! fileName) imports (fileSyntaxType f)+              (definitions ! fileName) env+  in [ ( outputFilePath (moduleNames ! f)+       , header fd <> pack (prettyPrint $ buildFile f)+       )+     | f <- toGenerate+     , let fd = filesByName ! f+     ]++-- | Given a list of .proto files (topologically sorted), determine which+-- files' definitions are exported by which files.+--+-- Files only export their own definitions, along with the definitions exported+-- by any "import public" declarations.+transitiveExports :: [FileDescriptorProto] -> Map ProtoFileName [ProtoFileName]+-- Accumulate the transitive dependencies by folding over the files in+-- topological order.+transitiveExports = foldl' setExportsFromFile Map.empty+  where+    setExportsFromFile :: Map ProtoFileName [ProtoFileName]+                       -> FileDescriptorProto+                       -> Map ProtoFileName [ProtoFileName]+    setExportsFromFile prevExports fd+        = flip (Map.insert n) prevExports $+            n : concat [ prevExports ! ((fd ^. dependency) !! fromIntegral i)+                       -- Note that publicDependency is a list of indices into+                       -- the dependency list.+                       | i <- fd ^. publicDependency+                       ]+      where n = fd ^. name++outputFilePath :: ModuleName -> Text+outputFilePath (ModuleName n) = T.replace "." "/" (T.pack n) <> ".hs"++-- | Get the module name of a .proto file.+moduleName :: Text -> FileDescriptorProto -> ModuleName+moduleName modulePrefix fd = ModuleName $ fixModuleName rawModuleName+  where+    path = fd ^. name+    prefix+        | T.null modulePrefix = "Proto"+        | otherwise = modulePrefix+    fixModuleName "" = ""+    -- Characters allowed in Bazel filenames but not in module names:+    fixModuleName ('.':c:cs) = '.' : toUpper c : fixModuleName cs+    fixModuleName ('_':c:cs) = toUpper c : fixModuleName cs+    fixModuleName ('-':c:cs) = toUpper c : fixModuleName cs+    fixModuleName (c:cs) = c : fixModuleName cs+    rawModuleName = intercalate "." $ (T.unpack prefix :)+                        $ splitDirectories $ dropExtension+                        $ T.unpack path++