`SD7      !"#$%&'()*+,-./0123456 None&'1;<=>?ADEKLOQV789:;<=>None&'1;<=>?ADEKLOQV?@None&'1;<=>?ADEKLOQVoABCDEFABDEFCNone&'1;<=>?ADEKLOQVqGHIJKLGHIKLJNone&'1;<=>?ADEKLOQVsMNOPQMNOPQ None&'1;<=>?ADEKLOQVmRSTUVWXYZ[\]^_`abcdeRSTUVfghijklmWXYZ[\]^_` None"#$%&'1;<=>?ADEKLOQV nopqrs1 None&'1;<=>?ADEKLOQV t%Parsed Haskell name ending with FNameu%Parsed Haskell name ending with MNamev-Full Haskell field name: MNames separated by w, ending with a fieldx.Full Haskell module name: MNames separated by w, ending with a moduley%Fully qualified identifier: repeated w then identifier.zw7 separated identifier which may or may start with a dot{Contains one field name|Contains one module name}Contains one identifier name~jRight (True,_) means the input is a FIName. Right (False,_) means the input is a DIName (without leading w)jRight (True,_) means the input is a FIName. Right (False,_) means the input is a DIName (without leading w)7tuvxyz{|}~ tuvxyz{|} None&'1;<=>?ADEKLOQVparseType returns Nothing when the String is user-defined. This means it could be either a Message or an Enum or a syntax error. The Nothing return is fixed up in Text.ProtocolBuffers.ProtoCompile.Resolve.fqField\parseLabel recognizes optional, required, and repeated. All other strings result in Nothing None&'1;<=>?ADEKLOQV None&'1;<=>?ADEKLOQVZNone&'1;<=>?ADEKLOQVONtGiven a path, tries to find and parse a FileDescriptorProto corresponding to it; returns also a canonicalised path.An Entity is some concrete item in the namespace of a proto file. All Entity values have a leading-dot fully-qualified with the package "eName". The E'Message,Group,Service have EMap namespaces to inner Entity items.8The EMap type is a local namespace attached to an entityWThe E'Error values come from using unique to resolse name collisions when building EMap TopLevel corresponds to all items defined in a .proto file. This includes the FileOptions since this will be consulted when generating the Haskell module names, and the imported files are only known through their TopLevel data.By construction Env is 0 or more Local Entity namespaces followed by 1 or more Global TopLevel namespaces (self and imported files). Entities in first Global TopLevel namespace can refer to each other and to Entities in the list of directly imported TopLevel namespaces only.V mimics what I observe protoc --java_out do to convert the file name to a class name.This is a helper for resolveEnv9This is used for resolving some UninterpretedOption namesV is the query operation for the Env namespace. It recognizes names beginning with a w| as already being fully-qualified names. This is called from the different monads via resolveEnv, resolveMGE, and resolveMbThe returned (Right _::Entity) will never be an E'Error, which results in (Left _::ErrStr) instead> is used to lookup the type strings in service method records. is used by getType and BThis is a helper for resolveEnv and (Show SEnv) for error messages@ separates the Left errors and Right success in the obvious way.The y function is used with Data.Map.fromListWithKey to detect name collisions and record this as E'Error entries in the map."This constructs new E'Error values! conservatively checks its input. takes a .proto file's FileDescriptorProto and the TopLevel values of its directly imported file and constructs the TopLevel of the FileDescriptorProto in a Global Environment.This goes to some lengths to be a total function with good error messages. Errors in building the skeleton of the namespace are detected and reported instead of returning the new  environment. Collisions in the namespace are only detected when the offending name is looked up, and will return an E'Error entity with a message and list of colliding Entity items. The cross-linking of Entity fields may fail and this failure is stored in the corresponding Entity.1Also caught: name collisions in Enum definitions.The 'mdo'- usage has been replace by modified forms of < that will generate useful error values instead of calling  and halting hprotoc.Used from loadProto' looks through the current and import directories to find the target file on the system. It also converts the relative path to a standard form to use as the name of the FileDescriptorProto.[Given a list of paths to search, loads proto files by looking for them in the file system.       None&'1;<=>?ADEKLOQVS. makeLenses=whether to use lences (if True, an underscore prefix is used)5665 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOOPKQRSSTUK V V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k k l m n opqr s t u v w x y z{|} ~        x y z ~       j                        {{T$hprotoc-2.4.7-DATrAXzLIGm6eh3xiPfeB5(Text.ProtocolBuffers.ProtoCompile.Parser)Text.ProtocolBuffers.ProtoCompile.Resolve1Text.ProtocolBuffers.ProtoCompile.MakeReflections Paths_hprotocText.Google.Protobuf.Compiler2Text.Google.Protobuf.Compiler.CodeGeneratorRequest8Text.Google.Protobuf.Compiler.CodeGeneratorResponse.File3Text.Google.Protobuf.Compiler.CodeGeneratorResponse0Text.ProtocolBuffers.ProtoCompile.BreakRecursion%Text.ProtocolBuffers.ProtoCompile.Gen-Text.ProtocolBuffers.ProtoCompile.Identifiers+Text.ProtocolBuffers.ProtoCompile.Instances'Text.ProtocolBuffers.ProtoCompile.Lexer parseProto isValidPackedNameMapReMapCanonFP unCanonFPLocalFP unLocalFPTopLeveltop'Path top'Packagetop'FDP top'mValsEnvLocalGlobal PackageID NoPackageID _getPackageID_getNoPackageID getPackageIDgetTLS makeNameMaps loadProtoloadCodeGenRequest$fFunctorPackageID $fShowSEnv$fConsumeUNODescriptorProto$fConsumeUNOFileDescriptorProto $fConsumeUNOFieldDescriptorProto"$fConsumeUNOServiceDescriptorProto!$fConsumeUNOMethodDescriptorProto$$fConsumeUNOEnumValueDescriptorProto$fConsumeUNOEnumDescriptorProto$fShowPackageID $fReadLocalFP $fShowLocalFP $fEqLocalFP $fOrdLocalFP $fReadCanonFP $fShowCanonFP $fEqCanonFP $fOrdCanonFP $fShowNameMap $fShowEntity$fShowE'Entity$fShowTopLevel $fShowEnv serializeFDP makeProtoInfoversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName protoInfofileDescriptorProtoCodeGeneratorRequest unknown'fieldfile_to_generate parameter proto_fileFilenameinsertion_pointcontentCodeGeneratorResponseerrorfileResultrKindrIBootrIKeyPartNormalSourceKeyFile VertexKind TopProtoInfoSimpleTypeBoot KeyTypeBootSplitKeyTypeBootpKeypfKey displayResultgetKind makeResultLabelLVvMKey vNeedsKeysvKeysNeedsTypesvTypeNeedsTypes.haskell-src-exts-1.19.1-KOdNLzfiiggA2mEk0nSf1pLanguage.Haskell.Exts.Pretty prettyPrint oneofModule enumModule protoModuledescriptorModules$$PFNamePMNameFFNamebaseGHC.Base.FMNameFINameDINameFNameMNameIName checkDIString checkDIUtf8ManglemangleDottedpreDotsplitDIdotunconsffNamefmNamefiNamediNamefNamemNameiNamedotPMdotPFdotUtf8 dotStringunullpreUtf8 preString splitUtf8 splitStringtoString fromStringdifisplitFIfqDotsjoinDotsmanglePMmanglePFerrfixUpfixLowreserved parseType parseLabel showsLabel showsTypeLexed L_IntegerL_DoubleL_NameL_StringL_ErroralexScanTokens getLinePosAlexAcc AlexAccNone AlexAccSkip AlexAccPredAlexAccSkipPred AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA#AlexPosnAlexPnDescriptorReaderEntityEMapconvertFileToPackagetoGlobal resolveHereresolvePredEnvgetType expectMGE entityFieldwhereEnv partEitherunique makeNameMap makeTopLevelControl.Monad.FixmfixGHC.ErrfindFile ConsumeUNO consumeUNOSEnv my'Parentmy'EnvE'EntityE'OkE'Error E'MessageE'Group E'ServiceE'KeyE'FieldE'EnumE'MethodeNamevalidExtensionsmValseMsgfNumberfTypemValeValseMsgIneMsgOutmakeOneofInfo' toFieldInfo'