diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple 
+main = defaultMain
diff --git a/fixhs.cabal b/fixhs.cabal
new file mode 100644
--- /dev/null
+++ b/fixhs.cabal
@@ -0,0 +1,83 @@
+name:                fixhs
+version:             0.1
+description:         Financial Information eXchange (FIX) protocol (co)parser
+homepage:            http://github.com/urv/fixhs
+synopsis:            FIX (co)parser
+category:            Protocol, Text, Parsing
+license:             GPL
+license-file:        LICENSE
+author:              Arvin Moezzi
+maintainer:          Arvin Moezzi
+build-type:          Simple
+tested-with:         GHC == 7.0.3
+cabal-version:       >=1.8
+stability:           experimental
+
+flag developer
+  description: build in development mode
+  default: False
+
+flag with-fix40
+  description: add fix40 to the module
+  default: True
+
+flag with-fix41
+  description: add fix41 to the module
+  default: True
+
+flag with-fix42
+  description: add fix42 to the module
+  default: True
+
+flag with-fix43
+  description: add fix43 to the module. It takes a long time to compile!
+  default: False
+
+flag with-fix44
+  description: add fix44 to the module. It takes a long time to compile!
+  default: False
+
+library 
+  hs-source-dirs:    src/
+  build-depends:    
+                     base >= 3 && < 5, 
+                     containers, MissingH, bytestring, attoparsec, 
+                     attoparsec-enumerator, enumerator, old-time, network, 
+                     HaXml, deepseq, QuickCheck, parallel, text, dlist
+  other-modules:     
+                     Data.FIX.ParserCombinators
+  exposed-modules:   
+                     Data.LookupTable 
+                     Data.Coparser 
+                     Data.FIX.Arbitrary 
+                     Data.FIX.Common 
+                     Data.FIX.Coparser 
+                     Data.FIX.Parser 
+                     Data.FIX.Message 
+  ghc-options:       -Wall 
+  if flag(developer)
+    ghc-prof-options: -auto-all
+
+  if flag(with-fix40) 
+   exposed-modules: Data.FIX.Spec.FIX40 
+  if flag(with-fix41) 
+   exposed-modules: Data.FIX.Spec.FIX41 
+  if flag(with-fix42) 
+   exposed-modules: Data.FIX.Spec.FIX42 
+  if flag(with-fix43) 
+   exposed-modules: Data.FIX.Spec.FIX43 
+  if flag(with-fix44) 
+   exposed-modules: Data.FIX.Spec.FIX44 
+
+Executable fix-generator
+  hs-source-dirs:    src/
+  Main-is:           Utils/Generator.hs
+  Build-Depends:     
+                     base >= 3 && < 5, 
+                     HaXml, MissingH, old-time, dlist, attoparsec, 
+                     containers, QuickCheck, deepseq, text, bytestring
+
+source-repository head
+  type:     git
+  location: http://github.com/urv/fixhs
+
diff --git a/src/Data/Coparser.hs b/src/Data/Coparser.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Coparser.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE BangPatterns, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, TypeSynonymInstances #-}
+
+-- Module   : Data.Coparser
+-- License  : GPLv2
+
+module Data.Coparser 
+    ( Coparser (..)
+    , BuilderLike (..)
+    , length
+    , Data.Coparser.foldl'
+    , Data.Coparser.foldl
+    ) where
+
+import Prelude hiding ( length ) 
+import qualified Prelude as P ( length, foldl )
+import qualified Data.Foldable as P ( foldl' )
+import qualified Data.List as L ( concat )
+import Data.ByteString ( ByteString )
+import qualified Data.ByteString as B ( concat, append, length, foldl, foldl'  )
+import Data.Word ( Word8 )
+import qualified Data.ByteString.Char8 as C 
+    ( cons, snoc, pack, unpack, singleton )
+import Data.Text.Lazy.Builder ( Builder )
+import qualified Data.Text.Lazy as Builder ( unpack )
+import qualified Data.Text.Lazy.Builder as Builder 
+    ( fromString, singleton, toLazyText )
+import Data.Monoid ( mappend, mconcat )
+import Control.DeepSeq ( NFData (..) )
+import qualified Data.DList as DL
+import Data.Bits.Utils ( w82c )
+
+class Enum c => BuilderLike a c | a -> c where
+    pack :: String -> a
+    unpack :: a -> String
+    singleton :: Char -> a
+    append :: a -> a -> a
+    concat :: [a] -> a
+    cons :: Char -> a -> a
+    snoc :: a -> Char -> a
+    decimal :: Integral i => i -> a
+    realFloat :: RealFloat r => r -> a
+
+    decimal = pack . show
+    realFloat = pack . show
+    cons c t = singleton c `append` t
+    snoc t c = t `append` singleton c
+
+    length :: a -> Int
+    length = P.length . unpack
+
+    foldl' :: (b -> Char -> b) -> b -> a -> b
+    foldl' f x0 = P.foldl' f x0 . unpack
+
+    foldl :: (b -> Char -> b) -> b -> a -> b
+    foldl f x0 = P.foldl f x0 . unpack
+
+instance BuilderLike String Char where
+    pack = id
+    unpack = id
+    singleton c = [c]
+    append = (++)
+    cons = (:)
+    concat = L.concat
+    length = P.length
+    foldl' = P.foldl'
+    foldl = P.foldl
+
+instance BuilderLike ByteString Word8 where
+    pack = C.pack
+    unpack = C.unpack
+    singleton = C.singleton
+    append = B.append
+    cons = C.cons
+    snoc = C.snoc
+    concat = B.concat
+    length = B.length
+    foldl' f = let f' !x !w = {-# SCC "Urvli" #-} w82c w `seq` x `seq` f x (w82c w) in B.foldl' f'
+    foldl f = let  f' x =  f x . w82c in B.foldl f'
+
+instance BuilderLike (DL.DList Char) Char where
+    pack = DL.fromList
+    unpack = DL.toList
+    singleton = DL.singleton
+    append = DL.append
+    cons = DL.cons
+    snoc = DL.snoc
+    concat = DL.concat
+    
+instance BuilderLike Builder Char where
+    pack = Builder.fromString
+    unpack = Builder.unpack . Builder.toLazyText
+    singleton = Builder.singleton
+    append = mappend
+    concat = mconcat
+
+instance NFData Builder where
+    rnf = rnf . Builder.unpack . Builder.toLazyText
+
+instance NFData (DL.DList Char) where
+    rnf = rnf . unpack
+
+class Coparser a where
+    coparse :: BuilderLike t c => a -> t
diff --git a/src/Data/FIX/Arbitrary.hs b/src/Data/FIX/Arbitrary.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Arbitrary.hs
@@ -0,0 +1,108 @@
+module Data.FIX.Arbitrary 
+	( arbibtraryFIXValues
+	, arbibtraryFIXGroup
+	, arbitraryFIXMessage ) 
+	where
+
+import Data.FIX.Message ( 
+	FIXGroupElement(..), FIXTag(..), FIXValue(..), FIXValues, FIXTags
+      , FIXMessage(..), FIXSpec, FIXMessageSpec(..), FIXGroupSpec(..) )
+import System.Time ( CalendarTime (..) )
+import Data.ByteString ( ByteString )
+import qualified Data.ByteString.Char8 as C ( pack )
+import qualified Data.Char as C ( isAscii, isAlphaNum )
+import qualified Data.LookupTable as LT ( insert, toList, fromList, new )
+import Data.Functor ( (<$>) )
+import Control.Monad ( replicateM, liftM )
+import Test.QuickCheck ( Gen, arbitrary, Arbitrary )
+
+arbibtraryFIXValues :: FIXTags -> Gen FIXValues
+arbibtraryFIXValues tags = 
+    let tlist :: [FIXTag]
+        tlist = map snd $ LT.toList tags
+        arb :: FIXTag -> Gen (Int, FIXValue)
+        arb tag = fmap ((,) (tnum tag)) $ arbitraryValue tag 
+    in
+        liftM LT.fromList $ mapM arb tlist
+
+arbibtraryFIXGroup :: FIXGroupSpec -> Gen FIXValue
+arbibtraryFIXGroup spec = 
+    let ltag = gsLength spec in  
+        do t <- arbitraryValue ltag
+	   case t of
+		FIXInt l' -> let l = l' `mod` 4 in 
+		   do bodies <- replicateM l arbitraryGBody
+		      return $ FIXGroup l bodies
+		_         -> error $ "do not know " ++ show (tnum ltag)
+    where
+        arbitraryGBody = 
+           let stag = gsSeperator spec
+               btags = gsBody spec 
+           in do
+               s  <- arbitraryValue stag 
+	       vs <- arbibtraryFIXValues btags
+	       return (FIXGroupElement (tnum stag) s vs)
+
+arbitraryFIXMessage :: FIXSpec -> FIXMessageSpec -> Gen (FIXMessage FIXSpec)
+arbitraryFIXMessage context spec = do
+        header <- arbibtraryFIXValues $ msHeader spec
+        body <- arbibtraryFIXValues $ msBody spec
+        trailer <- arbibtraryFIXValues $ msTrailer spec
+        return FIXMessage 
+            { mContext = context
+            , mType = msType spec
+            , mHeader = header
+            , mBody = body
+            , mTrailer = trailer }
+
+-- An arbitrary instance of ByteString. 
+--- we generate a random string out of digits and numbers
+--- generated string has length at least 1 and most <max>
+instance Arbitrary ByteString where
+        arbitrary = do
+            l' <- arbitrary :: Gen Int
+            let l = 1 + l' `mod` maxLen
+            C.pack <$> replicateM l (aChar isAlpha')
+            where
+                aChar :: (Char -> Bool) -- predicate
+                        -> Gen Char     -- random generator
+                aChar p = do  
+                    c <- arbitrary 
+                    if p c then return c else aChar p
+
+                isAlpha' c = C.isAlphaNum c && C.isAscii c
+                maxLen = 15
+
+instance Arbitrary CalendarTime where
+        arbitrary = do 
+            year <- aYear
+            month <- aMonth
+            day <- aDay
+            hour <- aHour
+            minute <- aMin
+            sec <- aSec
+            psec <- aPsec
+            return CalendarTime 
+             { ctYear  = year
+             , ctMonth = toEnum month
+             , ctDay   = day
+             , ctHour  = hour
+             , ctMin   = minute
+             , ctSec   = sec
+             , ctPicosec = psec
+             , ctWDay  = toEnum 0
+             , ctYDay  = toEnum 0
+             , ctTZName = "UTC"
+             , ctTZ    = 0
+             , ctIsDST = True }
+             where
+                aYear  = (`mod` 10000) <$> arbitrary 
+                aMonth =    (`mod` 12) <$> arbitrary
+                aHour  =    (`mod` 24) <$> arbitrary
+                aDay   =    (`mod` 28) <$> arbitrary
+                aMin   =    (`mod` 60) <$> arbitrary
+                aSec   =    (`mod` 60) <$> arbitrary
+                aPsec  = (`mod` 1000000000000) <$> arbitrary
+
+
+
diff --git a/src/Data/FIX/Common.hs b/src/Data/FIX/Common.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Common.hs
@@ -0,0 +1,9 @@
+module Data.FIX.Common
+    ( delimiter)
+    where
+
+import Data.ByteString ( ByteString )
+import Data.ByteString.Char8 as C ( pack )
+ 
+delimiter :: Char
+delimiter = '\SOH'
diff --git a/src/Data/FIX/Coparser.hs b/src/Data/FIX/Coparser.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Coparser.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
+
+-- Module   : Data.FIX.Coparser
+-- License  : GPLv2
+
+module Data.FIX.Coparser ( coparse) where
+
+import Prelude as P hiding (concat)
+import Data.FIX.Message 
+    ( FIXGroupElement(..), FIXSpec (..), FIXMessage (..)
+    , tnum, FIXValues, FIXValue (..) )
+import Data.FIX.Parser ( tBeginString, tBodyLength, tCheckSum, tMsgType )
+import qualified Data.FIX.Message as FIX ( checksum, delimiter )
+import Data.Coparser ( Coparser (..), BuilderLike, 
+    pack, concat, append, cons, snoc, singleton, decimal, realFloat )
+import qualified Data.Coparser as Text ( length )
+import Data.ByteString ( ByteString )
+import Data.ByteString.Char8 as C ( unpack )
+import qualified Data.LookupTable as LT
+import System.Time ( CalendarTime (..) )
+
+-- implementation is not efficient 
+-- this is just meant for testing 
+-- and needs a lot of cleanup
+--
+-- ideas and issues:
+-- a) maybe use some kind of Monoid, resp. Writer, Builder to put together
+--    the ByteString. Maybe blazer-builder or Data.Text.Lazy.Builder Monoid
+-- b) lazy vs. strict ByteString?
+-- c) as for parsing we use a Monad, can we use the dual, a Comonad, here?
+-- d) implement Binary for FIXMessage, then call encode to get the ByteString
+--    -> seems to be slow (see comments in blaze-builder). also we just need
+--       one direction, i.e. put - get would be the FIXParser
+
+
+instance Coparser FIXValues where
+    coparse = pack . _serialize . LT.toList  
+        where
+            _serialize = concatMap _serValue
+
+            _serValue (k, FIXGroup i ls) = 
+                let sub = concat $ map coparse ls
+                    delim = FIX.delimiter         
+                in
+                    decimal k `append` ('=' `cons` decimal i `append` (delim `cons` sub))
+
+            _serValue (k, v) = 
+                let delim = FIX.delimiter in
+                    decimal k `append` ('=' `cons` coparse v `append` singleton delim)
+
+
+
+-- externalize the FIXMessage
+instance Coparser (FIXMessage FIXSpec) where
+    coparse m = msg' `append` chksum' 
+        where 
+            msg' = header `append` (len' `append` (FIX.delimiter `cons` body'))
+
+            chksum' = ctag `append` ('=' `cons` (paddedChecksum msg' `snoc` FIX.delimiter))
+            len' = ltag `append` ('=' `cons` decimal (Text.length body'))
+            mtype' = mtag `append` ('=' `cons` pack (C.unpack $ mType m))
+            body' = mtype' 
+                `append` (FIX.delimiter `cons` coparse (mHeader m))
+                `append` coparse (mBody m) 
+                `append` coparse (mTrailer m)
+            
+            btag = decimal $ tnum tBeginString
+            ctag = decimal $ tnum tCheckSum
+            ltag = decimal $ tnum tBodyLength 
+            mtag = decimal $ tnum tMsgType
+
+            version = fsVersion $ mContext m
+            header = btag `append` ('=' `cons` pack version `snoc` FIX.delimiter)
+            paddedChecksum m' = FIX.checksum m' `pad` 3 
+
+
+fromFIXMonthYear :: (BuilderLike t a) => CalendarTime -> t
+fromFIXMonthYear c = 
+    let year = ctYear c; month = 1 + fromEnum (ctMonth c) in
+        (year `pad` 4) `append` (month `pad` 2)
+
+fromFIXDateOnly :: (BuilderLike t a) => CalendarTime -> t
+fromFIXDateOnly c = let day = ctDay c in
+    fromFIXMonthYear c `append` (day `pad` 2)
+
+fromFIXTimeOnly :: (BuilderLike t a) => CalendarTime -> t
+fromFIXTimeOnly c = let m = ctMin c; s = ctSec c; h = ctHour c in
+        (h `pad` 2) `append` (':' `cons` (m `pad` 2) 
+        `append` (':' `cons` (s `pad` 2 )))
+
+fromFIXTimetamp :: (BuilderLike t a) => CalendarTime -> t
+fromFIXTimetamp c = fromFIXDateOnly c `append` 
+    ('-' `cons` fromFIXTimeOnly c)
+
+instance Coparser FIXGroupElement where
+    coparse (FIXGroupElement t s vs) = 
+   	 let delim = FIX.delimiter in
+	     decimal t `append` ('=' `cons` coparse s)
+	     `append` (delim `cons` coparse vs) 
+
+instance Coparser FIXValue where
+    coparse (FIXInt a) = decimal a
+    coparse (FIXDouble a) = realFloat a
+    coparse (FIXChar a) = singleton a
+    coparse (FIXBool a) 
+        | a = singleton 'Y'
+        | otherwise = singleton 'N'
+    coparse (FIXString a) = pack $ C.unpack a
+    coparse (FIXMultipleValueString a) = pack $ C.unpack a
+    coparse (FIXTimestamp a) = fromFIXTimetamp a
+    coparse (FIXTimeOnly a) = fromFIXTimeOnly a
+    coparse (FIXDateOnly a) = fromFIXDateOnly a
+    coparse (FIXMonthYear a) = fromFIXMonthYear a
+    coparse (FIXData a) = pack $ C.unpack a
+    coparse (FIXGroup n ls) = 
+    	decimal n `snoc` FIX.delimiter 
+	`append` concat (map coparse ls)
+
+
+{-instance Coparser (FIXMessage a) where-}
+    {-coparse m = coparse (mHeader m) -}
+        {-`append` ('\n' `cons` coparse (mBody m) -}
+        {-`append` ('\n' `cons` coparse (mTrailer m)))-}
+
+pad :: (BuilderLike a c) => Int -> Int -> a
+pad i w | d <= 0 = decimal i
+        | d == 1 = '0' `cons` decimal i
+        | otherwise = let prefix = P.replicate d '0' in 
+            pack prefix `append` decimal i
+    where
+        d = w - len' i
+
+        len' i' = if i' < 10 then 1 else 1 + len' (i' `div` 10)
diff --git a/src/Data/FIX/Message.hs b/src/Data/FIX/Message.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Message.hs
@@ -0,0 +1,142 @@
+-- Module   : Data.FIX.Message
+-- License  : GPLv2
+
+{-# LANGUAGE MagicHash, GeneralizedNewtypeDeriving #-}
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+
+-- | FIX messages
+module Data.FIX.Message 
+    ( FIXValue (..)
+    , FIXValues
+    , FIXTag (..)
+    , FIXTags
+    , FIXMessages
+    , FIXMessage (..)
+    , FIXMessageSpec (..)
+    , FIXGroupSpec (..)
+    , FIXGroupElement (..)
+    , FIXSpec (..)
+    , checksum
+    , delimiter
+    ) where
+
+import System.Time ( CalendarTime (..) )
+import Prelude hiding ( null )
+import Data.ByteString ( ByteString )
+import qualified Data.ByteString as B ( null, foldl' )
+import Data.IntMap ( IntMap, elems )
+import Data.Map ( Map )
+import Data.Attoparsec ( Parser ) 
+import Data.LookupTable ( LookupTable )
+import qualified Data.LookupTable as LT ( toList )
+import Control.DeepSeq ( NFData (..) )
+import Test.QuickCheck ( Gen )
+import Data.FIX.Common ( delimiter )
+import Data.Coparser ( BuilderLike (..), foldl' )
+
+-- | A valid FIX field description. It is used to specify FIX messages using
+-- 'FIXMessageSpec'.
+data FIXTag = FIXTag 
+    { tName :: String 
+    -- ^ The name of the tag e.g. BeginString.
+    , tnum :: Int 
+    -- ^ The numerical value of the tag e.g. 8.
+    , tparser :: Parser FIXValue 
+    -- ^ The corresponding attoparsec parser.
+    , arbitraryValue :: Gen FIXValue 
+    -- ^ A random generator for that particular types of fields.
+    } 
+
+
+-- | 
+data FIXGroupElement = FIXGroupElement Int FIXValue FIXValues
+
+data FIXValue = FIXInt Int 
+              | FIXDouble Double
+              | FIXChar Char 
+              | FIXBool Bool 
+              | FIXString ByteString 
+              | FIXData ByteString 
+              | FIXMultipleValueString ByteString 
+              | FIXTimestamp CalendarTime
+              | FIXTimeOnly CalendarTime
+              | FIXDateOnly CalendarTime
+              | FIXMonthYear CalendarTime
+              | FIXGroup Int [FIXGroupElement]
+
+--- should be alias of type in the typeclass LookupTable
+newtype ListOfValues a = LoV (IntMap a) 
+    deriving (LookupTable Int a, NFData)
+
+instance Show a => Show (ListOfValues a) where
+    show a = concatMap printKV $ LT.toList a
+        where
+            printKV (k, v) = show k ++ " = " ++ show v ++ "\n"
+
+type FIXValues = ListOfValues FIXValue 
+data FIXMessage a = FIXMessage
+                  { mContext :: a
+                  , mType    :: ByteString
+                  , mHeader  :: FIXValues
+                  , mBody    :: FIXValues
+                  , mTrailer :: FIXValues }
+
+
+newtype ListOfTags a = LoT (IntMap a)
+    deriving (LookupTable Int a)
+
+type FIXTags = ListOfTags FIXTag
+data FIXMessageSpec = FMSpec 
+                      { msName    :: String
+                      , msType    :: ByteString
+                      , msHeader  :: FIXTags
+                      , msBody    :: FIXTags 
+                      , msTrailer :: FIXTags }
+
+newtype ListOfMessages a = LM (Map ByteString a)
+    deriving (LookupTable ByteString a)
+
+type FIXMessages = ListOfMessages FIXMessageSpec
+data FIXSpec = FSpec 
+               { fsVersion  :: String       -- ^ FIX version
+               , fsHeader   :: FIXTags      -- ^ FIX header tags 
+               , fsTrailer  :: FIXTags      -- ^ FIX trailer tags
+               , fsMessages :: FIXMessages  -- ^ Dictionary of all FIX messages
+               , fsTags     :: FIXTags      -- ^ Dictionary of all FIX tags
+               }    
+
+data FIXGroupSpec = FGSpec
+                    { gsLength    :: FIXTag
+                    , gsSeperator :: FIXTag 
+                    , gsBody      :: FIXTags }
+
+
+-- FIX checksum is simply the sum of bytes modulo 256
+checksum :: (BuilderLike t c, Enum c)  => t -> Int
+checksum b = foldl' _sumUp 0 b `mod` 256
+                where 
+                    _sumUp :: (Enum c) => Int -> c -> Int
+                    _sumUp t c = t + fromEnum c
+
+instance Control.DeepSeq.NFData ByteString 
+instance Control.DeepSeq.NFData CalendarTime
+instance Control.DeepSeq.NFData FIXGroupElement where
+    rnf (FIXGroupElement _ s vs) = rnf s `seq` rnf vs 
+
+instance Control.DeepSeq.NFData FIXValue where
+    rnf (FIXInt x) = rnf x
+    rnf (FIXDouble x) = rnf x
+    rnf (FIXChar x) = rnf x
+    rnf (FIXBool x) = rnf x
+    rnf (FIXString x) = rnf x
+    rnf (FIXMultipleValueString x) = rnf x
+    rnf (FIXTimestamp x) = rnf x
+    rnf (FIXTimeOnly x) = rnf x
+    rnf (FIXDateOnly x) = rnf x
+    rnf (FIXMonthYear x) = rnf x
+    rnf (FIXData x) = rnf x 
+    rnf (FIXGroup l es) = rnf l `seq` rnf es
+
+instance Control.DeepSeq.NFData (FIXMessage a) where
+    rnf (FIXMessage _ _ h b t) = rnf h `seq` rnf b `seq` rnf t
+
diff --git a/src/Data/FIX/Parser.hs b/src/Data/FIX/Parser.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Parser.hs
@@ -0,0 +1,213 @@
+{-# OPTIONS_GHC  -fno-warn-missing-signatures #-}
+
+-- Module   : Data.FIX.Parser
+-- License  : GPLv2
+
+
+module Data.FIX.Parser 
+    ( 
+-- * Introduction
+-- | In order to get a Parser 'FIXMessage' 'FIXSpec' you can 
+--
+-- @
+--import qualified Data.FIX.Parser as FIX ( nextP, messageP )
+--
+--FIX.nextP >>= FIX.messageP
+-- @
+      messageP
+    , groupP
+    , nextP
+    , nextP'
+    , toFIXInt
+    , toFIXChar
+    , toFIXString
+    , toFIXDouble
+    , toFIXBool
+    , toFIXMultipleValueString
+    , toFIXTimestamp
+    , toFIXTimeOnly
+    , toFIXData
+    , toFIXDateOnly
+    , toFIXMonthYear
+    , tBeginString
+    , tCheckSum
+    , tBodyLength
+    , tMsgType
+    ) where
+
+import Prelude hiding ( take, null, head, tail )
+import Data.FIX.Message 
+    ( FIXGroupElement(..), FIXTags, FIXSpec (..), FIXMessage (..)
+    , FIXTag (..), FIXValue (..), FIXMessageSpec (..)
+    , FIXValues, FIXGroupSpec (..) )
+import qualified Data.FIX.Message as FIX ( checksum )
+import qualified Data.FIX.Common as FIX ( delimiter )
+import Data.FIX.ParserCombinators ( toTag, toString, toInt, toInt', toBool, toChar, toTimestamp, toDateOnly, toMonthYear, toTimeOnly, toDouble )
+import Data.Attoparsec ( parseOnly, option, Result(..), Parser, count, many, string, take )
+import Data.Char ( ord )
+import Data.ByteString ( ByteString )
+import Data.FIX.Arbitrary ()
+import qualified Data.ByteString.Char8 as C ( length, pack ) 
+import Data.Maybe ( fromMaybe )
+import qualified Data.LookupTable as LT ( new, toList, lookup, fromList, insert )
+import Control.Applicative ( (<$>) )
+import Control.Monad ( liftM )
+import Test.QuickCheck ( arbitrary )
+
+-- parse a specific tag and its value
+tagP :: FIXTag -> Parser FIXValue
+tagP tag = do l <- toTag -- read out tag in message
+              if l == tnum tag then -- if the two tags coincide read the value
+                tparser tag else fail "wrong tag"
+
+-- parse all the specificed tags and their corresponding values
+tagsP :: FIXTags -> Parser FIXValues
+tagsP ts = option LT.new (insertValue LT.new)
+	where
+           insertValue :: FIXValues -> Parser FIXValues
+	   insertValue t = do 
+	   	l <- nextTag
+		val <- tparser l
+		let t' = LT.insert (tnum l) val t 
+		option t' (insertValue t') 
+	   
+	   nextTag :: Parser FIXTag
+	   nextTag = do 
+	   	tag' <- toTag 
+		let mtag' = liftM return $ LT.lookup tag' ts 
+		fromMaybe (fail "") mtag'
+
+	   {-errorMsg l = error $ "unknown tag " ++ show l ++-}
+		   {-"\nknown tags are " ++ show (LT.toList ts)-}
+
+-- parse a value of type FIX group
+groupP :: FIXGroupSpec -> Parser FIXValue
+groupP spec = let numTag = gsLength spec in 
+		 do n <- toInt           -- number of submessages
+                    b <- count n submsg  -- parse the submessages
+                    return $ FIXGroup n b
+              where
+                  submsg :: Parser FIXGroupElement
+                  submsg = 
+                    let sepTag = gsSeperator spec
+                    in do s  <- tagP sepTag -- The seperator of the message
+		    	  vs <- tagsP (gsBody spec) -- The rest of the message
+			  return (FIXGroupElement (tnum sepTag) s vs)
+
+-- | Match the next FIX message (only text) in the stream. The checksum is
+-- validated.
+nextP :: Parser ByteString
+nextP = do 
+    (hchksum, len) <- _header'
+    msg <- take len 
+    let chksum = (hchksum + FIX.checksum msg) `mod` 256  
+    c <- _calcChksum'
+    if chksum == c then return msg 
+        else fail $ "checksum is not valid: is " ++ 
+                    show chksum  ++ " should be " ++ show c
+    where
+        -- Parse header and return checksum and length.
+        -- A header always starts with the version tag (8)  
+        -- followed by the length tag (9). Note: these 2 tags
+        -- are included in the checksum
+        _header' :: Parser (Int, Int)
+        _header' = do 
+            c1 <- (FIX.checksum <$> string (C.pack "8="))
+            c2 <- (FIX.checksum <$> toString)
+            c3 <- (FIX.checksum <$> string (C.pack "9="))
+            l <- toString
+            let c4 = FIX.checksum l
+                c = (c1 + c2 + c3 + c4 + 2 * ord FIX.delimiter) `mod` 256
+            return (c, toInt' l)
+
+        _calcChksum' :: Parser Int
+        _calcChksum' = string (C.pack "10=") >> toInt
+
+-- | Match the next FIX message (only text) in the stream. The checksum is NOT
+-- validated.
+nextP' :: Parser ByteString
+nextP' = do 
+          msg <- take =<< _numBytes
+          _ <- toTag >> toInt
+          return msg 
+    where
+        _numBytes = 
+            let 
+                skipHeader = 
+                    string (C.pack "8=") >> toString >> 
+                    string (C.pack "9=") 
+            in 
+                skipHeader >> toInt
+
+-- | Given the FIX specification deserialize the FIX message.
+messageP :: FIXSpec -> ByteString -> Parser (FIXMessage FIXSpec)
+messageP spec msg = 
+    let headerP'  = tagsP $ fsHeader spec  -- parse header
+        trailerP' = tagsP $ fsTrailer spec -- parse trailer
+        bodyP' mtype =                     -- parse body
+            let allSpecs = fsMessages spec
+                msgSpec = fromMaybe (error "no message") $
+                                LT.lookup mtype allSpecs
+                msgBodyTags = msBody msgSpec
+            in 
+                tagsP msgBodyTags
+
+        fixP' = do
+                FIXString mt <- tagP tMsgType
+                h <- headerP'
+                b <- bodyP' mt
+                t <- trailerP' 
+                return FIXMessage 
+                    { mContext = spec
+                    , mType = mt
+                    , mHeader = h
+                    , mBody = b
+                    , mTrailer = t }
+    in 
+        case parseOnly fixP' msg of
+             Left err  -> fail err 
+	     Right msg -> return msg
+
+
+-- FIX value parsers 
+toFIXInt = FIXInt <$> toInt
+toFIXDouble = FIXDouble <$> toDouble
+toFIXBool = FIXBool <$> toBool
+toFIXString = FIXString <$> toString
+toFIXMultipleValueString = FIXMultipleValueString <$> toString
+toFIXData = FIXData <$> toString
+toFIXTimestamp = FIXTimestamp <$> toTimestamp
+toFIXTimeOnly = FIXTimeOnly <$> toTimeOnly
+toFIXChar = FIXChar <$> toChar
+toFIXDateOnly = FIXDateOnly <$> toDateOnly
+toFIXMonthYear = FIXMonthYear <$> toMonthYear
+
+
+tBeginString :: FIXTag
+tBeginString = FIXTag
+    { tName = "BeginString"
+    , tnum = 8
+    , tparser = toFIXString
+    , arbitraryValue = FIXString <$> arbitrary }
+
+
+tBodyLength :: FIXTag
+tBodyLength = FIXTag
+    { tName = "BodyLength"
+    , tnum = 9
+    , tparser = toFIXInt 
+    , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgType :: FIXTag
+tMsgType = FIXTag
+    { tName = "MsgType"
+    , tnum = 35
+    , tparser = toFIXString 
+    , arbitraryValue = FIXString <$> arbitrary }
+
+tCheckSum :: FIXTag
+tCheckSum = FIXTag
+    { tName = "CheckSum"
+    , tnum = 10
+    , tparser = toFIXInt 
+    , arbitraryValue = FIXInt <$> arbitrary }
diff --git a/src/Data/FIX/ParserCombinators.hs b/src/Data/FIX/ParserCombinators.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/ParserCombinators.hs
@@ -0,0 +1,206 @@
+-- Module   : Data.FIX.ParserCombinators 
+-- License  : GPLv2
+
+{-# LANGUAGE BangPatterns #-}
+
+module Data.FIX.ParserCombinators 
+    ( toTag
+    , toString
+    , toInt'
+    , toInt
+    , toDouble
+    , toBool
+    , toTimestamp
+    , toTimeOnly
+    , toChar
+    , toDateOnly
+    , toTime
+    , toMonthYear
+
+    , skipToken
+
+    -- exporting Attoparsec
+    , Data.Attoparsec.Parser
+    , Data.Attoparsec.Zepto.parse
+	) where
+
+import Prelude hiding ( null, tail, head )
+import Data.Attoparsec ( Parser )
+import qualified Data.Attoparsec.Zepto ( parse )
+import Data.Attoparsec.Char8 
+    ( skipWhile, signed, char, char8, anyChar, takeWhile1, decimal, double )
+import Data.Char ( ord )
+import Data.ByteString hiding ( pack, putStrLn )
+import Control.Applicative ( (<$>), (<|>), (*>) )
+import System.Time ( CalendarTime (..) )
+import qualified Data.FIX.Common as FIX ( delimiter )
+
+
+skipFIXDelimiter :: Parser ()
+skipFIXDelimiter = char8 FIX.delimiter >> return ()
+
+
+toDouble :: Parser Double
+toDouble =  signed $ do 
+    a <- decimal :: Parser Integer
+    (!m, !e) <- (char '.' *> (extract_decimals <$> toString)) <|> (skipFIXDelimiter >> return (0, 1))
+    return $ fromIntegral a + fromIntegral m / fromIntegral e
+    where
+        extract_decimals :: ByteString -> (Int, Int)
+	extract_decimals = foldl' helper (0, 1)
+		where
+			helper !(!m, !e) c = (m * 10 + fromIntegral c - ord '0', 10 * e)
+
+parseIntTill :: Char -> Parser Int
+parseIntTill c = do
+    i <- signed decimal
+    _ <- char8 c
+    return i
+
+toInt' :: ByteString -> Int
+toInt' b = helper 0 b
+           where 
+                helper i j 
+                    | null j    = i
+                    | otherwise =   
+                        helper (10 * i + fromIntegral (head j) - ord '0') (tail j)
+                    
+toInt :: Parser Int
+toInt = parseIntTill FIX.delimiter
+
+
+toChar :: Parser Char
+toChar = do
+    c <- anyChar
+    skipFIXDelimiter
+    return c
+
+toString :: Parser ByteString
+toString = do 
+    str <- takeWhile1 (/= FIX.delimiter)
+    skipFIXDelimiter
+    return str
+
+
+toTag :: Parser Int
+toTag = parseIntTill '='
+    
+toBool :: Parser Bool
+toBool = do
+    c <- (char 'Y' <|> char 'N')
+    skipFIXDelimiter
+    case c of
+        'Y' -> return True
+        'N' -> return False
+        _ -> error "wrong boolean FIX value"
+
+toSecMillis :: Parser (Int, Int)
+toSecMillis = do
+   (sec, mil) <- read_sec_millis <|> (toInt >>= (\s -> return (s, 0))) 
+   return (sec, mil)
+   where
+        read_sec_millis :: Parser (Int, Int)
+        read_sec_millis = do
+            sec' <- parseIntTill '.'
+            mil' <- toInt
+            return (sec', mil')
+
+-- one milli seconds is 10^9 picoseconds 
+picosPerMilli :: Int
+picosPerMilli = 1000000000
+
+toTimestamp :: Parser CalendarTime
+toTimestamp = do
+   i <- parseIntTill '-'
+   let year  = i `div` 10000
+   let rest  = i `mod` 10000
+   let month = rest `div` 100
+   let day   = rest `mod` 100
+   hours   <- parseIntTill ':'
+   minutes <- parseIntTill ':'
+   (sec, milli) <- toSecMillis
+   return CalendarTime {
+       ctYear  = year
+     , ctMonth = toEnum $ month - 1
+     , ctDay   = day
+     , ctHour  = hours
+     , ctMin   = minutes
+     , ctSec   = sec
+     , ctPicosec = toInteger $ milli * picosPerMilli
+     , ctWDay  = toEnum 0
+     , ctYDay  = 0
+     , ctTZName = "UTC"
+     , ctTZ    = 0
+     , ctIsDST = True
+   }
+
+toTimeOnly :: Parser CalendarTime
+toTimeOnly = do
+   hours   <- parseIntTill ':'
+   minutes <- parseIntTill ':'
+   (sec, milli) <- toSecMillis
+   return CalendarTime {
+       ctYear  = 0
+     , ctMonth = toEnum 0
+     , ctDay   = 0
+     , ctHour  = hours
+     , ctMin   = minutes
+     , ctSec   = sec
+     , ctPicosec = toInteger $ milli * picosPerMilli
+     , ctWDay  = toEnum 0
+     , ctYDay  = 0
+     , ctTZName = "UTC"
+     , ctTZ    = 0
+     , ctIsDST = True
+   }
+
+toDateOnly :: Parser CalendarTime
+toDateOnly = do
+   i <- toInt
+   let year  = i `div` 10000
+   let rest  = i `mod` 10000
+   let month = rest `div` 100
+   let day   = rest `mod` 100
+   return CalendarTime {
+       ctYear  = year
+     , ctMonth = toEnum $ month - 1
+     , ctDay   = day
+     , ctHour  = 0
+     , ctMin   = 0 
+     , ctSec   = 0
+     , ctPicosec = 0
+     , ctWDay  = toEnum 0
+     , ctYDay  = 0
+     , ctTZName = "UTC"
+     , ctTZ    = 0
+     , ctIsDST = True
+   }
+
+
+toMonthYear :: Parser CalendarTime
+toMonthYear = do
+   i <- toInt
+   let year  = i `div` 100
+   let month = i `mod` 100
+   return CalendarTime {
+       ctYear  = year
+     , ctMonth = toEnum $ month - 1
+     , ctDay   = 0
+     , ctHour  = 0
+     , ctMin   = 0 
+     , ctSec   = 0
+     , ctPicosec = 0
+     , ctWDay  = toEnum 0
+     , ctYDay  = 0
+     , ctTZName = "UTC"
+     , ctTZ    = 0
+     , ctIsDST = True
+   }
+
+toTime :: Parser CalendarTime
+toTime = toTimestamp 
+          <|> toTimeOnly 
+          <|> toDateOnly
+
+skipToken :: Parser ()
+skipToken = skipWhile (FIX.delimiter /=)
diff --git a/src/Data/FIX/Spec/FIX40.hs b/src/Data/FIX/Spec/FIX40.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Spec/FIX40.hs
@@ -0,0 +1,1893 @@
+module Data.FIX.Spec.FIX40 ( fix40 ) where
+import qualified Data.ByteString.Char8 as C
+import qualified Data.LookupTable as LT ( new, insert )
+import Data.FIX.Message
+import Data.FIX.Parser
+import Data.Functor ( (<$>) )
+import Data.FIX.Arbitrary 
+import Test.QuickCheck ( arbitrary )
+
+
+tAccount :: FIXTag
+tAccount = FIXTag 
+   { tName = "Account"
+   , tnum = 1
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvId :: FIXTag
+tAdvId = FIXTag 
+   { tName = "AdvId"
+   , tnum = 2
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAdvRefID :: FIXTag
+tAdvRefID = FIXTag 
+   { tName = "AdvRefID"
+   , tnum = 3
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAdvSide :: FIXTag
+tAdvSide = FIXTag 
+   { tName = "AdvSide"
+   , tnum = 4
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvTransType :: FIXTag
+tAdvTransType = FIXTag 
+   { tName = "AdvTransType"
+   , tnum = 5
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAvgPx :: FIXTag
+tAvgPx = FIXTag 
+   { tName = "AvgPx"
+   , tnum = 6
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBeginSeqNo :: FIXTag
+tBeginSeqNo = FIXTag 
+   { tName = "BeginSeqNo"
+   , tnum = 7
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdID :: FIXTag
+tClOrdID = FIXTag 
+   { tName = "ClOrdID"
+   , tnum = 11
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCommission :: FIXTag
+tCommission = FIXTag 
+   { tName = "Commission"
+   , tnum = 12
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCommType :: FIXTag
+tCommType = FIXTag 
+   { tName = "CommType"
+   , tnum = 13
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCumQty :: FIXTag
+tCumQty = FIXTag 
+   { tName = "CumQty"
+   , tnum = 14
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCurrency :: FIXTag
+tCurrency = FIXTag 
+   { tName = "Currency"
+   , tnum = 15
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEndSeqNo :: FIXTag
+tEndSeqNo = FIXTag 
+   { tName = "EndSeqNo"
+   , tnum = 16
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecID :: FIXTag
+tExecID = FIXTag 
+   { tName = "ExecID"
+   , tnum = 17
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecInst :: FIXTag
+tExecInst = FIXTag 
+   { tName = "ExecInst"
+   , tnum = 18
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecRefID :: FIXTag
+tExecRefID = FIXTag 
+   { tName = "ExecRefID"
+   , tnum = 19
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecTransType :: FIXTag
+tExecTransType = FIXTag 
+   { tName = "ExecTransType"
+   , tnum = 20
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHandlInst :: FIXTag
+tHandlInst = FIXTag 
+   { tName = "HandlInst"
+   , tnum = 21
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIDSource :: FIXTag
+tIDSource = FIXTag 
+   { tName = "IDSource"
+   , tnum = 22
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIid :: FIXTag
+tIOIid = FIXTag 
+   { tName = "IOIid"
+   , tnum = 23
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIOthSvc :: FIXTag
+tIOIOthSvc = FIXTag 
+   { tName = "IOIOthSvc"
+   , tnum = 24
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIQltyInd :: FIXTag
+tIOIQltyInd = FIXTag 
+   { tName = "IOIQltyInd"
+   , tnum = 25
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIRefID :: FIXTag
+tIOIRefID = FIXTag 
+   { tName = "IOIRefID"
+   , tnum = 26
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIShares :: FIXTag
+tIOIShares = FIXTag 
+   { tName = "IOIShares"
+   , tnum = 27
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOITransType :: FIXTag
+tIOITransType = FIXTag 
+   { tName = "IOITransType"
+   , tnum = 28
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastCapacity :: FIXTag
+tLastCapacity = FIXTag 
+   { tName = "LastCapacity"
+   , tnum = 29
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastMkt :: FIXTag
+tLastMkt = FIXTag 
+   { tName = "LastMkt"
+   , tnum = 30
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastPx :: FIXTag
+tLastPx = FIXTag 
+   { tName = "LastPx"
+   , tnum = 31
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastShares :: FIXTag
+tLastShares = FIXTag 
+   { tName = "LastShares"
+   , tnum = 32
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLinesOfText :: FIXTag
+tLinesOfText = FIXTag 
+   { tName = "LinesOfText"
+   , tnum = 33
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgSeqNum :: FIXTag
+tMsgSeqNum = FIXTag 
+   { tName = "MsgSeqNum"
+   , tnum = 34
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNewSeqNo :: FIXTag
+tNewSeqNo = FIXTag 
+   { tName = "NewSeqNo"
+   , tnum = 36
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderID :: FIXTag
+tOrderID = FIXTag 
+   { tName = "OrderID"
+   , tnum = 37
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrderQty :: FIXTag
+tOrderQty = FIXTag 
+   { tName = "OrderQty"
+   , tnum = 38
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdStatus :: FIXTag
+tOrdStatus = FIXTag 
+   { tName = "OrdStatus"
+   , tnum = 39
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrdType :: FIXTag
+tOrdType = FIXTag 
+   { tName = "OrdType"
+   , tnum = 40
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigClOrdID :: FIXTag
+tOrigClOrdID = FIXTag 
+   { tName = "OrigClOrdID"
+   , tnum = 41
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigTime :: FIXTag
+tOrigTime = FIXTag 
+   { tName = "OrigTime"
+   , tnum = 42
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tPossDupFlag :: FIXTag
+tPossDupFlag = FIXTag 
+   { tName = "PossDupFlag"
+   , tnum = 43
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrice :: FIXTag
+tPrice = FIXTag 
+   { tName = "Price"
+   , tnum = 44
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRefSeqNum :: FIXTag
+tRefSeqNum = FIXTag 
+   { tName = "RefSeqNum"
+   , tnum = 45
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRelatdSym :: FIXTag
+tRelatdSym = FIXTag 
+   { tName = "RelatdSym"
+   , tnum = 46
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRule80A :: FIXTag
+tRule80A = FIXTag 
+   { tName = "Rule80A"
+   , tnum = 47
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityID :: FIXTag
+tSecurityID = FIXTag 
+   { tName = "SecurityID"
+   , tnum = 48
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSenderCompID :: FIXTag
+tSenderCompID = FIXTag 
+   { tName = "SenderCompID"
+   , tnum = 49
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSenderSubID :: FIXTag
+tSenderSubID = FIXTag 
+   { tName = "SenderSubID"
+   , tnum = 50
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSendingDate :: FIXTag
+tSendingDate = FIXTag 
+   { tName = "SendingDate"
+   , tnum = 51
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSendingTime :: FIXTag
+tSendingTime = FIXTag 
+   { tName = "SendingTime"
+   , tnum = 52
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tShares :: FIXTag
+tShares = FIXTag 
+   { tName = "Shares"
+   , tnum = 53
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSide :: FIXTag
+tSide = FIXTag 
+   { tName = "Side"
+   , tnum = 54
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSymbol :: FIXTag
+tSymbol = FIXTag 
+   { tName = "Symbol"
+   , tnum = 55
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTargetCompID :: FIXTag
+tTargetCompID = FIXTag 
+   { tName = "TargetCompID"
+   , tnum = 56
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTargetSubID :: FIXTag
+tTargetSubID = FIXTag 
+   { tName = "TargetSubID"
+   , tnum = 57
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tText :: FIXTag
+tText = FIXTag 
+   { tName = "Text"
+   , tnum = 58
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTimeInForce :: FIXTag
+tTimeInForce = FIXTag 
+   { tName = "TimeInForce"
+   , tnum = 59
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTransactTime :: FIXTag
+tTransactTime = FIXTag 
+   { tName = "TransactTime"
+   , tnum = 60
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tUrgency :: FIXTag
+tUrgency = FIXTag 
+   { tName = "Urgency"
+   , tnum = 61
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tValidUntilTime :: FIXTag
+tValidUntilTime = FIXTag 
+   { tName = "ValidUntilTime"
+   , tnum = 62
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tSettlmntTyp :: FIXTag
+tSettlmntTyp = FIXTag 
+   { tName = "SettlmntTyp"
+   , tnum = 63
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tFutSettDate :: FIXTag
+tFutSettDate = FIXTag 
+   { tName = "FutSettDate"
+   , tnum = 64
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSymbolSfx :: FIXTag
+tSymbolSfx = FIXTag 
+   { tName = "SymbolSfx"
+   , tnum = 65
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tListID :: FIXTag
+tListID = FIXTag 
+   { tName = "ListID"
+   , tnum = 66
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tListSeqNo :: FIXTag
+tListSeqNo = FIXTag 
+   { tName = "ListSeqNo"
+   , tnum = 67
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListNoOrds :: FIXTag
+tListNoOrds = FIXTag 
+   { tName = "ListNoOrds"
+   , tnum = 68
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListExecInst :: FIXTag
+tListExecInst = FIXTag 
+   { tName = "ListExecInst"
+   , tnum = 69
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocID :: FIXTag
+tAllocID = FIXTag 
+   { tName = "AllocID"
+   , tnum = 70
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocTransType :: FIXTag
+tAllocTransType = FIXTag 
+   { tName = "AllocTransType"
+   , tnum = 71
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRefAllocID :: FIXTag
+tRefAllocID = FIXTag 
+   { tName = "RefAllocID"
+   , tnum = 72
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoOrders :: FIXTag
+tNoOrders = FIXTag 
+   { tName = "NoOrders"
+   , tnum = 73
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAvgPrxPrecision :: FIXTag
+tAvgPrxPrecision = FIXTag 
+   { tName = "AvgPrxPrecision"
+   , tnum = 74
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeDate :: FIXTag
+tTradeDate = FIXTag 
+   { tName = "TradeDate"
+   , tnum = 75
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExecBroker :: FIXTag
+tExecBroker = FIXTag 
+   { tName = "ExecBroker"
+   , tnum = 76
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOpenClose :: FIXTag
+tOpenClose = FIXTag 
+   { tName = "OpenClose"
+   , tnum = 77
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoAllocs :: FIXTag
+tNoAllocs = FIXTag 
+   { tName = "NoAllocs"
+   , tnum = 78
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocAccount :: FIXTag
+tAllocAccount = FIXTag 
+   { tName = "AllocAccount"
+   , tnum = 79
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocShares :: FIXTag
+tAllocShares = FIXTag 
+   { tName = "AllocShares"
+   , tnum = 80
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tProcessCode :: FIXTag
+tProcessCode = FIXTag 
+   { tName = "ProcessCode"
+   , tnum = 81
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoRpts :: FIXTag
+tNoRpts = FIXTag 
+   { tName = "NoRpts"
+   , tnum = 82
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRptSeq :: FIXTag
+tRptSeq = FIXTag 
+   { tName = "RptSeq"
+   , tnum = 83
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlQty :: FIXTag
+tCxlQty = FIXTag 
+   { tName = "CxlQty"
+   , tnum = 84
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoDlvyInst :: FIXTag
+tNoDlvyInst = FIXTag 
+   { tName = "NoDlvyInst"
+   , tnum = 85
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDlvyInst :: FIXTag
+tDlvyInst = FIXTag 
+   { tName = "DlvyInst"
+   , tnum = 86
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocStatus :: FIXTag
+tAllocStatus = FIXTag 
+   { tName = "AllocStatus"
+   , tnum = 87
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocRejCode :: FIXTag
+tAllocRejCode = FIXTag 
+   { tName = "AllocRejCode"
+   , tnum = 88
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSignature :: FIXTag
+tSignature = FIXTag 
+   { tName = "Signature"
+   , tnum = 89
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSecureDataLen :: FIXTag
+tSecureDataLen = FIXTag 
+   { tName = "SecureDataLen"
+   , tnum = 90
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecureData :: FIXTag
+tSecureData = FIXTag 
+   { tName = "SecureData"
+   , tnum = 91
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tBrokerOfCredit :: FIXTag
+tBrokerOfCredit = FIXTag 
+   { tName = "BrokerOfCredit"
+   , tnum = 92
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSignatureLength :: FIXTag
+tSignatureLength = FIXTag 
+   { tName = "SignatureLength"
+   , tnum = 93
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEmailType :: FIXTag
+tEmailType = FIXTag 
+   { tName = "EmailType"
+   , tnum = 94
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRawDataLength :: FIXTag
+tRawDataLength = FIXTag 
+   { tName = "RawDataLength"
+   , tnum = 95
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRawData :: FIXTag
+tRawData = FIXTag 
+   { tName = "RawData"
+   , tnum = 96
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPossResend :: FIXTag
+tPossResend = FIXTag 
+   { tName = "PossResend"
+   , tnum = 97
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEncryptMethod :: FIXTag
+tEncryptMethod = FIXTag 
+   { tName = "EncryptMethod"
+   , tnum = 98
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStopPx :: FIXTag
+tStopPx = FIXTag 
+   { tName = "StopPx"
+   , tnum = 99
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExDestination :: FIXTag
+tExDestination = FIXTag 
+   { tName = "ExDestination"
+   , tnum = 100
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCxlRejReason :: FIXTag
+tCxlRejReason = FIXTag 
+   { tName = "CxlRejReason"
+   , tnum = 102
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdRejReason :: FIXTag
+tOrdRejReason = FIXTag 
+   { tName = "OrdRejReason"
+   , tnum = 103
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIQualifier :: FIXTag
+tIOIQualifier = FIXTag 
+   { tName = "IOIQualifier"
+   , tnum = 104
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tWaveNo :: FIXTag
+tWaveNo = FIXTag 
+   { tName = "WaveNo"
+   , tnum = 105
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIssuer :: FIXTag
+tIssuer = FIXTag 
+   { tName = "Issuer"
+   , tnum = 106
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityDesc :: FIXTag
+tSecurityDesc = FIXTag 
+   { tName = "SecurityDesc"
+   , tnum = 107
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHeartBtInt :: FIXTag
+tHeartBtInt = FIXTag 
+   { tName = "HeartBtInt"
+   , tnum = 108
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClientID :: FIXTag
+tClientID = FIXTag 
+   { tName = "ClientID"
+   , tnum = 109
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMinQty :: FIXTag
+tMinQty = FIXTag 
+   { tName = "MinQty"
+   , tnum = 110
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxFloor :: FIXTag
+tMaxFloor = FIXTag 
+   { tName = "MaxFloor"
+   , tnum = 111
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTestReqID :: FIXTag
+tTestReqID = FIXTag 
+   { tName = "TestReqID"
+   , tnum = 112
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tReportToExch :: FIXTag
+tReportToExch = FIXTag 
+   { tName = "ReportToExch"
+   , tnum = 113
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLocateReqd :: FIXTag
+tLocateReqd = FIXTag 
+   { tName = "LocateReqd"
+   , tnum = 114
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOnBehalfOfCompID :: FIXTag
+tOnBehalfOfCompID = FIXTag 
+   { tName = "OnBehalfOfCompID"
+   , tnum = 115
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOnBehalfOfSubID :: FIXTag
+tOnBehalfOfSubID = FIXTag 
+   { tName = "OnBehalfOfSubID"
+   , tnum = 116
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tQuoteID :: FIXTag
+tQuoteID = FIXTag 
+   { tName = "QuoteID"
+   , tnum = 117
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNetMoney :: FIXTag
+tNetMoney = FIXTag 
+   { tName = "NetMoney"
+   , tnum = 118
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrAmt :: FIXTag
+tSettlCurrAmt = FIXTag 
+   { tName = "SettlCurrAmt"
+   , tnum = 119
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrency :: FIXTag
+tSettlCurrency = FIXTag 
+   { tName = "SettlCurrency"
+   , tnum = 120
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tForexReq :: FIXTag
+tForexReq = FIXTag 
+   { tName = "ForexReq"
+   , tnum = 121
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigSendingTime :: FIXTag
+tOrigSendingTime = FIXTag 
+   { tName = "OrigSendingTime"
+   , tnum = 122
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tGapFillFlag :: FIXTag
+tGapFillFlag = FIXTag 
+   { tName = "GapFillFlag"
+   , tnum = 123
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoExecs :: FIXTag
+tNoExecs = FIXTag 
+   { tName = "NoExecs"
+   , tnum = 124
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlType :: FIXTag
+tCxlType = FIXTag 
+   { tName = "CxlType"
+   , tnum = 125
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExpireTime :: FIXTag
+tExpireTime = FIXTag 
+   { tName = "ExpireTime"
+   , tnum = 126
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tDKReason :: FIXTag
+tDKReason = FIXTag 
+   { tName = "DKReason"
+   , tnum = 127
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToCompID :: FIXTag
+tDeliverToCompID = FIXTag 
+   { tName = "DeliverToCompID"
+   , tnum = 128
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToSubID :: FIXTag
+tDeliverToSubID = FIXTag 
+   { tName = "DeliverToSubID"
+   , tnum = 129
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOINaturalFlag :: FIXTag
+tIOINaturalFlag = FIXTag 
+   { tName = "IOINaturalFlag"
+   , tnum = 130
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tQuoteReqID :: FIXTag
+tQuoteReqID = FIXTag 
+   { tName = "QuoteReqID"
+   , tnum = 131
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBidPx :: FIXTag
+tBidPx = FIXTag 
+   { tName = "BidPx"
+   , tnum = 132
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferPx :: FIXTag
+tOfferPx = FIXTag 
+   { tName = "OfferPx"
+   , tnum = 133
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidSize :: FIXTag
+tBidSize = FIXTag 
+   { tName = "BidSize"
+   , tnum = 134
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOfferSize :: FIXTag
+tOfferSize = FIXTag 
+   { tName = "OfferSize"
+   , tnum = 135
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMiscFees :: FIXTag
+tNoMiscFees = FIXTag 
+   { tName = "NoMiscFees"
+   , tnum = 136
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMiscFeeAmt :: FIXTag
+tMiscFeeAmt = FIXTag 
+   { tName = "MiscFeeAmt"
+   , tnum = 137
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMiscFeeCurr :: FIXTag
+tMiscFeeCurr = FIXTag 
+   { tName = "MiscFeeCurr"
+   , tnum = 138
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMiscFeeType :: FIXTag
+tMiscFeeType = FIXTag 
+   { tName = "MiscFeeType"
+   , tnum = 139
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrevClosePx :: FIXTag
+tPrevClosePx = FIXTag 
+   { tName = "PrevClosePx"
+   , tnum = 140
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+headerFIX40 :: FIXTags
+headerFIX40 = 
+   LT.insert (tnum tSenderCompID) tSenderCompID $
+   LT.insert (tnum tTargetCompID) tTargetCompID $
+   LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+   LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+   LT.insert (tnum tSecureDataLen) tSecureDataLen $
+   LT.insert (tnum tSecureData) tSecureData $
+   LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+   LT.insert (tnum tSenderSubID) tSenderSubID $
+   LT.insert (tnum tTargetSubID) tTargetSubID $
+   LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+   LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+   LT.insert (tnum tPossDupFlag) tPossDupFlag $
+   LT.insert (tnum tPossResend) tPossResend $
+   LT.insert (tnum tSendingTime) tSendingTime $
+   LT.insert (tnum tOrigSendingTime) tOrigSendingTime    LT.new
+
+
+trailerFIX40 :: FIXTags
+trailerFIX40 = 
+   LT.insert (tnum tSignatureLength) tSignatureLength $
+   LT.insert (tnum tSignature) tSignature    LT.new
+
+
+mHeartbeat :: FIXMessageSpec
+mHeartbeat = FMSpec
+   { msName = "Heartbeat"
+   , msType = C.pack "0"
+   , msHeader = headerFIX40
+   , msBody = mHeartbeatBody
+   , msTrailer = trailerFIX40 }
+   where
+   mHeartbeatBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mTestRequest :: FIXMessageSpec
+mTestRequest = FMSpec
+   { msName = "TestRequest"
+   , msType = C.pack "1"
+   , msHeader = headerFIX40
+   , msBody = mTestRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mTestRequestBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mResendRequest :: FIXMessageSpec
+mResendRequest = FMSpec
+   { msName = "ResendRequest"
+   , msType = C.pack "2"
+   , msHeader = headerFIX40
+   , msBody = mResendRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mResendRequestBody = 
+      LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+      LT.insert (tnum tEndSeqNo) tEndSeqNo       LT.new
+
+
+mReject :: FIXMessageSpec
+mReject = FMSpec
+   { msName = "Reject"
+   , msType = C.pack "3"
+   , msHeader = headerFIX40
+   , msBody = mRejectBody
+   , msTrailer = trailerFIX40 }
+   where
+   mRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mSequenceReset :: FIXMessageSpec
+mSequenceReset = FMSpec
+   { msName = "SequenceReset"
+   , msType = C.pack "4"
+   , msHeader = headerFIX40
+   , msBody = mSequenceResetBody
+   , msTrailer = trailerFIX40 }
+   where
+   mSequenceResetBody = 
+      LT.insert (tnum tGapFillFlag) tGapFillFlag $
+      LT.insert (tnum tNewSeqNo) tNewSeqNo       LT.new
+
+
+mLogout :: FIXMessageSpec
+mLogout = FMSpec
+   { msName = "Logout"
+   , msType = C.pack "5"
+   , msHeader = headerFIX40
+   , msBody = mLogoutBody
+   , msTrailer = trailerFIX40 }
+   where
+   mLogoutBody = 
+      LT.insert (tnum tText) tText       LT.new
+
+
+mIndicationofInterest :: FIXMessageSpec
+mIndicationofInterest = FMSpec
+   { msName = "IndicationofInterest"
+   , msType = C.pack "6"
+   , msHeader = headerFIX40
+   , msBody = mIndicationofInterestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mIndicationofInterestBody = 
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tIOITransType) tIOITransType $
+      LT.insert (tnum tIOIRefID) tIOIRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tIOIShares) tIOIShares $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+      LT.insert (tnum tIOIOthSvc) tIOIOthSvc $
+      LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+      LT.insert (tnum tIOIQualifier) tIOIQualifier $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mAdvertisement :: FIXMessageSpec
+mAdvertisement = FMSpec
+   { msName = "Advertisement"
+   , msType = C.pack "7"
+   , msHeader = headerFIX40
+   , msBody = mAdvertisementBody
+   , msTrailer = trailerFIX40 }
+   where
+   mAdvertisementBody = 
+      LT.insert (tnum tAdvId) tAdvId $
+      LT.insert (tnum tAdvTransType) tAdvTransType $
+      LT.insert (tnum tAdvRefID) tAdvRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tAdvSide) tAdvSide $
+      LT.insert (tnum tShares) tShares $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mExecutionReport :: FIXMessageSpec
+mExecutionReport = FMSpec
+   { msName = "ExecutionReport"
+   , msType = C.pack "8"
+   , msHeader = headerFIX40
+   , msBody = mExecutionReportBody
+   , msTrailer = trailerFIX40 }
+   where
+   mExecutionReportBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tExecTransType) tExecTransType $
+      LT.insert (tnum tExecRefID) tExecRefID $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tOrdRejReason) tOrdRejReason $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tLastShares) tLastShares $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tLastCapacity) tLastCapacity $
+      LT.insert (tnum tCumQty) tCumQty $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tReportToExch) tReportToExch $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees''' $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText       LT.new
+      where
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType                LT.new
+
+
+
+mOrderCancelReject :: FIXMessageSpec
+mOrderCancelReject = FMSpec
+   { msName = "OrderCancelReject"
+   , msType = C.pack "9"
+   , msHeader = headerFIX40
+   , msBody = mOrderCancelRejectBody
+   , msTrailer = trailerFIX40 }
+   where
+   mOrderCancelRejectBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tCxlRejReason) tCxlRejReason $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mLogon :: FIXMessageSpec
+mLogon = FMSpec
+   { msName = "Logon"
+   , msType = C.pack "A"
+   , msHeader = headerFIX40
+   , msBody = mLogonBody
+   , msTrailer = trailerFIX40 }
+   where
+   mLogonBody = 
+      LT.insert (tnum tEncryptMethod) tEncryptMethod $
+      LT.insert (tnum tHeartBtInt) tHeartBtInt $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+
+
+mNews :: FIXMessageSpec
+mNews = FMSpec
+   { msName = "News"
+   , msType = C.pack "B"
+   , msHeader = headerFIX40
+   , msBody = mNewsBody
+   , msTrailer = trailerFIX40 }
+   where
+   mNewsBody = 
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tUrgency) tUrgency $
+      LT.insert (tnum tRelatdSym) tRelatdSym $
+      LT.insert (tnum tLinesOfText) tLinesOfText $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+
+
+mEmail :: FIXMessageSpec
+mEmail = FMSpec
+   { msName = "Email"
+   , msType = C.pack "C"
+   , msHeader = headerFIX40
+   , msBody = mEmailBody
+   , msTrailer = trailerFIX40 }
+   where
+   mEmailBody = 
+      LT.insert (tnum tEmailType) tEmailType $
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tRelatdSym) tRelatdSym $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tLinesOfText) tLinesOfText $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+
+
+mNewOrderSingle :: FIXMessageSpec
+mNewOrderSingle = FMSpec
+   { msName = "NewOrderSingle"
+   , msType = C.pack "D"
+   , msHeader = headerFIX40
+   , msBody = mNewOrderSingleBody
+   , msTrailer = trailerFIX40 }
+   where
+   mNewOrderSingleBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mNewOrderList :: FIXMessageSpec
+mNewOrderList = FMSpec
+   { msName = "NewOrderList"
+   , msType = C.pack "E"
+   , msHeader = headerFIX40
+   , msBody = mNewOrderListBody
+   , msTrailer = trailerFIX40 }
+   where
+   mNewOrderListBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tListSeqNo) tListSeqNo $
+      LT.insert (tnum tListNoOrds) tListNoOrds $
+      LT.insert (tnum tListExecInst) tListExecInst $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mOrderCancelRequest :: FIXMessageSpec
+mOrderCancelRequest = FMSpec
+   { msName = "OrderCancelRequest"
+   , msType = C.pack "F"
+   , msHeader = headerFIX40
+   , msBody = mOrderCancelRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mOrderCancelRequestBody = 
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tCxlType) tCxlType $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mOrderCancelReplaceRequest :: FIXMessageSpec
+mOrderCancelReplaceRequest = FMSpec
+   { msName = "OrderCancelReplaceRequest"
+   , msType = C.pack "G"
+   , msHeader = headerFIX40
+   , msBody = mOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mOrderStatusRequest :: FIXMessageSpec
+mOrderStatusRequest = FMSpec
+   { msName = "OrderStatusRequest"
+   , msType = C.pack "H"
+   , msHeader = headerFIX40
+   , msBody = mOrderStatusRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mOrderStatusRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide       LT.new
+
+
+mAllocation :: FIXMessageSpec
+mAllocation = FMSpec
+   { msName = "Allocation"
+   , msType = C.pack "J"
+   , msHeader = headerFIX40
+   , msBody = mAllocationBody
+   , msTrailer = trailerFIX40 }
+   where
+   mAllocationBody = 
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tAllocTransType) tAllocTransType $
+      LT.insert (tnum tRefAllocID) tRefAllocID $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tShares) tShares $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees''' $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocShares) tAllocShares $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tExecBroker) tExecBroker $
+               LT.insert (tnum tClientID) tClientID $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tNoDlvyInst) tNoDlvyInst $
+               LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+               LT.insert (tnum tDlvyInst) tDlvyInst                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.insert (tnum tLastShares) tLastShares $
+               LT.insert (tnum tLastPx) tLastPx $
+               LT.insert (tnum tLastMkt) tLastMkt                LT.new
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType                LT.new
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tWaveNo) tWaveNo                LT.new
+
+
+
+mListCancelRequest :: FIXMessageSpec
+mListCancelRequest = FMSpec
+   { msName = "ListCancelRequest"
+   , msType = C.pack "K"
+   , msHeader = headerFIX40
+   , msBody = mListCancelRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mListCancelRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mListExecute :: FIXMessageSpec
+mListExecute = FMSpec
+   { msName = "ListExecute"
+   , msType = C.pack "L"
+   , msHeader = headerFIX40
+   , msBody = mListExecuteBody
+   , msTrailer = trailerFIX40 }
+   where
+   mListExecuteBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mListStatusRequest :: FIXMessageSpec
+mListStatusRequest = FMSpec
+   { msName = "ListStatusRequest"
+   , msType = C.pack "M"
+   , msHeader = headerFIX40
+   , msBody = mListStatusRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mListStatusRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mListStatus :: FIXMessageSpec
+mListStatus = FMSpec
+   { msName = "ListStatus"
+   , msType = C.pack "N"
+   , msHeader = headerFIX40
+   , msBody = mListStatusBody
+   , msTrailer = trailerFIX40 }
+   where
+   mListStatusBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tNoRpts) tNoRpts $
+      LT.insert (tnum tRptSeq) tRptSeq $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tCumQty) tCumQty $
+               LT.insert (tnum tCxlQty) tCxlQty $
+               LT.insert (tnum tAvgPx) tAvgPx                LT.new
+
+
+
+mAllocationACK :: FIXMessageSpec
+mAllocationACK = FMSpec
+   { msName = "AllocationACK"
+   , msType = C.pack "P"
+   , msHeader = headerFIX40
+   , msBody = mAllocationACKBody
+   , msTrailer = trailerFIX40 }
+   where
+   mAllocationACKBody = 
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mDontKnowTrade :: FIXMessageSpec
+mDontKnowTrade = FMSpec
+   { msName = "DontKnowTrade"
+   , msType = C.pack "Q"
+   , msHeader = headerFIX40
+   , msBody = mDontKnowTradeBody
+   , msTrailer = trailerFIX40 }
+   where
+   mDontKnowTradeBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tDKReason) tDKReason $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tLastShares) tLastShares $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mQuoteRequest :: FIXMessageSpec
+mQuoteRequest = FMSpec
+   { msName = "QuoteRequest"
+   , msType = C.pack "R"
+   , msHeader = headerFIX40
+   , msBody = mQuoteRequestBody
+   , msTrailer = trailerFIX40 }
+   where
+   mQuoteRequestBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty       LT.new
+
+
+mQuote :: FIXMessageSpec
+mQuote = FMSpec
+   { msName = "Quote"
+   , msType = C.pack "S"
+   , msHeader = headerFIX40
+   , msBody = mQuoteBody
+   , msTrailer = trailerFIX40 }
+   where
+   mQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime       LT.new
+
+
+fix40 :: FIXSpec
+fix40 = FSpec
+   { fsVersion = "FIX.4.0"
+   , fsHeader = headerFIX40
+   , fsTrailer = trailerFIX40
+   , fsMessages = fix40Messages 
+   , fsTags = fix40Tags }
+   where
+      fix40Messages =
+          LT.insert (msType mHeartbeat) mHeartbeat $
+          LT.insert (msType mTestRequest) mTestRequest $
+          LT.insert (msType mResendRequest) mResendRequest $
+          LT.insert (msType mReject) mReject $
+          LT.insert (msType mSequenceReset) mSequenceReset $
+          LT.insert (msType mLogout) mLogout $
+          LT.insert (msType mIndicationofInterest) mIndicationofInterest $
+          LT.insert (msType mAdvertisement) mAdvertisement $
+          LT.insert (msType mExecutionReport) mExecutionReport $
+          LT.insert (msType mOrderCancelReject) mOrderCancelReject $
+          LT.insert (msType mLogon) mLogon $
+          LT.insert (msType mNews) mNews $
+          LT.insert (msType mEmail) mEmail $
+          LT.insert (msType mNewOrderSingle) mNewOrderSingle $
+          LT.insert (msType mNewOrderList) mNewOrderList $
+          LT.insert (msType mOrderCancelRequest) mOrderCancelRequest $
+          LT.insert (msType mOrderCancelReplaceRequest) mOrderCancelReplaceRequest $
+          LT.insert (msType mOrderStatusRequest) mOrderStatusRequest $
+          LT.insert (msType mAllocation) mAllocation $
+          LT.insert (msType mListCancelRequest) mListCancelRequest $
+          LT.insert (msType mListExecute) mListExecute $
+          LT.insert (msType mListStatusRequest) mListStatusRequest $
+          LT.insert (msType mListStatus) mListStatus $
+          LT.insert (msType mAllocationACK) mAllocationACK $
+          LT.insert (msType mDontKnowTrade) mDontKnowTrade $
+          LT.insert (msType mQuoteRequest) mQuoteRequest $
+          LT.insert (msType mQuote) mQuote           LT.new 
+      fix40Tags =
+          LT.insert (tnum tAccount) tAccount $
+          LT.insert (tnum tAdvId) tAdvId $
+          LT.insert (tnum tAdvRefID) tAdvRefID $
+          LT.insert (tnum tAdvSide) tAdvSide $
+          LT.insert (tnum tAdvTransType) tAdvTransType $
+          LT.insert (tnum tAvgPx) tAvgPx $
+          LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+          LT.insert (tnum tBeginString) tBeginString $
+          LT.insert (tnum tBodyLength) tBodyLength $
+          LT.insert (tnum tCheckSum) tCheckSum $
+          LT.insert (tnum tClOrdID) tClOrdID $
+          LT.insert (tnum tCommission) tCommission $
+          LT.insert (tnum tCommType) tCommType $
+          LT.insert (tnum tCumQty) tCumQty $
+          LT.insert (tnum tCurrency) tCurrency $
+          LT.insert (tnum tEndSeqNo) tEndSeqNo $
+          LT.insert (tnum tExecID) tExecID $
+          LT.insert (tnum tExecInst) tExecInst $
+          LT.insert (tnum tExecRefID) tExecRefID $
+          LT.insert (tnum tExecTransType) tExecTransType $
+          LT.insert (tnum tHandlInst) tHandlInst $
+          LT.insert (tnum tIDSource) tIDSource $
+          LT.insert (tnum tIOIid) tIOIid $
+          LT.insert (tnum tIOIOthSvc) tIOIOthSvc $
+          LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+          LT.insert (tnum tIOIRefID) tIOIRefID $
+          LT.insert (tnum tIOIShares) tIOIShares $
+          LT.insert (tnum tIOITransType) tIOITransType $
+          LT.insert (tnum tLastCapacity) tLastCapacity $
+          LT.insert (tnum tLastMkt) tLastMkt $
+          LT.insert (tnum tLastPx) tLastPx $
+          LT.insert (tnum tLastShares) tLastShares $
+          LT.insert (tnum tLinesOfText) tLinesOfText $
+          LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+          LT.insert (tnum tMsgType) tMsgType $
+          LT.insert (tnum tNewSeqNo) tNewSeqNo $
+          LT.insert (tnum tOrderID) tOrderID $
+          LT.insert (tnum tOrderQty) tOrderQty $
+          LT.insert (tnum tOrdStatus) tOrdStatus $
+          LT.insert (tnum tOrdType) tOrdType $
+          LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+          LT.insert (tnum tOrigTime) tOrigTime $
+          LT.insert (tnum tPossDupFlag) tPossDupFlag $
+          LT.insert (tnum tPrice) tPrice $
+          LT.insert (tnum tRefSeqNum) tRefSeqNum $
+          LT.insert (tnum tRelatdSym) tRelatdSym $
+          LT.insert (tnum tRule80A) tRule80A $
+          LT.insert (tnum tSecurityID) tSecurityID $
+          LT.insert (tnum tSenderCompID) tSenderCompID $
+          LT.insert (tnum tSenderSubID) tSenderSubID $
+          LT.insert (tnum tSendingDate) tSendingDate $
+          LT.insert (tnum tSendingTime) tSendingTime $
+          LT.insert (tnum tShares) tShares $
+          LT.insert (tnum tSide) tSide $
+          LT.insert (tnum tSymbol) tSymbol $
+          LT.insert (tnum tTargetCompID) tTargetCompID $
+          LT.insert (tnum tTargetSubID) tTargetSubID $
+          LT.insert (tnum tText) tText $
+          LT.insert (tnum tTimeInForce) tTimeInForce $
+          LT.insert (tnum tTransactTime) tTransactTime $
+          LT.insert (tnum tUrgency) tUrgency $
+          LT.insert (tnum tValidUntilTime) tValidUntilTime $
+          LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+          LT.insert (tnum tFutSettDate) tFutSettDate $
+          LT.insert (tnum tSymbolSfx) tSymbolSfx $
+          LT.insert (tnum tListID) tListID $
+          LT.insert (tnum tListSeqNo) tListSeqNo $
+          LT.insert (tnum tListNoOrds) tListNoOrds $
+          LT.insert (tnum tListExecInst) tListExecInst $
+          LT.insert (tnum tAllocID) tAllocID $
+          LT.insert (tnum tAllocTransType) tAllocTransType $
+          LT.insert (tnum tRefAllocID) tRefAllocID $
+          LT.insert (tnum tNoOrders) tNoOrders $
+          LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+          LT.insert (tnum tTradeDate) tTradeDate $
+          LT.insert (tnum tExecBroker) tExecBroker $
+          LT.insert (tnum tOpenClose) tOpenClose $
+          LT.insert (tnum tNoAllocs) tNoAllocs $
+          LT.insert (tnum tAllocAccount) tAllocAccount $
+          LT.insert (tnum tAllocShares) tAllocShares $
+          LT.insert (tnum tProcessCode) tProcessCode $
+          LT.insert (tnum tNoRpts) tNoRpts $
+          LT.insert (tnum tRptSeq) tRptSeq $
+          LT.insert (tnum tCxlQty) tCxlQty $
+          LT.insert (tnum tNoDlvyInst) tNoDlvyInst $
+          LT.insert (tnum tDlvyInst) tDlvyInst $
+          LT.insert (tnum tAllocStatus) tAllocStatus $
+          LT.insert (tnum tAllocRejCode) tAllocRejCode $
+          LT.insert (tnum tSignature) tSignature $
+          LT.insert (tnum tSecureDataLen) tSecureDataLen $
+          LT.insert (tnum tSecureData) tSecureData $
+          LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+          LT.insert (tnum tSignatureLength) tSignatureLength $
+          LT.insert (tnum tEmailType) tEmailType $
+          LT.insert (tnum tRawDataLength) tRawDataLength $
+          LT.insert (tnum tRawData) tRawData $
+          LT.insert (tnum tPossResend) tPossResend $
+          LT.insert (tnum tEncryptMethod) tEncryptMethod $
+          LT.insert (tnum tStopPx) tStopPx $
+          LT.insert (tnum tExDestination) tExDestination $
+          LT.insert (tnum tCxlRejReason) tCxlRejReason $
+          LT.insert (tnum tOrdRejReason) tOrdRejReason $
+          LT.insert (tnum tIOIQualifier) tIOIQualifier $
+          LT.insert (tnum tWaveNo) tWaveNo $
+          LT.insert (tnum tIssuer) tIssuer $
+          LT.insert (tnum tSecurityDesc) tSecurityDesc $
+          LT.insert (tnum tHeartBtInt) tHeartBtInt $
+          LT.insert (tnum tClientID) tClientID $
+          LT.insert (tnum tMinQty) tMinQty $
+          LT.insert (tnum tMaxFloor) tMaxFloor $
+          LT.insert (tnum tTestReqID) tTestReqID $
+          LT.insert (tnum tReportToExch) tReportToExch $
+          LT.insert (tnum tLocateReqd) tLocateReqd $
+          LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+          LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+          LT.insert (tnum tQuoteID) tQuoteID $
+          LT.insert (tnum tNetMoney) tNetMoney $
+          LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+          LT.insert (tnum tSettlCurrency) tSettlCurrency $
+          LT.insert (tnum tForexReq) tForexReq $
+          LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+          LT.insert (tnum tGapFillFlag) tGapFillFlag $
+          LT.insert (tnum tNoExecs) tNoExecs $
+          LT.insert (tnum tCxlType) tCxlType $
+          LT.insert (tnum tExpireTime) tExpireTime $
+          LT.insert (tnum tDKReason) tDKReason $
+          LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+          LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+          LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+          LT.insert (tnum tQuoteReqID) tQuoteReqID $
+          LT.insert (tnum tBidPx) tBidPx $
+          LT.insert (tnum tOfferPx) tOfferPx $
+          LT.insert (tnum tBidSize) tBidSize $
+          LT.insert (tnum tOfferSize) tOfferSize $
+          LT.insert (tnum tNoMiscFees) tNoMiscFees $
+          LT.insert (tnum tMiscFeeAmt) tMiscFeeAmt $
+          LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+          LT.insert (tnum tMiscFeeType) tMiscFeeType $
+          LT.insert (tnum tPrevClosePx) tPrevClosePx $
+          LT.new 
diff --git a/src/Data/FIX/Spec/FIX41.hs b/src/Data/FIX/Spec/FIX41.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Spec/FIX41.hs
@@ -0,0 +1,2756 @@
+module Data.FIX.Spec.FIX41 ( fix41 ) where
+import qualified Data.ByteString.Char8 as C
+import qualified Data.LookupTable as LT ( new, insert )
+import Data.FIX.Message
+import Data.FIX.Parser
+import Data.Functor ( (<$>) )
+import Data.FIX.Arbitrary 
+import Test.QuickCheck ( arbitrary )
+
+
+tAccount :: FIXTag
+tAccount = FIXTag 
+   { tName = "Account"
+   , tnum = 1
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvId :: FIXTag
+tAdvId = FIXTag 
+   { tName = "AdvId"
+   , tnum = 2
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvRefID :: FIXTag
+tAdvRefID = FIXTag 
+   { tName = "AdvRefID"
+   , tnum = 3
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvSide :: FIXTag
+tAdvSide = FIXTag 
+   { tName = "AdvSide"
+   , tnum = 4
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvTransType :: FIXTag
+tAdvTransType = FIXTag 
+   { tName = "AdvTransType"
+   , tnum = 5
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAvgPx :: FIXTag
+tAvgPx = FIXTag 
+   { tName = "AvgPx"
+   , tnum = 6
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBeginSeqNo :: FIXTag
+tBeginSeqNo = FIXTag 
+   { tName = "BeginSeqNo"
+   , tnum = 7
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdID :: FIXTag
+tClOrdID = FIXTag 
+   { tName = "ClOrdID"
+   , tnum = 11
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCommission :: FIXTag
+tCommission = FIXTag 
+   { tName = "Commission"
+   , tnum = 12
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCommType :: FIXTag
+tCommType = FIXTag 
+   { tName = "CommType"
+   , tnum = 13
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCumQty :: FIXTag
+tCumQty = FIXTag 
+   { tName = "CumQty"
+   , tnum = 14
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCurrency :: FIXTag
+tCurrency = FIXTag 
+   { tName = "Currency"
+   , tnum = 15
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEndSeqNo :: FIXTag
+tEndSeqNo = FIXTag 
+   { tName = "EndSeqNo"
+   , tnum = 16
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecID :: FIXTag
+tExecID = FIXTag 
+   { tName = "ExecID"
+   , tnum = 17
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecInst :: FIXTag
+tExecInst = FIXTag 
+   { tName = "ExecInst"
+   , tnum = 18
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecRefID :: FIXTag
+tExecRefID = FIXTag 
+   { tName = "ExecRefID"
+   , tnum = 19
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecTransType :: FIXTag
+tExecTransType = FIXTag 
+   { tName = "ExecTransType"
+   , tnum = 20
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHandlInst :: FIXTag
+tHandlInst = FIXTag 
+   { tName = "HandlInst"
+   , tnum = 21
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIDSource :: FIXTag
+tIDSource = FIXTag 
+   { tName = "IDSource"
+   , tnum = 22
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIid :: FIXTag
+tIOIid = FIXTag 
+   { tName = "IOIid"
+   , tnum = 23
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIOthSvc :: FIXTag
+tIOIOthSvc = FIXTag 
+   { tName = "IOIOthSvc"
+   , tnum = 24
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIQltyInd :: FIXTag
+tIOIQltyInd = FIXTag 
+   { tName = "IOIQltyInd"
+   , tnum = 25
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIRefID :: FIXTag
+tIOIRefID = FIXTag 
+   { tName = "IOIRefID"
+   , tnum = 26
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIShares :: FIXTag
+tIOIShares = FIXTag 
+   { tName = "IOIShares"
+   , tnum = 27
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOITransType :: FIXTag
+tIOITransType = FIXTag 
+   { tName = "IOITransType"
+   , tnum = 28
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastCapacity :: FIXTag
+tLastCapacity = FIXTag 
+   { tName = "LastCapacity"
+   , tnum = 29
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastMkt :: FIXTag
+tLastMkt = FIXTag 
+   { tName = "LastMkt"
+   , tnum = 30
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastPx :: FIXTag
+tLastPx = FIXTag 
+   { tName = "LastPx"
+   , tnum = 31
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastShares :: FIXTag
+tLastShares = FIXTag 
+   { tName = "LastShares"
+   , tnum = 32
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLinesOfText :: FIXTag
+tLinesOfText = FIXTag 
+   { tName = "LinesOfText"
+   , tnum = 33
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgSeqNum :: FIXTag
+tMsgSeqNum = FIXTag 
+   { tName = "MsgSeqNum"
+   , tnum = 34
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNewSeqNo :: FIXTag
+tNewSeqNo = FIXTag 
+   { tName = "NewSeqNo"
+   , tnum = 36
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderID :: FIXTag
+tOrderID = FIXTag 
+   { tName = "OrderID"
+   , tnum = 37
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrderQty :: FIXTag
+tOrderQty = FIXTag 
+   { tName = "OrderQty"
+   , tnum = 38
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdStatus :: FIXTag
+tOrdStatus = FIXTag 
+   { tName = "OrdStatus"
+   , tnum = 39
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrdType :: FIXTag
+tOrdType = FIXTag 
+   { tName = "OrdType"
+   , tnum = 40
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigClOrdID :: FIXTag
+tOrigClOrdID = FIXTag 
+   { tName = "OrigClOrdID"
+   , tnum = 41
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigTime :: FIXTag
+tOrigTime = FIXTag 
+   { tName = "OrigTime"
+   , tnum = 42
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tPossDupFlag :: FIXTag
+tPossDupFlag = FIXTag 
+   { tName = "PossDupFlag"
+   , tnum = 43
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrice :: FIXTag
+tPrice = FIXTag 
+   { tName = "Price"
+   , tnum = 44
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRefSeqNum :: FIXTag
+tRefSeqNum = FIXTag 
+   { tName = "RefSeqNum"
+   , tnum = 45
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRelatdSym :: FIXTag
+tRelatdSym = FIXTag 
+   { tName = "RelatdSym"
+   , tnum = 46
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRule80A :: FIXTag
+tRule80A = FIXTag 
+   { tName = "Rule80A"
+   , tnum = 47
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityID :: FIXTag
+tSecurityID = FIXTag 
+   { tName = "SecurityID"
+   , tnum = 48
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSenderCompID :: FIXTag
+tSenderCompID = FIXTag 
+   { tName = "SenderCompID"
+   , tnum = 49
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSenderSubID :: FIXTag
+tSenderSubID = FIXTag 
+   { tName = "SenderSubID"
+   , tnum = 50
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSendingDate :: FIXTag
+tSendingDate = FIXTag 
+   { tName = "SendingDate"
+   , tnum = 51
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSendingTime :: FIXTag
+tSendingTime = FIXTag 
+   { tName = "SendingTime"
+   , tnum = 52
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tShares :: FIXTag
+tShares = FIXTag 
+   { tName = "Shares"
+   , tnum = 53
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSide :: FIXTag
+tSide = FIXTag 
+   { tName = "Side"
+   , tnum = 54
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSymbol :: FIXTag
+tSymbol = FIXTag 
+   { tName = "Symbol"
+   , tnum = 55
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTargetCompID :: FIXTag
+tTargetCompID = FIXTag 
+   { tName = "TargetCompID"
+   , tnum = 56
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTargetSubID :: FIXTag
+tTargetSubID = FIXTag 
+   { tName = "TargetSubID"
+   , tnum = 57
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tText :: FIXTag
+tText = FIXTag 
+   { tName = "Text"
+   , tnum = 58
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTimeInForce :: FIXTag
+tTimeInForce = FIXTag 
+   { tName = "TimeInForce"
+   , tnum = 59
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTransactTime :: FIXTag
+tTransactTime = FIXTag 
+   { tName = "TransactTime"
+   , tnum = 60
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tUrgency :: FIXTag
+tUrgency = FIXTag 
+   { tName = "Urgency"
+   , tnum = 61
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tValidUntilTime :: FIXTag
+tValidUntilTime = FIXTag 
+   { tName = "ValidUntilTime"
+   , tnum = 62
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tSettlmntTyp :: FIXTag
+tSettlmntTyp = FIXTag 
+   { tName = "SettlmntTyp"
+   , tnum = 63
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tFutSettDate :: FIXTag
+tFutSettDate = FIXTag 
+   { tName = "FutSettDate"
+   , tnum = 64
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSymbolSfx :: FIXTag
+tSymbolSfx = FIXTag 
+   { tName = "SymbolSfx"
+   , tnum = 65
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tListID :: FIXTag
+tListID = FIXTag 
+   { tName = "ListID"
+   , tnum = 66
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tListSeqNo :: FIXTag
+tListSeqNo = FIXTag 
+   { tName = "ListSeqNo"
+   , tnum = 67
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListNoOrds :: FIXTag
+tListNoOrds = FIXTag 
+   { tName = "ListNoOrds"
+   , tnum = 68
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListExecInst :: FIXTag
+tListExecInst = FIXTag 
+   { tName = "ListExecInst"
+   , tnum = 69
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocID :: FIXTag
+tAllocID = FIXTag 
+   { tName = "AllocID"
+   , tnum = 70
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocTransType :: FIXTag
+tAllocTransType = FIXTag 
+   { tName = "AllocTransType"
+   , tnum = 71
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRefAllocID :: FIXTag
+tRefAllocID = FIXTag 
+   { tName = "RefAllocID"
+   , tnum = 72
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoOrders :: FIXTag
+tNoOrders = FIXTag 
+   { tName = "NoOrders"
+   , tnum = 73
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAvgPrxPrecision :: FIXTag
+tAvgPrxPrecision = FIXTag 
+   { tName = "AvgPrxPrecision"
+   , tnum = 74
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeDate :: FIXTag
+tTradeDate = FIXTag 
+   { tName = "TradeDate"
+   , tnum = 75
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExecBroker :: FIXTag
+tExecBroker = FIXTag 
+   { tName = "ExecBroker"
+   , tnum = 76
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOpenClose :: FIXTag
+tOpenClose = FIXTag 
+   { tName = "OpenClose"
+   , tnum = 77
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoAllocs :: FIXTag
+tNoAllocs = FIXTag 
+   { tName = "NoAllocs"
+   , tnum = 78
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocAccount :: FIXTag
+tAllocAccount = FIXTag 
+   { tName = "AllocAccount"
+   , tnum = 79
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocShares :: FIXTag
+tAllocShares = FIXTag 
+   { tName = "AllocShares"
+   , tnum = 80
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tProcessCode :: FIXTag
+tProcessCode = FIXTag 
+   { tName = "ProcessCode"
+   , tnum = 81
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoRpts :: FIXTag
+tNoRpts = FIXTag 
+   { tName = "NoRpts"
+   , tnum = 82
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRptSeq :: FIXTag
+tRptSeq = FIXTag 
+   { tName = "RptSeq"
+   , tnum = 83
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlQty :: FIXTag
+tCxlQty = FIXTag 
+   { tName = "CxlQty"
+   , tnum = 84
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoDlvyInst :: FIXTag
+tNoDlvyInst = FIXTag 
+   { tName = "NoDlvyInst"
+   , tnum = 85
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDlvyInst :: FIXTag
+tDlvyInst = FIXTag 
+   { tName = "DlvyInst"
+   , tnum = 86
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocStatus :: FIXTag
+tAllocStatus = FIXTag 
+   { tName = "AllocStatus"
+   , tnum = 87
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocRejCode :: FIXTag
+tAllocRejCode = FIXTag 
+   { tName = "AllocRejCode"
+   , tnum = 88
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSignature :: FIXTag
+tSignature = FIXTag 
+   { tName = "Signature"
+   , tnum = 89
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSecureDataLen :: FIXTag
+tSecureDataLen = FIXTag 
+   { tName = "SecureDataLen"
+   , tnum = 90
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecureData :: FIXTag
+tSecureData = FIXTag 
+   { tName = "SecureData"
+   , tnum = 91
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tBrokerOfCredit :: FIXTag
+tBrokerOfCredit = FIXTag 
+   { tName = "BrokerOfCredit"
+   , tnum = 92
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSignatureLength :: FIXTag
+tSignatureLength = FIXTag 
+   { tName = "SignatureLength"
+   , tnum = 93
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEmailType :: FIXTag
+tEmailType = FIXTag 
+   { tName = "EmailType"
+   , tnum = 94
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRawDataLength :: FIXTag
+tRawDataLength = FIXTag 
+   { tName = "RawDataLength"
+   , tnum = 95
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRawData :: FIXTag
+tRawData = FIXTag 
+   { tName = "RawData"
+   , tnum = 96
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPossResend :: FIXTag
+tPossResend = FIXTag 
+   { tName = "PossResend"
+   , tnum = 97
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEncryptMethod :: FIXTag
+tEncryptMethod = FIXTag 
+   { tName = "EncryptMethod"
+   , tnum = 98
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStopPx :: FIXTag
+tStopPx = FIXTag 
+   { tName = "StopPx"
+   , tnum = 99
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExDestination :: FIXTag
+tExDestination = FIXTag 
+   { tName = "ExDestination"
+   , tnum = 100
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCxlRejReason :: FIXTag
+tCxlRejReason = FIXTag 
+   { tName = "CxlRejReason"
+   , tnum = 102
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdRejReason :: FIXTag
+tOrdRejReason = FIXTag 
+   { tName = "OrdRejReason"
+   , tnum = 103
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIQualifier :: FIXTag
+tIOIQualifier = FIXTag 
+   { tName = "IOIQualifier"
+   , tnum = 104
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tWaveNo :: FIXTag
+tWaveNo = FIXTag 
+   { tName = "WaveNo"
+   , tnum = 105
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIssuer :: FIXTag
+tIssuer = FIXTag 
+   { tName = "Issuer"
+   , tnum = 106
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityDesc :: FIXTag
+tSecurityDesc = FIXTag 
+   { tName = "SecurityDesc"
+   , tnum = 107
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHeartBtInt :: FIXTag
+tHeartBtInt = FIXTag 
+   { tName = "HeartBtInt"
+   , tnum = 108
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClientID :: FIXTag
+tClientID = FIXTag 
+   { tName = "ClientID"
+   , tnum = 109
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMinQty :: FIXTag
+tMinQty = FIXTag 
+   { tName = "MinQty"
+   , tnum = 110
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxFloor :: FIXTag
+tMaxFloor = FIXTag 
+   { tName = "MaxFloor"
+   , tnum = 111
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTestReqID :: FIXTag
+tTestReqID = FIXTag 
+   { tName = "TestReqID"
+   , tnum = 112
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tReportToExch :: FIXTag
+tReportToExch = FIXTag 
+   { tName = "ReportToExch"
+   , tnum = 113
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLocateReqd :: FIXTag
+tLocateReqd = FIXTag 
+   { tName = "LocateReqd"
+   , tnum = 114
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOnBehalfOfCompID :: FIXTag
+tOnBehalfOfCompID = FIXTag 
+   { tName = "OnBehalfOfCompID"
+   , tnum = 115
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOnBehalfOfSubID :: FIXTag
+tOnBehalfOfSubID = FIXTag 
+   { tName = "OnBehalfOfSubID"
+   , tnum = 116
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tQuoteID :: FIXTag
+tQuoteID = FIXTag 
+   { tName = "QuoteID"
+   , tnum = 117
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNetMoney :: FIXTag
+tNetMoney = FIXTag 
+   { tName = "NetMoney"
+   , tnum = 118
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrAmt :: FIXTag
+tSettlCurrAmt = FIXTag 
+   { tName = "SettlCurrAmt"
+   , tnum = 119
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrency :: FIXTag
+tSettlCurrency = FIXTag 
+   { tName = "SettlCurrency"
+   , tnum = 120
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tForexReq :: FIXTag
+tForexReq = FIXTag 
+   { tName = "ForexReq"
+   , tnum = 121
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigSendingTime :: FIXTag
+tOrigSendingTime = FIXTag 
+   { tName = "OrigSendingTime"
+   , tnum = 122
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tGapFillFlag :: FIXTag
+tGapFillFlag = FIXTag 
+   { tName = "GapFillFlag"
+   , tnum = 123
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoExecs :: FIXTag
+tNoExecs = FIXTag 
+   { tName = "NoExecs"
+   , tnum = 124
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlType :: FIXTag
+tCxlType = FIXTag 
+   { tName = "CxlType"
+   , tnum = 125
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExpireTime :: FIXTag
+tExpireTime = FIXTag 
+   { tName = "ExpireTime"
+   , tnum = 126
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tDKReason :: FIXTag
+tDKReason = FIXTag 
+   { tName = "DKReason"
+   , tnum = 127
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToCompID :: FIXTag
+tDeliverToCompID = FIXTag 
+   { tName = "DeliverToCompID"
+   , tnum = 128
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToSubID :: FIXTag
+tDeliverToSubID = FIXTag 
+   { tName = "DeliverToSubID"
+   , tnum = 129
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOINaturalFlag :: FIXTag
+tIOINaturalFlag = FIXTag 
+   { tName = "IOINaturalFlag"
+   , tnum = 130
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tQuoteReqID :: FIXTag
+tQuoteReqID = FIXTag 
+   { tName = "QuoteReqID"
+   , tnum = 131
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBidPx :: FIXTag
+tBidPx = FIXTag 
+   { tName = "BidPx"
+   , tnum = 132
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferPx :: FIXTag
+tOfferPx = FIXTag 
+   { tName = "OfferPx"
+   , tnum = 133
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidSize :: FIXTag
+tBidSize = FIXTag 
+   { tName = "BidSize"
+   , tnum = 134
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOfferSize :: FIXTag
+tOfferSize = FIXTag 
+   { tName = "OfferSize"
+   , tnum = 135
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMiscFees :: FIXTag
+tNoMiscFees = FIXTag 
+   { tName = "NoMiscFees"
+   , tnum = 136
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMiscFeeAmt :: FIXTag
+tMiscFeeAmt = FIXTag 
+   { tName = "MiscFeeAmt"
+   , tnum = 137
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMiscFeeCurr :: FIXTag
+tMiscFeeCurr = FIXTag 
+   { tName = "MiscFeeCurr"
+   , tnum = 138
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMiscFeeType :: FIXTag
+tMiscFeeType = FIXTag 
+   { tName = "MiscFeeType"
+   , tnum = 139
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrevClosePx :: FIXTag
+tPrevClosePx = FIXTag 
+   { tName = "PrevClosePx"
+   , tnum = 140
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tResetSeqNumFlag :: FIXTag
+tResetSeqNumFlag = FIXTag 
+   { tName = "ResetSeqNumFlag"
+   , tnum = 141
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSenderLocationID :: FIXTag
+tSenderLocationID = FIXTag 
+   { tName = "SenderLocationID"
+   , tnum = 142
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTargetLocationID :: FIXTag
+tTargetLocationID = FIXTag 
+   { tName = "TargetLocationID"
+   , tnum = 143
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOnBehalfOfLocationID :: FIXTag
+tOnBehalfOfLocationID = FIXTag 
+   { tName = "OnBehalfOfLocationID"
+   , tnum = 144
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToLocationID :: FIXTag
+tDeliverToLocationID = FIXTag 
+   { tName = "DeliverToLocationID"
+   , tnum = 145
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoRelatedSym :: FIXTag
+tNoRelatedSym = FIXTag 
+   { tName = "NoRelatedSym"
+   , tnum = 146
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSubject :: FIXTag
+tSubject = FIXTag 
+   { tName = "Subject"
+   , tnum = 147
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHeadline :: FIXTag
+tHeadline = FIXTag 
+   { tName = "Headline"
+   , tnum = 148
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tURLLink :: FIXTag
+tURLLink = FIXTag 
+   { tName = "URLLink"
+   , tnum = 149
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecType :: FIXTag
+tExecType = FIXTag 
+   { tName = "ExecType"
+   , tnum = 150
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLeavesQty :: FIXTag
+tLeavesQty = FIXTag 
+   { tName = "LeavesQty"
+   , tnum = 151
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCashOrderQty :: FIXTag
+tCashOrderQty = FIXTag 
+   { tName = "CashOrderQty"
+   , tnum = 152
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocAvgPx :: FIXTag
+tAllocAvgPx = FIXTag 
+   { tName = "AllocAvgPx"
+   , tnum = 153
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocNetMoney :: FIXTag
+tAllocNetMoney = FIXTag 
+   { tName = "AllocNetMoney"
+   , tnum = 154
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRate :: FIXTag
+tSettlCurrFxRate = FIXTag 
+   { tName = "SettlCurrFxRate"
+   , tnum = 155
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRateCalc :: FIXTag
+tSettlCurrFxRateCalc = FIXTag 
+   { tName = "SettlCurrFxRateCalc"
+   , tnum = 156
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNumDaysInterest :: FIXTag
+tNumDaysInterest = FIXTag 
+   { tName = "NumDaysInterest"
+   , tnum = 157
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAccruedInterestRate :: FIXTag
+tAccruedInterestRate = FIXTag 
+   { tName = "AccruedInterestRate"
+   , tnum = 158
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAccruedInterestAmt :: FIXTag
+tAccruedInterestAmt = FIXTag 
+   { tName = "AccruedInterestAmt"
+   , tnum = 159
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlInstMode :: FIXTag
+tSettlInstMode = FIXTag 
+   { tName = "SettlInstMode"
+   , tnum = 160
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocText :: FIXTag
+tAllocText = FIXTag 
+   { tName = "AllocText"
+   , tnum = 161
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlInstID :: FIXTag
+tSettlInstID = FIXTag 
+   { tName = "SettlInstID"
+   , tnum = 162
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlInstTransType :: FIXTag
+tSettlInstTransType = FIXTag 
+   { tName = "SettlInstTransType"
+   , tnum = 163
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEmailThreadID :: FIXTag
+tEmailThreadID = FIXTag 
+   { tName = "EmailThreadID"
+   , tnum = 164
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlInstSource :: FIXTag
+tSettlInstSource = FIXTag 
+   { tName = "SettlInstSource"
+   , tnum = 165
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlLocation :: FIXTag
+tSettlLocation = FIXTag 
+   { tName = "SettlLocation"
+   , tnum = 166
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityType :: FIXTag
+tSecurityType = FIXTag 
+   { tName = "SecurityType"
+   , tnum = 167
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEffectiveTime :: FIXTag
+tEffectiveTime = FIXTag 
+   { tName = "EffectiveTime"
+   , tnum = 168
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tStandInstDbType :: FIXTag
+tStandInstDbType = FIXTag 
+   { tName = "StandInstDbType"
+   , tnum = 169
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStandInstDbName :: FIXTag
+tStandInstDbName = FIXTag 
+   { tName = "StandInstDbName"
+   , tnum = 170
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tStandInstDbID :: FIXTag
+tStandInstDbID = FIXTag 
+   { tName = "StandInstDbID"
+   , tnum = 171
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlDeliveryType :: FIXTag
+tSettlDeliveryType = FIXTag 
+   { tName = "SettlDeliveryType"
+   , tnum = 172
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlDepositoryCode :: FIXTag
+tSettlDepositoryCode = FIXTag 
+   { tName = "SettlDepositoryCode"
+   , tnum = 173
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlBrkrCode :: FIXTag
+tSettlBrkrCode = FIXTag 
+   { tName = "SettlBrkrCode"
+   , tnum = 174
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlInstCode :: FIXTag
+tSettlInstCode = FIXTag 
+   { tName = "SettlInstCode"
+   , tnum = 175
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecuritySettlAgentName :: FIXTag
+tSecuritySettlAgentName = FIXTag 
+   { tName = "SecuritySettlAgentName"
+   , tnum = 176
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecuritySettlAgentCode :: FIXTag
+tSecuritySettlAgentCode = FIXTag 
+   { tName = "SecuritySettlAgentCode"
+   , tnum = 177
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecuritySettlAgentAcctNum :: FIXTag
+tSecuritySettlAgentAcctNum = FIXTag 
+   { tName = "SecuritySettlAgentAcctNum"
+   , tnum = 178
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecuritySettlAgentAcctName :: FIXTag
+tSecuritySettlAgentAcctName = FIXTag 
+   { tName = "SecuritySettlAgentAcctName"
+   , tnum = 179
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecuritySettlAgentContactName :: FIXTag
+tSecuritySettlAgentContactName = FIXTag 
+   { tName = "SecuritySettlAgentContactName"
+   , tnum = 180
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecuritySettlAgentContactPhone :: FIXTag
+tSecuritySettlAgentContactPhone = FIXTag 
+   { tName = "SecuritySettlAgentContactPhone"
+   , tnum = 181
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashSettlAgentName :: FIXTag
+tCashSettlAgentName = FIXTag 
+   { tName = "CashSettlAgentName"
+   , tnum = 182
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashSettlAgentCode :: FIXTag
+tCashSettlAgentCode = FIXTag 
+   { tName = "CashSettlAgentCode"
+   , tnum = 183
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashSettlAgentAcctNum :: FIXTag
+tCashSettlAgentAcctNum = FIXTag 
+   { tName = "CashSettlAgentAcctNum"
+   , tnum = 184
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashSettlAgentAcctName :: FIXTag
+tCashSettlAgentAcctName = FIXTag 
+   { tName = "CashSettlAgentAcctName"
+   , tnum = 185
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashSettlAgentContactName :: FIXTag
+tCashSettlAgentContactName = FIXTag 
+   { tName = "CashSettlAgentContactName"
+   , tnum = 186
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashSettlAgentContactPhone :: FIXTag
+tCashSettlAgentContactPhone = FIXTag 
+   { tName = "CashSettlAgentContactPhone"
+   , tnum = 187
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBidSpotRate :: FIXTag
+tBidSpotRate = FIXTag 
+   { tName = "BidSpotRate"
+   , tnum = 188
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidForwardPoints :: FIXTag
+tBidForwardPoints = FIXTag 
+   { tName = "BidForwardPoints"
+   , tnum = 189
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSpotRate :: FIXTag
+tOfferSpotRate = FIXTag 
+   { tName = "OfferSpotRate"
+   , tnum = 190
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferForwardPoints :: FIXTag
+tOfferForwardPoints = FIXTag 
+   { tName = "OfferForwardPoints"
+   , tnum = 191
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrderQty2 :: FIXTag
+tOrderQty2 = FIXTag 
+   { tName = "OrderQty2"
+   , tnum = 192
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFutSettDate2 :: FIXTag
+tFutSettDate2 = FIXTag 
+   { tName = "FutSettDate2"
+   , tnum = 193
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLastSpotRate :: FIXTag
+tLastSpotRate = FIXTag 
+   { tName = "LastSpotRate"
+   , tnum = 194
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastForwardPoints :: FIXTag
+tLastForwardPoints = FIXTag 
+   { tName = "LastForwardPoints"
+   , tnum = 195
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocLinkID :: FIXTag
+tAllocLinkID = FIXTag 
+   { tName = "AllocLinkID"
+   , tnum = 196
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocLinkType :: FIXTag
+tAllocLinkType = FIXTag 
+   { tName = "AllocLinkType"
+   , tnum = 197
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecondaryOrderID :: FIXTag
+tSecondaryOrderID = FIXTag 
+   { tName = "SecondaryOrderID"
+   , tnum = 198
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoIOIQualifiers :: FIXTag
+tNoIOIQualifiers = FIXTag 
+   { tName = "NoIOIQualifiers"
+   , tnum = 199
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityMonthYear :: FIXTag
+tMaturityMonthYear = FIXTag 
+   { tName = "MaturityMonthYear"
+   , tnum = 200
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tPutOrCall :: FIXTag
+tPutOrCall = FIXTag 
+   { tName = "PutOrCall"
+   , tnum = 201
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStrikePrice :: FIXTag
+tStrikePrice = FIXTag 
+   { tName = "StrikePrice"
+   , tnum = 202
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCoveredOrUncovered :: FIXTag
+tCoveredOrUncovered = FIXTag 
+   { tName = "CoveredOrUncovered"
+   , tnum = 203
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCustomerOrFirm :: FIXTag
+tCustomerOrFirm = FIXTag 
+   { tName = "CustomerOrFirm"
+   , tnum = 204
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityDay :: FIXTag
+tMaturityDay = FIXTag 
+   { tName = "MaturityDay"
+   , tnum = 205
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOptAttribute :: FIXTag
+tOptAttribute = FIXTag 
+   { tName = "OptAttribute"
+   , tnum = 206
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityExchange :: FIXTag
+tSecurityExchange = FIXTag 
+   { tName = "SecurityExchange"
+   , tnum = 207
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNotifyBrokerOfCredit :: FIXTag
+tNotifyBrokerOfCredit = FIXTag 
+   { tName = "NotifyBrokerOfCredit"
+   , tnum = 208
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocHandlInst :: FIXTag
+tAllocHandlInst = FIXTag 
+   { tName = "AllocHandlInst"
+   , tnum = 209
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxShow :: FIXTag
+tMaxShow = FIXTag 
+   { tName = "MaxShow"
+   , tnum = 210
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPegDifference :: FIXTag
+tPegDifference = FIXTag 
+   { tName = "PegDifference"
+   , tnum = 211
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+headerFIX41 :: FIXTags
+headerFIX41 = 
+   LT.insert (tnum tSenderCompID) tSenderCompID $
+   LT.insert (tnum tTargetCompID) tTargetCompID $
+   LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+   LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+   LT.insert (tnum tSecureDataLen) tSecureDataLen $
+   LT.insert (tnum tSecureData) tSecureData $
+   LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+   LT.insert (tnum tSenderSubID) tSenderSubID $
+   LT.insert (tnum tSenderLocationID) tSenderLocationID $
+   LT.insert (tnum tTargetSubID) tTargetSubID $
+   LT.insert (tnum tTargetLocationID) tTargetLocationID $
+   LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+   LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+   LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+   LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+   LT.insert (tnum tPossDupFlag) tPossDupFlag $
+   LT.insert (tnum tPossResend) tPossResend $
+   LT.insert (tnum tSendingTime) tSendingTime $
+   LT.insert (tnum tOrigSendingTime) tOrigSendingTime    LT.new
+
+
+trailerFIX41 :: FIXTags
+trailerFIX41 = 
+   LT.insert (tnum tSignatureLength) tSignatureLength $
+   LT.insert (tnum tSignature) tSignature    LT.new
+
+
+mHeartbeat :: FIXMessageSpec
+mHeartbeat = FMSpec
+   { msName = "Heartbeat"
+   , msType = C.pack "0"
+   , msHeader = headerFIX41
+   , msBody = mHeartbeatBody
+   , msTrailer = trailerFIX41 }
+   where
+   mHeartbeatBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mTestRequest :: FIXMessageSpec
+mTestRequest = FMSpec
+   { msName = "TestRequest"
+   , msType = C.pack "1"
+   , msHeader = headerFIX41
+   , msBody = mTestRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mTestRequestBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mResendRequest :: FIXMessageSpec
+mResendRequest = FMSpec
+   { msName = "ResendRequest"
+   , msType = C.pack "2"
+   , msHeader = headerFIX41
+   , msBody = mResendRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mResendRequestBody = 
+      LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+      LT.insert (tnum tEndSeqNo) tEndSeqNo       LT.new
+
+
+mReject :: FIXMessageSpec
+mReject = FMSpec
+   { msName = "Reject"
+   , msType = C.pack "3"
+   , msHeader = headerFIX41
+   , msBody = mRejectBody
+   , msTrailer = trailerFIX41 }
+   where
+   mRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mSequenceReset :: FIXMessageSpec
+mSequenceReset = FMSpec
+   { msName = "SequenceReset"
+   , msType = C.pack "4"
+   , msHeader = headerFIX41
+   , msBody = mSequenceResetBody
+   , msTrailer = trailerFIX41 }
+   where
+   mSequenceResetBody = 
+      LT.insert (tnum tGapFillFlag) tGapFillFlag $
+      LT.insert (tnum tNewSeqNo) tNewSeqNo       LT.new
+
+
+mLogout :: FIXMessageSpec
+mLogout = FMSpec
+   { msName = "Logout"
+   , msType = C.pack "5"
+   , msHeader = headerFIX41
+   , msBody = mLogoutBody
+   , msTrailer = trailerFIX41 }
+   where
+   mLogoutBody = 
+      LT.insert (tnum tText) tText       LT.new
+
+
+mIndicationofInterest :: FIXMessageSpec
+mIndicationofInterest = FMSpec
+   { msName = "IndicationofInterest"
+   , msType = C.pack "6"
+   , msHeader = headerFIX41
+   , msBody = mIndicationofInterestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mIndicationofInterestBody = 
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tIOITransType) tIOITransType $
+      LT.insert (tnum tIOIRefID) tIOIRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tIOIShares) tIOIShares $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+      LT.insert (tnum tIOIOthSvc) tIOIOthSvc $
+      LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+      LT.insert (tnum tNoIOIQualifiers) gNoIOIQualifiers''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tURLLink) tURLLink       LT.new
+      where
+         gNoIOIQualifiers''' = FIXTag
+            { tName = "NoIOIQualifiers"
+            , tnum = tnum tNoIOIQualifiers
+            , tparser = gNoIOIQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoIOIQualifiersSpec''' }
+
+         gNoIOIQualifiersP''' = groupP gNoIOIQualifiersSpec'''
+         gNoIOIQualifiersSpec''' = FGSpec
+            { gsLength = tNoIOIQualifiers
+            , gsSeperator = tIOIQualifier
+            , gsBody = gNoIOIQualifiersBody''' }
+            where
+            gNoIOIQualifiersBody''' = 
+               LT.new
+
+
+
+mAdvertisement :: FIXMessageSpec
+mAdvertisement = FMSpec
+   { msName = "Advertisement"
+   , msType = C.pack "7"
+   , msHeader = headerFIX41
+   , msBody = mAdvertisementBody
+   , msTrailer = trailerFIX41 }
+   where
+   mAdvertisementBody = 
+      LT.insert (tnum tAdvId) tAdvId $
+      LT.insert (tnum tAdvTransType) tAdvTransType $
+      LT.insert (tnum tAdvRefID) tAdvRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tAdvSide) tAdvSide $
+      LT.insert (tnum tShares) tShares $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tLastMkt) tLastMkt       LT.new
+
+
+mExecutionReport :: FIXMessageSpec
+mExecutionReport = FMSpec
+   { msName = "ExecutionReport"
+   , msType = C.pack "8"
+   , msHeader = headerFIX41
+   , msBody = mExecutionReportBody
+   , msTrailer = trailerFIX41 }
+   where
+   mExecutionReportBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tExecTransType) tExecTransType $
+      LT.insert (tnum tExecRefID) tExecRefID $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tOrdRejReason) tOrdRejReason $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tLastShares) tLastShares $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tLastSpotRate) tLastSpotRate $
+      LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tLastCapacity) tLastCapacity $
+      LT.insert (tnum tLeavesQty) tLeavesQty $
+      LT.insert (tnum tCumQty) tCumQty $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tReportToExch) tReportToExch $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mOrderCancelReject :: FIXMessageSpec
+mOrderCancelReject = FMSpec
+   { msName = "OrderCancelReject"
+   , msType = C.pack "9"
+   , msHeader = headerFIX41
+   , msBody = mOrderCancelRejectBody
+   , msTrailer = trailerFIX41 }
+   where
+   mOrderCancelRejectBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tCxlRejReason) tCxlRejReason $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mLogon :: FIXMessageSpec
+mLogon = FMSpec
+   { msName = "Logon"
+   , msType = C.pack "A"
+   , msHeader = headerFIX41
+   , msBody = mLogonBody
+   , msTrailer = trailerFIX41 }
+   where
+   mLogonBody = 
+      LT.insert (tnum tEncryptMethod) tEncryptMethod $
+      LT.insert (tnum tHeartBtInt) tHeartBtInt $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData $
+      LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag       LT.new
+
+
+mNews :: FIXMessageSpec
+mNews = FMSpec
+   { msName = "News"
+   , msType = C.pack "B"
+   , msHeader = headerFIX41
+   , msBody = mNewsBody
+   , msTrailer = trailerFIX41 }
+   where
+   mNewsBody = 
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tUrgency) tUrgency $
+      LT.insert (tnum tHeadline) tHeadline $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tLinesOfText) gLinesOfText''' $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gLinesOfText''' = FIXTag
+            { tName = "LinesOfText"
+            , tnum = tnum tLinesOfText
+            , tparser = gLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gLinesOfTextSpec''' }
+
+         gLinesOfTextP''' = groupP gLinesOfTextSpec'''
+         gLinesOfTextSpec''' = FGSpec
+            { gsLength = tLinesOfText
+            , gsSeperator = tText
+            , gsBody = gLinesOfTextBody''' }
+            where
+            gLinesOfTextBody''' = 
+               LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tRelatdSym
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc                LT.new
+
+
+
+mEmail :: FIXMessageSpec
+mEmail = FMSpec
+   { msName = "Email"
+   , msType = C.pack "C"
+   , msHeader = headerFIX41
+   , msBody = mEmailBody
+   , msTrailer = trailerFIX41 }
+   where
+   mEmailBody = 
+      LT.insert (tnum tEmailThreadID) tEmailThreadID $
+      LT.insert (tnum tEmailType) tEmailType $
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tSubject) tSubject $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tLinesOfText) gLinesOfText''' $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gLinesOfText''' = FIXTag
+            { tName = "LinesOfText"
+            , tnum = tnum tLinesOfText
+            , tparser = gLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gLinesOfTextSpec''' }
+
+         gLinesOfTextP''' = groupP gLinesOfTextSpec'''
+         gLinesOfTextSpec''' = FGSpec
+            { gsLength = tLinesOfText
+            , gsSeperator = tText
+            , gsBody = gLinesOfTextBody''' }
+            where
+            gLinesOfTextBody''' = 
+               LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tRelatdSym
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc                LT.new
+
+
+
+mNewOrderSingle :: FIXMessageSpec
+mNewOrderSingle = FMSpec
+   { msName = "NewOrderSingle"
+   , msType = C.pack "D"
+   , msHeader = headerFIX41
+   , msBody = mNewOrderSingleBody
+   , msTrailer = trailerFIX41 }
+   where
+   mNewOrderSingleBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference       LT.new
+
+
+mNewOrderList :: FIXMessageSpec
+mNewOrderList = FMSpec
+   { msName = "NewOrderList"
+   , msType = C.pack "E"
+   , msHeader = headerFIX41
+   , msBody = mNewOrderListBody
+   , msTrailer = trailerFIX41 }
+   where
+   mNewOrderListBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tListSeqNo) tListSeqNo $
+      LT.insert (tnum tListNoOrds) tListNoOrds $
+      LT.insert (tnum tListExecInst) tListExecInst $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+      LT.insert (tnum tMaxShow) tMaxShow       LT.new
+
+
+mOrderCancelRequest :: FIXMessageSpec
+mOrderCancelRequest = FMSpec
+   { msName = "OrderCancelRequest"
+   , msType = C.pack "F"
+   , msHeader = headerFIX41
+   , msBody = mOrderCancelRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mOrderCancelRequestBody = 
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mOrderCancelReplaceRequest :: FIXMessageSpec
+mOrderCancelReplaceRequest = FMSpec
+   { msName = "OrderCancelReplaceRequest"
+   , msType = C.pack "G"
+   , msHeader = headerFIX41
+   , msBody = mOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tLocateReqd) tLocateReqd       LT.new
+
+
+mOrderStatusRequest :: FIXMessageSpec
+mOrderStatusRequest = FMSpec
+   { msName = "OrderStatusRequest"
+   , msType = C.pack "H"
+   , msHeader = headerFIX41
+   , msBody = mOrderStatusRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mOrderStatusRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide       LT.new
+
+
+mAllocation :: FIXMessageSpec
+mAllocation = FMSpec
+   { msName = "Allocation"
+   , msType = C.pack "J"
+   , msHeader = headerFIX41
+   , msBody = mAllocationBody
+   , msTrailer = trailerFIX41 }
+   where
+   mAllocationBody = 
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tAllocTransType) tAllocTransType $
+      LT.insert (tnum tRefAllocID) tRefAllocID $
+      LT.insert (tnum tAllocLinkID) tAllocLinkID $
+      LT.insert (tnum tAllocLinkType) tAllocLinkType $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tShares) tShares $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocShares) tAllocShares $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+               LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+               LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tExecBroker) tExecBroker $
+               LT.insert (tnum tClientID) tClientID $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+               LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+               LT.insert (tnum tSettlInstMode) tSettlInstMode $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees''''''                LT.new
+               where
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType                         LT.new
+
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tLastShares
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.insert (tnum tExecID) tExecID $
+               LT.insert (tnum tLastPx) tLastPx $
+               LT.insert (tnum tLastCapacity) tLastCapacity                LT.new
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tWaveNo) tWaveNo                LT.new
+
+
+
+mListCancelRequest :: FIXMessageSpec
+mListCancelRequest = FMSpec
+   { msName = "ListCancelRequest"
+   , msType = C.pack "K"
+   , msHeader = headerFIX41
+   , msBody = mListCancelRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mListCancelRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mListExecute :: FIXMessageSpec
+mListExecute = FMSpec
+   { msName = "ListExecute"
+   , msType = C.pack "L"
+   , msHeader = headerFIX41
+   , msBody = mListExecuteBody
+   , msTrailer = trailerFIX41 }
+   where
+   mListExecuteBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mListStatusRequest :: FIXMessageSpec
+mListStatusRequest = FMSpec
+   { msName = "ListStatusRequest"
+   , msType = C.pack "M"
+   , msHeader = headerFIX41
+   , msBody = mListStatusRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mListStatusRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mListStatus :: FIXMessageSpec
+mListStatus = FMSpec
+   { msName = "ListStatus"
+   , msType = C.pack "N"
+   , msHeader = headerFIX41
+   , msBody = mListStatusBody
+   , msTrailer = trailerFIX41 }
+   where
+   mListStatusBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tWaveNo) tWaveNo $
+      LT.insert (tnum tNoRpts) tNoRpts $
+      LT.insert (tnum tRptSeq) tRptSeq $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tCumQty) tCumQty $
+               LT.insert (tnum tLeavesQty) tLeavesQty $
+               LT.insert (tnum tCxlQty) tCxlQty $
+               LT.insert (tnum tAvgPx) tAvgPx                LT.new
+
+
+
+mAllocationACK :: FIXMessageSpec
+mAllocationACK = FMSpec
+   { msName = "AllocationACK"
+   , msType = C.pack "P"
+   , msHeader = headerFIX41
+   , msBody = mAllocationACKBody
+   , msTrailer = trailerFIX41 }
+   where
+   mAllocationACKBody = 
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mDontKnowTrade :: FIXMessageSpec
+mDontKnowTrade = FMSpec
+   { msName = "DontKnowTrade"
+   , msType = C.pack "Q"
+   , msHeader = headerFIX41
+   , msBody = mDontKnowTradeBody
+   , msTrailer = trailerFIX41 }
+   where
+   mDontKnowTradeBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tDKReason) tDKReason $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tLastShares) tLastShares $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tText) tText       LT.new
+
+
+mQuoteRequest :: FIXMessageSpec
+mQuoteRequest = FMSpec
+   { msName = "QuoteRequest"
+   , msType = C.pack "R"
+   , msHeader = headerFIX41
+   , msBody = mQuoteRequestBody
+   , msTrailer = trailerFIX41 }
+   where
+   mQuoteRequestBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2       LT.new
+
+
+mQuote :: FIXMessageSpec
+mQuote = FMSpec
+   { msName = "Quote"
+   , msType = C.pack "S"
+   , msHeader = headerFIX41
+   , msBody = mQuoteBody
+   , msTrailer = trailerFIX41 }
+   where
+   mQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2       LT.new
+
+
+mSettlementInstructions :: FIXMessageSpec
+mSettlementInstructions = FMSpec
+   { msName = "SettlementInstructions"
+   , msType = C.pack "T"
+   , msHeader = headerFIX41
+   , msBody = mSettlementInstructionsBody
+   , msTrailer = trailerFIX41 }
+   where
+   mSettlementInstructionsBody = 
+      LT.insert (tnum tSettlInstID) tSettlInstID $
+      LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+      LT.insert (tnum tSettlInstMode) tSettlInstMode $
+      LT.insert (tnum tSettlInstSource) tSettlInstSource $
+      LT.insert (tnum tAllocAccount) tAllocAccount $
+      LT.insert (tnum tSettlLocation) tSettlLocation $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+      LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+      LT.insert (tnum tSettlInstCode) tSettlInstCode $
+      LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+      LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+      LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+      LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+      LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+      LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+      LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+      LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+      LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+      LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+      LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+      LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone       LT.new
+
+
+fix41 :: FIXSpec
+fix41 = FSpec
+   { fsVersion = "FIX.4.1"
+   , fsHeader = headerFIX41
+   , fsTrailer = trailerFIX41
+   , fsMessages = fix41Messages 
+   , fsTags = fix41Tags }
+   where
+      fix41Messages =
+          LT.insert (msType mHeartbeat) mHeartbeat $
+          LT.insert (msType mTestRequest) mTestRequest $
+          LT.insert (msType mResendRequest) mResendRequest $
+          LT.insert (msType mReject) mReject $
+          LT.insert (msType mSequenceReset) mSequenceReset $
+          LT.insert (msType mLogout) mLogout $
+          LT.insert (msType mIndicationofInterest) mIndicationofInterest $
+          LT.insert (msType mAdvertisement) mAdvertisement $
+          LT.insert (msType mExecutionReport) mExecutionReport $
+          LT.insert (msType mOrderCancelReject) mOrderCancelReject $
+          LT.insert (msType mLogon) mLogon $
+          LT.insert (msType mNews) mNews $
+          LT.insert (msType mEmail) mEmail $
+          LT.insert (msType mNewOrderSingle) mNewOrderSingle $
+          LT.insert (msType mNewOrderList) mNewOrderList $
+          LT.insert (msType mOrderCancelRequest) mOrderCancelRequest $
+          LT.insert (msType mOrderCancelReplaceRequest) mOrderCancelReplaceRequest $
+          LT.insert (msType mOrderStatusRequest) mOrderStatusRequest $
+          LT.insert (msType mAllocation) mAllocation $
+          LT.insert (msType mListCancelRequest) mListCancelRequest $
+          LT.insert (msType mListExecute) mListExecute $
+          LT.insert (msType mListStatusRequest) mListStatusRequest $
+          LT.insert (msType mListStatus) mListStatus $
+          LT.insert (msType mAllocationACK) mAllocationACK $
+          LT.insert (msType mDontKnowTrade) mDontKnowTrade $
+          LT.insert (msType mQuoteRequest) mQuoteRequest $
+          LT.insert (msType mQuote) mQuote $
+          LT.insert (msType mSettlementInstructions) mSettlementInstructions           LT.new 
+      fix41Tags =
+          LT.insert (tnum tAccount) tAccount $
+          LT.insert (tnum tAdvId) tAdvId $
+          LT.insert (tnum tAdvRefID) tAdvRefID $
+          LT.insert (tnum tAdvSide) tAdvSide $
+          LT.insert (tnum tAdvTransType) tAdvTransType $
+          LT.insert (tnum tAvgPx) tAvgPx $
+          LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+          LT.insert (tnum tBeginString) tBeginString $
+          LT.insert (tnum tBodyLength) tBodyLength $
+          LT.insert (tnum tCheckSum) tCheckSum $
+          LT.insert (tnum tClOrdID) tClOrdID $
+          LT.insert (tnum tCommission) tCommission $
+          LT.insert (tnum tCommType) tCommType $
+          LT.insert (tnum tCumQty) tCumQty $
+          LT.insert (tnum tCurrency) tCurrency $
+          LT.insert (tnum tEndSeqNo) tEndSeqNo $
+          LT.insert (tnum tExecID) tExecID $
+          LT.insert (tnum tExecInst) tExecInst $
+          LT.insert (tnum tExecRefID) tExecRefID $
+          LT.insert (tnum tExecTransType) tExecTransType $
+          LT.insert (tnum tHandlInst) tHandlInst $
+          LT.insert (tnum tIDSource) tIDSource $
+          LT.insert (tnum tIOIid) tIOIid $
+          LT.insert (tnum tIOIOthSvc) tIOIOthSvc $
+          LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+          LT.insert (tnum tIOIRefID) tIOIRefID $
+          LT.insert (tnum tIOIShares) tIOIShares $
+          LT.insert (tnum tIOITransType) tIOITransType $
+          LT.insert (tnum tLastCapacity) tLastCapacity $
+          LT.insert (tnum tLastMkt) tLastMkt $
+          LT.insert (tnum tLastPx) tLastPx $
+          LT.insert (tnum tLastShares) tLastShares $
+          LT.insert (tnum tLinesOfText) tLinesOfText $
+          LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+          LT.insert (tnum tMsgType) tMsgType $
+          LT.insert (tnum tNewSeqNo) tNewSeqNo $
+          LT.insert (tnum tOrderID) tOrderID $
+          LT.insert (tnum tOrderQty) tOrderQty $
+          LT.insert (tnum tOrdStatus) tOrdStatus $
+          LT.insert (tnum tOrdType) tOrdType $
+          LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+          LT.insert (tnum tOrigTime) tOrigTime $
+          LT.insert (tnum tPossDupFlag) tPossDupFlag $
+          LT.insert (tnum tPrice) tPrice $
+          LT.insert (tnum tRefSeqNum) tRefSeqNum $
+          LT.insert (tnum tRelatdSym) tRelatdSym $
+          LT.insert (tnum tRule80A) tRule80A $
+          LT.insert (tnum tSecurityID) tSecurityID $
+          LT.insert (tnum tSenderCompID) tSenderCompID $
+          LT.insert (tnum tSenderSubID) tSenderSubID $
+          LT.insert (tnum tSendingDate) tSendingDate $
+          LT.insert (tnum tSendingTime) tSendingTime $
+          LT.insert (tnum tShares) tShares $
+          LT.insert (tnum tSide) tSide $
+          LT.insert (tnum tSymbol) tSymbol $
+          LT.insert (tnum tTargetCompID) tTargetCompID $
+          LT.insert (tnum tTargetSubID) tTargetSubID $
+          LT.insert (tnum tText) tText $
+          LT.insert (tnum tTimeInForce) tTimeInForce $
+          LT.insert (tnum tTransactTime) tTransactTime $
+          LT.insert (tnum tUrgency) tUrgency $
+          LT.insert (tnum tValidUntilTime) tValidUntilTime $
+          LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+          LT.insert (tnum tFutSettDate) tFutSettDate $
+          LT.insert (tnum tSymbolSfx) tSymbolSfx $
+          LT.insert (tnum tListID) tListID $
+          LT.insert (tnum tListSeqNo) tListSeqNo $
+          LT.insert (tnum tListNoOrds) tListNoOrds $
+          LT.insert (tnum tListExecInst) tListExecInst $
+          LT.insert (tnum tAllocID) tAllocID $
+          LT.insert (tnum tAllocTransType) tAllocTransType $
+          LT.insert (tnum tRefAllocID) tRefAllocID $
+          LT.insert (tnum tNoOrders) tNoOrders $
+          LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+          LT.insert (tnum tTradeDate) tTradeDate $
+          LT.insert (tnum tExecBroker) tExecBroker $
+          LT.insert (tnum tOpenClose) tOpenClose $
+          LT.insert (tnum tNoAllocs) tNoAllocs $
+          LT.insert (tnum tAllocAccount) tAllocAccount $
+          LT.insert (tnum tAllocShares) tAllocShares $
+          LT.insert (tnum tProcessCode) tProcessCode $
+          LT.insert (tnum tNoRpts) tNoRpts $
+          LT.insert (tnum tRptSeq) tRptSeq $
+          LT.insert (tnum tCxlQty) tCxlQty $
+          LT.insert (tnum tNoDlvyInst) tNoDlvyInst $
+          LT.insert (tnum tDlvyInst) tDlvyInst $
+          LT.insert (tnum tAllocStatus) tAllocStatus $
+          LT.insert (tnum tAllocRejCode) tAllocRejCode $
+          LT.insert (tnum tSignature) tSignature $
+          LT.insert (tnum tSecureDataLen) tSecureDataLen $
+          LT.insert (tnum tSecureData) tSecureData $
+          LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+          LT.insert (tnum tSignatureLength) tSignatureLength $
+          LT.insert (tnum tEmailType) tEmailType $
+          LT.insert (tnum tRawDataLength) tRawDataLength $
+          LT.insert (tnum tRawData) tRawData $
+          LT.insert (tnum tPossResend) tPossResend $
+          LT.insert (tnum tEncryptMethod) tEncryptMethod $
+          LT.insert (tnum tStopPx) tStopPx $
+          LT.insert (tnum tExDestination) tExDestination $
+          LT.insert (tnum tCxlRejReason) tCxlRejReason $
+          LT.insert (tnum tOrdRejReason) tOrdRejReason $
+          LT.insert (tnum tIOIQualifier) tIOIQualifier $
+          LT.insert (tnum tWaveNo) tWaveNo $
+          LT.insert (tnum tIssuer) tIssuer $
+          LT.insert (tnum tSecurityDesc) tSecurityDesc $
+          LT.insert (tnum tHeartBtInt) tHeartBtInt $
+          LT.insert (tnum tClientID) tClientID $
+          LT.insert (tnum tMinQty) tMinQty $
+          LT.insert (tnum tMaxFloor) tMaxFloor $
+          LT.insert (tnum tTestReqID) tTestReqID $
+          LT.insert (tnum tReportToExch) tReportToExch $
+          LT.insert (tnum tLocateReqd) tLocateReqd $
+          LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+          LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+          LT.insert (tnum tQuoteID) tQuoteID $
+          LT.insert (tnum tNetMoney) tNetMoney $
+          LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+          LT.insert (tnum tSettlCurrency) tSettlCurrency $
+          LT.insert (tnum tForexReq) tForexReq $
+          LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+          LT.insert (tnum tGapFillFlag) tGapFillFlag $
+          LT.insert (tnum tNoExecs) tNoExecs $
+          LT.insert (tnum tCxlType) tCxlType $
+          LT.insert (tnum tExpireTime) tExpireTime $
+          LT.insert (tnum tDKReason) tDKReason $
+          LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+          LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+          LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+          LT.insert (tnum tQuoteReqID) tQuoteReqID $
+          LT.insert (tnum tBidPx) tBidPx $
+          LT.insert (tnum tOfferPx) tOfferPx $
+          LT.insert (tnum tBidSize) tBidSize $
+          LT.insert (tnum tOfferSize) tOfferSize $
+          LT.insert (tnum tNoMiscFees) tNoMiscFees $
+          LT.insert (tnum tMiscFeeAmt) tMiscFeeAmt $
+          LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+          LT.insert (tnum tMiscFeeType) tMiscFeeType $
+          LT.insert (tnum tPrevClosePx) tPrevClosePx $
+          LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+          LT.insert (tnum tSenderLocationID) tSenderLocationID $
+          LT.insert (tnum tTargetLocationID) tTargetLocationID $
+          LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+          LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+          LT.insert (tnum tNoRelatedSym) tNoRelatedSym $
+          LT.insert (tnum tSubject) tSubject $
+          LT.insert (tnum tHeadline) tHeadline $
+          LT.insert (tnum tURLLink) tURLLink $
+          LT.insert (tnum tExecType) tExecType $
+          LT.insert (tnum tLeavesQty) tLeavesQty $
+          LT.insert (tnum tCashOrderQty) tCashOrderQty $
+          LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+          LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+          LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+          LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+          LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+          LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+          LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+          LT.insert (tnum tSettlInstMode) tSettlInstMode $
+          LT.insert (tnum tAllocText) tAllocText $
+          LT.insert (tnum tSettlInstID) tSettlInstID $
+          LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+          LT.insert (tnum tEmailThreadID) tEmailThreadID $
+          LT.insert (tnum tSettlInstSource) tSettlInstSource $
+          LT.insert (tnum tSettlLocation) tSettlLocation $
+          LT.insert (tnum tSecurityType) tSecurityType $
+          LT.insert (tnum tEffectiveTime) tEffectiveTime $
+          LT.insert (tnum tStandInstDbType) tStandInstDbType $
+          LT.insert (tnum tStandInstDbName) tStandInstDbName $
+          LT.insert (tnum tStandInstDbID) tStandInstDbID $
+          LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+          LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+          LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+          LT.insert (tnum tSettlInstCode) tSettlInstCode $
+          LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+          LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+          LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+          LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+          LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+          LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+          LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+          LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+          LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+          LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+          LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+          LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone $
+          LT.insert (tnum tBidSpotRate) tBidSpotRate $
+          LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+          LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+          LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+          LT.insert (tnum tOrderQty2) tOrderQty2 $
+          LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+          LT.insert (tnum tLastSpotRate) tLastSpotRate $
+          LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+          LT.insert (tnum tAllocLinkID) tAllocLinkID $
+          LT.insert (tnum tAllocLinkType) tAllocLinkType $
+          LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+          LT.insert (tnum tNoIOIQualifiers) tNoIOIQualifiers $
+          LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+          LT.insert (tnum tPutOrCall) tPutOrCall $
+          LT.insert (tnum tStrikePrice) tStrikePrice $
+          LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+          LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+          LT.insert (tnum tMaturityDay) tMaturityDay $
+          LT.insert (tnum tOptAttribute) tOptAttribute $
+          LT.insert (tnum tSecurityExchange) tSecurityExchange $
+          LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+          LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+          LT.insert (tnum tMaxShow) tMaxShow $
+          LT.insert (tnum tPegDifference) tPegDifference $
+          LT.new 
diff --git a/src/Data/FIX/Spec/FIX42.hs b/src/Data/FIX/Spec/FIX42.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Spec/FIX42.hs
@@ -0,0 +1,5738 @@
+module Data.FIX.Spec.FIX42 ( fix42 ) where
+import qualified Data.ByteString.Char8 as C
+import qualified Data.LookupTable as LT ( new, insert )
+import Data.FIX.Message
+import Data.FIX.Parser
+import Data.Functor ( (<$>) )
+import Data.FIX.Arbitrary 
+import Test.QuickCheck ( arbitrary )
+
+
+tAccount :: FIXTag
+tAccount = FIXTag 
+   { tName = "Account"
+   , tnum = 1
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvId :: FIXTag
+tAdvId = FIXTag 
+   { tName = "AdvId"
+   , tnum = 2
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvRefID :: FIXTag
+tAdvRefID = FIXTag 
+   { tName = "AdvRefID"
+   , tnum = 3
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvSide :: FIXTag
+tAdvSide = FIXTag 
+   { tName = "AdvSide"
+   , tnum = 4
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvTransType :: FIXTag
+tAdvTransType = FIXTag 
+   { tName = "AdvTransType"
+   , tnum = 5
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAvgPx :: FIXTag
+tAvgPx = FIXTag 
+   { tName = "AvgPx"
+   , tnum = 6
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBeginSeqNo :: FIXTag
+tBeginSeqNo = FIXTag 
+   { tName = "BeginSeqNo"
+   , tnum = 7
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdID :: FIXTag
+tClOrdID = FIXTag 
+   { tName = "ClOrdID"
+   , tnum = 11
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCommission :: FIXTag
+tCommission = FIXTag 
+   { tName = "Commission"
+   , tnum = 12
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCommType :: FIXTag
+tCommType = FIXTag 
+   { tName = "CommType"
+   , tnum = 13
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCumQty :: FIXTag
+tCumQty = FIXTag 
+   { tName = "CumQty"
+   , tnum = 14
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCurrency :: FIXTag
+tCurrency = FIXTag 
+   { tName = "Currency"
+   , tnum = 15
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEndSeqNo :: FIXTag
+tEndSeqNo = FIXTag 
+   { tName = "EndSeqNo"
+   , tnum = 16
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecID :: FIXTag
+tExecID = FIXTag 
+   { tName = "ExecID"
+   , tnum = 17
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecInst :: FIXTag
+tExecInst = FIXTag 
+   { tName = "ExecInst"
+   , tnum = 18
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tExecRefID :: FIXTag
+tExecRefID = FIXTag 
+   { tName = "ExecRefID"
+   , tnum = 19
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecTransType :: FIXTag
+tExecTransType = FIXTag 
+   { tName = "ExecTransType"
+   , tnum = 20
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHandlInst :: FIXTag
+tHandlInst = FIXTag 
+   { tName = "HandlInst"
+   , tnum = 21
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIDSource :: FIXTag
+tIDSource = FIXTag 
+   { tName = "IDSource"
+   , tnum = 22
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIid :: FIXTag
+tIOIid = FIXTag 
+   { tName = "IOIid"
+   , tnum = 23
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIQltyInd :: FIXTag
+tIOIQltyInd = FIXTag 
+   { tName = "IOIQltyInd"
+   , tnum = 25
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIRefID :: FIXTag
+tIOIRefID = FIXTag 
+   { tName = "IOIRefID"
+   , tnum = 26
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIShares :: FIXTag
+tIOIShares = FIXTag 
+   { tName = "IOIShares"
+   , tnum = 27
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOITransType :: FIXTag
+tIOITransType = FIXTag 
+   { tName = "IOITransType"
+   , tnum = 28
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastCapacity :: FIXTag
+tLastCapacity = FIXTag 
+   { tName = "LastCapacity"
+   , tnum = 29
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastMkt :: FIXTag
+tLastMkt = FIXTag 
+   { tName = "LastMkt"
+   , tnum = 30
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLastPx :: FIXTag
+tLastPx = FIXTag 
+   { tName = "LastPx"
+   , tnum = 31
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastShares :: FIXTag
+tLastShares = FIXTag 
+   { tName = "LastShares"
+   , tnum = 32
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLinesOfText :: FIXTag
+tLinesOfText = FIXTag 
+   { tName = "LinesOfText"
+   , tnum = 33
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgSeqNum :: FIXTag
+tMsgSeqNum = FIXTag 
+   { tName = "MsgSeqNum"
+   , tnum = 34
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNewSeqNo :: FIXTag
+tNewSeqNo = FIXTag 
+   { tName = "NewSeqNo"
+   , tnum = 36
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderID :: FIXTag
+tOrderID = FIXTag 
+   { tName = "OrderID"
+   , tnum = 37
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrderQty :: FIXTag
+tOrderQty = FIXTag 
+   { tName = "OrderQty"
+   , tnum = 38
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrdStatus :: FIXTag
+tOrdStatus = FIXTag 
+   { tName = "OrdStatus"
+   , tnum = 39
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrdType :: FIXTag
+tOrdType = FIXTag 
+   { tName = "OrdType"
+   , tnum = 40
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigClOrdID :: FIXTag
+tOrigClOrdID = FIXTag 
+   { tName = "OrigClOrdID"
+   , tnum = 41
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrigTime :: FIXTag
+tOrigTime = FIXTag 
+   { tName = "OrigTime"
+   , tnum = 42
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tPossDupFlag :: FIXTag
+tPossDupFlag = FIXTag 
+   { tName = "PossDupFlag"
+   , tnum = 43
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tPrice :: FIXTag
+tPrice = FIXTag 
+   { tName = "Price"
+   , tnum = 44
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRefSeqNum :: FIXTag
+tRefSeqNum = FIXTag 
+   { tName = "RefSeqNum"
+   , tnum = 45
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRelatdSym :: FIXTag
+tRelatdSym = FIXTag 
+   { tName = "RelatdSym"
+   , tnum = 46
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRule80A :: FIXTag
+tRule80A = FIXTag 
+   { tName = "Rule80A"
+   , tnum = 47
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityID :: FIXTag
+tSecurityID = FIXTag 
+   { tName = "SecurityID"
+   , tnum = 48
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSenderCompID :: FIXTag
+tSenderCompID = FIXTag 
+   { tName = "SenderCompID"
+   , tnum = 49
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSenderSubID :: FIXTag
+tSenderSubID = FIXTag 
+   { tName = "SenderSubID"
+   , tnum = 50
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSendingTime :: FIXTag
+tSendingTime = FIXTag 
+   { tName = "SendingTime"
+   , tnum = 52
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tShares :: FIXTag
+tShares = FIXTag 
+   { tName = "Shares"
+   , tnum = 53
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSide :: FIXTag
+tSide = FIXTag 
+   { tName = "Side"
+   , tnum = 54
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSymbol :: FIXTag
+tSymbol = FIXTag 
+   { tName = "Symbol"
+   , tnum = 55
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetCompID :: FIXTag
+tTargetCompID = FIXTag 
+   { tName = "TargetCompID"
+   , tnum = 56
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetSubID :: FIXTag
+tTargetSubID = FIXTag 
+   { tName = "TargetSubID"
+   , tnum = 57
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tText :: FIXTag
+tText = FIXTag 
+   { tName = "Text"
+   , tnum = 58
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTimeInForce :: FIXTag
+tTimeInForce = FIXTag 
+   { tName = "TimeInForce"
+   , tnum = 59
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTransactTime :: FIXTag
+tTransactTime = FIXTag 
+   { tName = "TransactTime"
+   , tnum = 60
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tUrgency :: FIXTag
+tUrgency = FIXTag 
+   { tName = "Urgency"
+   , tnum = 61
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tValidUntilTime :: FIXTag
+tValidUntilTime = FIXTag 
+   { tName = "ValidUntilTime"
+   , tnum = 62
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tSettlmntTyp :: FIXTag
+tSettlmntTyp = FIXTag 
+   { tName = "SettlmntTyp"
+   , tnum = 63
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tFutSettDate :: FIXTag
+tFutSettDate = FIXTag 
+   { tName = "FutSettDate"
+   , tnum = 64
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSymbolSfx :: FIXTag
+tSymbolSfx = FIXTag 
+   { tName = "SymbolSfx"
+   , tnum = 65
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListID :: FIXTag
+tListID = FIXTag 
+   { tName = "ListID"
+   , tnum = 66
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListSeqNo :: FIXTag
+tListSeqNo = FIXTag 
+   { tName = "ListSeqNo"
+   , tnum = 67
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotNoOrders :: FIXTag
+tTotNoOrders = FIXTag 
+   { tName = "TotNoOrders"
+   , tnum = 68
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListExecInst :: FIXTag
+tListExecInst = FIXTag 
+   { tName = "ListExecInst"
+   , tnum = 69
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocID :: FIXTag
+tAllocID = FIXTag 
+   { tName = "AllocID"
+   , tnum = 70
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocTransType :: FIXTag
+tAllocTransType = FIXTag 
+   { tName = "AllocTransType"
+   , tnum = 71
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRefAllocID :: FIXTag
+tRefAllocID = FIXTag 
+   { tName = "RefAllocID"
+   , tnum = 72
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoOrders :: FIXTag
+tNoOrders = FIXTag 
+   { tName = "NoOrders"
+   , tnum = 73
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAvgPrxPrecision :: FIXTag
+tAvgPrxPrecision = FIXTag 
+   { tName = "AvgPrxPrecision"
+   , tnum = 74
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeDate :: FIXTag
+tTradeDate = FIXTag 
+   { tName = "TradeDate"
+   , tnum = 75
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExecBroker :: FIXTag
+tExecBroker = FIXTag 
+   { tName = "ExecBroker"
+   , tnum = 76
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOpenClose :: FIXTag
+tOpenClose = FIXTag 
+   { tName = "OpenClose"
+   , tnum = 77
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoAllocs :: FIXTag
+tNoAllocs = FIXTag 
+   { tName = "NoAllocs"
+   , tnum = 78
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocAccount :: FIXTag
+tAllocAccount = FIXTag 
+   { tName = "AllocAccount"
+   , tnum = 79
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocShares :: FIXTag
+tAllocShares = FIXTag 
+   { tName = "AllocShares"
+   , tnum = 80
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tProcessCode :: FIXTag
+tProcessCode = FIXTag 
+   { tName = "ProcessCode"
+   , tnum = 81
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoRpts :: FIXTag
+tNoRpts = FIXTag 
+   { tName = "NoRpts"
+   , tnum = 82
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRptSeq :: FIXTag
+tRptSeq = FIXTag 
+   { tName = "RptSeq"
+   , tnum = 83
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlQty :: FIXTag
+tCxlQty = FIXTag 
+   { tName = "CxlQty"
+   , tnum = 84
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocStatus :: FIXTag
+tAllocStatus = FIXTag 
+   { tName = "AllocStatus"
+   , tnum = 87
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocRejCode :: FIXTag
+tAllocRejCode = FIXTag 
+   { tName = "AllocRejCode"
+   , tnum = 88
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSignature :: FIXTag
+tSignature = FIXTag 
+   { tName = "Signature"
+   , tnum = 89
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSecureDataLen :: FIXTag
+tSecureDataLen = FIXTag 
+   { tName = "SecureDataLen"
+   , tnum = 90
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecureData :: FIXTag
+tSecureData = FIXTag 
+   { tName = "SecureData"
+   , tnum = 91
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tBrokerOfCredit :: FIXTag
+tBrokerOfCredit = FIXTag 
+   { tName = "BrokerOfCredit"
+   , tnum = 92
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSignatureLength :: FIXTag
+tSignatureLength = FIXTag 
+   { tName = "SignatureLength"
+   , tnum = 93
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEmailType :: FIXTag
+tEmailType = FIXTag 
+   { tName = "EmailType"
+   , tnum = 94
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRawDataLength :: FIXTag
+tRawDataLength = FIXTag 
+   { tName = "RawDataLength"
+   , tnum = 95
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRawData :: FIXTag
+tRawData = FIXTag 
+   { tName = "RawData"
+   , tnum = 96
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPossResend :: FIXTag
+tPossResend = FIXTag 
+   { tName = "PossResend"
+   , tnum = 97
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tEncryptMethod :: FIXTag
+tEncryptMethod = FIXTag 
+   { tName = "EncryptMethod"
+   , tnum = 98
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStopPx :: FIXTag
+tStopPx = FIXTag 
+   { tName = "StopPx"
+   , tnum = 99
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExDestination :: FIXTag
+tExDestination = FIXTag 
+   { tName = "ExDestination"
+   , tnum = 100
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCxlRejReason :: FIXTag
+tCxlRejReason = FIXTag 
+   { tName = "CxlRejReason"
+   , tnum = 102
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdRejReason :: FIXTag
+tOrdRejReason = FIXTag 
+   { tName = "OrdRejReason"
+   , tnum = 103
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIQualifier :: FIXTag
+tIOIQualifier = FIXTag 
+   { tName = "IOIQualifier"
+   , tnum = 104
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tWaveNo :: FIXTag
+tWaveNo = FIXTag 
+   { tName = "WaveNo"
+   , tnum = 105
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIssuer :: FIXTag
+tIssuer = FIXTag 
+   { tName = "Issuer"
+   , tnum = 106
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityDesc :: FIXTag
+tSecurityDesc = FIXTag 
+   { tName = "SecurityDesc"
+   , tnum = 107
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHeartBtInt :: FIXTag
+tHeartBtInt = FIXTag 
+   { tName = "HeartBtInt"
+   , tnum = 108
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClientID :: FIXTag
+tClientID = FIXTag 
+   { tName = "ClientID"
+   , tnum = 109
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMinQty :: FIXTag
+tMinQty = FIXTag 
+   { tName = "MinQty"
+   , tnum = 110
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMaxFloor :: FIXTag
+tMaxFloor = FIXTag 
+   { tName = "MaxFloor"
+   , tnum = 111
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTestReqID :: FIXTag
+tTestReqID = FIXTag 
+   { tName = "TestReqID"
+   , tnum = 112
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tReportToExch :: FIXTag
+tReportToExch = FIXTag 
+   { tName = "ReportToExch"
+   , tnum = 113
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tLocateReqd :: FIXTag
+tLocateReqd = FIXTag 
+   { tName = "LocateReqd"
+   , tnum = 114
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOnBehalfOfCompID :: FIXTag
+tOnBehalfOfCompID = FIXTag 
+   { tName = "OnBehalfOfCompID"
+   , tnum = 115
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOnBehalfOfSubID :: FIXTag
+tOnBehalfOfSubID = FIXTag 
+   { tName = "OnBehalfOfSubID"
+   , tnum = 116
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteID :: FIXTag
+tQuoteID = FIXTag 
+   { tName = "QuoteID"
+   , tnum = 117
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNetMoney :: FIXTag
+tNetMoney = FIXTag 
+   { tName = "NetMoney"
+   , tnum = 118
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrAmt :: FIXTag
+tSettlCurrAmt = FIXTag 
+   { tName = "SettlCurrAmt"
+   , tnum = 119
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrency :: FIXTag
+tSettlCurrency = FIXTag 
+   { tName = "SettlCurrency"
+   , tnum = 120
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tForexReq :: FIXTag
+tForexReq = FIXTag 
+   { tName = "ForexReq"
+   , tnum = 121
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOrigSendingTime :: FIXTag
+tOrigSendingTime = FIXTag 
+   { tName = "OrigSendingTime"
+   , tnum = 122
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tGapFillFlag :: FIXTag
+tGapFillFlag = FIXTag 
+   { tName = "GapFillFlag"
+   , tnum = 123
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoExecs :: FIXTag
+tNoExecs = FIXTag 
+   { tName = "NoExecs"
+   , tnum = 124
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExpireTime :: FIXTag
+tExpireTime = FIXTag 
+   { tName = "ExpireTime"
+   , tnum = 126
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tDKReason :: FIXTag
+tDKReason = FIXTag 
+   { tName = "DKReason"
+   , tnum = 127
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToCompID :: FIXTag
+tDeliverToCompID = FIXTag 
+   { tName = "DeliverToCompID"
+   , tnum = 128
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliverToSubID :: FIXTag
+tDeliverToSubID = FIXTag 
+   { tName = "DeliverToSubID"
+   , tnum = 129
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOINaturalFlag :: FIXTag
+tIOINaturalFlag = FIXTag 
+   { tName = "IOINaturalFlag"
+   , tnum = 130
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tQuoteReqID :: FIXTag
+tQuoteReqID = FIXTag 
+   { tName = "QuoteReqID"
+   , tnum = 131
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBidPx :: FIXTag
+tBidPx = FIXTag 
+   { tName = "BidPx"
+   , tnum = 132
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferPx :: FIXTag
+tOfferPx = FIXTag 
+   { tName = "OfferPx"
+   , tnum = 133
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidSize :: FIXTag
+tBidSize = FIXTag 
+   { tName = "BidSize"
+   , tnum = 134
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSize :: FIXTag
+tOfferSize = FIXTag 
+   { tName = "OfferSize"
+   , tnum = 135
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoMiscFees :: FIXTag
+tNoMiscFees = FIXTag 
+   { tName = "NoMiscFees"
+   , tnum = 136
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMiscFeeAmt :: FIXTag
+tMiscFeeAmt = FIXTag 
+   { tName = "MiscFeeAmt"
+   , tnum = 137
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMiscFeeCurr :: FIXTag
+tMiscFeeCurr = FIXTag 
+   { tName = "MiscFeeCurr"
+   , tnum = 138
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMiscFeeType :: FIXTag
+tMiscFeeType = FIXTag 
+   { tName = "MiscFeeType"
+   , tnum = 139
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrevClosePx :: FIXTag
+tPrevClosePx = FIXTag 
+   { tName = "PrevClosePx"
+   , tnum = 140
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tResetSeqNumFlag :: FIXTag
+tResetSeqNumFlag = FIXTag 
+   { tName = "ResetSeqNumFlag"
+   , tnum = 141
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tSenderLocationID :: FIXTag
+tSenderLocationID = FIXTag 
+   { tName = "SenderLocationID"
+   , tnum = 142
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetLocationID :: FIXTag
+tTargetLocationID = FIXTag 
+   { tName = "TargetLocationID"
+   , tnum = 143
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOnBehalfOfLocationID :: FIXTag
+tOnBehalfOfLocationID = FIXTag 
+   { tName = "OnBehalfOfLocationID"
+   , tnum = 144
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliverToLocationID :: FIXTag
+tDeliverToLocationID = FIXTag 
+   { tName = "DeliverToLocationID"
+   , tnum = 145
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRelatedSym :: FIXTag
+tNoRelatedSym = FIXTag 
+   { tName = "NoRelatedSym"
+   , tnum = 146
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSubject :: FIXTag
+tSubject = FIXTag 
+   { tName = "Subject"
+   , tnum = 147
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHeadline :: FIXTag
+tHeadline = FIXTag 
+   { tName = "Headline"
+   , tnum = 148
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tURLLink :: FIXTag
+tURLLink = FIXTag 
+   { tName = "URLLink"
+   , tnum = 149
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecType :: FIXTag
+tExecType = FIXTag 
+   { tName = "ExecType"
+   , tnum = 150
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLeavesQty :: FIXTag
+tLeavesQty = FIXTag 
+   { tName = "LeavesQty"
+   , tnum = 151
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCashOrderQty :: FIXTag
+tCashOrderQty = FIXTag 
+   { tName = "CashOrderQty"
+   , tnum = 152
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocAvgPx :: FIXTag
+tAllocAvgPx = FIXTag 
+   { tName = "AllocAvgPx"
+   , tnum = 153
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocNetMoney :: FIXTag
+tAllocNetMoney = FIXTag 
+   { tName = "AllocNetMoney"
+   , tnum = 154
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRate :: FIXTag
+tSettlCurrFxRate = FIXTag 
+   { tName = "SettlCurrFxRate"
+   , tnum = 155
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRateCalc :: FIXTag
+tSettlCurrFxRateCalc = FIXTag 
+   { tName = "SettlCurrFxRateCalc"
+   , tnum = 156
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNumDaysInterest :: FIXTag
+tNumDaysInterest = FIXTag 
+   { tName = "NumDaysInterest"
+   , tnum = 157
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAccruedInterestRate :: FIXTag
+tAccruedInterestRate = FIXTag 
+   { tName = "AccruedInterestRate"
+   , tnum = 158
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAccruedInterestAmt :: FIXTag
+tAccruedInterestAmt = FIXTag 
+   { tName = "AccruedInterestAmt"
+   , tnum = 159
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlInstMode :: FIXTag
+tSettlInstMode = FIXTag 
+   { tName = "SettlInstMode"
+   , tnum = 160
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocText :: FIXTag
+tAllocText = FIXTag 
+   { tName = "AllocText"
+   , tnum = 161
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstID :: FIXTag
+tSettlInstID = FIXTag 
+   { tName = "SettlInstID"
+   , tnum = 162
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstTransType :: FIXTag
+tSettlInstTransType = FIXTag 
+   { tName = "SettlInstTransType"
+   , tnum = 163
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEmailThreadID :: FIXTag
+tEmailThreadID = FIXTag 
+   { tName = "EmailThreadID"
+   , tnum = 164
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstSource :: FIXTag
+tSettlInstSource = FIXTag 
+   { tName = "SettlInstSource"
+   , tnum = 165
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlLocation :: FIXTag
+tSettlLocation = FIXTag 
+   { tName = "SettlLocation"
+   , tnum = 166
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityType :: FIXTag
+tSecurityType = FIXTag 
+   { tName = "SecurityType"
+   , tnum = 167
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEffectiveTime :: FIXTag
+tEffectiveTime = FIXTag 
+   { tName = "EffectiveTime"
+   , tnum = 168
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tStandInstDbType :: FIXTag
+tStandInstDbType = FIXTag 
+   { tName = "StandInstDbType"
+   , tnum = 169
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStandInstDbName :: FIXTag
+tStandInstDbName = FIXTag 
+   { tName = "StandInstDbName"
+   , tnum = 170
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStandInstDbID :: FIXTag
+tStandInstDbID = FIXTag 
+   { tName = "StandInstDbID"
+   , tnum = 171
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlDeliveryType :: FIXTag
+tSettlDeliveryType = FIXTag 
+   { tName = "SettlDeliveryType"
+   , tnum = 172
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlDepositoryCode :: FIXTag
+tSettlDepositoryCode = FIXTag 
+   { tName = "SettlDepositoryCode"
+   , tnum = 173
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlBrkrCode :: FIXTag
+tSettlBrkrCode = FIXTag 
+   { tName = "SettlBrkrCode"
+   , tnum = 174
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstCode :: FIXTag
+tSettlInstCode = FIXTag 
+   { tName = "SettlInstCode"
+   , tnum = 175
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentName :: FIXTag
+tSecuritySettlAgentName = FIXTag 
+   { tName = "SecuritySettlAgentName"
+   , tnum = 176
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentCode :: FIXTag
+tSecuritySettlAgentCode = FIXTag 
+   { tName = "SecuritySettlAgentCode"
+   , tnum = 177
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentAcctNum :: FIXTag
+tSecuritySettlAgentAcctNum = FIXTag 
+   { tName = "SecuritySettlAgentAcctNum"
+   , tnum = 178
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentAcctName :: FIXTag
+tSecuritySettlAgentAcctName = FIXTag 
+   { tName = "SecuritySettlAgentAcctName"
+   , tnum = 179
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentContactName :: FIXTag
+tSecuritySettlAgentContactName = FIXTag 
+   { tName = "SecuritySettlAgentContactName"
+   , tnum = 180
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentContactPhone :: FIXTag
+tSecuritySettlAgentContactPhone = FIXTag 
+   { tName = "SecuritySettlAgentContactPhone"
+   , tnum = 181
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentName :: FIXTag
+tCashSettlAgentName = FIXTag 
+   { tName = "CashSettlAgentName"
+   , tnum = 182
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentCode :: FIXTag
+tCashSettlAgentCode = FIXTag 
+   { tName = "CashSettlAgentCode"
+   , tnum = 183
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentAcctNum :: FIXTag
+tCashSettlAgentAcctNum = FIXTag 
+   { tName = "CashSettlAgentAcctNum"
+   , tnum = 184
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentAcctName :: FIXTag
+tCashSettlAgentAcctName = FIXTag 
+   { tName = "CashSettlAgentAcctName"
+   , tnum = 185
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentContactName :: FIXTag
+tCashSettlAgentContactName = FIXTag 
+   { tName = "CashSettlAgentContactName"
+   , tnum = 186
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentContactPhone :: FIXTag
+tCashSettlAgentContactPhone = FIXTag 
+   { tName = "CashSettlAgentContactPhone"
+   , tnum = 187
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBidSpotRate :: FIXTag
+tBidSpotRate = FIXTag 
+   { tName = "BidSpotRate"
+   , tnum = 188
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidForwardPoints :: FIXTag
+tBidForwardPoints = FIXTag 
+   { tName = "BidForwardPoints"
+   , tnum = 189
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSpotRate :: FIXTag
+tOfferSpotRate = FIXTag 
+   { tName = "OfferSpotRate"
+   , tnum = 190
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferForwardPoints :: FIXTag
+tOfferForwardPoints = FIXTag 
+   { tName = "OfferForwardPoints"
+   , tnum = 191
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrderQty2 :: FIXTag
+tOrderQty2 = FIXTag 
+   { tName = "OrderQty2"
+   , tnum = 192
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFutSettDate2 :: FIXTag
+tFutSettDate2 = FIXTag 
+   { tName = "FutSettDate2"
+   , tnum = 193
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLastSpotRate :: FIXTag
+tLastSpotRate = FIXTag 
+   { tName = "LastSpotRate"
+   , tnum = 194
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastForwardPoints :: FIXTag
+tLastForwardPoints = FIXTag 
+   { tName = "LastForwardPoints"
+   , tnum = 195
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocLinkID :: FIXTag
+tAllocLinkID = FIXTag 
+   { tName = "AllocLinkID"
+   , tnum = 196
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocLinkType :: FIXTag
+tAllocLinkType = FIXTag 
+   { tName = "AllocLinkType"
+   , tnum = 197
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecondaryOrderID :: FIXTag
+tSecondaryOrderID = FIXTag 
+   { tName = "SecondaryOrderID"
+   , tnum = 198
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoIOIQualifiers :: FIXTag
+tNoIOIQualifiers = FIXTag 
+   { tName = "NoIOIQualifiers"
+   , tnum = 199
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityMonthYear :: FIXTag
+tMaturityMonthYear = FIXTag 
+   { tName = "MaturityMonthYear"
+   , tnum = 200
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tPutOrCall :: FIXTag
+tPutOrCall = FIXTag 
+   { tName = "PutOrCall"
+   , tnum = 201
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStrikePrice :: FIXTag
+tStrikePrice = FIXTag 
+   { tName = "StrikePrice"
+   , tnum = 202
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCoveredOrUncovered :: FIXTag
+tCoveredOrUncovered = FIXTag 
+   { tName = "CoveredOrUncovered"
+   , tnum = 203
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCustomerOrFirm :: FIXTag
+tCustomerOrFirm = FIXTag 
+   { tName = "CustomerOrFirm"
+   , tnum = 204
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityDay :: FIXTag
+tMaturityDay = FIXTag 
+   { tName = "MaturityDay"
+   , tnum = 205
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOptAttribute :: FIXTag
+tOptAttribute = FIXTag 
+   { tName = "OptAttribute"
+   , tnum = 206
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityExchange :: FIXTag
+tSecurityExchange = FIXTag 
+   { tName = "SecurityExchange"
+   , tnum = 207
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNotifyBrokerOfCredit :: FIXTag
+tNotifyBrokerOfCredit = FIXTag 
+   { tName = "NotifyBrokerOfCredit"
+   , tnum = 208
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tAllocHandlInst :: FIXTag
+tAllocHandlInst = FIXTag 
+   { tName = "AllocHandlInst"
+   , tnum = 209
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxShow :: FIXTag
+tMaxShow = FIXTag 
+   { tName = "MaxShow"
+   , tnum = 210
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPegDifference :: FIXTag
+tPegDifference = FIXTag 
+   { tName = "PegDifference"
+   , tnum = 211
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tXmlDataLen :: FIXTag
+tXmlDataLen = FIXTag 
+   { tName = "XmlDataLen"
+   , tnum = 212
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tXmlData :: FIXTag
+tXmlData = FIXTag 
+   { tName = "XmlData"
+   , tnum = 213
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSettlInstRefID :: FIXTag
+tSettlInstRefID = FIXTag 
+   { tName = "SettlInstRefID"
+   , tnum = 214
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRoutingIDs :: FIXTag
+tNoRoutingIDs = FIXTag 
+   { tName = "NoRoutingIDs"
+   , tnum = 215
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoutingType :: FIXTag
+tRoutingType = FIXTag 
+   { tName = "RoutingType"
+   , tnum = 216
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoutingID :: FIXTag
+tRoutingID = FIXTag 
+   { tName = "RoutingID"
+   , tnum = 217
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSpreadToBenchmark :: FIXTag
+tSpreadToBenchmark = FIXTag 
+   { tName = "SpreadToBenchmark"
+   , tnum = 218
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBenchmark :: FIXTag
+tBenchmark = FIXTag 
+   { tName = "Benchmark"
+   , tnum = 219
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCouponRate :: FIXTag
+tCouponRate = FIXTag 
+   { tName = "CouponRate"
+   , tnum = 223
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContractMultiplier :: FIXTag
+tContractMultiplier = FIXTag 
+   { tName = "ContractMultiplier"
+   , tnum = 231
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDReqID :: FIXTag
+tMDReqID = FIXTag 
+   { tName = "MDReqID"
+   , tnum = 262
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSubscriptionRequestType :: FIXTag
+tSubscriptionRequestType = FIXTag 
+   { tName = "SubscriptionRequestType"
+   , tnum = 263
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMarketDepth :: FIXTag
+tMarketDepth = FIXTag 
+   { tName = "MarketDepth"
+   , tnum = 264
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDUpdateType :: FIXTag
+tMDUpdateType = FIXTag 
+   { tName = "MDUpdateType"
+   , tnum = 265
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAggregatedBook :: FIXTag
+tAggregatedBook = FIXTag 
+   { tName = "AggregatedBook"
+   , tnum = 266
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoMDEntryTypes :: FIXTag
+tNoMDEntryTypes = FIXTag 
+   { tName = "NoMDEntryTypes"
+   , tnum = 267
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMDEntries :: FIXTag
+tNoMDEntries = FIXTag 
+   { tName = "NoMDEntries"
+   , tnum = 268
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDEntryType :: FIXTag
+tMDEntryType = FIXTag 
+   { tName = "MDEntryType"
+   , tnum = 269
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryPx :: FIXTag
+tMDEntryPx = FIXTag 
+   { tName = "MDEntryPx"
+   , tnum = 270
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDEntrySize :: FIXTag
+tMDEntrySize = FIXTag 
+   { tName = "MDEntrySize"
+   , tnum = 271
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDEntryDate :: FIXTag
+tMDEntryDate = FIXTag 
+   { tName = "MDEntryDate"
+   , tnum = 272
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tMDEntryTime :: FIXTag
+tMDEntryTime = FIXTag 
+   { tName = "MDEntryTime"
+   , tnum = 273
+   , tparser = toFIXTimeOnly
+   , arbitraryValue = FIXTimeOnly <$> arbitrary }
+
+tTickDirection :: FIXTag
+tTickDirection = FIXTag 
+   { tName = "TickDirection"
+   , tnum = 274
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDMkt :: FIXTag
+tMDMkt = FIXTag 
+   { tName = "MDMkt"
+   , tnum = 275
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteCondition :: FIXTag
+tQuoteCondition = FIXTag 
+   { tName = "QuoteCondition"
+   , tnum = 276
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tTradeCondition :: FIXTag
+tTradeCondition = FIXTag 
+   { tName = "TradeCondition"
+   , tnum = 277
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMDEntryID :: FIXTag
+tMDEntryID = FIXTag 
+   { tName = "MDEntryID"
+   , tnum = 278
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDUpdateAction :: FIXTag
+tMDUpdateAction = FIXTag 
+   { tName = "MDUpdateAction"
+   , tnum = 279
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryRefID :: FIXTag
+tMDEntryRefID = FIXTag 
+   { tName = "MDEntryRefID"
+   , tnum = 280
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDReqRejReason :: FIXTag
+tMDReqRejReason = FIXTag 
+   { tName = "MDReqRejReason"
+   , tnum = 281
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryOriginator :: FIXTag
+tMDEntryOriginator = FIXTag 
+   { tName = "MDEntryOriginator"
+   , tnum = 282
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLocationID :: FIXTag
+tLocationID = FIXTag 
+   { tName = "LocationID"
+   , tnum = 283
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeskID :: FIXTag
+tDeskID = FIXTag 
+   { tName = "DeskID"
+   , tnum = 284
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeleteReason :: FIXTag
+tDeleteReason = FIXTag 
+   { tName = "DeleteReason"
+   , tnum = 285
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOpenCloseSettleFlag :: FIXTag
+tOpenCloseSettleFlag = FIXTag 
+   { tName = "OpenCloseSettleFlag"
+   , tnum = 286
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSellerDays :: FIXTag
+tSellerDays = FIXTag 
+   { tName = "SellerDays"
+   , tnum = 287
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDEntryBuyer :: FIXTag
+tMDEntryBuyer = FIXTag 
+   { tName = "MDEntryBuyer"
+   , tnum = 288
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDEntrySeller :: FIXTag
+tMDEntrySeller = FIXTag 
+   { tName = "MDEntrySeller"
+   , tnum = 289
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDEntryPositionNo :: FIXTag
+tMDEntryPositionNo = FIXTag 
+   { tName = "MDEntryPositionNo"
+   , tnum = 290
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tFinancialStatus :: FIXTag
+tFinancialStatus = FIXTag 
+   { tName = "FinancialStatus"
+   , tnum = 291
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCorporateAction :: FIXTag
+tCorporateAction = FIXTag 
+   { tName = "CorporateAction"
+   , tnum = 292
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDefBidSize :: FIXTag
+tDefBidSize = FIXTag 
+   { tName = "DefBidSize"
+   , tnum = 293
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDefOfferSize :: FIXTag
+tDefOfferSize = FIXTag 
+   { tName = "DefOfferSize"
+   , tnum = 294
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoQuoteEntries :: FIXTag
+tNoQuoteEntries = FIXTag 
+   { tName = "NoQuoteEntries"
+   , tnum = 295
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoQuoteSets :: FIXTag
+tNoQuoteSets = FIXTag 
+   { tName = "NoQuoteSets"
+   , tnum = 296
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteAckStatus :: FIXTag
+tQuoteAckStatus = FIXTag 
+   { tName = "QuoteAckStatus"
+   , tnum = 297
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteCancelType :: FIXTag
+tQuoteCancelType = FIXTag 
+   { tName = "QuoteCancelType"
+   , tnum = 298
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteEntryID :: FIXTag
+tQuoteEntryID = FIXTag 
+   { tName = "QuoteEntryID"
+   , tnum = 299
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRejectReason :: FIXTag
+tQuoteRejectReason = FIXTag 
+   { tName = "QuoteRejectReason"
+   , tnum = 300
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteResponseLevel :: FIXTag
+tQuoteResponseLevel = FIXTag 
+   { tName = "QuoteResponseLevel"
+   , tnum = 301
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteSetID :: FIXTag
+tQuoteSetID = FIXTag 
+   { tName = "QuoteSetID"
+   , tnum = 302
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRequestType :: FIXTag
+tQuoteRequestType = FIXTag 
+   { tName = "QuoteRequestType"
+   , tnum = 303
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotQuoteEntries :: FIXTag
+tTotQuoteEntries = FIXTag 
+   { tName = "TotQuoteEntries"
+   , tnum = 304
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingIDSource :: FIXTag
+tUnderlyingIDSource = FIXTag 
+   { tName = "UnderlyingIDSource"
+   , tnum = 305
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingIssuer :: FIXTag
+tUnderlyingIssuer = FIXTag 
+   { tName = "UnderlyingIssuer"
+   , tnum = 306
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityDesc :: FIXTag
+tUnderlyingSecurityDesc = FIXTag 
+   { tName = "UnderlyingSecurityDesc"
+   , tnum = 307
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityExchange :: FIXTag
+tUnderlyingSecurityExchange = FIXTag 
+   { tName = "UnderlyingSecurityExchange"
+   , tnum = 308
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityID :: FIXTag
+tUnderlyingSecurityID = FIXTag 
+   { tName = "UnderlyingSecurityID"
+   , tnum = 309
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityType :: FIXTag
+tUnderlyingSecurityType = FIXTag 
+   { tName = "UnderlyingSecurityType"
+   , tnum = 310
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSymbol :: FIXTag
+tUnderlyingSymbol = FIXTag 
+   { tName = "UnderlyingSymbol"
+   , tnum = 311
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSymbolSfx :: FIXTag
+tUnderlyingSymbolSfx = FIXTag 
+   { tName = "UnderlyingSymbolSfx"
+   , tnum = 312
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingMaturityMonthYear :: FIXTag
+tUnderlyingMaturityMonthYear = FIXTag 
+   { tName = "UnderlyingMaturityMonthYear"
+   , tnum = 313
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tUnderlyingMaturityDay :: FIXTag
+tUnderlyingMaturityDay = FIXTag 
+   { tName = "UnderlyingMaturityDay"
+   , tnum = 314
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingPutOrCall :: FIXTag
+tUnderlyingPutOrCall = FIXTag 
+   { tName = "UnderlyingPutOrCall"
+   , tnum = 315
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingStrikePrice :: FIXTag
+tUnderlyingStrikePrice = FIXTag 
+   { tName = "UnderlyingStrikePrice"
+   , tnum = 316
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingOptAttribute :: FIXTag
+tUnderlyingOptAttribute = FIXTag 
+   { tName = "UnderlyingOptAttribute"
+   , tnum = 317
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCurrency :: FIXTag
+tUnderlyingCurrency = FIXTag 
+   { tName = "UnderlyingCurrency"
+   , tnum = 318
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRatioQty :: FIXTag
+tRatioQty = FIXTag 
+   { tName = "RatioQty"
+   , tnum = 319
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSecurityReqID :: FIXTag
+tSecurityReqID = FIXTag 
+   { tName = "SecurityReqID"
+   , tnum = 320
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityRequestType :: FIXTag
+tSecurityRequestType = FIXTag 
+   { tName = "SecurityRequestType"
+   , tnum = 321
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityResponseID :: FIXTag
+tSecurityResponseID = FIXTag 
+   { tName = "SecurityResponseID"
+   , tnum = 322
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityResponseType :: FIXTag
+tSecurityResponseType = FIXTag 
+   { tName = "SecurityResponseType"
+   , tnum = 323
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityStatusReqID :: FIXTag
+tSecurityStatusReqID = FIXTag 
+   { tName = "SecurityStatusReqID"
+   , tnum = 324
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnsolicitedIndicator :: FIXTag
+tUnsolicitedIndicator = FIXTag 
+   { tName = "UnsolicitedIndicator"
+   , tnum = 325
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tSecurityTradingStatus :: FIXTag
+tSecurityTradingStatus = FIXTag 
+   { tName = "SecurityTradingStatus"
+   , tnum = 326
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tHaltReasonChar :: FIXTag
+tHaltReasonChar = FIXTag 
+   { tName = "HaltReasonChar"
+   , tnum = 327
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tInViewOfCommon :: FIXTag
+tInViewOfCommon = FIXTag 
+   { tName = "InViewOfCommon"
+   , tnum = 328
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tDueToRelated :: FIXTag
+tDueToRelated = FIXTag 
+   { tName = "DueToRelated"
+   , tnum = 329
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tBuyVolume :: FIXTag
+tBuyVolume = FIXTag 
+   { tName = "BuyVolume"
+   , tnum = 330
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSellVolume :: FIXTag
+tSellVolume = FIXTag 
+   { tName = "SellVolume"
+   , tnum = 331
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tHighPx :: FIXTag
+tHighPx = FIXTag 
+   { tName = "HighPx"
+   , tnum = 332
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLowPx :: FIXTag
+tLowPx = FIXTag 
+   { tName = "LowPx"
+   , tnum = 333
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAdjustment :: FIXTag
+tAdjustment = FIXTag 
+   { tName = "Adjustment"
+   , tnum = 334
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesReqID :: FIXTag
+tTradSesReqID = FIXTag 
+   { tName = "TradSesReqID"
+   , tnum = 335
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradingSessionID :: FIXTag
+tTradingSessionID = FIXTag 
+   { tName = "TradingSessionID"
+   , tnum = 336
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tContraTrader :: FIXTag
+tContraTrader = FIXTag 
+   { tName = "ContraTrader"
+   , tnum = 337
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradSesMethod :: FIXTag
+tTradSesMethod = FIXTag 
+   { tName = "TradSesMethod"
+   , tnum = 338
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesMode :: FIXTag
+tTradSesMode = FIXTag 
+   { tName = "TradSesMode"
+   , tnum = 339
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesStatus :: FIXTag
+tTradSesStatus = FIXTag 
+   { tName = "TradSesStatus"
+   , tnum = 340
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesStartTime :: FIXTag
+tTradSesStartTime = FIXTag 
+   { tName = "TradSesStartTime"
+   , tnum = 341
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesOpenTime :: FIXTag
+tTradSesOpenTime = FIXTag 
+   { tName = "TradSesOpenTime"
+   , tnum = 342
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesPreCloseTime :: FIXTag
+tTradSesPreCloseTime = FIXTag 
+   { tName = "TradSesPreCloseTime"
+   , tnum = 343
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesCloseTime :: FIXTag
+tTradSesCloseTime = FIXTag 
+   { tName = "TradSesCloseTime"
+   , tnum = 344
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesEndTime :: FIXTag
+tTradSesEndTime = FIXTag 
+   { tName = "TradSesEndTime"
+   , tnum = 345
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tNumberOfOrders :: FIXTag
+tNumberOfOrders = FIXTag 
+   { tName = "NumberOfOrders"
+   , tnum = 346
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMessageEncoding :: FIXTag
+tMessageEncoding = FIXTag 
+   { tName = "MessageEncoding"
+   , tnum = 347
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedIssuerLen :: FIXTag
+tEncodedIssuerLen = FIXTag 
+   { tName = "EncodedIssuerLen"
+   , tnum = 348
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedIssuer :: FIXTag
+tEncodedIssuer = FIXTag 
+   { tName = "EncodedIssuer"
+   , tnum = 349
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedSecurityDescLen :: FIXTag
+tEncodedSecurityDescLen = FIXTag 
+   { tName = "EncodedSecurityDescLen"
+   , tnum = 350
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedSecurityDesc :: FIXTag
+tEncodedSecurityDesc = FIXTag 
+   { tName = "EncodedSecurityDesc"
+   , tnum = 351
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedListExecInstLen :: FIXTag
+tEncodedListExecInstLen = FIXTag 
+   { tName = "EncodedListExecInstLen"
+   , tnum = 352
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedListExecInst :: FIXTag
+tEncodedListExecInst = FIXTag 
+   { tName = "EncodedListExecInst"
+   , tnum = 353
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedTextLen :: FIXTag
+tEncodedTextLen = FIXTag 
+   { tName = "EncodedTextLen"
+   , tnum = 354
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedText :: FIXTag
+tEncodedText = FIXTag 
+   { tName = "EncodedText"
+   , tnum = 355
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedSubjectLen :: FIXTag
+tEncodedSubjectLen = FIXTag 
+   { tName = "EncodedSubjectLen"
+   , tnum = 356
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedSubject :: FIXTag
+tEncodedSubject = FIXTag 
+   { tName = "EncodedSubject"
+   , tnum = 357
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedHeadlineLen :: FIXTag
+tEncodedHeadlineLen = FIXTag 
+   { tName = "EncodedHeadlineLen"
+   , tnum = 358
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedHeadline :: FIXTag
+tEncodedHeadline = FIXTag 
+   { tName = "EncodedHeadline"
+   , tnum = 359
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedAllocTextLen :: FIXTag
+tEncodedAllocTextLen = FIXTag 
+   { tName = "EncodedAllocTextLen"
+   , tnum = 360
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedAllocText :: FIXTag
+tEncodedAllocText = FIXTag 
+   { tName = "EncodedAllocText"
+   , tnum = 361
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedUnderlyingIssuerLen :: FIXTag
+tEncodedUnderlyingIssuerLen = FIXTag 
+   { tName = "EncodedUnderlyingIssuerLen"
+   , tnum = 362
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedUnderlyingIssuer :: FIXTag
+tEncodedUnderlyingIssuer = FIXTag 
+   { tName = "EncodedUnderlyingIssuer"
+   , tnum = 363
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedUnderlyingSecurityDescLen :: FIXTag
+tEncodedUnderlyingSecurityDescLen = FIXTag 
+   { tName = "EncodedUnderlyingSecurityDescLen"
+   , tnum = 364
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedUnderlyingSecurityDesc :: FIXTag
+tEncodedUnderlyingSecurityDesc = FIXTag 
+   { tName = "EncodedUnderlyingSecurityDesc"
+   , tnum = 365
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tAllocPrice :: FIXTag
+tAllocPrice = FIXTag 
+   { tName = "AllocPrice"
+   , tnum = 366
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteSetValidUntilTime :: FIXTag
+tQuoteSetValidUntilTime = FIXTag 
+   { tName = "QuoteSetValidUntilTime"
+   , tnum = 367
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tQuoteEntryRejectReason :: FIXTag
+tQuoteEntryRejectReason = FIXTag 
+   { tName = "QuoteEntryRejectReason"
+   , tnum = 368
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastMsgSeqNumProcessed :: FIXTag
+tLastMsgSeqNumProcessed = FIXTag 
+   { tName = "LastMsgSeqNumProcessed"
+   , tnum = 369
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOnBehalfOfSendingTime :: FIXTag
+tOnBehalfOfSendingTime = FIXTag 
+   { tName = "OnBehalfOfSendingTime"
+   , tnum = 370
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tRefTagID :: FIXTag
+tRefTagID = FIXTag 
+   { tName = "RefTagID"
+   , tnum = 371
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRefMsgType :: FIXTag
+tRefMsgType = FIXTag 
+   { tName = "RefMsgType"
+   , tnum = 372
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSessionRejectReason :: FIXTag
+tSessionRejectReason = FIXTag 
+   { tName = "SessionRejectReason"
+   , tnum = 373
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidRequestTransType :: FIXTag
+tBidRequestTransType = FIXTag 
+   { tName = "BidRequestTransType"
+   , tnum = 374
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tContraBroker :: FIXTag
+tContraBroker = FIXTag 
+   { tName = "ContraBroker"
+   , tnum = 375
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tComplianceID :: FIXTag
+tComplianceID = FIXTag 
+   { tName = "ComplianceID"
+   , tnum = 376
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSolicitedFlag :: FIXTag
+tSolicitedFlag = FIXTag 
+   { tName = "SolicitedFlag"
+   , tnum = 377
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tExecRestatementReason :: FIXTag
+tExecRestatementReason = FIXTag 
+   { tName = "ExecRestatementReason"
+   , tnum = 378
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBusinessRejectRefID :: FIXTag
+tBusinessRejectRefID = FIXTag 
+   { tName = "BusinessRejectRefID"
+   , tnum = 379
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBusinessRejectReason :: FIXTag
+tBusinessRejectReason = FIXTag 
+   { tName = "BusinessRejectReason"
+   , tnum = 380
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tGrossTradeAmt :: FIXTag
+tGrossTradeAmt = FIXTag 
+   { tName = "GrossTradeAmt"
+   , tnum = 381
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoContraBrokers :: FIXTag
+tNoContraBrokers = FIXTag 
+   { tName = "NoContraBrokers"
+   , tnum = 382
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxMessageSize :: FIXTag
+tMaxMessageSize = FIXTag 
+   { tName = "MaxMessageSize"
+   , tnum = 383
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMsgTypes :: FIXTag
+tNoMsgTypes = FIXTag 
+   { tName = "NoMsgTypes"
+   , tnum = 384
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgDirection :: FIXTag
+tMsgDirection = FIXTag 
+   { tName = "MsgDirection"
+   , tnum = 385
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoTradingSessions :: FIXTag
+tNoTradingSessions = FIXTag 
+   { tName = "NoTradingSessions"
+   , tnum = 386
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotalVolumeTraded :: FIXTag
+tTotalVolumeTraded = FIXTag 
+   { tName = "TotalVolumeTraded"
+   , tnum = 387
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDiscretionInst :: FIXTag
+tDiscretionInst = FIXTag 
+   { tName = "DiscretionInst"
+   , tnum = 388
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDiscretionOffset :: FIXTag
+tDiscretionOffset = FIXTag 
+   { tName = "DiscretionOffset"
+   , tnum = 389
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidID :: FIXTag
+tBidID = FIXTag 
+   { tName = "BidID"
+   , tnum = 390
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClientBidID :: FIXTag
+tClientBidID = FIXTag 
+   { tName = "ClientBidID"
+   , tnum = 391
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListName :: FIXTag
+tListName = FIXTag 
+   { tName = "ListName"
+   , tnum = 392
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotalNumSecurities :: FIXTag
+tTotalNumSecurities = FIXTag 
+   { tName = "TotalNumSecurities"
+   , tnum = 393
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidType :: FIXTag
+tBidType = FIXTag 
+   { tName = "BidType"
+   , tnum = 394
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNumTickets :: FIXTag
+tNumTickets = FIXTag 
+   { tName = "NumTickets"
+   , tnum = 395
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSideValue1 :: FIXTag
+tSideValue1 = FIXTag 
+   { tName = "SideValue1"
+   , tnum = 396
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSideValue2 :: FIXTag
+tSideValue2 = FIXTag 
+   { tName = "SideValue2"
+   , tnum = 397
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoBidDescriptors :: FIXTag
+tNoBidDescriptors = FIXTag 
+   { tName = "NoBidDescriptors"
+   , tnum = 398
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidDescriptorType :: FIXTag
+tBidDescriptorType = FIXTag 
+   { tName = "BidDescriptorType"
+   , tnum = 399
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidDescriptor :: FIXTag
+tBidDescriptor = FIXTag 
+   { tName = "BidDescriptor"
+   , tnum = 400
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSideValueInd :: FIXTag
+tSideValueInd = FIXTag 
+   { tName = "SideValueInd"
+   , tnum = 401
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLiquidityPctLow :: FIXTag
+tLiquidityPctLow = FIXTag 
+   { tName = "LiquidityPctLow"
+   , tnum = 402
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityPctHigh :: FIXTag
+tLiquidityPctHigh = FIXTag 
+   { tName = "LiquidityPctHigh"
+   , tnum = 403
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityValue :: FIXTag
+tLiquidityValue = FIXTag 
+   { tName = "LiquidityValue"
+   , tnum = 404
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tEFPTrackingError :: FIXTag
+tEFPTrackingError = FIXTag 
+   { tName = "EFPTrackingError"
+   , tnum = 405
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFairValue :: FIXTag
+tFairValue = FIXTag 
+   { tName = "FairValue"
+   , tnum = 406
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOutsideIndexPct :: FIXTag
+tOutsideIndexPct = FIXTag 
+   { tName = "OutsideIndexPct"
+   , tnum = 407
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tValueOfFutures :: FIXTag
+tValueOfFutures = FIXTag 
+   { tName = "ValueOfFutures"
+   , tnum = 408
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityIndType :: FIXTag
+tLiquidityIndType = FIXTag 
+   { tName = "LiquidityIndType"
+   , tnum = 409
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tWtAverageLiquidity :: FIXTag
+tWtAverageLiquidity = FIXTag 
+   { tName = "WtAverageLiquidity"
+   , tnum = 410
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExchangeForPhysical :: FIXTag
+tExchangeForPhysical = FIXTag 
+   { tName = "ExchangeForPhysical"
+   , tnum = 411
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOutMainCntryUIndex :: FIXTag
+tOutMainCntryUIndex = FIXTag 
+   { tName = "OutMainCntryUIndex"
+   , tnum = 412
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCrossPercent :: FIXTag
+tCrossPercent = FIXTag 
+   { tName = "CrossPercent"
+   , tnum = 413
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tProgRptReqs :: FIXTag
+tProgRptReqs = FIXTag 
+   { tName = "ProgRptReqs"
+   , tnum = 414
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tProgPeriodInterval :: FIXTag
+tProgPeriodInterval = FIXTag 
+   { tName = "ProgPeriodInterval"
+   , tnum = 415
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIncTaxInd :: FIXTag
+tIncTaxInd = FIXTag 
+   { tName = "IncTaxInd"
+   , tnum = 416
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNumBidders :: FIXTag
+tNumBidders = FIXTag 
+   { tName = "NumBidders"
+   , tnum = 417
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeType :: FIXTag
+tTradeType = FIXTag 
+   { tName = "TradeType"
+   , tnum = 418
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBasisPxType :: FIXTag
+tBasisPxType = FIXTag 
+   { tName = "BasisPxType"
+   , tnum = 419
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoBidComponents :: FIXTag
+tNoBidComponents = FIXTag 
+   { tName = "NoBidComponents"
+   , tnum = 420
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCountry :: FIXTag
+tCountry = FIXTag 
+   { tName = "Country"
+   , tnum = 421
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotNoStrikes :: FIXTag
+tTotNoStrikes = FIXTag 
+   { tName = "TotNoStrikes"
+   , tnum = 422
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPriceType :: FIXTag
+tPriceType = FIXTag 
+   { tName = "PriceType"
+   , tnum = 423
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDayOrderQty :: FIXTag
+tDayOrderQty = FIXTag 
+   { tName = "DayOrderQty"
+   , tnum = 424
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDayCumQty :: FIXTag
+tDayCumQty = FIXTag 
+   { tName = "DayCumQty"
+   , tnum = 425
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDayAvgPx :: FIXTag
+tDayAvgPx = FIXTag 
+   { tName = "DayAvgPx"
+   , tnum = 426
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tGTBookingInst :: FIXTag
+tGTBookingInst = FIXTag 
+   { tName = "GTBookingInst"
+   , tnum = 427
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoStrikes :: FIXTag
+tNoStrikes = FIXTag 
+   { tName = "NoStrikes"
+   , tnum = 428
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListStatusType :: FIXTag
+tListStatusType = FIXTag 
+   { tName = "ListStatusType"
+   , tnum = 429
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNetGrossInd :: FIXTag
+tNetGrossInd = FIXTag 
+   { tName = "NetGrossInd"
+   , tnum = 430
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListOrderStatus :: FIXTag
+tListOrderStatus = FIXTag 
+   { tName = "ListOrderStatus"
+   , tnum = 431
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExpireDate :: FIXTag
+tExpireDate = FIXTag 
+   { tName = "ExpireDate"
+   , tnum = 432
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tListExecInstType :: FIXTag
+tListExecInstType = FIXTag 
+   { tName = "ListExecInstType"
+   , tnum = 433
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCxlRejResponseTo :: FIXTag
+tCxlRejResponseTo = FIXTag 
+   { tName = "CxlRejResponseTo"
+   , tnum = 434
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCouponRate :: FIXTag
+tUnderlyingCouponRate = FIXTag 
+   { tName = "UnderlyingCouponRate"
+   , tnum = 435
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingContractMultiplier :: FIXTag
+tUnderlyingContractMultiplier = FIXTag 
+   { tName = "UnderlyingContractMultiplier"
+   , tnum = 436
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContraTradeQty :: FIXTag
+tContraTradeQty = FIXTag 
+   { tName = "ContraTradeQty"
+   , tnum = 437
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContraTradeTime :: FIXTag
+tContraTradeTime = FIXTag 
+   { tName = "ContraTradeTime"
+   , tnum = 438
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tClearingFirm :: FIXTag
+tClearingFirm = FIXTag 
+   { tName = "ClearingFirm"
+   , tnum = 439
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClearingAccount :: FIXTag
+tClearingAccount = FIXTag 
+   { tName = "ClearingAccount"
+   , tnum = 440
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLiquidityNumSecurities :: FIXTag
+tLiquidityNumSecurities = FIXTag 
+   { tName = "LiquidityNumSecurities"
+   , tnum = 441
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMultiLegReportingType :: FIXTag
+tMultiLegReportingType = FIXTag 
+   { tName = "MultiLegReportingType"
+   , tnum = 442
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tStrikeTime :: FIXTag
+tStrikeTime = FIXTag 
+   { tName = "StrikeTime"
+   , tnum = 443
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tListStatusText :: FIXTag
+tListStatusText = FIXTag 
+   { tName = "ListStatusText"
+   , tnum = 444
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedListStatusTextLen :: FIXTag
+tEncodedListStatusTextLen = FIXTag 
+   { tName = "EncodedListStatusTextLen"
+   , tnum = 445
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedListStatusText :: FIXTag
+tEncodedListStatusText = FIXTag 
+   { tName = "EncodedListStatusText"
+   , tnum = 446
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+headerFIX42 :: FIXTags
+headerFIX42 = 
+   LT.insert (tnum tSenderCompID) tSenderCompID $
+   LT.insert (tnum tTargetCompID) tTargetCompID $
+   LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+   LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+   LT.insert (tnum tSecureDataLen) tSecureDataLen $
+   LT.insert (tnum tSecureData) tSecureData $
+   LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+   LT.insert (tnum tSenderSubID) tSenderSubID $
+   LT.insert (tnum tSenderLocationID) tSenderLocationID $
+   LT.insert (tnum tTargetSubID) tTargetSubID $
+   LT.insert (tnum tTargetLocationID) tTargetLocationID $
+   LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+   LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+   LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+   LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+   LT.insert (tnum tPossDupFlag) tPossDupFlag $
+   LT.insert (tnum tPossResend) tPossResend $
+   LT.insert (tnum tSendingTime) tSendingTime $
+   LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+   LT.insert (tnum tXmlDataLen) tXmlDataLen $
+   LT.insert (tnum tXmlData) tXmlData $
+   LT.insert (tnum tMessageEncoding) tMessageEncoding $
+   LT.insert (tnum tLastMsgSeqNumProcessed) tLastMsgSeqNumProcessed $
+   LT.insert (tnum tOnBehalfOfSendingTime) tOnBehalfOfSendingTime    LT.new
+
+
+trailerFIX42 :: FIXTags
+trailerFIX42 = 
+   LT.insert (tnum tSignatureLength) tSignatureLength $
+   LT.insert (tnum tSignature) tSignature    LT.new
+
+
+mHeartbeat :: FIXMessageSpec
+mHeartbeat = FMSpec
+   { msName = "Heartbeat"
+   , msType = C.pack "0"
+   , msHeader = headerFIX42
+   , msBody = mHeartbeatBody
+   , msTrailer = trailerFIX42 }
+   where
+   mHeartbeatBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mTestRequest :: FIXMessageSpec
+mTestRequest = FMSpec
+   { msName = "TestRequest"
+   , msType = C.pack "1"
+   , msHeader = headerFIX42
+   , msBody = mTestRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mTestRequestBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mResendRequest :: FIXMessageSpec
+mResendRequest = FMSpec
+   { msName = "ResendRequest"
+   , msType = C.pack "2"
+   , msHeader = headerFIX42
+   , msBody = mResendRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mResendRequestBody = 
+      LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+      LT.insert (tnum tEndSeqNo) tEndSeqNo       LT.new
+
+
+mReject :: FIXMessageSpec
+mReject = FMSpec
+   { msName = "Reject"
+   , msType = C.pack "3"
+   , msHeader = headerFIX42
+   , msBody = mRejectBody
+   , msTrailer = trailerFIX42 }
+   where
+   mRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tRefTagID) tRefTagID $
+      LT.insert (tnum tRefMsgType) tRefMsgType $
+      LT.insert (tnum tSessionRejectReason) tSessionRejectReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mSequenceReset :: FIXMessageSpec
+mSequenceReset = FMSpec
+   { msName = "SequenceReset"
+   , msType = C.pack "4"
+   , msHeader = headerFIX42
+   , msBody = mSequenceResetBody
+   , msTrailer = trailerFIX42 }
+   where
+   mSequenceResetBody = 
+      LT.insert (tnum tGapFillFlag) tGapFillFlag $
+      LT.insert (tnum tNewSeqNo) tNewSeqNo       LT.new
+
+
+mLogout :: FIXMessageSpec
+mLogout = FMSpec
+   { msName = "Logout"
+   , msType = C.pack "5"
+   , msHeader = headerFIX42
+   , msBody = mLogoutBody
+   , msTrailer = trailerFIX42 }
+   where
+   mLogoutBody = 
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mIndicationofInterest :: FIXMessageSpec
+mIndicationofInterest = FMSpec
+   { msName = "IndicationofInterest"
+   , msType = C.pack "6"
+   , msHeader = headerFIX42
+   , msBody = mIndicationofInterestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mIndicationofInterestBody = 
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tIOITransType) tIOITransType $
+      LT.insert (tnum tIOIRefID) tIOIRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tIOIShares) tIOIShares $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+      LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+      LT.insert (tnum tNoIOIQualifiers) gNoIOIQualifiers''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tSpreadToBenchmark) tSpreadToBenchmark $
+      LT.insert (tnum tBenchmark) tBenchmark       LT.new
+      where
+         gNoIOIQualifiers''' = FIXTag
+            { tName = "NoIOIQualifiers"
+            , tnum = tnum tNoIOIQualifiers
+            , tparser = gNoIOIQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoIOIQualifiersSpec''' }
+
+         gNoIOIQualifiersP''' = groupP gNoIOIQualifiersSpec'''
+         gNoIOIQualifiersSpec''' = FGSpec
+            { gsLength = tNoIOIQualifiers
+            , gsSeperator = tIOIQualifier
+            , gsBody = gNoIOIQualifiersBody''' }
+            where
+            gNoIOIQualifiersBody''' = 
+               LT.new
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+
+
+mAdvertisement :: FIXMessageSpec
+mAdvertisement = FMSpec
+   { msName = "Advertisement"
+   , msType = C.pack "7"
+   , msHeader = headerFIX42
+   , msBody = mAdvertisementBody
+   , msTrailer = trailerFIX42 }
+   where
+   mAdvertisementBody = 
+      LT.insert (tnum tAdvId) tAdvId $
+      LT.insert (tnum tAdvTransType) tAdvTransType $
+      LT.insert (tnum tAdvRefID) tAdvRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tAdvSide) tAdvSide $
+      LT.insert (tnum tShares) tShares $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID       LT.new
+
+
+mExecutionReport :: FIXMessageSpec
+mExecutionReport = FMSpec
+   { msName = "ExecutionReport"
+   , msType = C.pack "8"
+   , msHeader = headerFIX42
+   , msBody = mExecutionReportBody
+   , msTrailer = trailerFIX42 }
+   where
+   mExecutionReportBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tNoContraBrokers) gNoContraBrokers''' $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tExecTransType) tExecTransType $
+      LT.insert (tnum tExecRefID) tExecRefID $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tOrdRejReason) tOrdRejReason $
+      LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tLastShares) tLastShares $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tLastSpotRate) tLastSpotRate $
+      LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tLastCapacity) tLastCapacity $
+      LT.insert (tnum tLeavesQty) tLeavesQty $
+      LT.insert (tnum tCumQty) tCumQty $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tDayOrderQty) tDayOrderQty $
+      LT.insert (tnum tDayCumQty) tDayCumQty $
+      LT.insert (tnum tDayAvgPx) tDayAvgPx $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tReportToExch) tReportToExch $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tClearingFirm) tClearingFirm $
+      LT.insert (tnum tClearingAccount) tClearingAccount $
+      LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType       LT.new
+      where
+         gNoContraBrokers''' = FIXTag
+            { tName = "NoContraBrokers"
+            , tnum = tnum tNoContraBrokers
+            , tparser = gNoContraBrokersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoContraBrokersSpec''' }
+
+         gNoContraBrokersP''' = groupP gNoContraBrokersSpec'''
+         gNoContraBrokersSpec''' = FGSpec
+            { gsLength = tNoContraBrokers
+            , gsSeperator = tContraBroker
+            , gsBody = gNoContraBrokersBody''' }
+            where
+            gNoContraBrokersBody''' = 
+               LT.insert (tnum tContraTrader) tContraTrader $
+               LT.insert (tnum tContraTradeQty) tContraTradeQty $
+               LT.insert (tnum tContraTradeTime) tContraTradeTime                LT.new
+
+
+
+mOrderCancelReject :: FIXMessageSpec
+mOrderCancelReject = FMSpec
+   { msName = "OrderCancelReject"
+   , msType = C.pack "9"
+   , msHeader = headerFIX42
+   , msBody = mOrderCancelRejectBody
+   , msTrailer = trailerFIX42 }
+   where
+   mOrderCancelRejectBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tCxlRejResponseTo) tCxlRejResponseTo $
+      LT.insert (tnum tCxlRejReason) tCxlRejReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mLogon :: FIXMessageSpec
+mLogon = FMSpec
+   { msName = "Logon"
+   , msType = C.pack "A"
+   , msHeader = headerFIX42
+   , msBody = mLogonBody
+   , msTrailer = trailerFIX42 }
+   where
+   mLogonBody = 
+      LT.insert (tnum tEncryptMethod) tEncryptMethod $
+      LT.insert (tnum tHeartBtInt) tHeartBtInt $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData $
+      LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+      LT.insert (tnum tMaxMessageSize) tMaxMessageSize $
+      LT.insert (tnum tNoMsgTypes) gNoMsgTypes'''       LT.new
+      where
+         gNoMsgTypes''' = FIXTag
+            { tName = "NoMsgTypes"
+            , tnum = tnum tNoMsgTypes
+            , tparser = gNoMsgTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMsgTypesSpec''' }
+
+         gNoMsgTypesP''' = groupP gNoMsgTypesSpec'''
+         gNoMsgTypesSpec''' = FGSpec
+            { gsLength = tNoMsgTypes
+            , gsSeperator = tRefMsgType
+            , gsBody = gNoMsgTypesBody''' }
+            where
+            gNoMsgTypesBody''' = 
+               LT.insert (tnum tMsgDirection) tMsgDirection                LT.new
+
+
+
+mNews :: FIXMessageSpec
+mNews = FMSpec
+   { msName = "News"
+   , msType = C.pack "B"
+   , msHeader = headerFIX42
+   , msBody = mNewsBody
+   , msTrailer = trailerFIX42 }
+   where
+   mNewsBody = 
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tUrgency) tUrgency $
+      LT.insert (tnum tHeadline) tHeadline $
+      LT.insert (tnum tEncodedHeadlineLen) tEncodedHeadlineLen $
+      LT.insert (tnum tEncodedHeadline) tEncodedHeadline $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tLinesOfText) gLinesOfText''' $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gLinesOfText''' = FIXTag
+            { tName = "LinesOfText"
+            , tnum = tnum tLinesOfText
+            , tparser = gLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gLinesOfTextSpec''' }
+
+         gLinesOfTextP''' = groupP gLinesOfTextSpec'''
+         gLinesOfTextSpec''' = FGSpec
+            { gsLength = tLinesOfText
+            , gsSeperator = tText
+            , gsBody = gLinesOfTextBody''' }
+            where
+            gLinesOfTextBody''' = 
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tRelatdSym
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc                LT.new
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+
+
+mEmail :: FIXMessageSpec
+mEmail = FMSpec
+   { msName = "Email"
+   , msType = C.pack "C"
+   , msHeader = headerFIX42
+   , msBody = mEmailBody
+   , msTrailer = trailerFIX42 }
+   where
+   mEmailBody = 
+      LT.insert (tnum tEmailThreadID) tEmailThreadID $
+      LT.insert (tnum tEmailType) tEmailType $
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tSubject) tSubject $
+      LT.insert (tnum tEncodedSubjectLen) tEncodedSubjectLen $
+      LT.insert (tnum tEncodedSubject) tEncodedSubject $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tLinesOfText) gLinesOfText''' $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gLinesOfText''' = FIXTag
+            { tName = "LinesOfText"
+            , tnum = tnum tLinesOfText
+            , tparser = gLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gLinesOfTextSpec''' }
+
+         gLinesOfTextP''' = groupP gLinesOfTextSpec'''
+         gLinesOfTextSpec''' = FGSpec
+            { gsLength = tLinesOfText
+            , gsSeperator = tText
+            , gsBody = gLinesOfTextBody''' }
+            where
+            gLinesOfTextBody''' = 
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tRelatdSym
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc                LT.new
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+
+
+mNewOrderSingle :: FIXMessageSpec
+mNewOrderSingle = FMSpec
+   { msName = "NewOrderSingle"
+   , msType = C.pack "D"
+   , msHeader = headerFIX42
+   , msBody = mNewOrderSingleBody
+   , msTrailer = trailerFIX42 }
+   where
+   mNewOrderSingleBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tClearingFirm) tClearingFirm $
+      LT.insert (tnum tClearingAccount) tClearingAccount       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocShares) tAllocShares                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.new
+
+
+
+mNewOrderList :: FIXMessageSpec
+mNewOrderList = FMSpec
+   { msName = "NewOrderList"
+   , msType = C.pack "E"
+   , msHeader = headerFIX42
+   , msBody = mNewOrderListBody
+   , msTrailer = trailerFIX42 }
+   where
+   mNewOrderListBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tProgRptReqs) tProgRptReqs $
+      LT.insert (tnum tBidType) tBidType $
+      LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+      LT.insert (tnum tListExecInstType) tListExecInstType $
+      LT.insert (tnum tListExecInst) tListExecInst $
+      LT.insert (tnum tEncodedListExecInstLen) tEncodedListExecInstLen $
+      LT.insert (tnum tEncodedListExecInst) tEncodedListExecInst $
+      LT.insert (tnum tTotNoOrders) tTotNoOrders $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tListSeqNo) tListSeqNo $
+               LT.insert (tnum tSettlInstMode) tSettlInstMode $
+               LT.insert (tnum tClientID) tClientID $
+               LT.insert (tnum tExecBroker) tExecBroker $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tHandlInst) tHandlInst $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tMaxFloor) tMaxFloor $
+               LT.insert (tnum tExDestination) tExDestination $
+               LT.insert (tnum tNoTradingSessions) gNoTradingSessions'''''' $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tSymbol) tSymbol $
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tSideValueInd) tSideValueInd $
+               LT.insert (tnum tLocateReqd) tLocateReqd $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tStopPx) tStopPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tIOIid) tIOIid $
+               LT.insert (tnum tQuoteID) tQuoteID $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tEffectiveTime) tEffectiveTime $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tGTBookingInst) tGTBookingInst $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tRule80A) tRule80A $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tOpenClose) tOpenClose $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+               LT.insert (tnum tMaxShow) tMaxShow $
+               LT.insert (tnum tPegDifference) tPegDifference $
+               LT.insert (tnum tDiscretionInst) tDiscretionInst $
+               LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+               LT.insert (tnum tClearingFirm) tClearingFirm $
+               LT.insert (tnum tClearingAccount) tClearingAccount                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tAllocShares) tAllocShares                         LT.new
+
+                  gNoTradingSessions'''''' = FIXTag
+                     { tName = "NoTradingSessions"
+                     , tnum = tnum tNoTradingSessions
+                     , tparser = gNoTradingSessionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec'''''' }
+
+                  gNoTradingSessionsP'''''' = groupP gNoTradingSessionsSpec''''''
+                  gNoTradingSessionsSpec'''''' = FGSpec
+                     { gsLength = tNoTradingSessions
+                     , gsSeperator = tTradingSessionID
+                     , gsBody = gNoTradingSessionsBody'''''' }
+                     where
+                     gNoTradingSessionsBody'''''' = 
+                        LT.new
+
+
+
+
+mOrderCancelRequest :: FIXMessageSpec
+mOrderCancelRequest = FMSpec
+   { msName = "OrderCancelRequest"
+   , msType = C.pack "F"
+   , msHeader = headerFIX42
+   , msBody = mOrderCancelRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mOrderCancelRequestBody = 
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mOrderCancelReplaceRequest :: FIXMessageSpec
+mOrderCancelReplaceRequest = FMSpec
+   { msName = "OrderCancelReplaceRequest"
+   , msType = C.pack "G"
+   , msHeader = headerFIX42
+   , msBody = mOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tClearingFirm) tClearingFirm $
+      LT.insert (tnum tClearingAccount) tClearingAccount       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocShares) tAllocShares                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.new
+
+
+
+mOrderStatusRequest :: FIXMessageSpec
+mOrderStatusRequest = FMSpec
+   { msName = "OrderStatusRequest"
+   , msType = C.pack "H"
+   , msHeader = headerFIX42
+   , msBody = mOrderStatusRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mOrderStatusRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide       LT.new
+
+
+mAllocation :: FIXMessageSpec
+mAllocation = FMSpec
+   { msName = "Allocation"
+   , msType = C.pack "J"
+   , msHeader = headerFIX42
+   , msBody = mAllocationBody
+   , msTrailer = trailerFIX42 }
+   where
+   mAllocationBody = 
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tAllocTransType) tAllocTransType $
+      LT.insert (tnum tRefAllocID) tRefAllocID $
+      LT.insert (tnum tAllocLinkID) tAllocLinkID $
+      LT.insert (tnum tAllocLinkType) tAllocLinkType $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tShares) tShares $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tOpenClose) tOpenClose $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocPrice) tAllocPrice $
+               LT.insert (tnum tAllocShares) tAllocShares $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+               LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+               LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+               LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+               LT.insert (tnum tExecBroker) tExecBroker $
+               LT.insert (tnum tClientID) tClientID $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+               LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+               LT.insert (tnum tSettlInstMode) tSettlInstMode $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees''''''                LT.new
+               where
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType                         LT.new
+
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tLastShares
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.insert (tnum tExecID) tExecID $
+               LT.insert (tnum tLastPx) tLastPx $
+               LT.insert (tnum tLastCapacity) tLastCapacity                LT.new
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tWaveNo) tWaveNo                LT.new
+
+
+
+mListCancelRequest :: FIXMessageSpec
+mListCancelRequest = FMSpec
+   { msName = "ListCancelRequest"
+   , msType = C.pack "K"
+   , msHeader = headerFIX42
+   , msBody = mListCancelRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mListCancelRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListExecute :: FIXMessageSpec
+mListExecute = FMSpec
+   { msName = "ListExecute"
+   , msType = C.pack "L"
+   , msHeader = headerFIX42
+   , msBody = mListExecuteBody
+   , msTrailer = trailerFIX42 }
+   where
+   mListExecuteBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListStatusRequest :: FIXMessageSpec
+mListStatusRequest = FMSpec
+   { msName = "ListStatusRequest"
+   , msType = C.pack "M"
+   , msHeader = headerFIX42
+   , msBody = mListStatusRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mListStatusRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListStatus :: FIXMessageSpec
+mListStatus = FMSpec
+   { msName = "ListStatus"
+   , msType = C.pack "N"
+   , msHeader = headerFIX42
+   , msBody = mListStatusBody
+   , msTrailer = trailerFIX42 }
+   where
+   mListStatusBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tListStatusType) tListStatusType $
+      LT.insert (tnum tNoRpts) tNoRpts $
+      LT.insert (tnum tListOrderStatus) tListOrderStatus $
+      LT.insert (tnum tRptSeq) tRptSeq $
+      LT.insert (tnum tListStatusText) tListStatusText $
+      LT.insert (tnum tEncodedListStatusTextLen) tEncodedListStatusTextLen $
+      LT.insert (tnum tEncodedListStatusText) tEncodedListStatusText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tTotNoOrders) tTotNoOrders $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tCumQty) tCumQty $
+               LT.insert (tnum tOrdStatus) tOrdStatus $
+               LT.insert (tnum tLeavesQty) tLeavesQty $
+               LT.insert (tnum tCxlQty) tCxlQty $
+               LT.insert (tnum tAvgPx) tAvgPx $
+               LT.insert (tnum tOrdRejReason) tOrdRejReason $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mAllocationACK :: FIXMessageSpec
+mAllocationACK = FMSpec
+   { msName = "AllocationACK"
+   , msType = C.pack "P"
+   , msHeader = headerFIX42
+   , msBody = mAllocationACKBody
+   , msTrailer = trailerFIX42 }
+   where
+   mAllocationACKBody = 
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mDontKnowTrade :: FIXMessageSpec
+mDontKnowTrade = FMSpec
+   { msName = "DontKnowTrade"
+   , msType = C.pack "Q"
+   , msHeader = headerFIX42
+   , msBody = mDontKnowTradeBody
+   , msTrailer = trailerFIX42 }
+   where
+   mDontKnowTradeBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tDKReason) tDKReason $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tLastShares) tLastShares $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mQuoteRequest :: FIXMessageSpec
+mQuoteRequest = FMSpec
+   { msName = "QuoteRequest"
+   , msType = C.pack "R"
+   , msHeader = headerFIX42
+   , msBody = mQuoteRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mQuoteRequestBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tCurrency) tCurrency                LT.new
+
+
+
+mQuote :: FIXMessageSpec
+mQuote = FMSpec
+   { msName = "Quote"
+   , msType = C.pack "S"
+   , msHeader = headerFIX42
+   , msBody = mQuoteBody
+   , msTrailer = trailerFIX42 }
+   where
+   mQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tCurrency) tCurrency       LT.new
+
+
+mSettlementInstructions :: FIXMessageSpec
+mSettlementInstructions = FMSpec
+   { msName = "SettlementInstructions"
+   , msType = C.pack "T"
+   , msHeader = headerFIX42
+   , msBody = mSettlementInstructionsBody
+   , msTrailer = trailerFIX42 }
+   where
+   mSettlementInstructionsBody = 
+      LT.insert (tnum tSettlInstID) tSettlInstID $
+      LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+      LT.insert (tnum tSettlInstRefID) tSettlInstRefID $
+      LT.insert (tnum tSettlInstMode) tSettlInstMode $
+      LT.insert (tnum tSettlInstSource) tSettlInstSource $
+      LT.insert (tnum tAllocAccount) tAllocAccount $
+      LT.insert (tnum tSettlLocation) tSettlLocation $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tClientID) tClientID $
+      LT.insert (tnum tExecBroker) tExecBroker $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+      LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+      LT.insert (tnum tSettlInstCode) tSettlInstCode $
+      LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+      LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+      LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+      LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+      LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+      LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+      LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+      LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+      LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+      LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+      LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+      LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone       LT.new
+
+
+mMarketDataRequest :: FIXMessageSpec
+mMarketDataRequest = FMSpec
+   { msName = "MarketDataRequest"
+   , msType = C.pack "V"
+   , msHeader = headerFIX42
+   , msBody = mMarketDataRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mMarketDataRequestBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tMarketDepth) tMarketDepth $
+      LT.insert (tnum tMDUpdateType) tMDUpdateType $
+      LT.insert (tnum tAggregatedBook) tAggregatedBook $
+      LT.insert (tnum tNoMDEntryTypes) gNoMDEntryTypes''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoMDEntryTypes''' = FIXTag
+            { tName = "NoMDEntryTypes"
+            , tnum = tnum tNoMDEntryTypes
+            , tparser = gNoMDEntryTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntryTypesSpec''' }
+
+         gNoMDEntryTypesP''' = groupP gNoMDEntryTypesSpec'''
+         gNoMDEntryTypesSpec''' = FGSpec
+            { gsLength = tNoMDEntryTypes
+            , gsSeperator = tMDEntryType
+            , gsBody = gNoMDEntryTypesBody''' }
+            where
+            gNoMDEntryTypesBody''' = 
+               LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID                LT.new
+
+
+
+mMarketDataSnapshotFullRefresh :: FIXMessageSpec
+mMarketDataSnapshotFullRefresh = FMSpec
+   { msName = "MarketDataSnapshotFullRefresh"
+   , msType = C.pack "W"
+   , msHeader = headerFIX42
+   , msBody = mMarketDataSnapshotFullRefreshBody
+   , msTrailer = trailerFIX42 }
+   where
+   mMarketDataSnapshotFullRefreshBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tFinancialStatus) tFinancialStatus $
+      LT.insert (tnum tCorporateAction) tCorporateAction $
+      LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+      LT.insert (tnum tNoMDEntries) gNoMDEntries'''       LT.new
+      where
+         gNoMDEntries''' = FIXTag
+            { tName = "NoMDEntries"
+            , tnum = tnum tNoMDEntries
+            , tparser = gNoMDEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntriesSpec''' }
+
+         gNoMDEntriesP''' = groupP gNoMDEntriesSpec'''
+         gNoMDEntriesSpec''' = FGSpec
+            { gsLength = tNoMDEntries
+            , gsSeperator = tMDEntryType
+            , gsBody = gNoMDEntriesBody''' }
+            where
+            gNoMDEntriesBody''' = 
+               LT.insert (tnum tMDEntryPx) tMDEntryPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tMDEntrySize) tMDEntrySize $
+               LT.insert (tnum tMDEntryDate) tMDEntryDate $
+               LT.insert (tnum tMDEntryTime) tMDEntryTime $
+               LT.insert (tnum tTickDirection) tTickDirection $
+               LT.insert (tnum tMDMkt) tMDMkt $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tQuoteCondition) tQuoteCondition $
+               LT.insert (tnum tTradeCondition) tTradeCondition $
+               LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tSellerDays) tSellerDays $
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+               LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+               LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+               LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+               LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mMarketDataIncrementalRefresh :: FIXMessageSpec
+mMarketDataIncrementalRefresh = FMSpec
+   { msName = "MarketDataIncrementalRefresh"
+   , msType = C.pack "X"
+   , msHeader = headerFIX42
+   , msBody = mMarketDataIncrementalRefreshBody
+   , msTrailer = trailerFIX42 }
+   where
+   mMarketDataIncrementalRefreshBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tNoMDEntries) gNoMDEntries'''       LT.new
+      where
+         gNoMDEntries''' = FIXTag
+            { tName = "NoMDEntries"
+            , tnum = tnum tNoMDEntries
+            , tparser = gNoMDEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntriesSpec''' }
+
+         gNoMDEntriesP''' = groupP gNoMDEntriesSpec'''
+         gNoMDEntriesSpec''' = FGSpec
+            { gsLength = tNoMDEntries
+            , gsSeperator = tMDUpdateAction
+            , gsBody = gNoMDEntriesBody''' }
+            where
+            gNoMDEntriesBody''' = 
+               LT.insert (tnum tDeleteReason) tDeleteReason $
+               LT.insert (tnum tMDEntryType) tMDEntryType $
+               LT.insert (tnum tMDEntryID) tMDEntryID $
+               LT.insert (tnum tMDEntryRefID) tMDEntryRefID $
+               LT.insert (tnum tSymbol) tSymbol $
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tFinancialStatus) tFinancialStatus $
+               LT.insert (tnum tCorporateAction) tCorporateAction $
+               LT.insert (tnum tMDEntryPx) tMDEntryPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tMDEntrySize) tMDEntrySize $
+               LT.insert (tnum tMDEntryDate) tMDEntryDate $
+               LT.insert (tnum tMDEntryTime) tMDEntryTime $
+               LT.insert (tnum tTickDirection) tTickDirection $
+               LT.insert (tnum tMDMkt) tMDMkt $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tQuoteCondition) tQuoteCondition $
+               LT.insert (tnum tTradeCondition) tTradeCondition $
+               LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tSellerDays) tSellerDays $
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+               LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+               LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+               LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+               LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+               LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mMarketDataRequestReject :: FIXMessageSpec
+mMarketDataRequestReject = FMSpec
+   { msName = "MarketDataRequestReject"
+   , msType = C.pack "Y"
+   , msHeader = headerFIX42
+   , msBody = mMarketDataRequestRejectBody
+   , msTrailer = trailerFIX42 }
+   where
+   mMarketDataRequestRejectBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tMDReqRejReason) tMDReqRejReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mQuoteCancel :: FIXMessageSpec
+mQuoteCancel = FMSpec
+   { msName = "QuoteCancel"
+   , msType = C.pack "Z"
+   , msHeader = headerFIX42
+   , msBody = mQuoteCancelBody
+   , msTrailer = trailerFIX42 }
+   where
+   mQuoteCancelBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteCancelType) tQuoteCancelType $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries'''       LT.new
+      where
+         gNoQuoteEntries''' = FIXTag
+            { tName = "NoQuoteEntries"
+            , tnum = tnum tNoQuoteEntries
+            , tparser = gNoQuoteEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec''' }
+
+         gNoQuoteEntriesP''' = groupP gNoQuoteEntriesSpec'''
+         gNoQuoteEntriesSpec''' = FGSpec
+            { gsLength = tNoQuoteEntries
+            , gsSeperator = tSymbol
+            , gsBody = gNoQuoteEntriesBody''' }
+            where
+            gNoQuoteEntriesBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol                LT.new
+
+
+
+mQuoteStatusRequest :: FIXMessageSpec
+mQuoteStatusRequest = FMSpec
+   { msName = "QuoteStatusRequest"
+   , msType = C.pack "a"
+   , msHeader = headerFIX42
+   , msBody = mQuoteStatusRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mQuoteStatusRequestBody = 
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID       LT.new
+
+
+mQuoteAcknowledgement :: FIXMessageSpec
+mQuoteAcknowledgement = FMSpec
+   { msName = "QuoteAcknowledgement"
+   , msType = C.pack "b"
+   , msHeader = headerFIX42
+   , msBody = mQuoteAcknowledgementBody
+   , msTrailer = trailerFIX42 }
+   where
+   mQuoteAcknowledgementBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteAckStatus) tQuoteAckStatus $
+      LT.insert (tnum tQuoteRejectReason) tQuoteRejectReason $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tNoQuoteSets) gNoQuoteSets'''       LT.new
+      where
+         gNoQuoteSets''' = FIXTag
+            { tName = "NoQuoteSets"
+            , tnum = tnum tNoQuoteSets
+            , tparser = gNoQuoteSetsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteSetsSpec''' }
+
+         gNoQuoteSetsP''' = groupP gNoQuoteSetsSpec'''
+         gNoQuoteSetsSpec''' = FGSpec
+            { gsLength = tNoQuoteSets
+            , gsSeperator = tQuoteSetID
+            , gsBody = gNoQuoteSetsBody''' }
+            where
+            gNoQuoteSetsBody''' = 
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingIDSource) tUnderlyingIDSource $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+               LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tTotQuoteEntries) tTotQuoteEntries $
+               LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries''''''                LT.new
+               where
+                  gNoQuoteEntries'''''' = FIXTag
+                     { tName = "NoQuoteEntries"
+                     , tnum = tnum tNoQuoteEntries
+                     , tparser = gNoQuoteEntriesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec'''''' }
+
+                  gNoQuoteEntriesP'''''' = groupP gNoQuoteEntriesSpec''''''
+                  gNoQuoteEntriesSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteEntries
+                     , gsSeperator = tQuoteEntryID
+                     , gsBody = gNoQuoteEntriesBody'''''' }
+                     where
+                     gNoQuoteEntriesBody'''''' = 
+                        LT.insert (tnum tSymbol) tSymbol $
+                        LT.insert (tnum tSymbolSfx) tSymbolSfx $
+                        LT.insert (tnum tSecurityID) tSecurityID $
+                        LT.insert (tnum tIDSource) tIDSource $
+                        LT.insert (tnum tSecurityType) tSecurityType $
+                        LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+                        LT.insert (tnum tMaturityDay) tMaturityDay $
+                        LT.insert (tnum tPutOrCall) tPutOrCall $
+                        LT.insert (tnum tStrikePrice) tStrikePrice $
+                        LT.insert (tnum tOptAttribute) tOptAttribute $
+                        LT.insert (tnum tContractMultiplier) tContractMultiplier $
+                        LT.insert (tnum tCouponRate) tCouponRate $
+                        LT.insert (tnum tSecurityExchange) tSecurityExchange $
+                        LT.insert (tnum tIssuer) tIssuer $
+                        LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+                        LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+                        LT.insert (tnum tSecurityDesc) tSecurityDesc $
+                        LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+                        LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+                        LT.insert (tnum tQuoteEntryRejectReason) tQuoteEntryRejectReason                         LT.new
+
+
+
+
+mSecurityDefinitionRequest :: FIXMessageSpec
+mSecurityDefinitionRequest = FMSpec
+   { msName = "SecurityDefinitionRequest"
+   , msType = C.pack "c"
+   , msHeader = headerFIX42
+   , msBody = mSecurityDefinitionRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mSecurityDefinitionRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityRequestType) tSecurityRequestType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingIDSource) tUnderlyingIDSource $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+               LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tRatioQty) tRatioQty $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency                LT.new
+
+
+
+mSecurityDefinition :: FIXMessageSpec
+mSecurityDefinition = FMSpec
+   { msName = "SecurityDefinition"
+   , msType = C.pack "d"
+   , msHeader = headerFIX42
+   , msBody = mSecurityDefinitionBody
+   , msTrailer = trailerFIX42 }
+   where
+   mSecurityDefinitionBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+      LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingIDSource) tUnderlyingIDSource $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+               LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tRatioQty) tRatioQty $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency                LT.new
+
+
+
+mSecurityStatusRequest :: FIXMessageSpec
+mSecurityStatusRequest = FMSpec
+   { msName = "SecurityStatusRequest"
+   , msType = C.pack "e"
+   , msHeader = headerFIX42
+   , msBody = mSecurityStatusRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mSecurityStatusRequestBody = 
+      LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID       LT.new
+
+
+mSecurityStatus :: FIXMessageSpec
+mSecurityStatus = FMSpec
+   { msName = "SecurityStatus"
+   , msType = C.pack "f"
+   , msHeader = headerFIX42
+   , msBody = mSecurityStatusBody
+   , msTrailer = trailerFIX42 }
+   where
+   mSecurityStatusBody = 
+      LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tIDSource) tIDSource $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDay) tMaturityDay $
+      LT.insert (tnum tPutOrCall) tPutOrCall $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tSecurityTradingStatus) tSecurityTradingStatus $
+      LT.insert (tnum tFinancialStatus) tFinancialStatus $
+      LT.insert (tnum tCorporateAction) tCorporateAction $
+      LT.insert (tnum tHaltReasonChar) tHaltReasonChar $
+      LT.insert (tnum tInViewOfCommon) tInViewOfCommon $
+      LT.insert (tnum tDueToRelated) tDueToRelated $
+      LT.insert (tnum tBuyVolume) tBuyVolume $
+      LT.insert (tnum tSellVolume) tSellVolume $
+      LT.insert (tnum tHighPx) tHighPx $
+      LT.insert (tnum tLowPx) tLowPx $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAdjustment) tAdjustment       LT.new
+
+
+mTradingSessionStatusRequest :: FIXMessageSpec
+mTradingSessionStatusRequest = FMSpec
+   { msName = "TradingSessionStatusRequest"
+   , msType = C.pack "g"
+   , msHeader = headerFIX42
+   , msBody = mTradingSessionStatusRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mTradingSessionStatusRequestBody = 
+      LT.insert (tnum tTradSesReqID) tTradSesReqID $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradSesMethod) tTradSesMethod $
+      LT.insert (tnum tTradSesMode) tTradSesMode $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+
+
+mTradingSessionStatus :: FIXMessageSpec
+mTradingSessionStatus = FMSpec
+   { msName = "TradingSessionStatus"
+   , msType = C.pack "h"
+   , msHeader = headerFIX42
+   , msBody = mTradingSessionStatusBody
+   , msTrailer = trailerFIX42 }
+   where
+   mTradingSessionStatusBody = 
+      LT.insert (tnum tTradSesReqID) tTradSesReqID $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradSesMethod) tTradSesMethod $
+      LT.insert (tnum tTradSesMode) tTradSesMode $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tTradSesStatus) tTradSesStatus $
+      LT.insert (tnum tTradSesStartTime) tTradSesStartTime $
+      LT.insert (tnum tTradSesOpenTime) tTradSesOpenTime $
+      LT.insert (tnum tTradSesPreCloseTime) tTradSesPreCloseTime $
+      LT.insert (tnum tTradSesCloseTime) tTradSesCloseTime $
+      LT.insert (tnum tTradSesEndTime) tTradSesEndTime $
+      LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mMassQuote :: FIXMessageSpec
+mMassQuote = FMSpec
+   { msName = "MassQuote"
+   , msType = C.pack "i"
+   , msHeader = headerFIX42
+   , msBody = mMassQuoteBody
+   , msTrailer = trailerFIX42 }
+   where
+   mMassQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tDefBidSize) tDefBidSize $
+      LT.insert (tnum tDefOfferSize) tDefOfferSize $
+      LT.insert (tnum tNoQuoteSets) gNoQuoteSets'''       LT.new
+      where
+         gNoQuoteSets''' = FIXTag
+            { tName = "NoQuoteSets"
+            , tnum = tnum tNoQuoteSets
+            , tparser = gNoQuoteSetsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteSetsSpec''' }
+
+         gNoQuoteSetsP''' = groupP gNoQuoteSetsSpec'''
+         gNoQuoteSetsSpec''' = FGSpec
+            { gsLength = tNoQuoteSets
+            , gsSeperator = tQuoteSetID
+            , gsBody = gNoQuoteSetsBody''' }
+            where
+            gNoQuoteSetsBody''' = 
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingIDSource) tUnderlyingIDSource $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+               LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tQuoteSetValidUntilTime) tQuoteSetValidUntilTime $
+               LT.insert (tnum tTotQuoteEntries) tTotQuoteEntries $
+               LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries''''''                LT.new
+               where
+                  gNoQuoteEntries'''''' = FIXTag
+                     { tName = "NoQuoteEntries"
+                     , tnum = tnum tNoQuoteEntries
+                     , tparser = gNoQuoteEntriesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec'''''' }
+
+                  gNoQuoteEntriesP'''''' = groupP gNoQuoteEntriesSpec''''''
+                  gNoQuoteEntriesSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteEntries
+                     , gsSeperator = tQuoteEntryID
+                     , gsBody = gNoQuoteEntriesBody'''''' }
+                     where
+                     gNoQuoteEntriesBody'''''' = 
+                        LT.insert (tnum tSymbol) tSymbol $
+                        LT.insert (tnum tSymbolSfx) tSymbolSfx $
+                        LT.insert (tnum tSecurityID) tSecurityID $
+                        LT.insert (tnum tIDSource) tIDSource $
+                        LT.insert (tnum tSecurityType) tSecurityType $
+                        LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+                        LT.insert (tnum tMaturityDay) tMaturityDay $
+                        LT.insert (tnum tPutOrCall) tPutOrCall $
+                        LT.insert (tnum tStrikePrice) tStrikePrice $
+                        LT.insert (tnum tOptAttribute) tOptAttribute $
+                        LT.insert (tnum tContractMultiplier) tContractMultiplier $
+                        LT.insert (tnum tCouponRate) tCouponRate $
+                        LT.insert (tnum tSecurityExchange) tSecurityExchange $
+                        LT.insert (tnum tIssuer) tIssuer $
+                        LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+                        LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+                        LT.insert (tnum tSecurityDesc) tSecurityDesc $
+                        LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+                        LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+                        LT.insert (tnum tBidPx) tBidPx $
+                        LT.insert (tnum tOfferPx) tOfferPx $
+                        LT.insert (tnum tBidSize) tBidSize $
+                        LT.insert (tnum tOfferSize) tOfferSize $
+                        LT.insert (tnum tValidUntilTime) tValidUntilTime $
+                        LT.insert (tnum tBidSpotRate) tBidSpotRate $
+                        LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+                        LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+                        LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+                        LT.insert (tnum tTransactTime) tTransactTime $
+                        LT.insert (tnum tTradingSessionID) tTradingSessionID $
+                        LT.insert (tnum tFutSettDate) tFutSettDate $
+                        LT.insert (tnum tOrdType) tOrdType $
+                        LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+                        LT.insert (tnum tOrderQty2) tOrderQty2 $
+                        LT.insert (tnum tCurrency) tCurrency                         LT.new
+
+
+
+
+mBusinessMessageReject :: FIXMessageSpec
+mBusinessMessageReject = FMSpec
+   { msName = "BusinessMessageReject"
+   , msType = C.pack "j"
+   , msHeader = headerFIX42
+   , msBody = mBusinessMessageRejectBody
+   , msTrailer = trailerFIX42 }
+   where
+   mBusinessMessageRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tRefMsgType) tRefMsgType $
+      LT.insert (tnum tBusinessRejectRefID) tBusinessRejectRefID $
+      LT.insert (tnum tBusinessRejectReason) tBusinessRejectReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mBidRequest :: FIXMessageSpec
+mBidRequest = FMSpec
+   { msName = "BidRequest"
+   , msType = C.pack "k"
+   , msHeader = headerFIX42
+   , msBody = mBidRequestBody
+   , msTrailer = trailerFIX42 }
+   where
+   mBidRequestBody = 
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tBidRequestTransType) tBidRequestTransType $
+      LT.insert (tnum tListName) tListName $
+      LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+      LT.insert (tnum tBidType) tBidType $
+      LT.insert (tnum tNumTickets) tNumTickets $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSideValue1) tSideValue1 $
+      LT.insert (tnum tSideValue2) tSideValue2 $
+      LT.insert (tnum tNoBidDescriptors) gNoBidDescriptors''' $
+      LT.insert (tnum tNoBidComponents) gNoBidComponents''' $
+      LT.insert (tnum tLiquidityIndType) tLiquidityIndType $
+      LT.insert (tnum tWtAverageLiquidity) tWtAverageLiquidity $
+      LT.insert (tnum tExchangeForPhysical) tExchangeForPhysical $
+      LT.insert (tnum tOutMainCntryUIndex) tOutMainCntryUIndex $
+      LT.insert (tnum tCrossPercent) tCrossPercent $
+      LT.insert (tnum tProgRptReqs) tProgRptReqs $
+      LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+      LT.insert (tnum tIncTaxInd) tIncTaxInd $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tNumBidders) tNumBidders $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTradeType) tTradeType $
+      LT.insert (tnum tBasisPxType) tBasisPxType $
+      LT.insert (tnum tStrikeTime) tStrikeTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoBidComponents''' = FIXTag
+            { tName = "NoBidComponents"
+            , tnum = tnum tNoBidComponents
+            , tparser = gNoBidComponentsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidComponentsSpec''' }
+
+         gNoBidComponentsP''' = groupP gNoBidComponentsSpec'''
+         gNoBidComponentsSpec''' = FGSpec
+            { gsLength = tNoBidComponents
+            , gsSeperator = tListID
+            , gsBody = gNoBidComponentsBody''' }
+            where
+            gNoBidComponentsBody''' = 
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tNetGrossInd) tNetGrossInd $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tAccount) tAccount                LT.new
+
+         gNoBidDescriptors''' = FIXTag
+            { tName = "NoBidDescriptors"
+            , tnum = tnum tNoBidDescriptors
+            , tparser = gNoBidDescriptorsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidDescriptorsSpec''' }
+
+         gNoBidDescriptorsP''' = groupP gNoBidDescriptorsSpec'''
+         gNoBidDescriptorsSpec''' = FGSpec
+            { gsLength = tNoBidDescriptors
+            , gsSeperator = tBidDescriptorType
+            , gsBody = gNoBidDescriptorsBody''' }
+            where
+            gNoBidDescriptorsBody''' = 
+               LT.insert (tnum tBidDescriptor) tBidDescriptor $
+               LT.insert (tnum tSideValueInd) tSideValueInd $
+               LT.insert (tnum tLiquidityValue) tLiquidityValue $
+               LT.insert (tnum tLiquidityNumSecurities) tLiquidityNumSecurities $
+               LT.insert (tnum tLiquidityPctLow) tLiquidityPctLow $
+               LT.insert (tnum tLiquidityPctHigh) tLiquidityPctHigh $
+               LT.insert (tnum tEFPTrackingError) tEFPTrackingError $
+               LT.insert (tnum tFairValue) tFairValue $
+               LT.insert (tnum tOutsideIndexPct) tOutsideIndexPct $
+               LT.insert (tnum tValueOfFutures) tValueOfFutures                LT.new
+
+
+
+mBidResponse :: FIXMessageSpec
+mBidResponse = FMSpec
+   { msName = "BidResponse"
+   , msType = C.pack "l"
+   , msHeader = headerFIX42
+   , msBody = mBidResponseBody
+   , msTrailer = trailerFIX42 }
+   where
+   mBidResponseBody = 
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tNoBidComponents) gNoBidComponents'''       LT.new
+      where
+         gNoBidComponents''' = FIXTag
+            { tName = "NoBidComponents"
+            , tnum = tnum tNoBidComponents
+            , tparser = gNoBidComponentsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidComponentsSpec''' }
+
+         gNoBidComponentsP''' = groupP gNoBidComponentsSpec'''
+         gNoBidComponentsSpec''' = FGSpec
+            { gsLength = tNoBidComponents
+            , gsSeperator = tCommission
+            , gsBody = gNoBidComponentsBody''' }
+            where
+            gNoBidComponentsBody''' = 
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tCountry) tCountry $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tFairValue) tFairValue $
+               LT.insert (tnum tNetGrossInd) tNetGrossInd $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mListStrikePrice :: FIXMessageSpec
+mListStrikePrice = FMSpec
+   { msName = "ListStrikePrice"
+   , msType = C.pack "m"
+   , msHeader = headerFIX42
+   , msBody = mListStrikePriceBody
+   , msTrailer = trailerFIX42 }
+   where
+   mListStrikePriceBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tTotNoStrikes) tTotNoStrikes $
+      LT.insert (tnum tNoStrikes) gNoStrikes'''       LT.new
+      where
+         gNoStrikes''' = FIXTag
+            { tName = "NoStrikes"
+            , tnum = tnum tNoStrikes
+            , tparser = gNoStrikesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStrikesSpec''' }
+
+         gNoStrikesP''' = groupP gNoStrikesSpec'''
+         gNoStrikesSpec''' = FGSpec
+            { gsLength = tNoStrikes
+            , gsSeperator = tSymbol
+            , gsBody = gNoStrikesBody''' }
+            where
+            gNoStrikesBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tIDSource) tIDSource $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDay) tMaturityDay $
+               LT.insert (tnum tPutOrCall) tPutOrCall $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+fix42 :: FIXSpec
+fix42 = FSpec
+   { fsVersion = "FIX.4.2"
+   , fsHeader = headerFIX42
+   , fsTrailer = trailerFIX42
+   , fsMessages = fix42Messages 
+   , fsTags = fix42Tags }
+   where
+      fix42Messages =
+          LT.insert (msType mHeartbeat) mHeartbeat $
+          LT.insert (msType mTestRequest) mTestRequest $
+          LT.insert (msType mResendRequest) mResendRequest $
+          LT.insert (msType mReject) mReject $
+          LT.insert (msType mSequenceReset) mSequenceReset $
+          LT.insert (msType mLogout) mLogout $
+          LT.insert (msType mIndicationofInterest) mIndicationofInterest $
+          LT.insert (msType mAdvertisement) mAdvertisement $
+          LT.insert (msType mExecutionReport) mExecutionReport $
+          LT.insert (msType mOrderCancelReject) mOrderCancelReject $
+          LT.insert (msType mLogon) mLogon $
+          LT.insert (msType mNews) mNews $
+          LT.insert (msType mEmail) mEmail $
+          LT.insert (msType mNewOrderSingle) mNewOrderSingle $
+          LT.insert (msType mNewOrderList) mNewOrderList $
+          LT.insert (msType mOrderCancelRequest) mOrderCancelRequest $
+          LT.insert (msType mOrderCancelReplaceRequest) mOrderCancelReplaceRequest $
+          LT.insert (msType mOrderStatusRequest) mOrderStatusRequest $
+          LT.insert (msType mAllocation) mAllocation $
+          LT.insert (msType mListCancelRequest) mListCancelRequest $
+          LT.insert (msType mListExecute) mListExecute $
+          LT.insert (msType mListStatusRequest) mListStatusRequest $
+          LT.insert (msType mListStatus) mListStatus $
+          LT.insert (msType mAllocationACK) mAllocationACK $
+          LT.insert (msType mDontKnowTrade) mDontKnowTrade $
+          LT.insert (msType mQuoteRequest) mQuoteRequest $
+          LT.insert (msType mQuote) mQuote $
+          LT.insert (msType mSettlementInstructions) mSettlementInstructions $
+          LT.insert (msType mMarketDataRequest) mMarketDataRequest $
+          LT.insert (msType mMarketDataSnapshotFullRefresh) mMarketDataSnapshotFullRefresh $
+          LT.insert (msType mMarketDataIncrementalRefresh) mMarketDataIncrementalRefresh $
+          LT.insert (msType mMarketDataRequestReject) mMarketDataRequestReject $
+          LT.insert (msType mQuoteCancel) mQuoteCancel $
+          LT.insert (msType mQuoteStatusRequest) mQuoteStatusRequest $
+          LT.insert (msType mQuoteAcknowledgement) mQuoteAcknowledgement $
+          LT.insert (msType mSecurityDefinitionRequest) mSecurityDefinitionRequest $
+          LT.insert (msType mSecurityDefinition) mSecurityDefinition $
+          LT.insert (msType mSecurityStatusRequest) mSecurityStatusRequest $
+          LT.insert (msType mSecurityStatus) mSecurityStatus $
+          LT.insert (msType mTradingSessionStatusRequest) mTradingSessionStatusRequest $
+          LT.insert (msType mTradingSessionStatus) mTradingSessionStatus $
+          LT.insert (msType mMassQuote) mMassQuote $
+          LT.insert (msType mBusinessMessageReject) mBusinessMessageReject $
+          LT.insert (msType mBidRequest) mBidRequest $
+          LT.insert (msType mBidResponse) mBidResponse $
+          LT.insert (msType mListStrikePrice) mListStrikePrice           LT.new 
+      fix42Tags =
+          LT.insert (tnum tAccount) tAccount $
+          LT.insert (tnum tAdvId) tAdvId $
+          LT.insert (tnum tAdvRefID) tAdvRefID $
+          LT.insert (tnum tAdvSide) tAdvSide $
+          LT.insert (tnum tAdvTransType) tAdvTransType $
+          LT.insert (tnum tAvgPx) tAvgPx $
+          LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+          LT.insert (tnum tBeginString) tBeginString $
+          LT.insert (tnum tBodyLength) tBodyLength $
+          LT.insert (tnum tCheckSum) tCheckSum $
+          LT.insert (tnum tClOrdID) tClOrdID $
+          LT.insert (tnum tCommission) tCommission $
+          LT.insert (tnum tCommType) tCommType $
+          LT.insert (tnum tCumQty) tCumQty $
+          LT.insert (tnum tCurrency) tCurrency $
+          LT.insert (tnum tEndSeqNo) tEndSeqNo $
+          LT.insert (tnum tExecID) tExecID $
+          LT.insert (tnum tExecInst) tExecInst $
+          LT.insert (tnum tExecRefID) tExecRefID $
+          LT.insert (tnum tExecTransType) tExecTransType $
+          LT.insert (tnum tHandlInst) tHandlInst $
+          LT.insert (tnum tIDSource) tIDSource $
+          LT.insert (tnum tIOIid) tIOIid $
+          LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+          LT.insert (tnum tIOIRefID) tIOIRefID $
+          LT.insert (tnum tIOIShares) tIOIShares $
+          LT.insert (tnum tIOITransType) tIOITransType $
+          LT.insert (tnum tLastCapacity) tLastCapacity $
+          LT.insert (tnum tLastMkt) tLastMkt $
+          LT.insert (tnum tLastPx) tLastPx $
+          LT.insert (tnum tLastShares) tLastShares $
+          LT.insert (tnum tLinesOfText) tLinesOfText $
+          LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+          LT.insert (tnum tMsgType) tMsgType $
+          LT.insert (tnum tNewSeqNo) tNewSeqNo $
+          LT.insert (tnum tOrderID) tOrderID $
+          LT.insert (tnum tOrderQty) tOrderQty $
+          LT.insert (tnum tOrdStatus) tOrdStatus $
+          LT.insert (tnum tOrdType) tOrdType $
+          LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+          LT.insert (tnum tOrigTime) tOrigTime $
+          LT.insert (tnum tPossDupFlag) tPossDupFlag $
+          LT.insert (tnum tPrice) tPrice $
+          LT.insert (tnum tRefSeqNum) tRefSeqNum $
+          LT.insert (tnum tRelatdSym) tRelatdSym $
+          LT.insert (tnum tRule80A) tRule80A $
+          LT.insert (tnum tSecurityID) tSecurityID $
+          LT.insert (tnum tSenderCompID) tSenderCompID $
+          LT.insert (tnum tSenderSubID) tSenderSubID $
+          LT.insert (tnum tSendingTime) tSendingTime $
+          LT.insert (tnum tShares) tShares $
+          LT.insert (tnum tSide) tSide $
+          LT.insert (tnum tSymbol) tSymbol $
+          LT.insert (tnum tTargetCompID) tTargetCompID $
+          LT.insert (tnum tTargetSubID) tTargetSubID $
+          LT.insert (tnum tText) tText $
+          LT.insert (tnum tTimeInForce) tTimeInForce $
+          LT.insert (tnum tTransactTime) tTransactTime $
+          LT.insert (tnum tUrgency) tUrgency $
+          LT.insert (tnum tValidUntilTime) tValidUntilTime $
+          LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+          LT.insert (tnum tFutSettDate) tFutSettDate $
+          LT.insert (tnum tSymbolSfx) tSymbolSfx $
+          LT.insert (tnum tListID) tListID $
+          LT.insert (tnum tListSeqNo) tListSeqNo $
+          LT.insert (tnum tTotNoOrders) tTotNoOrders $
+          LT.insert (tnum tListExecInst) tListExecInst $
+          LT.insert (tnum tAllocID) tAllocID $
+          LT.insert (tnum tAllocTransType) tAllocTransType $
+          LT.insert (tnum tRefAllocID) tRefAllocID $
+          LT.insert (tnum tNoOrders) tNoOrders $
+          LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+          LT.insert (tnum tTradeDate) tTradeDate $
+          LT.insert (tnum tExecBroker) tExecBroker $
+          LT.insert (tnum tOpenClose) tOpenClose $
+          LT.insert (tnum tNoAllocs) tNoAllocs $
+          LT.insert (tnum tAllocAccount) tAllocAccount $
+          LT.insert (tnum tAllocShares) tAllocShares $
+          LT.insert (tnum tProcessCode) tProcessCode $
+          LT.insert (tnum tNoRpts) tNoRpts $
+          LT.insert (tnum tRptSeq) tRptSeq $
+          LT.insert (tnum tCxlQty) tCxlQty $
+          LT.insert (tnum tAllocStatus) tAllocStatus $
+          LT.insert (tnum tAllocRejCode) tAllocRejCode $
+          LT.insert (tnum tSignature) tSignature $
+          LT.insert (tnum tSecureDataLen) tSecureDataLen $
+          LT.insert (tnum tSecureData) tSecureData $
+          LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+          LT.insert (tnum tSignatureLength) tSignatureLength $
+          LT.insert (tnum tEmailType) tEmailType $
+          LT.insert (tnum tRawDataLength) tRawDataLength $
+          LT.insert (tnum tRawData) tRawData $
+          LT.insert (tnum tPossResend) tPossResend $
+          LT.insert (tnum tEncryptMethod) tEncryptMethod $
+          LT.insert (tnum tStopPx) tStopPx $
+          LT.insert (tnum tExDestination) tExDestination $
+          LT.insert (tnum tCxlRejReason) tCxlRejReason $
+          LT.insert (tnum tOrdRejReason) tOrdRejReason $
+          LT.insert (tnum tIOIQualifier) tIOIQualifier $
+          LT.insert (tnum tWaveNo) tWaveNo $
+          LT.insert (tnum tIssuer) tIssuer $
+          LT.insert (tnum tSecurityDesc) tSecurityDesc $
+          LT.insert (tnum tHeartBtInt) tHeartBtInt $
+          LT.insert (tnum tClientID) tClientID $
+          LT.insert (tnum tMinQty) tMinQty $
+          LT.insert (tnum tMaxFloor) tMaxFloor $
+          LT.insert (tnum tTestReqID) tTestReqID $
+          LT.insert (tnum tReportToExch) tReportToExch $
+          LT.insert (tnum tLocateReqd) tLocateReqd $
+          LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+          LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+          LT.insert (tnum tQuoteID) tQuoteID $
+          LT.insert (tnum tNetMoney) tNetMoney $
+          LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+          LT.insert (tnum tSettlCurrency) tSettlCurrency $
+          LT.insert (tnum tForexReq) tForexReq $
+          LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+          LT.insert (tnum tGapFillFlag) tGapFillFlag $
+          LT.insert (tnum tNoExecs) tNoExecs $
+          LT.insert (tnum tExpireTime) tExpireTime $
+          LT.insert (tnum tDKReason) tDKReason $
+          LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+          LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+          LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+          LT.insert (tnum tQuoteReqID) tQuoteReqID $
+          LT.insert (tnum tBidPx) tBidPx $
+          LT.insert (tnum tOfferPx) tOfferPx $
+          LT.insert (tnum tBidSize) tBidSize $
+          LT.insert (tnum tOfferSize) tOfferSize $
+          LT.insert (tnum tNoMiscFees) tNoMiscFees $
+          LT.insert (tnum tMiscFeeAmt) tMiscFeeAmt $
+          LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+          LT.insert (tnum tMiscFeeType) tMiscFeeType $
+          LT.insert (tnum tPrevClosePx) tPrevClosePx $
+          LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+          LT.insert (tnum tSenderLocationID) tSenderLocationID $
+          LT.insert (tnum tTargetLocationID) tTargetLocationID $
+          LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+          LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+          LT.insert (tnum tNoRelatedSym) tNoRelatedSym $
+          LT.insert (tnum tSubject) tSubject $
+          LT.insert (tnum tHeadline) tHeadline $
+          LT.insert (tnum tURLLink) tURLLink $
+          LT.insert (tnum tExecType) tExecType $
+          LT.insert (tnum tLeavesQty) tLeavesQty $
+          LT.insert (tnum tCashOrderQty) tCashOrderQty $
+          LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+          LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+          LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+          LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+          LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+          LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+          LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+          LT.insert (tnum tSettlInstMode) tSettlInstMode $
+          LT.insert (tnum tAllocText) tAllocText $
+          LT.insert (tnum tSettlInstID) tSettlInstID $
+          LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+          LT.insert (tnum tEmailThreadID) tEmailThreadID $
+          LT.insert (tnum tSettlInstSource) tSettlInstSource $
+          LT.insert (tnum tSettlLocation) tSettlLocation $
+          LT.insert (tnum tSecurityType) tSecurityType $
+          LT.insert (tnum tEffectiveTime) tEffectiveTime $
+          LT.insert (tnum tStandInstDbType) tStandInstDbType $
+          LT.insert (tnum tStandInstDbName) tStandInstDbName $
+          LT.insert (tnum tStandInstDbID) tStandInstDbID $
+          LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+          LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+          LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+          LT.insert (tnum tSettlInstCode) tSettlInstCode $
+          LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+          LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+          LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+          LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+          LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+          LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+          LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+          LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+          LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+          LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+          LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+          LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone $
+          LT.insert (tnum tBidSpotRate) tBidSpotRate $
+          LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+          LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+          LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+          LT.insert (tnum tOrderQty2) tOrderQty2 $
+          LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+          LT.insert (tnum tLastSpotRate) tLastSpotRate $
+          LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+          LT.insert (tnum tAllocLinkID) tAllocLinkID $
+          LT.insert (tnum tAllocLinkType) tAllocLinkType $
+          LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+          LT.insert (tnum tNoIOIQualifiers) tNoIOIQualifiers $
+          LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+          LT.insert (tnum tPutOrCall) tPutOrCall $
+          LT.insert (tnum tStrikePrice) tStrikePrice $
+          LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+          LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+          LT.insert (tnum tMaturityDay) tMaturityDay $
+          LT.insert (tnum tOptAttribute) tOptAttribute $
+          LT.insert (tnum tSecurityExchange) tSecurityExchange $
+          LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+          LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+          LT.insert (tnum tMaxShow) tMaxShow $
+          LT.insert (tnum tPegDifference) tPegDifference $
+          LT.insert (tnum tXmlDataLen) tXmlDataLen $
+          LT.insert (tnum tXmlData) tXmlData $
+          LT.insert (tnum tSettlInstRefID) tSettlInstRefID $
+          LT.insert (tnum tNoRoutingIDs) tNoRoutingIDs $
+          LT.insert (tnum tRoutingType) tRoutingType $
+          LT.insert (tnum tRoutingID) tRoutingID $
+          LT.insert (tnum tSpreadToBenchmark) tSpreadToBenchmark $
+          LT.insert (tnum tBenchmark) tBenchmark $
+          LT.insert (tnum tCouponRate) tCouponRate $
+          LT.insert (tnum tContractMultiplier) tContractMultiplier $
+          LT.insert (tnum tMDReqID) tMDReqID $
+          LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+          LT.insert (tnum tMarketDepth) tMarketDepth $
+          LT.insert (tnum tMDUpdateType) tMDUpdateType $
+          LT.insert (tnum tAggregatedBook) tAggregatedBook $
+          LT.insert (tnum tNoMDEntryTypes) tNoMDEntryTypes $
+          LT.insert (tnum tNoMDEntries) tNoMDEntries $
+          LT.insert (tnum tMDEntryType) tMDEntryType $
+          LT.insert (tnum tMDEntryPx) tMDEntryPx $
+          LT.insert (tnum tMDEntrySize) tMDEntrySize $
+          LT.insert (tnum tMDEntryDate) tMDEntryDate $
+          LT.insert (tnum tMDEntryTime) tMDEntryTime $
+          LT.insert (tnum tTickDirection) tTickDirection $
+          LT.insert (tnum tMDMkt) tMDMkt $
+          LT.insert (tnum tQuoteCondition) tQuoteCondition $
+          LT.insert (tnum tTradeCondition) tTradeCondition $
+          LT.insert (tnum tMDEntryID) tMDEntryID $
+          LT.insert (tnum tMDUpdateAction) tMDUpdateAction $
+          LT.insert (tnum tMDEntryRefID) tMDEntryRefID $
+          LT.insert (tnum tMDReqRejReason) tMDReqRejReason $
+          LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+          LT.insert (tnum tLocationID) tLocationID $
+          LT.insert (tnum tDeskID) tDeskID $
+          LT.insert (tnum tDeleteReason) tDeleteReason $
+          LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+          LT.insert (tnum tSellerDays) tSellerDays $
+          LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+          LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+          LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+          LT.insert (tnum tFinancialStatus) tFinancialStatus $
+          LT.insert (tnum tCorporateAction) tCorporateAction $
+          LT.insert (tnum tDefBidSize) tDefBidSize $
+          LT.insert (tnum tDefOfferSize) tDefOfferSize $
+          LT.insert (tnum tNoQuoteEntries) tNoQuoteEntries $
+          LT.insert (tnum tNoQuoteSets) tNoQuoteSets $
+          LT.insert (tnum tQuoteAckStatus) tQuoteAckStatus $
+          LT.insert (tnum tQuoteCancelType) tQuoteCancelType $
+          LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+          LT.insert (tnum tQuoteRejectReason) tQuoteRejectReason $
+          LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+          LT.insert (tnum tQuoteSetID) tQuoteSetID $
+          LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+          LT.insert (tnum tTotQuoteEntries) tTotQuoteEntries $
+          LT.insert (tnum tUnderlyingIDSource) tUnderlyingIDSource $
+          LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+          LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+          LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+          LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+          LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+          LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+          LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+          LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+          LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+          LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+          LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+          LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+          LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+          LT.insert (tnum tRatioQty) tRatioQty $
+          LT.insert (tnum tSecurityReqID) tSecurityReqID $
+          LT.insert (tnum tSecurityRequestType) tSecurityRequestType $
+          LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+          LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+          LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+          LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+          LT.insert (tnum tSecurityTradingStatus) tSecurityTradingStatus $
+          LT.insert (tnum tHaltReasonChar) tHaltReasonChar $
+          LT.insert (tnum tInViewOfCommon) tInViewOfCommon $
+          LT.insert (tnum tDueToRelated) tDueToRelated $
+          LT.insert (tnum tBuyVolume) tBuyVolume $
+          LT.insert (tnum tSellVolume) tSellVolume $
+          LT.insert (tnum tHighPx) tHighPx $
+          LT.insert (tnum tLowPx) tLowPx $
+          LT.insert (tnum tAdjustment) tAdjustment $
+          LT.insert (tnum tTradSesReqID) tTradSesReqID $
+          LT.insert (tnum tTradingSessionID) tTradingSessionID $
+          LT.insert (tnum tContraTrader) tContraTrader $
+          LT.insert (tnum tTradSesMethod) tTradSesMethod $
+          LT.insert (tnum tTradSesMode) tTradSesMode $
+          LT.insert (tnum tTradSesStatus) tTradSesStatus $
+          LT.insert (tnum tTradSesStartTime) tTradSesStartTime $
+          LT.insert (tnum tTradSesOpenTime) tTradSesOpenTime $
+          LT.insert (tnum tTradSesPreCloseTime) tTradSesPreCloseTime $
+          LT.insert (tnum tTradSesCloseTime) tTradSesCloseTime $
+          LT.insert (tnum tTradSesEndTime) tTradSesEndTime $
+          LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+          LT.insert (tnum tMessageEncoding) tMessageEncoding $
+          LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+          LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+          LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+          LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+          LT.insert (tnum tEncodedListExecInstLen) tEncodedListExecInstLen $
+          LT.insert (tnum tEncodedListExecInst) tEncodedListExecInst $
+          LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+          LT.insert (tnum tEncodedText) tEncodedText $
+          LT.insert (tnum tEncodedSubjectLen) tEncodedSubjectLen $
+          LT.insert (tnum tEncodedSubject) tEncodedSubject $
+          LT.insert (tnum tEncodedHeadlineLen) tEncodedHeadlineLen $
+          LT.insert (tnum tEncodedHeadline) tEncodedHeadline $
+          LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+          LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+          LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+          LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+          LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+          LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+          LT.insert (tnum tAllocPrice) tAllocPrice $
+          LT.insert (tnum tQuoteSetValidUntilTime) tQuoteSetValidUntilTime $
+          LT.insert (tnum tQuoteEntryRejectReason) tQuoteEntryRejectReason $
+          LT.insert (tnum tLastMsgSeqNumProcessed) tLastMsgSeqNumProcessed $
+          LT.insert (tnum tOnBehalfOfSendingTime) tOnBehalfOfSendingTime $
+          LT.insert (tnum tRefTagID) tRefTagID $
+          LT.insert (tnum tRefMsgType) tRefMsgType $
+          LT.insert (tnum tSessionRejectReason) tSessionRejectReason $
+          LT.insert (tnum tBidRequestTransType) tBidRequestTransType $
+          LT.insert (tnum tContraBroker) tContraBroker $
+          LT.insert (tnum tComplianceID) tComplianceID $
+          LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+          LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+          LT.insert (tnum tBusinessRejectRefID) tBusinessRejectRefID $
+          LT.insert (tnum tBusinessRejectReason) tBusinessRejectReason $
+          LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+          LT.insert (tnum tNoContraBrokers) tNoContraBrokers $
+          LT.insert (tnum tMaxMessageSize) tMaxMessageSize $
+          LT.insert (tnum tNoMsgTypes) tNoMsgTypes $
+          LT.insert (tnum tMsgDirection) tMsgDirection $
+          LT.insert (tnum tNoTradingSessions) tNoTradingSessions $
+          LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+          LT.insert (tnum tDiscretionInst) tDiscretionInst $
+          LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+          LT.insert (tnum tBidID) tBidID $
+          LT.insert (tnum tClientBidID) tClientBidID $
+          LT.insert (tnum tListName) tListName $
+          LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+          LT.insert (tnum tBidType) tBidType $
+          LT.insert (tnum tNumTickets) tNumTickets $
+          LT.insert (tnum tSideValue1) tSideValue1 $
+          LT.insert (tnum tSideValue2) tSideValue2 $
+          LT.insert (tnum tNoBidDescriptors) tNoBidDescriptors $
+          LT.insert (tnum tBidDescriptorType) tBidDescriptorType $
+          LT.insert (tnum tBidDescriptor) tBidDescriptor $
+          LT.insert (tnum tSideValueInd) tSideValueInd $
+          LT.insert (tnum tLiquidityPctLow) tLiquidityPctLow $
+          LT.insert (tnum tLiquidityPctHigh) tLiquidityPctHigh $
+          LT.insert (tnum tLiquidityValue) tLiquidityValue $
+          LT.insert (tnum tEFPTrackingError) tEFPTrackingError $
+          LT.insert (tnum tFairValue) tFairValue $
+          LT.insert (tnum tOutsideIndexPct) tOutsideIndexPct $
+          LT.insert (tnum tValueOfFutures) tValueOfFutures $
+          LT.insert (tnum tLiquidityIndType) tLiquidityIndType $
+          LT.insert (tnum tWtAverageLiquidity) tWtAverageLiquidity $
+          LT.insert (tnum tExchangeForPhysical) tExchangeForPhysical $
+          LT.insert (tnum tOutMainCntryUIndex) tOutMainCntryUIndex $
+          LT.insert (tnum tCrossPercent) tCrossPercent $
+          LT.insert (tnum tProgRptReqs) tProgRptReqs $
+          LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+          LT.insert (tnum tIncTaxInd) tIncTaxInd $
+          LT.insert (tnum tNumBidders) tNumBidders $
+          LT.insert (tnum tTradeType) tTradeType $
+          LT.insert (tnum tBasisPxType) tBasisPxType $
+          LT.insert (tnum tNoBidComponents) tNoBidComponents $
+          LT.insert (tnum tCountry) tCountry $
+          LT.insert (tnum tTotNoStrikes) tTotNoStrikes $
+          LT.insert (tnum tPriceType) tPriceType $
+          LT.insert (tnum tDayOrderQty) tDayOrderQty $
+          LT.insert (tnum tDayCumQty) tDayCumQty $
+          LT.insert (tnum tDayAvgPx) tDayAvgPx $
+          LT.insert (tnum tGTBookingInst) tGTBookingInst $
+          LT.insert (tnum tNoStrikes) tNoStrikes $
+          LT.insert (tnum tListStatusType) tListStatusType $
+          LT.insert (tnum tNetGrossInd) tNetGrossInd $
+          LT.insert (tnum tListOrderStatus) tListOrderStatus $
+          LT.insert (tnum tExpireDate) tExpireDate $
+          LT.insert (tnum tListExecInstType) tListExecInstType $
+          LT.insert (tnum tCxlRejResponseTo) tCxlRejResponseTo $
+          LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+          LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+          LT.insert (tnum tContraTradeQty) tContraTradeQty $
+          LT.insert (tnum tContraTradeTime) tContraTradeTime $
+          LT.insert (tnum tClearingFirm) tClearingFirm $
+          LT.insert (tnum tClearingAccount) tClearingAccount $
+          LT.insert (tnum tLiquidityNumSecurities) tLiquidityNumSecurities $
+          LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+          LT.insert (tnum tStrikeTime) tStrikeTime $
+          LT.insert (tnum tListStatusText) tListStatusText $
+          LT.insert (tnum tEncodedListStatusTextLen) tEncodedListStatusTextLen $
+          LT.insert (tnum tEncodedListStatusText) tEncodedListStatusText $
+          LT.new 
diff --git a/src/Data/FIX/Spec/FIX43.hs b/src/Data/FIX/Spec/FIX43.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Spec/FIX43.hs
@@ -0,0 +1,12377 @@
+module Data.FIX.Spec.FIX43 ( fix43 ) where
+import qualified Data.ByteString.Char8 as C
+import qualified Data.LookupTable as LT ( new, insert )
+import Data.FIX.Message
+import Data.FIX.Parser
+import Data.Functor ( (<$>) )
+import Data.FIX.Arbitrary 
+import Test.QuickCheck ( arbitrary )
+
+
+tAccount :: FIXTag
+tAccount = FIXTag 
+   { tName = "Account"
+   , tnum = 1
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvId :: FIXTag
+tAdvId = FIXTag 
+   { tName = "AdvId"
+   , tnum = 2
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvRefID :: FIXTag
+tAdvRefID = FIXTag 
+   { tName = "AdvRefID"
+   , tnum = 3
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvSide :: FIXTag
+tAdvSide = FIXTag 
+   { tName = "AdvSide"
+   , tnum = 4
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvTransType :: FIXTag
+tAdvTransType = FIXTag 
+   { tName = "AdvTransType"
+   , tnum = 5
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAvgPx :: FIXTag
+tAvgPx = FIXTag 
+   { tName = "AvgPx"
+   , tnum = 6
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBeginSeqNo :: FIXTag
+tBeginSeqNo = FIXTag 
+   { tName = "BeginSeqNo"
+   , tnum = 7
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdID :: FIXTag
+tClOrdID = FIXTag 
+   { tName = "ClOrdID"
+   , tnum = 11
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCommission :: FIXTag
+tCommission = FIXTag 
+   { tName = "Commission"
+   , tnum = 12
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCommType :: FIXTag
+tCommType = FIXTag 
+   { tName = "CommType"
+   , tnum = 13
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCumQty :: FIXTag
+tCumQty = FIXTag 
+   { tName = "CumQty"
+   , tnum = 14
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCurrency :: FIXTag
+tCurrency = FIXTag 
+   { tName = "Currency"
+   , tnum = 15
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEndSeqNo :: FIXTag
+tEndSeqNo = FIXTag 
+   { tName = "EndSeqNo"
+   , tnum = 16
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecID :: FIXTag
+tExecID = FIXTag 
+   { tName = "ExecID"
+   , tnum = 17
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecInst :: FIXTag
+tExecInst = FIXTag 
+   { tName = "ExecInst"
+   , tnum = 18
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tExecRefID :: FIXTag
+tExecRefID = FIXTag 
+   { tName = "ExecRefID"
+   , tnum = 19
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecTransType :: FIXTag
+tExecTransType = FIXTag 
+   { tName = "ExecTransType"
+   , tnum = 20
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHandlInst :: FIXTag
+tHandlInst = FIXTag 
+   { tName = "HandlInst"
+   , tnum = 21
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityIDSource :: FIXTag
+tSecurityIDSource = FIXTag 
+   { tName = "SecurityIDSource"
+   , tnum = 22
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIid :: FIXTag
+tIOIid = FIXTag 
+   { tName = "IOIid"
+   , tnum = 23
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIOthSvc :: FIXTag
+tIOIOthSvc = FIXTag 
+   { tName = "IOIOthSvc"
+   , tnum = 24
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIQltyInd :: FIXTag
+tIOIQltyInd = FIXTag 
+   { tName = "IOIQltyInd"
+   , tnum = 25
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIRefID :: FIXTag
+tIOIRefID = FIXTag 
+   { tName = "IOIRefID"
+   , tnum = 26
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIQty :: FIXTag
+tIOIQty = FIXTag 
+   { tName = "IOIQty"
+   , tnum = 27
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOITransType :: FIXTag
+tIOITransType = FIXTag 
+   { tName = "IOITransType"
+   , tnum = 28
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastCapacity :: FIXTag
+tLastCapacity = FIXTag 
+   { tName = "LastCapacity"
+   , tnum = 29
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastMkt :: FIXTag
+tLastMkt = FIXTag 
+   { tName = "LastMkt"
+   , tnum = 30
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLastPx :: FIXTag
+tLastPx = FIXTag 
+   { tName = "LastPx"
+   , tnum = 31
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastQty :: FIXTag
+tLastQty = FIXTag 
+   { tName = "LastQty"
+   , tnum = 32
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLinesOfText :: FIXTag
+tLinesOfText = FIXTag 
+   { tName = "LinesOfText"
+   , tnum = 33
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgSeqNum :: FIXTag
+tMsgSeqNum = FIXTag 
+   { tName = "MsgSeqNum"
+   , tnum = 34
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNewSeqNo :: FIXTag
+tNewSeqNo = FIXTag 
+   { tName = "NewSeqNo"
+   , tnum = 36
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderID :: FIXTag
+tOrderID = FIXTag 
+   { tName = "OrderID"
+   , tnum = 37
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrderQty :: FIXTag
+tOrderQty = FIXTag 
+   { tName = "OrderQty"
+   , tnum = 38
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrdStatus :: FIXTag
+tOrdStatus = FIXTag 
+   { tName = "OrdStatus"
+   , tnum = 39
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrdType :: FIXTag
+tOrdType = FIXTag 
+   { tName = "OrdType"
+   , tnum = 40
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigClOrdID :: FIXTag
+tOrigClOrdID = FIXTag 
+   { tName = "OrigClOrdID"
+   , tnum = 41
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrigTime :: FIXTag
+tOrigTime = FIXTag 
+   { tName = "OrigTime"
+   , tnum = 42
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tPossDupFlag :: FIXTag
+tPossDupFlag = FIXTag 
+   { tName = "PossDupFlag"
+   , tnum = 43
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tPrice :: FIXTag
+tPrice = FIXTag 
+   { tName = "Price"
+   , tnum = 44
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRefSeqNum :: FIXTag
+tRefSeqNum = FIXTag 
+   { tName = "RefSeqNum"
+   , tnum = 45
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRelatdSym :: FIXTag
+tRelatdSym = FIXTag 
+   { tName = "RelatdSym"
+   , tnum = 46
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRule80A :: FIXTag
+tRule80A = FIXTag 
+   { tName = "Rule80A"
+   , tnum = 47
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityID :: FIXTag
+tSecurityID = FIXTag 
+   { tName = "SecurityID"
+   , tnum = 48
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSenderCompID :: FIXTag
+tSenderCompID = FIXTag 
+   { tName = "SenderCompID"
+   , tnum = 49
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSenderSubID :: FIXTag
+tSenderSubID = FIXTag 
+   { tName = "SenderSubID"
+   , tnum = 50
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSendingDate :: FIXTag
+tSendingDate = FIXTag 
+   { tName = "SendingDate"
+   , tnum = 51
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSendingTime :: FIXTag
+tSendingTime = FIXTag 
+   { tName = "SendingTime"
+   , tnum = 52
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tQuantity :: FIXTag
+tQuantity = FIXTag 
+   { tName = "Quantity"
+   , tnum = 53
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSide :: FIXTag
+tSide = FIXTag 
+   { tName = "Side"
+   , tnum = 54
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSymbol :: FIXTag
+tSymbol = FIXTag 
+   { tName = "Symbol"
+   , tnum = 55
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetCompID :: FIXTag
+tTargetCompID = FIXTag 
+   { tName = "TargetCompID"
+   , tnum = 56
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetSubID :: FIXTag
+tTargetSubID = FIXTag 
+   { tName = "TargetSubID"
+   , tnum = 57
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tText :: FIXTag
+tText = FIXTag 
+   { tName = "Text"
+   , tnum = 58
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTimeInForce :: FIXTag
+tTimeInForce = FIXTag 
+   { tName = "TimeInForce"
+   , tnum = 59
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTransactTime :: FIXTag
+tTransactTime = FIXTag 
+   { tName = "TransactTime"
+   , tnum = 60
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tUrgency :: FIXTag
+tUrgency = FIXTag 
+   { tName = "Urgency"
+   , tnum = 61
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tValidUntilTime :: FIXTag
+tValidUntilTime = FIXTag 
+   { tName = "ValidUntilTime"
+   , tnum = 62
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tSettlmntTyp :: FIXTag
+tSettlmntTyp = FIXTag 
+   { tName = "SettlmntTyp"
+   , tnum = 63
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tFutSettDate :: FIXTag
+tFutSettDate = FIXTag 
+   { tName = "FutSettDate"
+   , tnum = 64
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSymbolSfx :: FIXTag
+tSymbolSfx = FIXTag 
+   { tName = "SymbolSfx"
+   , tnum = 65
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListID :: FIXTag
+tListID = FIXTag 
+   { tName = "ListID"
+   , tnum = 66
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListSeqNo :: FIXTag
+tListSeqNo = FIXTag 
+   { tName = "ListSeqNo"
+   , tnum = 67
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotNoOrders :: FIXTag
+tTotNoOrders = FIXTag 
+   { tName = "TotNoOrders"
+   , tnum = 68
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListExecInst :: FIXTag
+tListExecInst = FIXTag 
+   { tName = "ListExecInst"
+   , tnum = 69
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocID :: FIXTag
+tAllocID = FIXTag 
+   { tName = "AllocID"
+   , tnum = 70
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocTransType :: FIXTag
+tAllocTransType = FIXTag 
+   { tName = "AllocTransType"
+   , tnum = 71
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRefAllocID :: FIXTag
+tRefAllocID = FIXTag 
+   { tName = "RefAllocID"
+   , tnum = 72
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoOrders :: FIXTag
+tNoOrders = FIXTag 
+   { tName = "NoOrders"
+   , tnum = 73
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAvgPrxPrecision :: FIXTag
+tAvgPrxPrecision = FIXTag 
+   { tName = "AvgPrxPrecision"
+   , tnum = 74
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeDate :: FIXTag
+tTradeDate = FIXTag 
+   { tName = "TradeDate"
+   , tnum = 75
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExecBroker :: FIXTag
+tExecBroker = FIXTag 
+   { tName = "ExecBroker"
+   , tnum = 76
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPositionEffect :: FIXTag
+tPositionEffect = FIXTag 
+   { tName = "PositionEffect"
+   , tnum = 77
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoAllocs :: FIXTag
+tNoAllocs = FIXTag 
+   { tName = "NoAllocs"
+   , tnum = 78
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocAccount :: FIXTag
+tAllocAccount = FIXTag 
+   { tName = "AllocAccount"
+   , tnum = 79
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocQty :: FIXTag
+tAllocQty = FIXTag 
+   { tName = "AllocQty"
+   , tnum = 80
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tProcessCode :: FIXTag
+tProcessCode = FIXTag 
+   { tName = "ProcessCode"
+   , tnum = 81
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoRpts :: FIXTag
+tNoRpts = FIXTag 
+   { tName = "NoRpts"
+   , tnum = 82
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRptSeq :: FIXTag
+tRptSeq = FIXTag 
+   { tName = "RptSeq"
+   , tnum = 83
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlQty :: FIXTag
+tCxlQty = FIXTag 
+   { tName = "CxlQty"
+   , tnum = 84
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoDlvyInst :: FIXTag
+tNoDlvyInst = FIXTag 
+   { tName = "NoDlvyInst"
+   , tnum = 85
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDlvyInst :: FIXTag
+tDlvyInst = FIXTag 
+   { tName = "DlvyInst"
+   , tnum = 86
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocStatus :: FIXTag
+tAllocStatus = FIXTag 
+   { tName = "AllocStatus"
+   , tnum = 87
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocRejCode :: FIXTag
+tAllocRejCode = FIXTag 
+   { tName = "AllocRejCode"
+   , tnum = 88
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSignature :: FIXTag
+tSignature = FIXTag 
+   { tName = "Signature"
+   , tnum = 89
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSecureDataLen :: FIXTag
+tSecureDataLen = FIXTag 
+   { tName = "SecureDataLen"
+   , tnum = 90
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecureData :: FIXTag
+tSecureData = FIXTag 
+   { tName = "SecureData"
+   , tnum = 91
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tBrokerOfCredit :: FIXTag
+tBrokerOfCredit = FIXTag 
+   { tName = "BrokerOfCredit"
+   , tnum = 92
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSignatureLength :: FIXTag
+tSignatureLength = FIXTag 
+   { tName = "SignatureLength"
+   , tnum = 93
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEmailType :: FIXTag
+tEmailType = FIXTag 
+   { tName = "EmailType"
+   , tnum = 94
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRawDataLength :: FIXTag
+tRawDataLength = FIXTag 
+   { tName = "RawDataLength"
+   , tnum = 95
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRawData :: FIXTag
+tRawData = FIXTag 
+   { tName = "RawData"
+   , tnum = 96
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPossResend :: FIXTag
+tPossResend = FIXTag 
+   { tName = "PossResend"
+   , tnum = 97
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tEncryptMethod :: FIXTag
+tEncryptMethod = FIXTag 
+   { tName = "EncryptMethod"
+   , tnum = 98
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStopPx :: FIXTag
+tStopPx = FIXTag 
+   { tName = "StopPx"
+   , tnum = 99
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExDestination :: FIXTag
+tExDestination = FIXTag 
+   { tName = "ExDestination"
+   , tnum = 100
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCxlRejReason :: FIXTag
+tCxlRejReason = FIXTag 
+   { tName = "CxlRejReason"
+   , tnum = 102
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdRejReason :: FIXTag
+tOrdRejReason = FIXTag 
+   { tName = "OrdRejReason"
+   , tnum = 103
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIQualifier :: FIXTag
+tIOIQualifier = FIXTag 
+   { tName = "IOIQualifier"
+   , tnum = 104
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tWaveNo :: FIXTag
+tWaveNo = FIXTag 
+   { tName = "WaveNo"
+   , tnum = 105
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIssuer :: FIXTag
+tIssuer = FIXTag 
+   { tName = "Issuer"
+   , tnum = 106
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityDesc :: FIXTag
+tSecurityDesc = FIXTag 
+   { tName = "SecurityDesc"
+   , tnum = 107
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHeartBtInt :: FIXTag
+tHeartBtInt = FIXTag 
+   { tName = "HeartBtInt"
+   , tnum = 108
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClientID :: FIXTag
+tClientID = FIXTag 
+   { tName = "ClientID"
+   , tnum = 109
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMinQty :: FIXTag
+tMinQty = FIXTag 
+   { tName = "MinQty"
+   , tnum = 110
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMaxFloor :: FIXTag
+tMaxFloor = FIXTag 
+   { tName = "MaxFloor"
+   , tnum = 111
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTestReqID :: FIXTag
+tTestReqID = FIXTag 
+   { tName = "TestReqID"
+   , tnum = 112
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tReportToExch :: FIXTag
+tReportToExch = FIXTag 
+   { tName = "ReportToExch"
+   , tnum = 113
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tLocateReqd :: FIXTag
+tLocateReqd = FIXTag 
+   { tName = "LocateReqd"
+   , tnum = 114
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOnBehalfOfCompID :: FIXTag
+tOnBehalfOfCompID = FIXTag 
+   { tName = "OnBehalfOfCompID"
+   , tnum = 115
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOnBehalfOfSubID :: FIXTag
+tOnBehalfOfSubID = FIXTag 
+   { tName = "OnBehalfOfSubID"
+   , tnum = 116
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteID :: FIXTag
+tQuoteID = FIXTag 
+   { tName = "QuoteID"
+   , tnum = 117
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNetMoney :: FIXTag
+tNetMoney = FIXTag 
+   { tName = "NetMoney"
+   , tnum = 118
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrAmt :: FIXTag
+tSettlCurrAmt = FIXTag 
+   { tName = "SettlCurrAmt"
+   , tnum = 119
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrency :: FIXTag
+tSettlCurrency = FIXTag 
+   { tName = "SettlCurrency"
+   , tnum = 120
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tForexReq :: FIXTag
+tForexReq = FIXTag 
+   { tName = "ForexReq"
+   , tnum = 121
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOrigSendingTime :: FIXTag
+tOrigSendingTime = FIXTag 
+   { tName = "OrigSendingTime"
+   , tnum = 122
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tGapFillFlag :: FIXTag
+tGapFillFlag = FIXTag 
+   { tName = "GapFillFlag"
+   , tnum = 123
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoExecs :: FIXTag
+tNoExecs = FIXTag 
+   { tName = "NoExecs"
+   , tnum = 124
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlType :: FIXTag
+tCxlType = FIXTag 
+   { tName = "CxlType"
+   , tnum = 125
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExpireTime :: FIXTag
+tExpireTime = FIXTag 
+   { tName = "ExpireTime"
+   , tnum = 126
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tDKReason :: FIXTag
+tDKReason = FIXTag 
+   { tName = "DKReason"
+   , tnum = 127
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToCompID :: FIXTag
+tDeliverToCompID = FIXTag 
+   { tName = "DeliverToCompID"
+   , tnum = 128
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliverToSubID :: FIXTag
+tDeliverToSubID = FIXTag 
+   { tName = "DeliverToSubID"
+   , tnum = 129
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOINaturalFlag :: FIXTag
+tIOINaturalFlag = FIXTag 
+   { tName = "IOINaturalFlag"
+   , tnum = 130
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tQuoteReqID :: FIXTag
+tQuoteReqID = FIXTag 
+   { tName = "QuoteReqID"
+   , tnum = 131
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBidPx :: FIXTag
+tBidPx = FIXTag 
+   { tName = "BidPx"
+   , tnum = 132
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferPx :: FIXTag
+tOfferPx = FIXTag 
+   { tName = "OfferPx"
+   , tnum = 133
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidSize :: FIXTag
+tBidSize = FIXTag 
+   { tName = "BidSize"
+   , tnum = 134
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSize :: FIXTag
+tOfferSize = FIXTag 
+   { tName = "OfferSize"
+   , tnum = 135
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoMiscFees :: FIXTag
+tNoMiscFees = FIXTag 
+   { tName = "NoMiscFees"
+   , tnum = 136
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMiscFeeAmt :: FIXTag
+tMiscFeeAmt = FIXTag 
+   { tName = "MiscFeeAmt"
+   , tnum = 137
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMiscFeeCurr :: FIXTag
+tMiscFeeCurr = FIXTag 
+   { tName = "MiscFeeCurr"
+   , tnum = 138
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMiscFeeType :: FIXTag
+tMiscFeeType = FIXTag 
+   { tName = "MiscFeeType"
+   , tnum = 139
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrevClosePx :: FIXTag
+tPrevClosePx = FIXTag 
+   { tName = "PrevClosePx"
+   , tnum = 140
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tResetSeqNumFlag :: FIXTag
+tResetSeqNumFlag = FIXTag 
+   { tName = "ResetSeqNumFlag"
+   , tnum = 141
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tSenderLocationID :: FIXTag
+tSenderLocationID = FIXTag 
+   { tName = "SenderLocationID"
+   , tnum = 142
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetLocationID :: FIXTag
+tTargetLocationID = FIXTag 
+   { tName = "TargetLocationID"
+   , tnum = 143
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOnBehalfOfLocationID :: FIXTag
+tOnBehalfOfLocationID = FIXTag 
+   { tName = "OnBehalfOfLocationID"
+   , tnum = 144
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliverToLocationID :: FIXTag
+tDeliverToLocationID = FIXTag 
+   { tName = "DeliverToLocationID"
+   , tnum = 145
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRelatedSym :: FIXTag
+tNoRelatedSym = FIXTag 
+   { tName = "NoRelatedSym"
+   , tnum = 146
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSubject :: FIXTag
+tSubject = FIXTag 
+   { tName = "Subject"
+   , tnum = 147
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHeadline :: FIXTag
+tHeadline = FIXTag 
+   { tName = "Headline"
+   , tnum = 148
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tURLLink :: FIXTag
+tURLLink = FIXTag 
+   { tName = "URLLink"
+   , tnum = 149
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecType :: FIXTag
+tExecType = FIXTag 
+   { tName = "ExecType"
+   , tnum = 150
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLeavesQty :: FIXTag
+tLeavesQty = FIXTag 
+   { tName = "LeavesQty"
+   , tnum = 151
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCashOrderQty :: FIXTag
+tCashOrderQty = FIXTag 
+   { tName = "CashOrderQty"
+   , tnum = 152
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocAvgPx :: FIXTag
+tAllocAvgPx = FIXTag 
+   { tName = "AllocAvgPx"
+   , tnum = 153
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocNetMoney :: FIXTag
+tAllocNetMoney = FIXTag 
+   { tName = "AllocNetMoney"
+   , tnum = 154
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRate :: FIXTag
+tSettlCurrFxRate = FIXTag 
+   { tName = "SettlCurrFxRate"
+   , tnum = 155
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRateCalc :: FIXTag
+tSettlCurrFxRateCalc = FIXTag 
+   { tName = "SettlCurrFxRateCalc"
+   , tnum = 156
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNumDaysInterest :: FIXTag
+tNumDaysInterest = FIXTag 
+   { tName = "NumDaysInterest"
+   , tnum = 157
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAccruedInterestRate :: FIXTag
+tAccruedInterestRate = FIXTag 
+   { tName = "AccruedInterestRate"
+   , tnum = 158
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAccruedInterestAmt :: FIXTag
+tAccruedInterestAmt = FIXTag 
+   { tName = "AccruedInterestAmt"
+   , tnum = 159
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlInstMode :: FIXTag
+tSettlInstMode = FIXTag 
+   { tName = "SettlInstMode"
+   , tnum = 160
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocText :: FIXTag
+tAllocText = FIXTag 
+   { tName = "AllocText"
+   , tnum = 161
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstID :: FIXTag
+tSettlInstID = FIXTag 
+   { tName = "SettlInstID"
+   , tnum = 162
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstTransType :: FIXTag
+tSettlInstTransType = FIXTag 
+   { tName = "SettlInstTransType"
+   , tnum = 163
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEmailThreadID :: FIXTag
+tEmailThreadID = FIXTag 
+   { tName = "EmailThreadID"
+   , tnum = 164
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstSource :: FIXTag
+tSettlInstSource = FIXTag 
+   { tName = "SettlInstSource"
+   , tnum = 165
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlLocation :: FIXTag
+tSettlLocation = FIXTag 
+   { tName = "SettlLocation"
+   , tnum = 166
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityType :: FIXTag
+tSecurityType = FIXTag 
+   { tName = "SecurityType"
+   , tnum = 167
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEffectiveTime :: FIXTag
+tEffectiveTime = FIXTag 
+   { tName = "EffectiveTime"
+   , tnum = 168
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tStandInstDbType :: FIXTag
+tStandInstDbType = FIXTag 
+   { tName = "StandInstDbType"
+   , tnum = 169
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStandInstDbName :: FIXTag
+tStandInstDbName = FIXTag 
+   { tName = "StandInstDbName"
+   , tnum = 170
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStandInstDbID :: FIXTag
+tStandInstDbID = FIXTag 
+   { tName = "StandInstDbID"
+   , tnum = 171
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlDeliveryType :: FIXTag
+tSettlDeliveryType = FIXTag 
+   { tName = "SettlDeliveryType"
+   , tnum = 172
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlDepositoryCode :: FIXTag
+tSettlDepositoryCode = FIXTag 
+   { tName = "SettlDepositoryCode"
+   , tnum = 173
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlBrkrCode :: FIXTag
+tSettlBrkrCode = FIXTag 
+   { tName = "SettlBrkrCode"
+   , tnum = 174
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstCode :: FIXTag
+tSettlInstCode = FIXTag 
+   { tName = "SettlInstCode"
+   , tnum = 175
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentName :: FIXTag
+tSecuritySettlAgentName = FIXTag 
+   { tName = "SecuritySettlAgentName"
+   , tnum = 176
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentCode :: FIXTag
+tSecuritySettlAgentCode = FIXTag 
+   { tName = "SecuritySettlAgentCode"
+   , tnum = 177
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentAcctNum :: FIXTag
+tSecuritySettlAgentAcctNum = FIXTag 
+   { tName = "SecuritySettlAgentAcctNum"
+   , tnum = 178
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentAcctName :: FIXTag
+tSecuritySettlAgentAcctName = FIXTag 
+   { tName = "SecuritySettlAgentAcctName"
+   , tnum = 179
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentContactName :: FIXTag
+tSecuritySettlAgentContactName = FIXTag 
+   { tName = "SecuritySettlAgentContactName"
+   , tnum = 180
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentContactPhone :: FIXTag
+tSecuritySettlAgentContactPhone = FIXTag 
+   { tName = "SecuritySettlAgentContactPhone"
+   , tnum = 181
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentName :: FIXTag
+tCashSettlAgentName = FIXTag 
+   { tName = "CashSettlAgentName"
+   , tnum = 182
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentCode :: FIXTag
+tCashSettlAgentCode = FIXTag 
+   { tName = "CashSettlAgentCode"
+   , tnum = 183
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentAcctNum :: FIXTag
+tCashSettlAgentAcctNum = FIXTag 
+   { tName = "CashSettlAgentAcctNum"
+   , tnum = 184
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentAcctName :: FIXTag
+tCashSettlAgentAcctName = FIXTag 
+   { tName = "CashSettlAgentAcctName"
+   , tnum = 185
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentContactName :: FIXTag
+tCashSettlAgentContactName = FIXTag 
+   { tName = "CashSettlAgentContactName"
+   , tnum = 186
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentContactPhone :: FIXTag
+tCashSettlAgentContactPhone = FIXTag 
+   { tName = "CashSettlAgentContactPhone"
+   , tnum = 187
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBidSpotRate :: FIXTag
+tBidSpotRate = FIXTag 
+   { tName = "BidSpotRate"
+   , tnum = 188
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidForwardPoints :: FIXTag
+tBidForwardPoints = FIXTag 
+   { tName = "BidForwardPoints"
+   , tnum = 189
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSpotRate :: FIXTag
+tOfferSpotRate = FIXTag 
+   { tName = "OfferSpotRate"
+   , tnum = 190
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferForwardPoints :: FIXTag
+tOfferForwardPoints = FIXTag 
+   { tName = "OfferForwardPoints"
+   , tnum = 191
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrderQty2 :: FIXTag
+tOrderQty2 = FIXTag 
+   { tName = "OrderQty2"
+   , tnum = 192
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFutSettDate2 :: FIXTag
+tFutSettDate2 = FIXTag 
+   { tName = "FutSettDate2"
+   , tnum = 193
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLastSpotRate :: FIXTag
+tLastSpotRate = FIXTag 
+   { tName = "LastSpotRate"
+   , tnum = 194
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastForwardPoints :: FIXTag
+tLastForwardPoints = FIXTag 
+   { tName = "LastForwardPoints"
+   , tnum = 195
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocLinkID :: FIXTag
+tAllocLinkID = FIXTag 
+   { tName = "AllocLinkID"
+   , tnum = 196
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocLinkType :: FIXTag
+tAllocLinkType = FIXTag 
+   { tName = "AllocLinkType"
+   , tnum = 197
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecondaryOrderID :: FIXTag
+tSecondaryOrderID = FIXTag 
+   { tName = "SecondaryOrderID"
+   , tnum = 198
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoIOIQualifiers :: FIXTag
+tNoIOIQualifiers = FIXTag 
+   { tName = "NoIOIQualifiers"
+   , tnum = 199
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityMonthYear :: FIXTag
+tMaturityMonthYear = FIXTag 
+   { tName = "MaturityMonthYear"
+   , tnum = 200
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tPutOrCall :: FIXTag
+tPutOrCall = FIXTag 
+   { tName = "PutOrCall"
+   , tnum = 201
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStrikePrice :: FIXTag
+tStrikePrice = FIXTag 
+   { tName = "StrikePrice"
+   , tnum = 202
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCoveredOrUncovered :: FIXTag
+tCoveredOrUncovered = FIXTag 
+   { tName = "CoveredOrUncovered"
+   , tnum = 203
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCustomerOrFirm :: FIXTag
+tCustomerOrFirm = FIXTag 
+   { tName = "CustomerOrFirm"
+   , tnum = 204
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityDay :: FIXTag
+tMaturityDay = FIXTag 
+   { tName = "MaturityDay"
+   , tnum = 205
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOptAttribute :: FIXTag
+tOptAttribute = FIXTag 
+   { tName = "OptAttribute"
+   , tnum = 206
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityExchange :: FIXTag
+tSecurityExchange = FIXTag 
+   { tName = "SecurityExchange"
+   , tnum = 207
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNotifyBrokerOfCredit :: FIXTag
+tNotifyBrokerOfCredit = FIXTag 
+   { tName = "NotifyBrokerOfCredit"
+   , tnum = 208
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tAllocHandlInst :: FIXTag
+tAllocHandlInst = FIXTag 
+   { tName = "AllocHandlInst"
+   , tnum = 209
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxShow :: FIXTag
+tMaxShow = FIXTag 
+   { tName = "MaxShow"
+   , tnum = 210
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPegDifference :: FIXTag
+tPegDifference = FIXTag 
+   { tName = "PegDifference"
+   , tnum = 211
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tXmlDataLen :: FIXTag
+tXmlDataLen = FIXTag 
+   { tName = "XmlDataLen"
+   , tnum = 212
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tXmlData :: FIXTag
+tXmlData = FIXTag 
+   { tName = "XmlData"
+   , tnum = 213
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSettlInstRefID :: FIXTag
+tSettlInstRefID = FIXTag 
+   { tName = "SettlInstRefID"
+   , tnum = 214
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRoutingIDs :: FIXTag
+tNoRoutingIDs = FIXTag 
+   { tName = "NoRoutingIDs"
+   , tnum = 215
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoutingType :: FIXTag
+tRoutingType = FIXTag 
+   { tName = "RoutingType"
+   , tnum = 216
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoutingID :: FIXTag
+tRoutingID = FIXTag 
+   { tName = "RoutingID"
+   , tnum = 217
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSpread :: FIXTag
+tSpread = FIXTag 
+   { tName = "Spread"
+   , tnum = 218
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBenchmark :: FIXTag
+tBenchmark = FIXTag 
+   { tName = "Benchmark"
+   , tnum = 219
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBenchmarkCurveCurrency :: FIXTag
+tBenchmarkCurveCurrency = FIXTag 
+   { tName = "BenchmarkCurveCurrency"
+   , tnum = 220
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBenchmarkCurveName :: FIXTag
+tBenchmarkCurveName = FIXTag 
+   { tName = "BenchmarkCurveName"
+   , tnum = 221
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBenchmarkCurvePoint :: FIXTag
+tBenchmarkCurvePoint = FIXTag 
+   { tName = "BenchmarkCurvePoint"
+   , tnum = 222
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCouponRate :: FIXTag
+tCouponRate = FIXTag 
+   { tName = "CouponRate"
+   , tnum = 223
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCouponPaymentDate :: FIXTag
+tCouponPaymentDate = FIXTag 
+   { tName = "CouponPaymentDate"
+   , tnum = 224
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tIssueDate :: FIXTag
+tIssueDate = FIXTag 
+   { tName = "IssueDate"
+   , tnum = 225
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tRepurchaseTerm :: FIXTag
+tRepurchaseTerm = FIXTag 
+   { tName = "RepurchaseTerm"
+   , tnum = 226
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRepurchaseRate :: FIXTag
+tRepurchaseRate = FIXTag 
+   { tName = "RepurchaseRate"
+   , tnum = 227
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFactor :: FIXTag
+tFactor = FIXTag 
+   { tName = "Factor"
+   , tnum = 228
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTradeOriginationDate :: FIXTag
+tTradeOriginationDate = FIXTag 
+   { tName = "TradeOriginationDate"
+   , tnum = 229
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExDate :: FIXTag
+tExDate = FIXTag 
+   { tName = "ExDate"
+   , tnum = 230
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tContractMultiplier :: FIXTag
+tContractMultiplier = FIXTag 
+   { tName = "ContractMultiplier"
+   , tnum = 231
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoStipulations :: FIXTag
+tNoStipulations = FIXTag 
+   { tName = "NoStipulations"
+   , tnum = 232
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStipulationType :: FIXTag
+tStipulationType = FIXTag 
+   { tName = "StipulationType"
+   , tnum = 233
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStipulationValue :: FIXTag
+tStipulationValue = FIXTag 
+   { tName = "StipulationValue"
+   , tnum = 234
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tYieldType :: FIXTag
+tYieldType = FIXTag 
+   { tName = "YieldType"
+   , tnum = 235
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tYield :: FIXTag
+tYield = FIXTag 
+   { tName = "Yield"
+   , tnum = 236
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTotalTakedown :: FIXTag
+tTotalTakedown = FIXTag 
+   { tName = "TotalTakedown"
+   , tnum = 237
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tConcession :: FIXTag
+tConcession = FIXTag 
+   { tName = "Concession"
+   , tnum = 238
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRepoCollateralSecurityType :: FIXTag
+tRepoCollateralSecurityType = FIXTag 
+   { tName = "RepoCollateralSecurityType"
+   , tnum = 239
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRedemptionDate :: FIXTag
+tRedemptionDate = FIXTag 
+   { tName = "RedemptionDate"
+   , tnum = 240
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingCouponPaymentDate :: FIXTag
+tUnderlyingCouponPaymentDate = FIXTag 
+   { tName = "UnderlyingCouponPaymentDate"
+   , tnum = 241
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingIssueDate :: FIXTag
+tUnderlyingIssueDate = FIXTag 
+   { tName = "UnderlyingIssueDate"
+   , tnum = 242
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingRepoCollateralSecurityType :: FIXTag
+tUnderlyingRepoCollateralSecurityType = FIXTag 
+   { tName = "UnderlyingRepoCollateralSecurityType"
+   , tnum = 243
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingRepurchaseTerm :: FIXTag
+tUnderlyingRepurchaseTerm = FIXTag 
+   { tName = "UnderlyingRepurchaseTerm"
+   , tnum = 244
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingRepurchaseRate :: FIXTag
+tUnderlyingRepurchaseRate = FIXTag 
+   { tName = "UnderlyingRepurchaseRate"
+   , tnum = 245
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingFactor :: FIXTag
+tUnderlyingFactor = FIXTag 
+   { tName = "UnderlyingFactor"
+   , tnum = 246
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingRedemptionDate :: FIXTag
+tUnderlyingRedemptionDate = FIXTag 
+   { tName = "UnderlyingRedemptionDate"
+   , tnum = 247
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegCouponPaymentDate :: FIXTag
+tLegCouponPaymentDate = FIXTag 
+   { tName = "LegCouponPaymentDate"
+   , tnum = 248
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegIssueDate :: FIXTag
+tLegIssueDate = FIXTag 
+   { tName = "LegIssueDate"
+   , tnum = 249
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegRepoCollateralSecurityType :: FIXTag
+tLegRepoCollateralSecurityType = FIXTag 
+   { tName = "LegRepoCollateralSecurityType"
+   , tnum = 250
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegRepurchaseTerm :: FIXTag
+tLegRepurchaseTerm = FIXTag 
+   { tName = "LegRepurchaseTerm"
+   , tnum = 251
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegRepurchaseRate :: FIXTag
+tLegRepurchaseRate = FIXTag 
+   { tName = "LegRepurchaseRate"
+   , tnum = 252
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegFactor :: FIXTag
+tLegFactor = FIXTag 
+   { tName = "LegFactor"
+   , tnum = 253
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegRedemptionDate :: FIXTag
+tLegRedemptionDate = FIXTag 
+   { tName = "LegRedemptionDate"
+   , tnum = 254
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tCreditRating :: FIXTag
+tCreditRating = FIXTag 
+   { tName = "CreditRating"
+   , tnum = 255
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingCreditRating :: FIXTag
+tUnderlyingCreditRating = FIXTag 
+   { tName = "UnderlyingCreditRating"
+   , tnum = 256
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegCreditRating :: FIXTag
+tLegCreditRating = FIXTag 
+   { tName = "LegCreditRating"
+   , tnum = 257
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradedFlatSwitch :: FIXTag
+tTradedFlatSwitch = FIXTag 
+   { tName = "TradedFlatSwitch"
+   , tnum = 258
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tBasisFeatureDate :: FIXTag
+tBasisFeatureDate = FIXTag 
+   { tName = "BasisFeatureDate"
+   , tnum = 259
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tBasisFeaturePrice :: FIXTag
+tBasisFeaturePrice = FIXTag 
+   { tName = "BasisFeaturePrice"
+   , tnum = 260
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDReqID :: FIXTag
+tMDReqID = FIXTag 
+   { tName = "MDReqID"
+   , tnum = 262
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSubscriptionRequestType :: FIXTag
+tSubscriptionRequestType = FIXTag 
+   { tName = "SubscriptionRequestType"
+   , tnum = 263
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMarketDepth :: FIXTag
+tMarketDepth = FIXTag 
+   { tName = "MarketDepth"
+   , tnum = 264
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDUpdateType :: FIXTag
+tMDUpdateType = FIXTag 
+   { tName = "MDUpdateType"
+   , tnum = 265
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAggregatedBook :: FIXTag
+tAggregatedBook = FIXTag 
+   { tName = "AggregatedBook"
+   , tnum = 266
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoMDEntryTypes :: FIXTag
+tNoMDEntryTypes = FIXTag 
+   { tName = "NoMDEntryTypes"
+   , tnum = 267
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMDEntries :: FIXTag
+tNoMDEntries = FIXTag 
+   { tName = "NoMDEntries"
+   , tnum = 268
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDEntryType :: FIXTag
+tMDEntryType = FIXTag 
+   { tName = "MDEntryType"
+   , tnum = 269
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryPx :: FIXTag
+tMDEntryPx = FIXTag 
+   { tName = "MDEntryPx"
+   , tnum = 270
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDEntrySize :: FIXTag
+tMDEntrySize = FIXTag 
+   { tName = "MDEntrySize"
+   , tnum = 271
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDEntryDate :: FIXTag
+tMDEntryDate = FIXTag 
+   { tName = "MDEntryDate"
+   , tnum = 272
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tMDEntryTime :: FIXTag
+tMDEntryTime = FIXTag 
+   { tName = "MDEntryTime"
+   , tnum = 273
+   , tparser = toFIXTimeOnly
+   , arbitraryValue = FIXTimeOnly <$> arbitrary }
+
+tTickDirection :: FIXTag
+tTickDirection = FIXTag 
+   { tName = "TickDirection"
+   , tnum = 274
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDMkt :: FIXTag
+tMDMkt = FIXTag 
+   { tName = "MDMkt"
+   , tnum = 275
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteCondition :: FIXTag
+tQuoteCondition = FIXTag 
+   { tName = "QuoteCondition"
+   , tnum = 276
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tTradeCondition :: FIXTag
+tTradeCondition = FIXTag 
+   { tName = "TradeCondition"
+   , tnum = 277
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMDEntryID :: FIXTag
+tMDEntryID = FIXTag 
+   { tName = "MDEntryID"
+   , tnum = 278
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDUpdateAction :: FIXTag
+tMDUpdateAction = FIXTag 
+   { tName = "MDUpdateAction"
+   , tnum = 279
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryRefID :: FIXTag
+tMDEntryRefID = FIXTag 
+   { tName = "MDEntryRefID"
+   , tnum = 280
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDReqRejReason :: FIXTag
+tMDReqRejReason = FIXTag 
+   { tName = "MDReqRejReason"
+   , tnum = 281
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryOriginator :: FIXTag
+tMDEntryOriginator = FIXTag 
+   { tName = "MDEntryOriginator"
+   , tnum = 282
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLocationID :: FIXTag
+tLocationID = FIXTag 
+   { tName = "LocationID"
+   , tnum = 283
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeskID :: FIXTag
+tDeskID = FIXTag 
+   { tName = "DeskID"
+   , tnum = 284
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeleteReason :: FIXTag
+tDeleteReason = FIXTag 
+   { tName = "DeleteReason"
+   , tnum = 285
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOpenCloseSettleFlag :: FIXTag
+tOpenCloseSettleFlag = FIXTag 
+   { tName = "OpenCloseSettleFlag"
+   , tnum = 286
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tSellerDays :: FIXTag
+tSellerDays = FIXTag 
+   { tName = "SellerDays"
+   , tnum = 287
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDEntryBuyer :: FIXTag
+tMDEntryBuyer = FIXTag 
+   { tName = "MDEntryBuyer"
+   , tnum = 288
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDEntrySeller :: FIXTag
+tMDEntrySeller = FIXTag 
+   { tName = "MDEntrySeller"
+   , tnum = 289
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDEntryPositionNo :: FIXTag
+tMDEntryPositionNo = FIXTag 
+   { tName = "MDEntryPositionNo"
+   , tnum = 290
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tFinancialStatus :: FIXTag
+tFinancialStatus = FIXTag 
+   { tName = "FinancialStatus"
+   , tnum = 291
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tCorporateAction :: FIXTag
+tCorporateAction = FIXTag 
+   { tName = "CorporateAction"
+   , tnum = 292
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tDefBidSize :: FIXTag
+tDefBidSize = FIXTag 
+   { tName = "DefBidSize"
+   , tnum = 293
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDefOfferSize :: FIXTag
+tDefOfferSize = FIXTag 
+   { tName = "DefOfferSize"
+   , tnum = 294
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoQuoteEntries :: FIXTag
+tNoQuoteEntries = FIXTag 
+   { tName = "NoQuoteEntries"
+   , tnum = 295
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoQuoteSets :: FIXTag
+tNoQuoteSets = FIXTag 
+   { tName = "NoQuoteSets"
+   , tnum = 296
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteStatus :: FIXTag
+tQuoteStatus = FIXTag 
+   { tName = "QuoteStatus"
+   , tnum = 297
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteCancelType :: FIXTag
+tQuoteCancelType = FIXTag 
+   { tName = "QuoteCancelType"
+   , tnum = 298
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteEntryID :: FIXTag
+tQuoteEntryID = FIXTag 
+   { tName = "QuoteEntryID"
+   , tnum = 299
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRejectReason :: FIXTag
+tQuoteRejectReason = FIXTag 
+   { tName = "QuoteRejectReason"
+   , tnum = 300
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteResponseLevel :: FIXTag
+tQuoteResponseLevel = FIXTag 
+   { tName = "QuoteResponseLevel"
+   , tnum = 301
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteSetID :: FIXTag
+tQuoteSetID = FIXTag 
+   { tName = "QuoteSetID"
+   , tnum = 302
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRequestType :: FIXTag
+tQuoteRequestType = FIXTag 
+   { tName = "QuoteRequestType"
+   , tnum = 303
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotQuoteEntries :: FIXTag
+tTotQuoteEntries = FIXTag 
+   { tName = "TotQuoteEntries"
+   , tnum = 304
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingSecurityIDSource :: FIXTag
+tUnderlyingSecurityIDSource = FIXTag 
+   { tName = "UnderlyingSecurityIDSource"
+   , tnum = 305
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingIssuer :: FIXTag
+tUnderlyingIssuer = FIXTag 
+   { tName = "UnderlyingIssuer"
+   , tnum = 306
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityDesc :: FIXTag
+tUnderlyingSecurityDesc = FIXTag 
+   { tName = "UnderlyingSecurityDesc"
+   , tnum = 307
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityExchange :: FIXTag
+tUnderlyingSecurityExchange = FIXTag 
+   { tName = "UnderlyingSecurityExchange"
+   , tnum = 308
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityID :: FIXTag
+tUnderlyingSecurityID = FIXTag 
+   { tName = "UnderlyingSecurityID"
+   , tnum = 309
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityType :: FIXTag
+tUnderlyingSecurityType = FIXTag 
+   { tName = "UnderlyingSecurityType"
+   , tnum = 310
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSymbol :: FIXTag
+tUnderlyingSymbol = FIXTag 
+   { tName = "UnderlyingSymbol"
+   , tnum = 311
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSymbolSfx :: FIXTag
+tUnderlyingSymbolSfx = FIXTag 
+   { tName = "UnderlyingSymbolSfx"
+   , tnum = 312
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingMaturityMonthYear :: FIXTag
+tUnderlyingMaturityMonthYear = FIXTag 
+   { tName = "UnderlyingMaturityMonthYear"
+   , tnum = 313
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tUnderlyingMaturityDay :: FIXTag
+tUnderlyingMaturityDay = FIXTag 
+   { tName = "UnderlyingMaturityDay"
+   , tnum = 314
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingPutOrCall :: FIXTag
+tUnderlyingPutOrCall = FIXTag 
+   { tName = "UnderlyingPutOrCall"
+   , tnum = 315
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingStrikePrice :: FIXTag
+tUnderlyingStrikePrice = FIXTag 
+   { tName = "UnderlyingStrikePrice"
+   , tnum = 316
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingOptAttribute :: FIXTag
+tUnderlyingOptAttribute = FIXTag 
+   { tName = "UnderlyingOptAttribute"
+   , tnum = 317
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCurrency :: FIXTag
+tUnderlyingCurrency = FIXTag 
+   { tName = "UnderlyingCurrency"
+   , tnum = 318
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRatioQty :: FIXTag
+tRatioQty = FIXTag 
+   { tName = "RatioQty"
+   , tnum = 319
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSecurityReqID :: FIXTag
+tSecurityReqID = FIXTag 
+   { tName = "SecurityReqID"
+   , tnum = 320
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityRequestType :: FIXTag
+tSecurityRequestType = FIXTag 
+   { tName = "SecurityRequestType"
+   , tnum = 321
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityResponseID :: FIXTag
+tSecurityResponseID = FIXTag 
+   { tName = "SecurityResponseID"
+   , tnum = 322
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityResponseType :: FIXTag
+tSecurityResponseType = FIXTag 
+   { tName = "SecurityResponseType"
+   , tnum = 323
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityStatusReqID :: FIXTag
+tSecurityStatusReqID = FIXTag 
+   { tName = "SecurityStatusReqID"
+   , tnum = 324
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnsolicitedIndicator :: FIXTag
+tUnsolicitedIndicator = FIXTag 
+   { tName = "UnsolicitedIndicator"
+   , tnum = 325
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tSecurityTradingStatus :: FIXTag
+tSecurityTradingStatus = FIXTag 
+   { tName = "SecurityTradingStatus"
+   , tnum = 326
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tHaltReasonChar :: FIXTag
+tHaltReasonChar = FIXTag 
+   { tName = "HaltReasonChar"
+   , tnum = 327
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tInViewOfCommon :: FIXTag
+tInViewOfCommon = FIXTag 
+   { tName = "InViewOfCommon"
+   , tnum = 328
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tDueToRelated :: FIXTag
+tDueToRelated = FIXTag 
+   { tName = "DueToRelated"
+   , tnum = 329
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tBuyVolume :: FIXTag
+tBuyVolume = FIXTag 
+   { tName = "BuyVolume"
+   , tnum = 330
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSellVolume :: FIXTag
+tSellVolume = FIXTag 
+   { tName = "SellVolume"
+   , tnum = 331
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tHighPx :: FIXTag
+tHighPx = FIXTag 
+   { tName = "HighPx"
+   , tnum = 332
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLowPx :: FIXTag
+tLowPx = FIXTag 
+   { tName = "LowPx"
+   , tnum = 333
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAdjustment :: FIXTag
+tAdjustment = FIXTag 
+   { tName = "Adjustment"
+   , tnum = 334
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesReqID :: FIXTag
+tTradSesReqID = FIXTag 
+   { tName = "TradSesReqID"
+   , tnum = 335
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradingSessionID :: FIXTag
+tTradingSessionID = FIXTag 
+   { tName = "TradingSessionID"
+   , tnum = 336
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tContraTrader :: FIXTag
+tContraTrader = FIXTag 
+   { tName = "ContraTrader"
+   , tnum = 337
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradSesMethod :: FIXTag
+tTradSesMethod = FIXTag 
+   { tName = "TradSesMethod"
+   , tnum = 338
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesMode :: FIXTag
+tTradSesMode = FIXTag 
+   { tName = "TradSesMode"
+   , tnum = 339
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesStatus :: FIXTag
+tTradSesStatus = FIXTag 
+   { tName = "TradSesStatus"
+   , tnum = 340
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesStartTime :: FIXTag
+tTradSesStartTime = FIXTag 
+   { tName = "TradSesStartTime"
+   , tnum = 341
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesOpenTime :: FIXTag
+tTradSesOpenTime = FIXTag 
+   { tName = "TradSesOpenTime"
+   , tnum = 342
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesPreCloseTime :: FIXTag
+tTradSesPreCloseTime = FIXTag 
+   { tName = "TradSesPreCloseTime"
+   , tnum = 343
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesCloseTime :: FIXTag
+tTradSesCloseTime = FIXTag 
+   { tName = "TradSesCloseTime"
+   , tnum = 344
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesEndTime :: FIXTag
+tTradSesEndTime = FIXTag 
+   { tName = "TradSesEndTime"
+   , tnum = 345
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tNumberOfOrders :: FIXTag
+tNumberOfOrders = FIXTag 
+   { tName = "NumberOfOrders"
+   , tnum = 346
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMessageEncoding :: FIXTag
+tMessageEncoding = FIXTag 
+   { tName = "MessageEncoding"
+   , tnum = 347
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedIssuerLen :: FIXTag
+tEncodedIssuerLen = FIXTag 
+   { tName = "EncodedIssuerLen"
+   , tnum = 348
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedIssuer :: FIXTag
+tEncodedIssuer = FIXTag 
+   { tName = "EncodedIssuer"
+   , tnum = 349
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedSecurityDescLen :: FIXTag
+tEncodedSecurityDescLen = FIXTag 
+   { tName = "EncodedSecurityDescLen"
+   , tnum = 350
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedSecurityDesc :: FIXTag
+tEncodedSecurityDesc = FIXTag 
+   { tName = "EncodedSecurityDesc"
+   , tnum = 351
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedListExecInstLen :: FIXTag
+tEncodedListExecInstLen = FIXTag 
+   { tName = "EncodedListExecInstLen"
+   , tnum = 352
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedListExecInst :: FIXTag
+tEncodedListExecInst = FIXTag 
+   { tName = "EncodedListExecInst"
+   , tnum = 353
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedTextLen :: FIXTag
+tEncodedTextLen = FIXTag 
+   { tName = "EncodedTextLen"
+   , tnum = 354
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedText :: FIXTag
+tEncodedText = FIXTag 
+   { tName = "EncodedText"
+   , tnum = 355
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedSubjectLen :: FIXTag
+tEncodedSubjectLen = FIXTag 
+   { tName = "EncodedSubjectLen"
+   , tnum = 356
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedSubject :: FIXTag
+tEncodedSubject = FIXTag 
+   { tName = "EncodedSubject"
+   , tnum = 357
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedHeadlineLen :: FIXTag
+tEncodedHeadlineLen = FIXTag 
+   { tName = "EncodedHeadlineLen"
+   , tnum = 358
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedHeadline :: FIXTag
+tEncodedHeadline = FIXTag 
+   { tName = "EncodedHeadline"
+   , tnum = 359
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedAllocTextLen :: FIXTag
+tEncodedAllocTextLen = FIXTag 
+   { tName = "EncodedAllocTextLen"
+   , tnum = 360
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedAllocText :: FIXTag
+tEncodedAllocText = FIXTag 
+   { tName = "EncodedAllocText"
+   , tnum = 361
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedUnderlyingIssuerLen :: FIXTag
+tEncodedUnderlyingIssuerLen = FIXTag 
+   { tName = "EncodedUnderlyingIssuerLen"
+   , tnum = 362
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedUnderlyingIssuer :: FIXTag
+tEncodedUnderlyingIssuer = FIXTag 
+   { tName = "EncodedUnderlyingIssuer"
+   , tnum = 363
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedUnderlyingSecurityDescLen :: FIXTag
+tEncodedUnderlyingSecurityDescLen = FIXTag 
+   { tName = "EncodedUnderlyingSecurityDescLen"
+   , tnum = 364
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedUnderlyingSecurityDesc :: FIXTag
+tEncodedUnderlyingSecurityDesc = FIXTag 
+   { tName = "EncodedUnderlyingSecurityDesc"
+   , tnum = 365
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tAllocPrice :: FIXTag
+tAllocPrice = FIXTag 
+   { tName = "AllocPrice"
+   , tnum = 366
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteSetValidUntilTime :: FIXTag
+tQuoteSetValidUntilTime = FIXTag 
+   { tName = "QuoteSetValidUntilTime"
+   , tnum = 367
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tQuoteEntryRejectReason :: FIXTag
+tQuoteEntryRejectReason = FIXTag 
+   { tName = "QuoteEntryRejectReason"
+   , tnum = 368
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastMsgSeqNumProcessed :: FIXTag
+tLastMsgSeqNumProcessed = FIXTag 
+   { tName = "LastMsgSeqNumProcessed"
+   , tnum = 369
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOnBehalfOfSendingTime :: FIXTag
+tOnBehalfOfSendingTime = FIXTag 
+   { tName = "OnBehalfOfSendingTime"
+   , tnum = 370
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tRefTagID :: FIXTag
+tRefTagID = FIXTag 
+   { tName = "RefTagID"
+   , tnum = 371
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRefMsgType :: FIXTag
+tRefMsgType = FIXTag 
+   { tName = "RefMsgType"
+   , tnum = 372
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSessionRejectReason :: FIXTag
+tSessionRejectReason = FIXTag 
+   { tName = "SessionRejectReason"
+   , tnum = 373
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidRequestTransType :: FIXTag
+tBidRequestTransType = FIXTag 
+   { tName = "BidRequestTransType"
+   , tnum = 374
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tContraBroker :: FIXTag
+tContraBroker = FIXTag 
+   { tName = "ContraBroker"
+   , tnum = 375
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tComplianceID :: FIXTag
+tComplianceID = FIXTag 
+   { tName = "ComplianceID"
+   , tnum = 376
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSolicitedFlag :: FIXTag
+tSolicitedFlag = FIXTag 
+   { tName = "SolicitedFlag"
+   , tnum = 377
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tExecRestatementReason :: FIXTag
+tExecRestatementReason = FIXTag 
+   { tName = "ExecRestatementReason"
+   , tnum = 378
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBusinessRejectRefID :: FIXTag
+tBusinessRejectRefID = FIXTag 
+   { tName = "BusinessRejectRefID"
+   , tnum = 379
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBusinessRejectReason :: FIXTag
+tBusinessRejectReason = FIXTag 
+   { tName = "BusinessRejectReason"
+   , tnum = 380
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tGrossTradeAmt :: FIXTag
+tGrossTradeAmt = FIXTag 
+   { tName = "GrossTradeAmt"
+   , tnum = 381
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoContraBrokers :: FIXTag
+tNoContraBrokers = FIXTag 
+   { tName = "NoContraBrokers"
+   , tnum = 382
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxMessageSize :: FIXTag
+tMaxMessageSize = FIXTag 
+   { tName = "MaxMessageSize"
+   , tnum = 383
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMsgTypes :: FIXTag
+tNoMsgTypes = FIXTag 
+   { tName = "NoMsgTypes"
+   , tnum = 384
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgDirection :: FIXTag
+tMsgDirection = FIXTag 
+   { tName = "MsgDirection"
+   , tnum = 385
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoTradingSessions :: FIXTag
+tNoTradingSessions = FIXTag 
+   { tName = "NoTradingSessions"
+   , tnum = 386
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotalVolumeTraded :: FIXTag
+tTotalVolumeTraded = FIXTag 
+   { tName = "TotalVolumeTraded"
+   , tnum = 387
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDiscretionInst :: FIXTag
+tDiscretionInst = FIXTag 
+   { tName = "DiscretionInst"
+   , tnum = 388
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDiscretionOffset :: FIXTag
+tDiscretionOffset = FIXTag 
+   { tName = "DiscretionOffset"
+   , tnum = 389
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidID :: FIXTag
+tBidID = FIXTag 
+   { tName = "BidID"
+   , tnum = 390
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClientBidID :: FIXTag
+tClientBidID = FIXTag 
+   { tName = "ClientBidID"
+   , tnum = 391
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListName :: FIXTag
+tListName = FIXTag 
+   { tName = "ListName"
+   , tnum = 392
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotalNumSecurities :: FIXTag
+tTotalNumSecurities = FIXTag 
+   { tName = "TotalNumSecurities"
+   , tnum = 393
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidType :: FIXTag
+tBidType = FIXTag 
+   { tName = "BidType"
+   , tnum = 394
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNumTickets :: FIXTag
+tNumTickets = FIXTag 
+   { tName = "NumTickets"
+   , tnum = 395
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSideValue1 :: FIXTag
+tSideValue1 = FIXTag 
+   { tName = "SideValue1"
+   , tnum = 396
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSideValue2 :: FIXTag
+tSideValue2 = FIXTag 
+   { tName = "SideValue2"
+   , tnum = 397
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoBidDescriptors :: FIXTag
+tNoBidDescriptors = FIXTag 
+   { tName = "NoBidDescriptors"
+   , tnum = 398
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidDescriptorType :: FIXTag
+tBidDescriptorType = FIXTag 
+   { tName = "BidDescriptorType"
+   , tnum = 399
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidDescriptor :: FIXTag
+tBidDescriptor = FIXTag 
+   { tName = "BidDescriptor"
+   , tnum = 400
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSideValueInd :: FIXTag
+tSideValueInd = FIXTag 
+   { tName = "SideValueInd"
+   , tnum = 401
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLiquidityPctLow :: FIXTag
+tLiquidityPctLow = FIXTag 
+   { tName = "LiquidityPctLow"
+   , tnum = 402
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityPctHigh :: FIXTag
+tLiquidityPctHigh = FIXTag 
+   { tName = "LiquidityPctHigh"
+   , tnum = 403
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityValue :: FIXTag
+tLiquidityValue = FIXTag 
+   { tName = "LiquidityValue"
+   , tnum = 404
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tEFPTrackingError :: FIXTag
+tEFPTrackingError = FIXTag 
+   { tName = "EFPTrackingError"
+   , tnum = 405
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFairValue :: FIXTag
+tFairValue = FIXTag 
+   { tName = "FairValue"
+   , tnum = 406
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOutsideIndexPct :: FIXTag
+tOutsideIndexPct = FIXTag 
+   { tName = "OutsideIndexPct"
+   , tnum = 407
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tValueOfFutures :: FIXTag
+tValueOfFutures = FIXTag 
+   { tName = "ValueOfFutures"
+   , tnum = 408
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityIndType :: FIXTag
+tLiquidityIndType = FIXTag 
+   { tName = "LiquidityIndType"
+   , tnum = 409
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tWtAverageLiquidity :: FIXTag
+tWtAverageLiquidity = FIXTag 
+   { tName = "WtAverageLiquidity"
+   , tnum = 410
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExchangeForPhysical :: FIXTag
+tExchangeForPhysical = FIXTag 
+   { tName = "ExchangeForPhysical"
+   , tnum = 411
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOutMainCntryUIndex :: FIXTag
+tOutMainCntryUIndex = FIXTag 
+   { tName = "OutMainCntryUIndex"
+   , tnum = 412
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCrossPercent :: FIXTag
+tCrossPercent = FIXTag 
+   { tName = "CrossPercent"
+   , tnum = 413
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tProgRptReqs :: FIXTag
+tProgRptReqs = FIXTag 
+   { tName = "ProgRptReqs"
+   , tnum = 414
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tProgPeriodInterval :: FIXTag
+tProgPeriodInterval = FIXTag 
+   { tName = "ProgPeriodInterval"
+   , tnum = 415
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIncTaxInd :: FIXTag
+tIncTaxInd = FIXTag 
+   { tName = "IncTaxInd"
+   , tnum = 416
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNumBidders :: FIXTag
+tNumBidders = FIXTag 
+   { tName = "NumBidders"
+   , tnum = 417
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeType :: FIXTag
+tTradeType = FIXTag 
+   { tName = "TradeType"
+   , tnum = 418
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBasisPxType :: FIXTag
+tBasisPxType = FIXTag 
+   { tName = "BasisPxType"
+   , tnum = 419
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoBidComponents :: FIXTag
+tNoBidComponents = FIXTag 
+   { tName = "NoBidComponents"
+   , tnum = 420
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCountry :: FIXTag
+tCountry = FIXTag 
+   { tName = "Country"
+   , tnum = 421
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotNoStrikes :: FIXTag
+tTotNoStrikes = FIXTag 
+   { tName = "TotNoStrikes"
+   , tnum = 422
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPriceType :: FIXTag
+tPriceType = FIXTag 
+   { tName = "PriceType"
+   , tnum = 423
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDayOrderQty :: FIXTag
+tDayOrderQty = FIXTag 
+   { tName = "DayOrderQty"
+   , tnum = 424
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDayCumQty :: FIXTag
+tDayCumQty = FIXTag 
+   { tName = "DayCumQty"
+   , tnum = 425
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDayAvgPx :: FIXTag
+tDayAvgPx = FIXTag 
+   { tName = "DayAvgPx"
+   , tnum = 426
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tGTBookingInst :: FIXTag
+tGTBookingInst = FIXTag 
+   { tName = "GTBookingInst"
+   , tnum = 427
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoStrikes :: FIXTag
+tNoStrikes = FIXTag 
+   { tName = "NoStrikes"
+   , tnum = 428
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListStatusType :: FIXTag
+tListStatusType = FIXTag 
+   { tName = "ListStatusType"
+   , tnum = 429
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNetGrossInd :: FIXTag
+tNetGrossInd = FIXTag 
+   { tName = "NetGrossInd"
+   , tnum = 430
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListOrderStatus :: FIXTag
+tListOrderStatus = FIXTag 
+   { tName = "ListOrderStatus"
+   , tnum = 431
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExpireDate :: FIXTag
+tExpireDate = FIXTag 
+   { tName = "ExpireDate"
+   , tnum = 432
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tListExecInstType :: FIXTag
+tListExecInstType = FIXTag 
+   { tName = "ListExecInstType"
+   , tnum = 433
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCxlRejResponseTo :: FIXTag
+tCxlRejResponseTo = FIXTag 
+   { tName = "CxlRejResponseTo"
+   , tnum = 434
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCouponRate :: FIXTag
+tUnderlyingCouponRate = FIXTag 
+   { tName = "UnderlyingCouponRate"
+   , tnum = 435
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingContractMultiplier :: FIXTag
+tUnderlyingContractMultiplier = FIXTag 
+   { tName = "UnderlyingContractMultiplier"
+   , tnum = 436
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContraTradeQty :: FIXTag
+tContraTradeQty = FIXTag 
+   { tName = "ContraTradeQty"
+   , tnum = 437
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContraTradeTime :: FIXTag
+tContraTradeTime = FIXTag 
+   { tName = "ContraTradeTime"
+   , tnum = 438
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tClearingFirm :: FIXTag
+tClearingFirm = FIXTag 
+   { tName = "ClearingFirm"
+   , tnum = 439
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClearingAccount :: FIXTag
+tClearingAccount = FIXTag 
+   { tName = "ClearingAccount"
+   , tnum = 440
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLiquidityNumSecurities :: FIXTag
+tLiquidityNumSecurities = FIXTag 
+   { tName = "LiquidityNumSecurities"
+   , tnum = 441
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMultiLegReportingType :: FIXTag
+tMultiLegReportingType = FIXTag 
+   { tName = "MultiLegReportingType"
+   , tnum = 442
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tStrikeTime :: FIXTag
+tStrikeTime = FIXTag 
+   { tName = "StrikeTime"
+   , tnum = 443
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tListStatusText :: FIXTag
+tListStatusText = FIXTag 
+   { tName = "ListStatusText"
+   , tnum = 444
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedListStatusTextLen :: FIXTag
+tEncodedListStatusTextLen = FIXTag 
+   { tName = "EncodedListStatusTextLen"
+   , tnum = 445
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedListStatusText :: FIXTag
+tEncodedListStatusText = FIXTag 
+   { tName = "EncodedListStatusText"
+   , tnum = 446
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPartyIDSource :: FIXTag
+tPartyIDSource = FIXTag 
+   { tName = "PartyIDSource"
+   , tnum = 447
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPartyID :: FIXTag
+tPartyID = FIXTag 
+   { tName = "PartyID"
+   , tnum = 448
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotalVolumeTradedDate :: FIXTag
+tTotalVolumeTradedDate = FIXTag 
+   { tName = "TotalVolumeTradedDate"
+   , tnum = 449
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tTotalVolumeTradedTime :: FIXTag
+tTotalVolumeTradedTime = FIXTag 
+   { tName = "TotalVolumeTradedTime"
+   , tnum = 450
+   , tparser = toFIXTimeOnly
+   , arbitraryValue = FIXTimeOnly <$> arbitrary }
+
+tNetChgPrevDay :: FIXTag
+tNetChgPrevDay = FIXTag 
+   { tName = "NetChgPrevDay"
+   , tnum = 451
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPartyRole :: FIXTag
+tPartyRole = FIXTag 
+   { tName = "PartyRole"
+   , tnum = 452
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoPartyIDs :: FIXTag
+tNoPartyIDs = FIXTag 
+   { tName = "NoPartyIDs"
+   , tnum = 453
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoSecurityAltID :: FIXTag
+tNoSecurityAltID = FIXTag 
+   { tName = "NoSecurityAltID"
+   , tnum = 454
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityAltID :: FIXTag
+tSecurityAltID = FIXTag 
+   { tName = "SecurityAltID"
+   , tnum = 455
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityAltIDSource :: FIXTag
+tSecurityAltIDSource = FIXTag 
+   { tName = "SecurityAltIDSource"
+   , tnum = 456
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoUnderlyingSecurityAltID :: FIXTag
+tNoUnderlyingSecurityAltID = FIXTag 
+   { tName = "NoUnderlyingSecurityAltID"
+   , tnum = 457
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingSecurityAltID :: FIXTag
+tUnderlyingSecurityAltID = FIXTag 
+   { tName = "UnderlyingSecurityAltID"
+   , tnum = 458
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityAltIDSource :: FIXTag
+tUnderlyingSecurityAltIDSource = FIXTag 
+   { tName = "UnderlyingSecurityAltIDSource"
+   , tnum = 459
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tProduct :: FIXTag
+tProduct = FIXTag 
+   { tName = "Product"
+   , tnum = 460
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCFICode :: FIXTag
+tCFICode = FIXTag 
+   { tName = "CFICode"
+   , tnum = 461
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingProduct :: FIXTag
+tUnderlyingProduct = FIXTag 
+   { tName = "UnderlyingProduct"
+   , tnum = 462
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingCFICode :: FIXTag
+tUnderlyingCFICode = FIXTag 
+   { tName = "UnderlyingCFICode"
+   , tnum = 463
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTestMessageIndicator :: FIXTag
+tTestMessageIndicator = FIXTag 
+   { tName = "TestMessageIndicator"
+   , tnum = 464
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tQuantityType :: FIXTag
+tQuantityType = FIXTag 
+   { tName = "QuantityType"
+   , tnum = 465
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBookingRefID :: FIXTag
+tBookingRefID = FIXTag 
+   { tName = "BookingRefID"
+   , tnum = 466
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIndividualAllocID :: FIXTag
+tIndividualAllocID = FIXTag 
+   { tName = "IndividualAllocID"
+   , tnum = 467
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRoundingDirection :: FIXTag
+tRoundingDirection = FIXTag 
+   { tName = "RoundingDirection"
+   , tnum = 468
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRoundingModulus :: FIXTag
+tRoundingModulus = FIXTag 
+   { tName = "RoundingModulus"
+   , tnum = 469
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCountryOfIssue :: FIXTag
+tCountryOfIssue = FIXTag 
+   { tName = "CountryOfIssue"
+   , tnum = 470
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStateOrProvinceOfIssue :: FIXTag
+tStateOrProvinceOfIssue = FIXTag 
+   { tName = "StateOrProvinceOfIssue"
+   , tnum = 471
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLocaleOfIssue :: FIXTag
+tLocaleOfIssue = FIXTag 
+   { tName = "LocaleOfIssue"
+   , tnum = 472
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRegistDtls :: FIXTag
+tNoRegistDtls = FIXTag 
+   { tName = "NoRegistDtls"
+   , tnum = 473
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMailingDtls :: FIXTag
+tMailingDtls = FIXTag 
+   { tName = "MailingDtls"
+   , tnum = 474
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tInvestorCountryOfResidence :: FIXTag
+tInvestorCountryOfResidence = FIXTag 
+   { tName = "InvestorCountryOfResidence"
+   , tnum = 475
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPaymentRef :: FIXTag
+tPaymentRef = FIXTag 
+   { tName = "PaymentRef"
+   , tnum = 476
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDistribPaymentMethod :: FIXTag
+tDistribPaymentMethod = FIXTag 
+   { tName = "DistribPaymentMethod"
+   , tnum = 477
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCashDistribCurr :: FIXTag
+tCashDistribCurr = FIXTag 
+   { tName = "CashDistribCurr"
+   , tnum = 478
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCommCurrency :: FIXTag
+tCommCurrency = FIXTag 
+   { tName = "CommCurrency"
+   , tnum = 479
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCancellationRights :: FIXTag
+tCancellationRights = FIXTag 
+   { tName = "CancellationRights"
+   , tnum = 480
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMoneyLaunderingStatus :: FIXTag
+tMoneyLaunderingStatus = FIXTag 
+   { tName = "MoneyLaunderingStatus"
+   , tnum = 481
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMailingInst :: FIXTag
+tMailingInst = FIXTag 
+   { tName = "MailingInst"
+   , tnum = 482
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTransBkdTime :: FIXTag
+tTransBkdTime = FIXTag 
+   { tName = "TransBkdTime"
+   , tnum = 483
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tExecPriceType :: FIXTag
+tExecPriceType = FIXTag 
+   { tName = "ExecPriceType"
+   , tnum = 484
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecPriceAdjustment :: FIXTag
+tExecPriceAdjustment = FIXTag 
+   { tName = "ExecPriceAdjustment"
+   , tnum = 485
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDateOfBirth :: FIXTag
+tDateOfBirth = FIXTag 
+   { tName = "DateOfBirth"
+   , tnum = 486
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tTradeReportTransType :: FIXTag
+tTradeReportTransType = FIXTag 
+   { tName = "TradeReportTransType"
+   , tnum = 487
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCardHolderName :: FIXTag
+tCardHolderName = FIXTag 
+   { tName = "CardHolderName"
+   , tnum = 488
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCardNumber :: FIXTag
+tCardNumber = FIXTag 
+   { tName = "CardNumber"
+   , tnum = 489
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCardExpDate :: FIXTag
+tCardExpDate = FIXTag 
+   { tName = "CardExpDate"
+   , tnum = 490
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tCardIssNo :: FIXTag
+tCardIssNo = FIXTag 
+   { tName = "CardIssNo"
+   , tnum = 491
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPaymentMethod :: FIXTag
+tPaymentMethod = FIXTag 
+   { tName = "PaymentMethod"
+   , tnum = 492
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistAcctType :: FIXTag
+tRegistAcctType = FIXTag 
+   { tName = "RegistAcctType"
+   , tnum = 493
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDesignation :: FIXTag
+tDesignation = FIXTag 
+   { tName = "Designation"
+   , tnum = 494
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTaxAdvantageType :: FIXTag
+tTaxAdvantageType = FIXTag 
+   { tName = "TaxAdvantageType"
+   , tnum = 495
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistRejReasonText :: FIXTag
+tRegistRejReasonText = FIXTag 
+   { tName = "RegistRejReasonText"
+   , tnum = 496
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tFundRenewWaiv :: FIXTag
+tFundRenewWaiv = FIXTag 
+   { tName = "FundRenewWaiv"
+   , tnum = 497
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashDistribAgentName :: FIXTag
+tCashDistribAgentName = FIXTag 
+   { tName = "CashDistribAgentName"
+   , tnum = 498
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribAgentCode :: FIXTag
+tCashDistribAgentCode = FIXTag 
+   { tName = "CashDistribAgentCode"
+   , tnum = 499
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribAgentAcctNumber :: FIXTag
+tCashDistribAgentAcctNumber = FIXTag 
+   { tName = "CashDistribAgentAcctNumber"
+   , tnum = 500
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribPayRef :: FIXTag
+tCashDistribPayRef = FIXTag 
+   { tName = "CashDistribPayRef"
+   , tnum = 501
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribAgentAcctName :: FIXTag
+tCashDistribAgentAcctName = FIXTag 
+   { tName = "CashDistribAgentAcctName"
+   , tnum = 502
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCardStartDate :: FIXTag
+tCardStartDate = FIXTag 
+   { tName = "CardStartDate"
+   , tnum = 503
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tPaymentDate :: FIXTag
+tPaymentDate = FIXTag 
+   { tName = "PaymentDate"
+   , tnum = 504
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tPaymentRemitterID :: FIXTag
+tPaymentRemitterID = FIXTag 
+   { tName = "PaymentRemitterID"
+   , tnum = 505
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRegistStatus :: FIXTag
+tRegistStatus = FIXTag 
+   { tName = "RegistStatus"
+   , tnum = 506
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRegistRejReasonCode :: FIXTag
+tRegistRejReasonCode = FIXTag 
+   { tName = "RegistRejReasonCode"
+   , tnum = 507
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistRefID :: FIXTag
+tRegistRefID = FIXTag 
+   { tName = "RegistRefID"
+   , tnum = 508
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRegistDetls :: FIXTag
+tRegistDetls = FIXTag 
+   { tName = "RegistDetls"
+   , tnum = 509
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoDistribInsts :: FIXTag
+tNoDistribInsts = FIXTag 
+   { tName = "NoDistribInsts"
+   , tnum = 510
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistEmail :: FIXTag
+tRegistEmail = FIXTag 
+   { tName = "RegistEmail"
+   , tnum = 511
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDistribPercentage :: FIXTag
+tDistribPercentage = FIXTag 
+   { tName = "DistribPercentage"
+   , tnum = 512
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRegistID :: FIXTag
+tRegistID = FIXTag 
+   { tName = "RegistID"
+   , tnum = 513
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRegistTransType :: FIXTag
+tRegistTransType = FIXTag 
+   { tName = "RegistTransType"
+   , tnum = 514
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecValuationPoint :: FIXTag
+tExecValuationPoint = FIXTag 
+   { tName = "ExecValuationPoint"
+   , tnum = 515
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tOrderPercent :: FIXTag
+tOrderPercent = FIXTag 
+   { tName = "OrderPercent"
+   , tnum = 516
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOwnershipType :: FIXTag
+tOwnershipType = FIXTag 
+   { tName = "OwnershipType"
+   , tnum = 517
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoContAmts :: FIXTag
+tNoContAmts = FIXTag 
+   { tName = "NoContAmts"
+   , tnum = 518
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tContAmtType :: FIXTag
+tContAmtType = FIXTag 
+   { tName = "ContAmtType"
+   , tnum = 519
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tContAmtValue :: FIXTag
+tContAmtValue = FIXTag 
+   { tName = "ContAmtValue"
+   , tnum = 520
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContAmtCurr :: FIXTag
+tContAmtCurr = FIXTag 
+   { tName = "ContAmtCurr"
+   , tnum = 521
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOwnerType :: FIXTag
+tOwnerType = FIXTag 
+   { tName = "OwnerType"
+   , tnum = 522
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPartySubID :: FIXTag
+tPartySubID = FIXTag 
+   { tName = "PartySubID"
+   , tnum = 523
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNestedPartyID :: FIXTag
+tNestedPartyID = FIXTag 
+   { tName = "NestedPartyID"
+   , tnum = 524
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNestedPartyIDSource :: FIXTag
+tNestedPartyIDSource = FIXTag 
+   { tName = "NestedPartyIDSource"
+   , tnum = 525
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecondaryClOrdID :: FIXTag
+tSecondaryClOrdID = FIXTag 
+   { tName = "SecondaryClOrdID"
+   , tnum = 526
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecondaryExecID :: FIXTag
+tSecondaryExecID = FIXTag 
+   { tName = "SecondaryExecID"
+   , tnum = 527
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrderCapacity :: FIXTag
+tOrderCapacity = FIXTag 
+   { tName = "OrderCapacity"
+   , tnum = 528
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrderRestrictions :: FIXTag
+tOrderRestrictions = FIXTag 
+   { tName = "OrderRestrictions"
+   , tnum = 529
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMassCancelRequestType :: FIXTag
+tMassCancelRequestType = FIXTag 
+   { tName = "MassCancelRequestType"
+   , tnum = 530
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMassCancelResponse :: FIXTag
+tMassCancelResponse = FIXTag 
+   { tName = "MassCancelResponse"
+   , tnum = 531
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMassCancelRejectReason :: FIXTag
+tMassCancelRejectReason = FIXTag 
+   { tName = "MassCancelRejectReason"
+   , tnum = 532
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTotalAffectedOrders :: FIXTag
+tTotalAffectedOrders = FIXTag 
+   { tName = "TotalAffectedOrders"
+   , tnum = 533
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoAffectedOrders :: FIXTag
+tNoAffectedOrders = FIXTag 
+   { tName = "NoAffectedOrders"
+   , tnum = 534
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAffectedOrderID :: FIXTag
+tAffectedOrderID = FIXTag 
+   { tName = "AffectedOrderID"
+   , tnum = 535
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAffectedSecondaryOrderID :: FIXTag
+tAffectedSecondaryOrderID = FIXTag 
+   { tName = "AffectedSecondaryOrderID"
+   , tnum = 536
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteType :: FIXTag
+tQuoteType = FIXTag 
+   { tName = "QuoteType"
+   , tnum = 537
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNestedPartyRole :: FIXTag
+tNestedPartyRole = FIXTag 
+   { tName = "NestedPartyRole"
+   , tnum = 538
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoNestedPartyIDs :: FIXTag
+tNoNestedPartyIDs = FIXTag 
+   { tName = "NoNestedPartyIDs"
+   , tnum = 539
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotalAccruedInterestAmt :: FIXTag
+tTotalAccruedInterestAmt = FIXTag 
+   { tName = "TotalAccruedInterestAmt"
+   , tnum = 540
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMaturityDate :: FIXTag
+tMaturityDate = FIXTag 
+   { tName = "MaturityDate"
+   , tnum = 541
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingMaturityDate :: FIXTag
+tUnderlyingMaturityDate = FIXTag 
+   { tName = "UnderlyingMaturityDate"
+   , tnum = 542
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tInstrRegistry :: FIXTag
+tInstrRegistry = FIXTag 
+   { tName = "InstrRegistry"
+   , tnum = 543
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashMargin :: FIXTag
+tCashMargin = FIXTag 
+   { tName = "CashMargin"
+   , tnum = 544
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNestedPartySubID :: FIXTag
+tNestedPartySubID = FIXTag 
+   { tName = "NestedPartySubID"
+   , tnum = 545
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tScope :: FIXTag
+tScope = FIXTag 
+   { tName = "Scope"
+   , tnum = 546
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMDImplicitDelete :: FIXTag
+tMDImplicitDelete = FIXTag 
+   { tName = "MDImplicitDelete"
+   , tnum = 547
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tCrossID :: FIXTag
+tCrossID = FIXTag 
+   { tName = "CrossID"
+   , tnum = 548
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCrossType :: FIXTag
+tCrossType = FIXTag 
+   { tName = "CrossType"
+   , tnum = 549
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCrossPrioritization :: FIXTag
+tCrossPrioritization = FIXTag 
+   { tName = "CrossPrioritization"
+   , tnum = 550
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrigCrossID :: FIXTag
+tOrigCrossID = FIXTag 
+   { tName = "OrigCrossID"
+   , tnum = 551
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoSides :: FIXTag
+tNoSides = FIXTag 
+   { tName = "NoSides"
+   , tnum = 552
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUsername :: FIXTag
+tUsername = FIXTag 
+   { tName = "Username"
+   , tnum = 553
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPassword :: FIXTag
+tPassword = FIXTag 
+   { tName = "Password"
+   , tnum = 554
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoLegs :: FIXTag
+tNoLegs = FIXTag 
+   { tName = "NoLegs"
+   , tnum = 555
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegCurrency :: FIXTag
+tLegCurrency = FIXTag 
+   { tName = "LegCurrency"
+   , tnum = 556
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotalNumSecurityTypes :: FIXTag
+tTotalNumSecurityTypes = FIXTag 
+   { tName = "TotalNumSecurityTypes"
+   , tnum = 557
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoSecurityTypes :: FIXTag
+tNoSecurityTypes = FIXTag 
+   { tName = "NoSecurityTypes"
+   , tnum = 558
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityListRequestType :: FIXTag
+tSecurityListRequestType = FIXTag 
+   { tName = "SecurityListRequestType"
+   , tnum = 559
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityRequestResult :: FIXTag
+tSecurityRequestResult = FIXTag 
+   { tName = "SecurityRequestResult"
+   , tnum = 560
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoundLot :: FIXTag
+tRoundLot = FIXTag 
+   { tName = "RoundLot"
+   , tnum = 561
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMinTradeVol :: FIXTag
+tMinTradeVol = FIXTag 
+   { tName = "MinTradeVol"
+   , tnum = 562
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMultiLegRptTypeReq :: FIXTag
+tMultiLegRptTypeReq = FIXTag 
+   { tName = "MultiLegRptTypeReq"
+   , tnum = 563
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegPositionEffect :: FIXTag
+tLegPositionEffect = FIXTag 
+   { tName = "LegPositionEffect"
+   , tnum = 564
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLegCoveredOrUncovered :: FIXTag
+tLegCoveredOrUncovered = FIXTag 
+   { tName = "LegCoveredOrUncovered"
+   , tnum = 565
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegPrice :: FIXTag
+tLegPrice = FIXTag 
+   { tName = "LegPrice"
+   , tnum = 566
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTradSesStatusRejReason :: FIXTag
+tTradSesStatusRejReason = FIXTag 
+   { tName = "TradSesStatusRejReason"
+   , tnum = 567
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeRequestID :: FIXTag
+tTradeRequestID = FIXTag 
+   { tName = "TradeRequestID"
+   , tnum = 568
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeRequestType :: FIXTag
+tTradeRequestType = FIXTag 
+   { tName = "TradeRequestType"
+   , tnum = 569
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPreviouslyReported :: FIXTag
+tPreviouslyReported = FIXTag 
+   { tName = "PreviouslyReported"
+   , tnum = 570
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tTradeReportID :: FIXTag
+tTradeReportID = FIXTag 
+   { tName = "TradeReportID"
+   , tnum = 571
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeReportRefID :: FIXTag
+tTradeReportRefID = FIXTag 
+   { tName = "TradeReportRefID"
+   , tnum = 572
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMatchStatus :: FIXTag
+tMatchStatus = FIXTag 
+   { tName = "MatchStatus"
+   , tnum = 573
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMatchType :: FIXTag
+tMatchType = FIXTag 
+   { tName = "MatchType"
+   , tnum = 574
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOddLot :: FIXTag
+tOddLot = FIXTag 
+   { tName = "OddLot"
+   , tnum = 575
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoClearingInstructions :: FIXTag
+tNoClearingInstructions = FIXTag 
+   { tName = "NoClearingInstructions"
+   , tnum = 576
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClearingInstruction :: FIXTag
+tClearingInstruction = FIXTag 
+   { tName = "ClearingInstruction"
+   , tnum = 577
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeInputSource :: FIXTag
+tTradeInputSource = FIXTag 
+   { tName = "TradeInputSource"
+   , tnum = 578
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeInputDevice :: FIXTag
+tTradeInputDevice = FIXTag 
+   { tName = "TradeInputDevice"
+   , tnum = 579
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoDates :: FIXTag
+tNoDates = FIXTag 
+   { tName = "NoDates"
+   , tnum = 580
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAccountType :: FIXTag
+tAccountType = FIXTag 
+   { tName = "AccountType"
+   , tnum = 581
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCustOrderCapacity :: FIXTag
+tCustOrderCapacity = FIXTag 
+   { tName = "CustOrderCapacity"
+   , tnum = 582
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdLinkID :: FIXTag
+tClOrdLinkID = FIXTag 
+   { tName = "ClOrdLinkID"
+   , tnum = 583
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMassStatusReqID :: FIXTag
+tMassStatusReqID = FIXTag 
+   { tName = "MassStatusReqID"
+   , tnum = 584
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMassStatusReqType :: FIXTag
+tMassStatusReqType = FIXTag 
+   { tName = "MassStatusReqType"
+   , tnum = 585
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrigOrdModTime :: FIXTag
+tOrigOrdModTime = FIXTag 
+   { tName = "OrigOrdModTime"
+   , tnum = 586
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tLegSettlmntTyp :: FIXTag
+tLegSettlmntTyp = FIXTag 
+   { tName = "LegSettlmntTyp"
+   , tnum = 587
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLegFutSettDate :: FIXTag
+tLegFutSettDate = FIXTag 
+   { tName = "LegFutSettDate"
+   , tnum = 588
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tDayBookingInst :: FIXTag
+tDayBookingInst = FIXTag 
+   { tName = "DayBookingInst"
+   , tnum = 589
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBookingUnit :: FIXTag
+tBookingUnit = FIXTag 
+   { tName = "BookingUnit"
+   , tnum = 590
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPreallocMethod :: FIXTag
+tPreallocMethod = FIXTag 
+   { tName = "PreallocMethod"
+   , tnum = 591
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCountryOfIssue :: FIXTag
+tUnderlyingCountryOfIssue = FIXTag 
+   { tName = "UnderlyingCountryOfIssue"
+   , tnum = 592
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingStateOrProvinceOfIssue :: FIXTag
+tUnderlyingStateOrProvinceOfIssue = FIXTag 
+   { tName = "UnderlyingStateOrProvinceOfIssue"
+   , tnum = 593
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingLocaleOfIssue :: FIXTag
+tUnderlyingLocaleOfIssue = FIXTag 
+   { tName = "UnderlyingLocaleOfIssue"
+   , tnum = 594
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingInstrRegistry :: FIXTag
+tUnderlyingInstrRegistry = FIXTag 
+   { tName = "UnderlyingInstrRegistry"
+   , tnum = 595
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegCountryOfIssue :: FIXTag
+tLegCountryOfIssue = FIXTag 
+   { tName = "LegCountryOfIssue"
+   , tnum = 596
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegStateOrProvinceOfIssue :: FIXTag
+tLegStateOrProvinceOfIssue = FIXTag 
+   { tName = "LegStateOrProvinceOfIssue"
+   , tnum = 597
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegLocaleOfIssue :: FIXTag
+tLegLocaleOfIssue = FIXTag 
+   { tName = "LegLocaleOfIssue"
+   , tnum = 598
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegInstrRegistry :: FIXTag
+tLegInstrRegistry = FIXTag 
+   { tName = "LegInstrRegistry"
+   , tnum = 599
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSymbol :: FIXTag
+tLegSymbol = FIXTag 
+   { tName = "LegSymbol"
+   , tnum = 600
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSymbolSfx :: FIXTag
+tLegSymbolSfx = FIXTag 
+   { tName = "LegSymbolSfx"
+   , tnum = 601
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityID :: FIXTag
+tLegSecurityID = FIXTag 
+   { tName = "LegSecurityID"
+   , tnum = 602
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityIDSource :: FIXTag
+tLegSecurityIDSource = FIXTag 
+   { tName = "LegSecurityIDSource"
+   , tnum = 603
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoLegSecurityAltID :: FIXTag
+tNoLegSecurityAltID = FIXTag 
+   { tName = "NoLegSecurityAltID"
+   , tnum = 604
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityAltID :: FIXTag
+tLegSecurityAltID = FIXTag 
+   { tName = "LegSecurityAltID"
+   , tnum = 605
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityAltIDSource :: FIXTag
+tLegSecurityAltIDSource = FIXTag 
+   { tName = "LegSecurityAltIDSource"
+   , tnum = 606
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegProduct :: FIXTag
+tLegProduct = FIXTag 
+   { tName = "LegProduct"
+   , tnum = 607
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegCFICode :: FIXTag
+tLegCFICode = FIXTag 
+   { tName = "LegCFICode"
+   , tnum = 608
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityType :: FIXTag
+tLegSecurityType = FIXTag 
+   { tName = "LegSecurityType"
+   , tnum = 609
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegMaturityMonthYear :: FIXTag
+tLegMaturityMonthYear = FIXTag 
+   { tName = "LegMaturityMonthYear"
+   , tnum = 610
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tLegMaturityDate :: FIXTag
+tLegMaturityDate = FIXTag 
+   { tName = "LegMaturityDate"
+   , tnum = 611
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegStrikePrice :: FIXTag
+tLegStrikePrice = FIXTag 
+   { tName = "LegStrikePrice"
+   , tnum = 612
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegOptAttribute :: FIXTag
+tLegOptAttribute = FIXTag 
+   { tName = "LegOptAttribute"
+   , tnum = 613
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLegContractMultiplier :: FIXTag
+tLegContractMultiplier = FIXTag 
+   { tName = "LegContractMultiplier"
+   , tnum = 614
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegCouponRate :: FIXTag
+tLegCouponRate = FIXTag 
+   { tName = "LegCouponRate"
+   , tnum = 615
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegSecurityExchange :: FIXTag
+tLegSecurityExchange = FIXTag 
+   { tName = "LegSecurityExchange"
+   , tnum = 616
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegIssuer :: FIXTag
+tLegIssuer = FIXTag 
+   { tName = "LegIssuer"
+   , tnum = 617
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedLegIssuerLen :: FIXTag
+tEncodedLegIssuerLen = FIXTag 
+   { tName = "EncodedLegIssuerLen"
+   , tnum = 618
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedLegIssuer :: FIXTag
+tEncodedLegIssuer = FIXTag 
+   { tName = "EncodedLegIssuer"
+   , tnum = 619
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tLegSecurityDesc :: FIXTag
+tLegSecurityDesc = FIXTag 
+   { tName = "LegSecurityDesc"
+   , tnum = 620
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedLegSecurityDescLen :: FIXTag
+tEncodedLegSecurityDescLen = FIXTag 
+   { tName = "EncodedLegSecurityDescLen"
+   , tnum = 621
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedLegSecurityDesc :: FIXTag
+tEncodedLegSecurityDesc = FIXTag 
+   { tName = "EncodedLegSecurityDesc"
+   , tnum = 622
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tLegRatioQty :: FIXTag
+tLegRatioQty = FIXTag 
+   { tName = "LegRatioQty"
+   , tnum = 623
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegSide :: FIXTag
+tLegSide = FIXTag 
+   { tName = "LegSide"
+   , tnum = 624
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTradingSessionSubID :: FIXTag
+tTradingSessionSubID = FIXTag 
+   { tName = "TradingSessionSubID"
+   , tnum = 625
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocType :: FIXTag
+tAllocType = FIXTag 
+   { tName = "AllocType"
+   , tnum = 626
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoHops :: FIXTag
+tNoHops = FIXTag 
+   { tName = "NoHops"
+   , tnum = 627
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tHopCompID :: FIXTag
+tHopCompID = FIXTag 
+   { tName = "HopCompID"
+   , tnum = 628
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHopSendingTime :: FIXTag
+tHopSendingTime = FIXTag 
+   { tName = "HopSendingTime"
+   , tnum = 629
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tHopRefID :: FIXTag
+tHopRefID = FIXTag 
+   { tName = "HopRefID"
+   , tnum = 630
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMidPx :: FIXTag
+tMidPx = FIXTag 
+   { tName = "MidPx"
+   , tnum = 631
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidYield :: FIXTag
+tBidYield = FIXTag 
+   { tName = "BidYield"
+   , tnum = 632
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMidYield :: FIXTag
+tMidYield = FIXTag 
+   { tName = "MidYield"
+   , tnum = 633
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferYield :: FIXTag
+tOfferYield = FIXTag 
+   { tName = "OfferYield"
+   , tnum = 634
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tClearingFeeIndicator :: FIXTag
+tClearingFeeIndicator = FIXTag 
+   { tName = "ClearingFeeIndicator"
+   , tnum = 635
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tWorkingIndicator :: FIXTag
+tWorkingIndicator = FIXTag 
+   { tName = "WorkingIndicator"
+   , tnum = 636
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tLegLastPx :: FIXTag
+tLegLastPx = FIXTag 
+   { tName = "LegLastPx"
+   , tnum = 637
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPriorityIndicator :: FIXTag
+tPriorityIndicator = FIXTag 
+   { tName = "PriorityIndicator"
+   , tnum = 638
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPriceImprovement :: FIXTag
+tPriceImprovement = FIXTag 
+   { tName = "PriceImprovement"
+   , tnum = 639
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPrice2 :: FIXTag
+tPrice2 = FIXTag 
+   { tName = "Price2"
+   , tnum = 640
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastForwardPoints2 :: FIXTag
+tLastForwardPoints2 = FIXTag 
+   { tName = "LastForwardPoints2"
+   , tnum = 641
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidForwardPoints2 :: FIXTag
+tBidForwardPoints2 = FIXTag 
+   { tName = "BidForwardPoints2"
+   , tnum = 642
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferForwardPoints2 :: FIXTag
+tOfferForwardPoints2 = FIXTag 
+   { tName = "OfferForwardPoints2"
+   , tnum = 643
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRFQReqID :: FIXTag
+tRFQReqID = FIXTag 
+   { tName = "RFQReqID"
+   , tnum = 644
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMktBidPx :: FIXTag
+tMktBidPx = FIXTag 
+   { tName = "MktBidPx"
+   , tnum = 645
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMktOfferPx :: FIXTag
+tMktOfferPx = FIXTag 
+   { tName = "MktOfferPx"
+   , tnum = 646
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMinBidSize :: FIXTag
+tMinBidSize = FIXTag 
+   { tName = "MinBidSize"
+   , tnum = 647
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMinOfferSize :: FIXTag
+tMinOfferSize = FIXTag 
+   { tName = "MinOfferSize"
+   , tnum = 648
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteStatusReqID :: FIXTag
+tQuoteStatusReqID = FIXTag 
+   { tName = "QuoteStatusReqID"
+   , tnum = 649
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegalConfirm :: FIXTag
+tLegalConfirm = FIXTag 
+   { tName = "LegalConfirm"
+   , tnum = 650
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tUnderlyingLastPx :: FIXTag
+tUnderlyingLastPx = FIXTag 
+   { tName = "UnderlyingLastPx"
+   , tnum = 651
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingLastQty :: FIXTag
+tUnderlyingLastQty = FIXTag 
+   { tName = "UnderlyingLastQty"
+   , tnum = 652
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSecDefStatus :: FIXTag
+tSecDefStatus = FIXTag 
+   { tName = "SecDefStatus"
+   , tnum = 653
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegRefID :: FIXTag
+tLegRefID = FIXTag 
+   { tName = "LegRefID"
+   , tnum = 654
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tContraLegRefID :: FIXTag
+tContraLegRefID = FIXTag 
+   { tName = "ContraLegRefID"
+   , tnum = 655
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlCurrBidFxRate :: FIXTag
+tSettlCurrBidFxRate = FIXTag 
+   { tName = "SettlCurrBidFxRate"
+   , tnum = 656
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrOfferFxRate :: FIXTag
+tSettlCurrOfferFxRate = FIXTag 
+   { tName = "SettlCurrOfferFxRate"
+   , tnum = 657
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteRequestRejectReason :: FIXTag
+tQuoteRequestRejectReason = FIXTag 
+   { tName = "QuoteRequestRejectReason"
+   , tnum = 658
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSideComplianceID :: FIXTag
+tSideComplianceID = FIXTag 
+   { tName = "SideComplianceID"
+   , tnum = 659
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+headerFIX43 :: FIXTags
+headerFIX43 = 
+   LT.insert (tnum tSenderCompID) tSenderCompID $
+   LT.insert (tnum tTargetCompID) tTargetCompID $
+   LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+   LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+   LT.insert (tnum tSecureDataLen) tSecureDataLen $
+   LT.insert (tnum tSecureData) tSecureData $
+   LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+   LT.insert (tnum tSenderSubID) tSenderSubID $
+   LT.insert (tnum tSenderLocationID) tSenderLocationID $
+   LT.insert (tnum tTargetSubID) tTargetSubID $
+   LT.insert (tnum tTargetLocationID) tTargetLocationID $
+   LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+   LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+   LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+   LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+   LT.insert (tnum tPossDupFlag) tPossDupFlag $
+   LT.insert (tnum tPossResend) tPossResend $
+   LT.insert (tnum tSendingTime) tSendingTime $
+   LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+   LT.insert (tnum tXmlDataLen) tXmlDataLen $
+   LT.insert (tnum tXmlData) tXmlData $
+   LT.insert (tnum tMessageEncoding) tMessageEncoding $
+   LT.insert (tnum tLastMsgSeqNumProcessed) tLastMsgSeqNumProcessed $
+   LT.insert (tnum tOnBehalfOfSendingTime) tOnBehalfOfSendingTime $
+   LT.insert (tnum tNoHops) gNoHops''    LT.new
+   where
+      gNoHops'' = FIXTag
+         { tName = "NoHops"
+         , tnum = tnum tNoHops
+         , tparser = gNoHopsP''
+         , arbitraryValue = arbibtraryFIXGroup gNoHopsSpec'' }
+
+      gNoHopsP'' = groupP gNoHopsSpec''
+      gNoHopsSpec'' = FGSpec
+         { gsLength = tNoHops
+         , gsSeperator = tHopCompID
+         , gsBody = gNoHopsBody'' }
+         where
+         gNoHopsBody'' = 
+            LT.insert (tnum tHopSendingTime) tHopSendingTime $
+            LT.insert (tnum tHopRefID) tHopRefID             LT.new
+
+
+
+trailerFIX43 :: FIXTags
+trailerFIX43 = 
+   LT.insert (tnum tSignatureLength) tSignatureLength $
+   LT.insert (tnum tSignature) tSignature    LT.new
+
+
+mHeartbeat :: FIXMessageSpec
+mHeartbeat = FMSpec
+   { msName = "Heartbeat"
+   , msType = C.pack "0"
+   , msHeader = headerFIX43
+   , msBody = mHeartbeatBody
+   , msTrailer = trailerFIX43 }
+   where
+   mHeartbeatBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mTestRequest :: FIXMessageSpec
+mTestRequest = FMSpec
+   { msName = "TestRequest"
+   , msType = C.pack "1"
+   , msHeader = headerFIX43
+   , msBody = mTestRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mTestRequestBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mResendRequest :: FIXMessageSpec
+mResendRequest = FMSpec
+   { msName = "ResendRequest"
+   , msType = C.pack "2"
+   , msHeader = headerFIX43
+   , msBody = mResendRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mResendRequestBody = 
+      LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+      LT.insert (tnum tEndSeqNo) tEndSeqNo       LT.new
+
+
+mReject :: FIXMessageSpec
+mReject = FMSpec
+   { msName = "Reject"
+   , msType = C.pack "3"
+   , msHeader = headerFIX43
+   , msBody = mRejectBody
+   , msTrailer = trailerFIX43 }
+   where
+   mRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tRefTagID) tRefTagID $
+      LT.insert (tnum tRefMsgType) tRefMsgType $
+      LT.insert (tnum tSessionRejectReason) tSessionRejectReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mSequenceReset :: FIXMessageSpec
+mSequenceReset = FMSpec
+   { msName = "SequenceReset"
+   , msType = C.pack "4"
+   , msHeader = headerFIX43
+   , msBody = mSequenceResetBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSequenceResetBody = 
+      LT.insert (tnum tGapFillFlag) tGapFillFlag $
+      LT.insert (tnum tNewSeqNo) tNewSeqNo       LT.new
+
+
+mLogout :: FIXMessageSpec
+mLogout = FMSpec
+   { msName = "Logout"
+   , msType = C.pack "5"
+   , msHeader = headerFIX43
+   , msBody = mLogoutBody
+   , msTrailer = trailerFIX43 }
+   where
+   mLogoutBody = 
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mIOI :: FIXMessageSpec
+mIOI = FMSpec
+   { msName = "IOI"
+   , msType = C.pack "6"
+   , msHeader = headerFIX43
+   , msBody = mIOIBody
+   , msTrailer = trailerFIX43 }
+   where
+   mIOIBody = 
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tIOITransType) tIOITransType $
+      LT.insert (tnum tIOIRefID) tIOIRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tQuantityType) tQuantityType $
+      LT.insert (tnum tIOIQty) tIOIQty $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+      LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+      LT.insert (tnum tNoIOIQualifiers) gNoIOIQualifiers''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmark) tBenchmark       LT.new
+      where
+         gNoIOIQualifiers''' = FIXTag
+            { tName = "NoIOIQualifiers"
+            , tnum = tnum tNoIOIQualifiers
+            , tparser = gNoIOIQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoIOIQualifiersSpec''' }
+
+         gNoIOIQualifiersP''' = groupP gNoIOIQualifiersSpec'''
+         gNoIOIQualifiersSpec''' = FGSpec
+            { gsLength = tNoIOIQualifiers
+            , gsSeperator = tIOIQualifier
+            , gsBody = gNoIOIQualifiersBody''' }
+            where
+            gNoIOIQualifiersBody''' = 
+               LT.new
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mAdvertisement :: FIXMessageSpec
+mAdvertisement = FMSpec
+   { msName = "Advertisement"
+   , msType = C.pack "7"
+   , msHeader = headerFIX43
+   , msBody = mAdvertisementBody
+   , msTrailer = trailerFIX43 }
+   where
+   mAdvertisementBody = 
+      LT.insert (tnum tAdvId) tAdvId $
+      LT.insert (tnum tAdvTransType) tAdvTransType $
+      LT.insert (tnum tAdvRefID) tAdvRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tAdvSide) tAdvSide $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mExecutionReport :: FIXMessageSpec
+mExecutionReport = FMSpec
+   { msName = "ExecutionReport"
+   , msType = C.pack "8"
+   , msHeader = headerFIX43
+   , msBody = mExecutionReportBody
+   , msTrailer = trailerFIX43 }
+   where
+   mExecutionReportBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tNoContraBrokers) gNoContraBrokers''' $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tOrigCrossID) tOrigCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tExecRefID) tExecRefID $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+      LT.insert (tnum tOrdRejReason) tOrdRejReason $
+      LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tQuantityType) tQuantityType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tLastQty) tLastQty $
+      LT.insert (tnum tUnderlyingLastQty) tUnderlyingLastQty $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tUnderlyingLastPx) tUnderlyingLastPx $
+      LT.insert (tnum tLastSpotRate) tLastSpotRate $
+      LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tLastCapacity) tLastCapacity $
+      LT.insert (tnum tLeavesQty) tLeavesQty $
+      LT.insert (tnum tCumQty) tCumQty $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tDayOrderQty) tDayOrderQty $
+      LT.insert (tnum tDayCumQty) tDayCumQty $
+      LT.insert (tnum tDayAvgPx) tDayAvgPx $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tReportToExch) tReportToExch $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tExDate) tExDate $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tTradedFlatSwitch) tTradedFlatSwitch $
+      LT.insert (tnum tBasisFeatureDate) tBasisFeatureDate $
+      LT.insert (tnum tBasisFeaturePrice) tBasisFeaturePrice $
+      LT.insert (tnum tConcession) tConcession $
+      LT.insert (tnum tTotalTakedown) tTotalTakedown $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tLastForwardPoints2) tLastForwardPoints2 $
+      LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tTransBkdTime) tTransBkdTime $
+      LT.insert (tnum tExecValuationPoint) tExecValuationPoint $
+      LT.insert (tnum tExecPriceType) tExecPriceType $
+      LT.insert (tnum tExecPriceAdjustment) tExecPriceAdjustment $
+      LT.insert (tnum tPriorityIndicator) tPriorityIndicator $
+      LT.insert (tnum tPriceImprovement) tPriceImprovement $
+      LT.insert (tnum tNoContAmts) gNoContAmts''' $
+      LT.insert (tnum tNoLegs) gNoLegs'''       LT.new
+      where
+         gNoContAmts''' = FIXTag
+            { tName = "NoContAmts"
+            , tnum = tnum tNoContAmts
+            , tparser = gNoContAmtsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoContAmtsSpec''' }
+
+         gNoContAmtsP''' = groupP gNoContAmtsSpec'''
+         gNoContAmtsSpec''' = FGSpec
+            { gsLength = tNoContAmts
+            , gsSeperator = tContAmtType
+            , gsBody = gNoContAmtsBody''' }
+            where
+            gNoContAmtsBody''' = 
+               LT.insert (tnum tContAmtValue) tContAmtValue $
+               LT.insert (tnum tContAmtCurr) tContAmtCurr                LT.new
+
+         gNoContraBrokers''' = FIXTag
+            { tName = "NoContraBrokers"
+            , tnum = tnum tNoContraBrokers
+            , tparser = gNoContraBrokersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoContraBrokersSpec''' }
+
+         gNoContraBrokersP''' = groupP gNoContraBrokersSpec'''
+         gNoContraBrokersSpec''' = FGSpec
+            { gsLength = tNoContraBrokers
+            , gsSeperator = tContraBroker
+            , gsBody = gNoContraBrokersBody''' }
+            where
+            gNoContraBrokersBody''' = 
+               LT.insert (tnum tContraTrader) tContraTrader $
+               LT.insert (tnum tContraTradeQty) tContraTradeQty $
+               LT.insert (tnum tContraTradeTime) tContraTradeTime $
+               LT.insert (tnum tContraLegRefID) tContraLegRefID                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlmntTyp) tLegSettlmntTyp $
+               LT.insert (tnum tLegFutSettDate) tLegFutSettDate $
+               LT.insert (tnum tLegLastPx) tLegLastPx                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+
+
+mOrderCancelReject :: FIXMessageSpec
+mOrderCancelReject = FMSpec
+   { msName = "OrderCancelReject"
+   , msType = C.pack "9"
+   , msHeader = headerFIX43
+   , msBody = mOrderCancelRejectBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderCancelRejectBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tCxlRejResponseTo) tCxlRejResponseTo $
+      LT.insert (tnum tCxlRejReason) tCxlRejReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mLogon :: FIXMessageSpec
+mLogon = FMSpec
+   { msName = "Logon"
+   , msType = C.pack "A"
+   , msHeader = headerFIX43
+   , msBody = mLogonBody
+   , msTrailer = trailerFIX43 }
+   where
+   mLogonBody = 
+      LT.insert (tnum tEncryptMethod) tEncryptMethod $
+      LT.insert (tnum tHeartBtInt) tHeartBtInt $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData $
+      LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+      LT.insert (tnum tMaxMessageSize) tMaxMessageSize $
+      LT.insert (tnum tNoMsgTypes) gNoMsgTypes''' $
+      LT.insert (tnum tTestMessageIndicator) tTestMessageIndicator $
+      LT.insert (tnum tUsername) tUsername $
+      LT.insert (tnum tPassword) tPassword       LT.new
+      where
+         gNoMsgTypes''' = FIXTag
+            { tName = "NoMsgTypes"
+            , tnum = tnum tNoMsgTypes
+            , tparser = gNoMsgTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMsgTypesSpec''' }
+
+         gNoMsgTypesP''' = groupP gNoMsgTypesSpec'''
+         gNoMsgTypesSpec''' = FGSpec
+            { gsLength = tNoMsgTypes
+            , gsSeperator = tRefMsgType
+            , gsBody = gNoMsgTypesBody''' }
+            where
+            gNoMsgTypesBody''' = 
+               LT.insert (tnum tMsgDirection) tMsgDirection                LT.new
+
+
+
+mNews :: FIXMessageSpec
+mNews = FMSpec
+   { msName = "News"
+   , msType = C.pack "B"
+   , msHeader = headerFIX43
+   , msBody = mNewsBody
+   , msTrailer = trailerFIX43 }
+   where
+   mNewsBody = 
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tUrgency) tUrgency $
+      LT.insert (tnum tHeadline) tHeadline $
+      LT.insert (tnum tEncodedHeadlineLen) tEncodedHeadlineLen $
+      LT.insert (tnum tEncodedHeadline) tEncodedHeadline $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tLinesOfText) gLinesOfText''' $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gLinesOfText''' = FIXTag
+            { tName = "LinesOfText"
+            , tnum = tnum tLinesOfText
+            , tparser = gLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gLinesOfTextSpec''' }
+
+         gLinesOfTextP''' = groupP gLinesOfTextSpec'''
+         gLinesOfTextSpec''' = FGSpec
+            { gsLength = tLinesOfText
+            , gsSeperator = tText
+            , gsBody = gLinesOfTextBody''' }
+            where
+            gLinesOfTextBody''' = 
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+
+
+mEmail :: FIXMessageSpec
+mEmail = FMSpec
+   { msName = "Email"
+   , msType = C.pack "C"
+   , msHeader = headerFIX43
+   , msBody = mEmailBody
+   , msTrailer = trailerFIX43 }
+   where
+   mEmailBody = 
+      LT.insert (tnum tEmailThreadID) tEmailThreadID $
+      LT.insert (tnum tEmailType) tEmailType $
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tSubject) tSubject $
+      LT.insert (tnum tEncodedSubjectLen) tEncodedSubjectLen $
+      LT.insert (tnum tEncodedSubject) tEncodedSubject $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tLinesOfText) gLinesOfText''' $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gLinesOfText''' = FIXTag
+            { tName = "LinesOfText"
+            , tnum = tnum tLinesOfText
+            , tparser = gLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gLinesOfTextSpec''' }
+
+         gLinesOfTextP''' = groupP gLinesOfTextSpec'''
+         gLinesOfTextSpec''' = FGSpec
+            { gsLength = tLinesOfText
+            , gsSeperator = tText
+            , gsBody = gLinesOfTextBody''' }
+            where
+            gLinesOfTextBody''' = 
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+
+
+mNewOrderSingle :: FIXMessageSpec
+mNewOrderSingle = FMSpec
+   { msName = "NewOrderSingle"
+   , msType = C.pack "D"
+   , msHeader = headerFIX43
+   , msBody = mNewOrderSingleBody
+   , msTrailer = trailerFIX43 }
+   where
+   mNewOrderSingleBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tQuantityType) tQuantityType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tPrice2) tPrice2 $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tNetMoney) tNetMoney       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mNewOrderList :: FIXMessageSpec
+mNewOrderList = FMSpec
+   { msName = "NewOrderList"
+   , msType = C.pack "E"
+   , msHeader = headerFIX43
+   , msBody = mNewOrderListBody
+   , msTrailer = trailerFIX43 }
+   where
+   mNewOrderListBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tProgRptReqs) tProgRptReqs $
+      LT.insert (tnum tBidType) tBidType $
+      LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tListExecInstType) tListExecInstType $
+      LT.insert (tnum tListExecInst) tListExecInst $
+      LT.insert (tnum tEncodedListExecInstLen) tEncodedListExecInstLen $
+      LT.insert (tnum tEncodedListExecInst) tEncodedListExecInst $
+      LT.insert (tnum tTotNoOrders) tTotNoOrders $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListSeqNo) tListSeqNo $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tSettlInstMode) tSettlInstMode $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tDayBookingInst) tDayBookingInst $
+               LT.insert (tnum tBookingUnit) tBookingUnit $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tCashMargin) tCashMargin $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tHandlInst) tHandlInst $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tMaxFloor) tMaxFloor $
+               LT.insert (tnum tExDestination) tExDestination $
+               LT.insert (tnum tNoTradingSessions) gNoTradingSessions'''''' $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tSymbol) tSymbol $
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tSideValueInd) tSideValueInd $
+               LT.insert (tnum tLocateReqd) tLocateReqd $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tQuantityType) tQuantityType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tStopPx) tStopPx $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tIOIid) tIOIid $
+               LT.insert (tnum tQuoteID) tQuoteID $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tEffectiveTime) tEffectiveTime $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tGTBookingInst) tGTBookingInst $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tRule80A) tRule80A $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tPrice2) tPrice2 $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tMaxShow) tMaxShow $
+               LT.insert (tnum tPegDifference) tPegDifference $
+               LT.insert (tnum tDiscretionInst) tDiscretionInst $
+               LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+               LT.insert (tnum tDesignation) tDesignation $
+               LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+               LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+               LT.insert (tnum tNetMoney) tNetMoney                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNestedPartySubID) tNestedPartySubID                                  LT.new
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tPartySubID) tPartySubID                         LT.new
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+                  gNoTradingSessions'''''' = FIXTag
+                     { tName = "NoTradingSessions"
+                     , tnum = tnum tNoTradingSessions
+                     , tparser = gNoTradingSessionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec'''''' }
+
+                  gNoTradingSessionsP'''''' = groupP gNoTradingSessionsSpec''''''
+                  gNoTradingSessionsSpec'''''' = FGSpec
+                     { gsLength = tNoTradingSessions
+                     , gsSeperator = tTradingSessionID
+                     , gsBody = gNoTradingSessionsBody'''''' }
+                     where
+                     gNoTradingSessionsBody'''''' = 
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                         LT.new
+
+
+
+
+mOrderCancelRequest :: FIXMessageSpec
+mOrderCancelRequest = FMSpec
+   { msName = "OrderCancelRequest"
+   , msType = C.pack "F"
+   , msHeader = headerFIX43
+   , msBody = mOrderCancelRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderCancelRequestBody = 
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mOrderCancelReplaceRequest :: FIXMessageSpec
+mOrderCancelReplaceRequest = FMSpec
+   { msName = "OrderCancelReplaceRequest"
+   , msType = C.pack "G"
+   , msHeader = headerFIX43
+   , msBody = mOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tQuantityType) tQuantityType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tRule80A) tRule80A $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tPrice2) tPrice2 $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tNetMoney) tNetMoney       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mOrderStatusRequest :: FIXMessageSpec
+mOrderStatusRequest = FMSpec
+   { msName = "OrderStatusRequest"
+   , msType = C.pack "H"
+   , msHeader = headerFIX43
+   , msBody = mOrderStatusRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderStatusRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mAllocation :: FIXMessageSpec
+mAllocation = FMSpec
+   { msName = "Allocation"
+   , msType = C.pack "J"
+   , msHeader = headerFIX43
+   , msBody = mAllocationBody
+   , msTrailer = trailerFIX43 }
+   where
+   mAllocationBody = 
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tAllocTransType) tAllocTransType $
+      LT.insert (tnum tAllocType) tAllocType $
+      LT.insert (tnum tRefAllocID) tRefAllocID $
+      LT.insert (tnum tAllocLinkID) tAllocLinkID $
+      LT.insert (tnum tAllocLinkType) tAllocLinkType $
+      LT.insert (tnum tBookingRefID) tBookingRefID $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tConcession) tConcession $
+      LT.insert (tnum tTotalTakedown) tTotalTakedown $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tTotalAccruedInterestAmt) tTotalAccruedInterestAmt $
+      LT.insert (tnum tLegalConfirm) tLegalConfirm $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocPrice) tAllocPrice $
+               LT.insert (tnum tAllocQty) tAllocQty $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+               LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+               LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+               LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+               LT.insert (tnum tSettlInstMode) tSettlInstMode $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees''''''                LT.new
+               where
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tLastQty
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.insert (tnum tExecID) tExecID $
+               LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+               LT.insert (tnum tLastPx) tLastPx $
+               LT.insert (tnum tLastCapacity) tLastCapacity                LT.new
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListID) tListID                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mListCancelRequest :: FIXMessageSpec
+mListCancelRequest = FMSpec
+   { msName = "ListCancelRequest"
+   , msType = C.pack "K"
+   , msHeader = headerFIX43
+   , msBody = mListCancelRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mListCancelRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListExecute :: FIXMessageSpec
+mListExecute = FMSpec
+   { msName = "ListExecute"
+   , msType = C.pack "L"
+   , msHeader = headerFIX43
+   , msBody = mListExecuteBody
+   , msTrailer = trailerFIX43 }
+   where
+   mListExecuteBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListStatusRequest :: FIXMessageSpec
+mListStatusRequest = FMSpec
+   { msName = "ListStatusRequest"
+   , msType = C.pack "M"
+   , msHeader = headerFIX43
+   , msBody = mListStatusRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mListStatusRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListStatus :: FIXMessageSpec
+mListStatus = FMSpec
+   { msName = "ListStatus"
+   , msType = C.pack "N"
+   , msHeader = headerFIX43
+   , msBody = mListStatusBody
+   , msTrailer = trailerFIX43 }
+   where
+   mListStatusBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tListStatusType) tListStatusType $
+      LT.insert (tnum tNoRpts) tNoRpts $
+      LT.insert (tnum tListOrderStatus) tListOrderStatus $
+      LT.insert (tnum tRptSeq) tRptSeq $
+      LT.insert (tnum tListStatusText) tListStatusText $
+      LT.insert (tnum tEncodedListStatusTextLen) tEncodedListStatusTextLen $
+      LT.insert (tnum tEncodedListStatusText) tEncodedListStatusText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tTotNoOrders) tTotNoOrders $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tCumQty) tCumQty $
+               LT.insert (tnum tOrdStatus) tOrdStatus $
+               LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+               LT.insert (tnum tLeavesQty) tLeavesQty $
+               LT.insert (tnum tCxlQty) tCxlQty $
+               LT.insert (tnum tAvgPx) tAvgPx $
+               LT.insert (tnum tOrdRejReason) tOrdRejReason $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mAllocationAck :: FIXMessageSpec
+mAllocationAck = FMSpec
+   { msName = "AllocationAck"
+   , msType = C.pack "P"
+   , msHeader = headerFIX43
+   , msBody = mAllocationAckBody
+   , msTrailer = trailerFIX43 }
+   where
+   mAllocationAckBody = 
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tLegalConfirm) tLegalConfirm       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+
+
+mDontKnowTrade :: FIXMessageSpec
+mDontKnowTrade = FMSpec
+   { msName = "DontKnowTrade"
+   , msType = C.pack "Q"
+   , msHeader = headerFIX43
+   , msBody = mDontKnowTradeBody
+   , msTrailer = trailerFIX43 }
+   where
+   mDontKnowTradeBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tDKReason) tDKReason $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tLastQty) tLastQty $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mQuoteRequest :: FIXMessageSpec
+mQuoteRequest = FMSpec
+   { msName = "QuoteRequest"
+   , msType = C.pack "R"
+   , msHeader = headerFIX43
+   , msBody = mQuoteRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mQuoteRequestBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tRFQReqID) tRFQReqID $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tQuoteType) tQuoteType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tQuantityType) tQuantityType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPrice2) tPrice2 $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+
+
+
+mQuote :: FIXMessageSpec
+mQuote = FMSpec
+   { msName = "Quote"
+   , msType = C.pack "S"
+   , msHeader = headerFIX43
+   , msBody = mQuoteBody
+   , msTrailer = trailerFIX43 }
+   where
+   mQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tMktBidPx) tMktBidPx $
+      LT.insert (tnum tMktOfferPx) tMktOfferPx $
+      LT.insert (tnum tMinBidSize) tMinBidSize $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tMinOfferSize) tMinOfferSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tMidPx) tMidPx $
+      LT.insert (tnum tBidYield) tBidYield $
+      LT.insert (tnum tMidYield) tMidYield $
+      LT.insert (tnum tOfferYield) tOfferYield $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+      LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+      LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mSettlementInstructions :: FIXMessageSpec
+mSettlementInstructions = FMSpec
+   { msName = "SettlementInstructions"
+   , msType = C.pack "T"
+   , msHeader = headerFIX43
+   , msBody = mSettlementInstructionsBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSettlementInstructionsBody = 
+      LT.insert (tnum tSettlInstID) tSettlInstID $
+      LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+      LT.insert (tnum tSettlInstRefID) tSettlInstRefID $
+      LT.insert (tnum tSettlInstMode) tSettlInstMode $
+      LT.insert (tnum tSettlInstSource) tSettlInstSource $
+      LT.insert (tnum tAllocAccount) tAllocAccount $
+      LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+      LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+      LT.insert (tnum tSettlInstCode) tSettlInstCode $
+      LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+      LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+      LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+      LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+      LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+      LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+      LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+      LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+      LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+      LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+      LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+      LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone $
+      LT.insert (tnum tPaymentMethod) tPaymentMethod $
+      LT.insert (tnum tPaymentRef) tPaymentRef $
+      LT.insert (tnum tCardHolderName) tCardHolderName $
+      LT.insert (tnum tCardNumber) tCardNumber $
+      LT.insert (tnum tCardStartDate) tCardStartDate $
+      LT.insert (tnum tCardExpDate) tCardExpDate $
+      LT.insert (tnum tCardIssNo) tCardIssNo $
+      LT.insert (tnum tPaymentDate) tPaymentDate $
+      LT.insert (tnum tPaymentRemitterID) tPaymentRemitterID       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+
+
+mMarketDataRequest :: FIXMessageSpec
+mMarketDataRequest = FMSpec
+   { msName = "MarketDataRequest"
+   , msType = C.pack "V"
+   , msHeader = headerFIX43
+   , msBody = mMarketDataRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMarketDataRequestBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tMarketDepth) tMarketDepth $
+      LT.insert (tnum tMDUpdateType) tMDUpdateType $
+      LT.insert (tnum tAggregatedBook) tAggregatedBook $
+      LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+      LT.insert (tnum tScope) tScope $
+      LT.insert (tnum tMDImplicitDelete) tMDImplicitDelete $
+      LT.insert (tnum tNoMDEntryTypes) gNoMDEntryTypes''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions'''       LT.new
+      where
+         gNoMDEntryTypes''' = FIXTag
+            { tName = "NoMDEntryTypes"
+            , tnum = tnum tNoMDEntryTypes
+            , tparser = gNoMDEntryTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntryTypesSpec''' }
+
+         gNoMDEntryTypesP''' = groupP gNoMDEntryTypesSpec'''
+         gNoMDEntryTypesSpec''' = FGSpec
+            { gsLength = tNoMDEntryTypes
+            , gsSeperator = tMDEntryType
+            , gsBody = gNoMDEntryTypesBody''' }
+            where
+            gNoMDEntryTypesBody''' = 
+               LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mMarketDataSnapshotFullRefresh :: FIXMessageSpec
+mMarketDataSnapshotFullRefresh = FMSpec
+   { msName = "MarketDataSnapshotFullRefresh"
+   , msType = C.pack "W"
+   , msHeader = headerFIX43
+   , msBody = mMarketDataSnapshotFullRefreshBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMarketDataSnapshotFullRefreshBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tFinancialStatus) tFinancialStatus $
+      LT.insert (tnum tCorporateAction) tCorporateAction $
+      LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+      LT.insert (tnum tTotalVolumeTradedDate) tTotalVolumeTradedDate $
+      LT.insert (tnum tTotalVolumeTradedTime) tTotalVolumeTradedTime $
+      LT.insert (tnum tNetChgPrevDay) tNetChgPrevDay $
+      LT.insert (tnum tNoMDEntries) gNoMDEntries'''       LT.new
+      where
+         gNoMDEntries''' = FIXTag
+            { tName = "NoMDEntries"
+            , tnum = tnum tNoMDEntries
+            , tparser = gNoMDEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntriesSpec''' }
+
+         gNoMDEntriesP''' = groupP gNoMDEntriesSpec'''
+         gNoMDEntriesSpec''' = FGSpec
+            { gsLength = tNoMDEntries
+            , gsSeperator = tMDEntryType
+            , gsBody = gNoMDEntriesBody''' }
+            where
+            gNoMDEntriesBody''' = 
+               LT.insert (tnum tMDEntryPx) tMDEntryPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tMDEntrySize) tMDEntrySize $
+               LT.insert (tnum tMDEntryDate) tMDEntryDate $
+               LT.insert (tnum tMDEntryTime) tMDEntryTime $
+               LT.insert (tnum tTickDirection) tTickDirection $
+               LT.insert (tnum tMDMkt) tMDMkt $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tQuoteCondition) tQuoteCondition $
+               LT.insert (tnum tTradeCondition) tTradeCondition $
+               LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tSellerDays) tSellerDays $
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+               LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+               LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+               LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+               LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+               LT.insert (tnum tScope) tScope $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mMarketDataIncrementalRefresh :: FIXMessageSpec
+mMarketDataIncrementalRefresh = FMSpec
+   { msName = "MarketDataIncrementalRefresh"
+   , msType = C.pack "X"
+   , msHeader = headerFIX43
+   , msBody = mMarketDataIncrementalRefreshBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMarketDataIncrementalRefreshBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tNoMDEntries) gNoMDEntries'''       LT.new
+      where
+         gNoMDEntries''' = FIXTag
+            { tName = "NoMDEntries"
+            , tnum = tnum tNoMDEntries
+            , tparser = gNoMDEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntriesSpec''' }
+
+         gNoMDEntriesP''' = groupP gNoMDEntriesSpec'''
+         gNoMDEntriesSpec''' = FGSpec
+            { gsLength = tNoMDEntries
+            , gsSeperator = tMDUpdateAction
+            , gsBody = gNoMDEntriesBody''' }
+            where
+            gNoMDEntriesBody''' = 
+               LT.insert (tnum tDeleteReason) tDeleteReason $
+               LT.insert (tnum tMDEntryType) tMDEntryType $
+               LT.insert (tnum tMDEntryID) tMDEntryID $
+               LT.insert (tnum tMDEntryRefID) tMDEntryRefID $
+               LT.insert (tnum tSymbol) tSymbol $
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tFinancialStatus) tFinancialStatus $
+               LT.insert (tnum tCorporateAction) tCorporateAction $
+               LT.insert (tnum tMDEntryPx) tMDEntryPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tMDEntrySize) tMDEntrySize $
+               LT.insert (tnum tMDEntryDate) tMDEntryDate $
+               LT.insert (tnum tMDEntryTime) tMDEntryTime $
+               LT.insert (tnum tTickDirection) tTickDirection $
+               LT.insert (tnum tMDMkt) tMDMkt $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tQuoteCondition) tQuoteCondition $
+               LT.insert (tnum tTradeCondition) tTradeCondition $
+               LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tSellerDays) tSellerDays $
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+               LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+               LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+               LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+               LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+               LT.insert (tnum tScope) tScope $
+               LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+               LT.insert (tnum tTotalVolumeTradedDate) tTotalVolumeTradedDate $
+               LT.insert (tnum tTotalVolumeTradedTime) tTotalVolumeTradedTime $
+               LT.insert (tnum tNetChgPrevDay) tNetChgPrevDay $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+
+
+mMarketDataRequestReject :: FIXMessageSpec
+mMarketDataRequestReject = FMSpec
+   { msName = "MarketDataRequestReject"
+   , msType = C.pack "Y"
+   , msHeader = headerFIX43
+   , msBody = mMarketDataRequestRejectBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMarketDataRequestRejectBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tMDReqRejReason) tMDReqRejReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mQuoteCancel :: FIXMessageSpec
+mQuoteCancel = FMSpec
+   { msName = "QuoteCancel"
+   , msType = C.pack "Z"
+   , msHeader = headerFIX43
+   , msBody = mQuoteCancelBody
+   , msTrailer = trailerFIX43 }
+   where
+   mQuoteCancelBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteCancelType) tQuoteCancelType $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries'''       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoQuoteEntries''' = FIXTag
+            { tName = "NoQuoteEntries"
+            , tnum = tnum tNoQuoteEntries
+            , tparser = gNoQuoteEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec''' }
+
+         gNoQuoteEntriesP''' = groupP gNoQuoteEntriesSpec'''
+         gNoQuoteEntriesSpec''' = FGSpec
+            { gsLength = tNoQuoteEntries
+            , gsSeperator = tSymbol
+            , gsBody = gNoQuoteEntriesBody''' }
+            where
+            gNoQuoteEntriesBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+
+
+mQuoteStatusRequest :: FIXMessageSpec
+mQuoteStatusRequest = FMSpec
+   { msName = "QuoteStatusRequest"
+   , msType = C.pack "a"
+   , msHeader = headerFIX43
+   , msBody = mQuoteStatusRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mQuoteStatusRequestBody = 
+      LT.insert (tnum tQuoteStatusReqID) tQuoteStatusReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mMassQuoteAcknowledgement :: FIXMessageSpec
+mMassQuoteAcknowledgement = FMSpec
+   { msName = "MassQuoteAcknowledgement"
+   , msType = C.pack "b"
+   , msHeader = headerFIX43
+   , msBody = mMassQuoteAcknowledgementBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMassQuoteAcknowledgementBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteStatus) tQuoteStatus $
+      LT.insert (tnum tQuoteRejectReason) tQuoteRejectReason $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tNoQuoteSets) gNoQuoteSets'''       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoQuoteSets''' = FIXTag
+            { tName = "NoQuoteSets"
+            , tnum = tnum tNoQuoteSets
+            , tparser = gNoQuoteSetsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteSetsSpec''' }
+
+         gNoQuoteSetsP''' = groupP gNoQuoteSetsSpec'''
+         gNoQuoteSetsSpec''' = FGSpec
+            { gsLength = tNoQuoteSets
+            , gsSeperator = tQuoteSetID
+            , gsBody = gNoQuoteSetsBody''' }
+            where
+            gNoQuoteSetsBody''' = 
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tTotQuoteEntries) tTotQuoteEntries $
+               LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries''''''                LT.new
+               where
+                  gNoQuoteEntries'''''' = FIXTag
+                     { tName = "NoQuoteEntries"
+                     , tnum = tnum tNoQuoteEntries
+                     , tparser = gNoQuoteEntriesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec'''''' }
+
+                  gNoQuoteEntriesP'''''' = groupP gNoQuoteEntriesSpec''''''
+                  gNoQuoteEntriesSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteEntries
+                     , gsSeperator = tQuoteEntryID
+                     , gsBody = gNoQuoteEntriesBody'''''' }
+                     where
+                     gNoQuoteEntriesBody'''''' = 
+                        LT.insert (tnum tSymbol) tSymbol $
+                        LT.insert (tnum tSymbolSfx) tSymbolSfx $
+                        LT.insert (tnum tSecurityID) tSecurityID $
+                        LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+                        LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''''''''' $
+                        LT.insert (tnum tProduct) tProduct $
+                        LT.insert (tnum tCFICode) tCFICode $
+                        LT.insert (tnum tSecurityType) tSecurityType $
+                        LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+                        LT.insert (tnum tMaturityDate) tMaturityDate $
+                        LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+                        LT.insert (tnum tIssueDate) tIssueDate $
+                        LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+                        LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+                        LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+                        LT.insert (tnum tFactor) tFactor $
+                        LT.insert (tnum tCreditRating) tCreditRating $
+                        LT.insert (tnum tInstrRegistry) tInstrRegistry $
+                        LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+                        LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+                        LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+                        LT.insert (tnum tRedemptionDate) tRedemptionDate $
+                        LT.insert (tnum tStrikePrice) tStrikePrice $
+                        LT.insert (tnum tOptAttribute) tOptAttribute $
+                        LT.insert (tnum tContractMultiplier) tContractMultiplier $
+                        LT.insert (tnum tCouponRate) tCouponRate $
+                        LT.insert (tnum tSecurityExchange) tSecurityExchange $
+                        LT.insert (tnum tIssuer) tIssuer $
+                        LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+                        LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+                        LT.insert (tnum tSecurityDesc) tSecurityDesc $
+                        LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+                        LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+                        LT.insert (tnum tBidPx) tBidPx $
+                        LT.insert (tnum tOfferPx) tOfferPx $
+                        LT.insert (tnum tBidSize) tBidSize $
+                        LT.insert (tnum tOfferSize) tOfferSize $
+                        LT.insert (tnum tValidUntilTime) tValidUntilTime $
+                        LT.insert (tnum tBidSpotRate) tBidSpotRate $
+                        LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+                        LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+                        LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+                        LT.insert (tnum tMidPx) tMidPx $
+                        LT.insert (tnum tBidYield) tBidYield $
+                        LT.insert (tnum tMidYield) tMidYield $
+                        LT.insert (tnum tOfferYield) tOfferYield $
+                        LT.insert (tnum tTransactTime) tTransactTime $
+                        LT.insert (tnum tTradingSessionID) tTradingSessionID $
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+                        LT.insert (tnum tFutSettDate) tFutSettDate $
+                        LT.insert (tnum tOrdType) tOrdType $
+                        LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+                        LT.insert (tnum tOrderQty2) tOrderQty2 $
+                        LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+                        LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+                        LT.insert (tnum tCurrency) tCurrency $
+                        LT.insert (tnum tQuoteEntryRejectReason) tQuoteEntryRejectReason                         LT.new
+                        where
+                           gNoSecurityAltID''''''''' = FIXTag
+                              { tName = "NoSecurityAltID"
+                              , tnum = tnum tNoSecurityAltID
+                              , tparser = gNoSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''''''''' }
+
+                           gNoSecurityAltIDP''''''''' = groupP gNoSecurityAltIDSpec'''''''''
+                           gNoSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoSecurityAltID
+                              , gsSeperator = tSecurityAltID
+                              , gsBody = gNoSecurityAltIDBody''''''''' }
+                              where
+                              gNoSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                                  LT.new
+
+
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+
+
+
+mSecurityDefinitionRequest :: FIXMessageSpec
+mSecurityDefinitionRequest = FMSpec
+   { msName = "SecurityDefinitionRequest"
+   , msType = C.pack "c"
+   , msHeader = headerFIX43
+   , msBody = mSecurityDefinitionRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityDefinitionRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityRequestType) tSecurityRequestType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mSecurityDefinition :: FIXMessageSpec
+mSecurityDefinition = FMSpec
+   { msName = "SecurityDefinition"
+   , msType = C.pack "d"
+   , msHeader = headerFIX43
+   , msBody = mSecurityDefinitionBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityDefinitionBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tRoundLot) tRoundLot $
+      LT.insert (tnum tMinTradeVol) tMinTradeVol       LT.new
+      where
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mSecurityStatusRequest :: FIXMessageSpec
+mSecurityStatusRequest = FMSpec
+   { msName = "SecurityStatusRequest"
+   , msType = C.pack "e"
+   , msHeader = headerFIX43
+   , msBody = mSecurityStatusRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityStatusRequestBody = 
+      LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mSecurityStatus :: FIXMessageSpec
+mSecurityStatus = FMSpec
+   { msName = "SecurityStatus"
+   , msType = C.pack "f"
+   , msHeader = headerFIX43
+   , msBody = mSecurityStatusBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityStatusBody = 
+      LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tSecurityTradingStatus) tSecurityTradingStatus $
+      LT.insert (tnum tFinancialStatus) tFinancialStatus $
+      LT.insert (tnum tCorporateAction) tCorporateAction $
+      LT.insert (tnum tHaltReasonChar) tHaltReasonChar $
+      LT.insert (tnum tInViewOfCommon) tInViewOfCommon $
+      LT.insert (tnum tDueToRelated) tDueToRelated $
+      LT.insert (tnum tBuyVolume) tBuyVolume $
+      LT.insert (tnum tSellVolume) tSellVolume $
+      LT.insert (tnum tHighPx) tHighPx $
+      LT.insert (tnum tLowPx) tLowPx $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAdjustment) tAdjustment $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mTradingSessionStatusRequest :: FIXMessageSpec
+mTradingSessionStatusRequest = FMSpec
+   { msName = "TradingSessionStatusRequest"
+   , msType = C.pack "g"
+   , msHeader = headerFIX43
+   , msBody = mTradingSessionStatusRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mTradingSessionStatusRequestBody = 
+      LT.insert (tnum tTradSesReqID) tTradSesReqID $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tTradSesMethod) tTradSesMethod $
+      LT.insert (tnum tTradSesMode) tTradSesMode $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+
+
+mTradingSessionStatus :: FIXMessageSpec
+mTradingSessionStatus = FMSpec
+   { msName = "TradingSessionStatus"
+   , msType = C.pack "h"
+   , msHeader = headerFIX43
+   , msBody = mTradingSessionStatusBody
+   , msTrailer = trailerFIX43 }
+   where
+   mTradingSessionStatusBody = 
+      LT.insert (tnum tTradSesReqID) tTradSesReqID $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tTradSesMethod) tTradSesMethod $
+      LT.insert (tnum tTradSesMode) tTradSesMode $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tTradSesStatus) tTradSesStatus $
+      LT.insert (tnum tTradSesStatusRejReason) tTradSesStatusRejReason $
+      LT.insert (tnum tTradSesStartTime) tTradSesStartTime $
+      LT.insert (tnum tTradSesOpenTime) tTradSesOpenTime $
+      LT.insert (tnum tTradSesPreCloseTime) tTradSesPreCloseTime $
+      LT.insert (tnum tTradSesCloseTime) tTradSesCloseTime $
+      LT.insert (tnum tTradSesEndTime) tTradSesEndTime $
+      LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mMassQuote :: FIXMessageSpec
+mMassQuote = FMSpec
+   { msName = "MassQuote"
+   , msType = C.pack "i"
+   , msHeader = headerFIX43
+   , msBody = mMassQuoteBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMassQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDefBidSize) tDefBidSize $
+      LT.insert (tnum tDefOfferSize) tDefOfferSize $
+      LT.insert (tnum tNoQuoteSets) gNoQuoteSets'''       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoQuoteSets''' = FIXTag
+            { tName = "NoQuoteSets"
+            , tnum = tnum tNoQuoteSets
+            , tparser = gNoQuoteSetsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteSetsSpec''' }
+
+         gNoQuoteSetsP''' = groupP gNoQuoteSetsSpec'''
+         gNoQuoteSetsSpec''' = FGSpec
+            { gsLength = tNoQuoteSets
+            , gsSeperator = tQuoteSetID
+            , gsBody = gNoQuoteSetsBody''' }
+            where
+            gNoQuoteSetsBody''' = 
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tQuoteSetValidUntilTime) tQuoteSetValidUntilTime $
+               LT.insert (tnum tTotQuoteEntries) tTotQuoteEntries $
+               LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries''''''                LT.new
+               where
+                  gNoQuoteEntries'''''' = FIXTag
+                     { tName = "NoQuoteEntries"
+                     , tnum = tnum tNoQuoteEntries
+                     , tparser = gNoQuoteEntriesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec'''''' }
+
+                  gNoQuoteEntriesP'''''' = groupP gNoQuoteEntriesSpec''''''
+                  gNoQuoteEntriesSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteEntries
+                     , gsSeperator = tQuoteEntryID
+                     , gsBody = gNoQuoteEntriesBody'''''' }
+                     where
+                     gNoQuoteEntriesBody'''''' = 
+                        LT.insert (tnum tSymbol) tSymbol $
+                        LT.insert (tnum tSymbolSfx) tSymbolSfx $
+                        LT.insert (tnum tSecurityID) tSecurityID $
+                        LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+                        LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''''''''' $
+                        LT.insert (tnum tProduct) tProduct $
+                        LT.insert (tnum tCFICode) tCFICode $
+                        LT.insert (tnum tSecurityType) tSecurityType $
+                        LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+                        LT.insert (tnum tMaturityDate) tMaturityDate $
+                        LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+                        LT.insert (tnum tIssueDate) tIssueDate $
+                        LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+                        LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+                        LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+                        LT.insert (tnum tFactor) tFactor $
+                        LT.insert (tnum tCreditRating) tCreditRating $
+                        LT.insert (tnum tInstrRegistry) tInstrRegistry $
+                        LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+                        LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+                        LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+                        LT.insert (tnum tRedemptionDate) tRedemptionDate $
+                        LT.insert (tnum tStrikePrice) tStrikePrice $
+                        LT.insert (tnum tOptAttribute) tOptAttribute $
+                        LT.insert (tnum tContractMultiplier) tContractMultiplier $
+                        LT.insert (tnum tCouponRate) tCouponRate $
+                        LT.insert (tnum tSecurityExchange) tSecurityExchange $
+                        LT.insert (tnum tIssuer) tIssuer $
+                        LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+                        LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+                        LT.insert (tnum tSecurityDesc) tSecurityDesc $
+                        LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+                        LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+                        LT.insert (tnum tBidPx) tBidPx $
+                        LT.insert (tnum tOfferPx) tOfferPx $
+                        LT.insert (tnum tBidSize) tBidSize $
+                        LT.insert (tnum tOfferSize) tOfferSize $
+                        LT.insert (tnum tValidUntilTime) tValidUntilTime $
+                        LT.insert (tnum tBidSpotRate) tBidSpotRate $
+                        LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+                        LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+                        LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+                        LT.insert (tnum tMidPx) tMidPx $
+                        LT.insert (tnum tBidYield) tBidYield $
+                        LT.insert (tnum tMidYield) tMidYield $
+                        LT.insert (tnum tOfferYield) tOfferYield $
+                        LT.insert (tnum tTransactTime) tTransactTime $
+                        LT.insert (tnum tTradingSessionID) tTradingSessionID $
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+                        LT.insert (tnum tFutSettDate) tFutSettDate $
+                        LT.insert (tnum tOrdType) tOrdType $
+                        LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+                        LT.insert (tnum tOrderQty2) tOrderQty2 $
+                        LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+                        LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+                        LT.insert (tnum tCurrency) tCurrency                         LT.new
+                        where
+                           gNoSecurityAltID''''''''' = FIXTag
+                              { tName = "NoSecurityAltID"
+                              , tnum = tnum tNoSecurityAltID
+                              , tparser = gNoSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''''''''' }
+
+                           gNoSecurityAltIDP''''''''' = groupP gNoSecurityAltIDSpec'''''''''
+                           gNoSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoSecurityAltID
+                              , gsSeperator = tSecurityAltID
+                              , gsBody = gNoSecurityAltIDBody''''''''' }
+                              where
+                              gNoSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                                  LT.new
+
+
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+
+
+
+mBusinessMessageReject :: FIXMessageSpec
+mBusinessMessageReject = FMSpec
+   { msName = "BusinessMessageReject"
+   , msType = C.pack "j"
+   , msHeader = headerFIX43
+   , msBody = mBusinessMessageRejectBody
+   , msTrailer = trailerFIX43 }
+   where
+   mBusinessMessageRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tRefMsgType) tRefMsgType $
+      LT.insert (tnum tBusinessRejectRefID) tBusinessRejectRefID $
+      LT.insert (tnum tBusinessRejectReason) tBusinessRejectReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mBidRequest :: FIXMessageSpec
+mBidRequest = FMSpec
+   { msName = "BidRequest"
+   , msType = C.pack "k"
+   , msHeader = headerFIX43
+   , msBody = mBidRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mBidRequestBody = 
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tBidRequestTransType) tBidRequestTransType $
+      LT.insert (tnum tListName) tListName $
+      LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+      LT.insert (tnum tBidType) tBidType $
+      LT.insert (tnum tNumTickets) tNumTickets $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSideValue1) tSideValue1 $
+      LT.insert (tnum tSideValue2) tSideValue2 $
+      LT.insert (tnum tNoBidDescriptors) gNoBidDescriptors''' $
+      LT.insert (tnum tNoBidComponents) gNoBidComponents''' $
+      LT.insert (tnum tLiquidityIndType) tLiquidityIndType $
+      LT.insert (tnum tWtAverageLiquidity) tWtAverageLiquidity $
+      LT.insert (tnum tExchangeForPhysical) tExchangeForPhysical $
+      LT.insert (tnum tOutMainCntryUIndex) tOutMainCntryUIndex $
+      LT.insert (tnum tCrossPercent) tCrossPercent $
+      LT.insert (tnum tProgRptReqs) tProgRptReqs $
+      LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+      LT.insert (tnum tIncTaxInd) tIncTaxInd $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tNumBidders) tNumBidders $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTradeType) tTradeType $
+      LT.insert (tnum tBasisPxType) tBasisPxType $
+      LT.insert (tnum tStrikeTime) tStrikeTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoBidComponents''' = FIXTag
+            { tName = "NoBidComponents"
+            , tnum = tnum tNoBidComponents
+            , tparser = gNoBidComponentsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidComponentsSpec''' }
+
+         gNoBidComponentsP''' = groupP gNoBidComponentsSpec'''
+         gNoBidComponentsSpec''' = FGSpec
+            { gsLength = tNoBidComponents
+            , gsSeperator = tListID
+            , gsBody = gNoBidComponentsBody''' }
+            where
+            gNoBidComponentsBody''' = 
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tNetGrossInd) tNetGrossInd $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tAccount) tAccount                LT.new
+
+         gNoBidDescriptors''' = FIXTag
+            { tName = "NoBidDescriptors"
+            , tnum = tnum tNoBidDescriptors
+            , tparser = gNoBidDescriptorsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidDescriptorsSpec''' }
+
+         gNoBidDescriptorsP''' = groupP gNoBidDescriptorsSpec'''
+         gNoBidDescriptorsSpec''' = FGSpec
+            { gsLength = tNoBidDescriptors
+            , gsSeperator = tBidDescriptorType
+            , gsBody = gNoBidDescriptorsBody''' }
+            where
+            gNoBidDescriptorsBody''' = 
+               LT.insert (tnum tBidDescriptor) tBidDescriptor $
+               LT.insert (tnum tSideValueInd) tSideValueInd $
+               LT.insert (tnum tLiquidityValue) tLiquidityValue $
+               LT.insert (tnum tLiquidityNumSecurities) tLiquidityNumSecurities $
+               LT.insert (tnum tLiquidityPctLow) tLiquidityPctLow $
+               LT.insert (tnum tLiquidityPctHigh) tLiquidityPctHigh $
+               LT.insert (tnum tEFPTrackingError) tEFPTrackingError $
+               LT.insert (tnum tFairValue) tFairValue $
+               LT.insert (tnum tOutsideIndexPct) tOutsideIndexPct $
+               LT.insert (tnum tValueOfFutures) tValueOfFutures                LT.new
+
+
+
+mBidResponse :: FIXMessageSpec
+mBidResponse = FMSpec
+   { msName = "BidResponse"
+   , msType = C.pack "l"
+   , msHeader = headerFIX43
+   , msBody = mBidResponseBody
+   , msTrailer = trailerFIX43 }
+   where
+   mBidResponseBody = 
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tNoBidComponents) gNoBidComponents'''       LT.new
+      where
+         gNoBidComponents''' = FIXTag
+            { tName = "NoBidComponents"
+            , tnum = tnum tNoBidComponents
+            , tparser = gNoBidComponentsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidComponentsSpec''' }
+
+         gNoBidComponentsP''' = groupP gNoBidComponentsSpec'''
+         gNoBidComponentsSpec''' = FGSpec
+            { gsLength = tNoBidComponents
+            , gsSeperator = tCommission
+            , gsBody = gNoBidComponentsBody''' }
+            where
+            gNoBidComponentsBody''' = 
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tCountry) tCountry $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tFairValue) tFairValue $
+               LT.insert (tnum tNetGrossInd) tNetGrossInd $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mListStrikePrice :: FIXMessageSpec
+mListStrikePrice = FMSpec
+   { msName = "ListStrikePrice"
+   , msType = C.pack "m"
+   , msHeader = headerFIX43
+   , msBody = mListStrikePriceBody
+   , msTrailer = trailerFIX43 }
+   where
+   mListStrikePriceBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tTotNoStrikes) tTotNoStrikes $
+      LT.insert (tnum tNoStrikes) gNoStrikes'''       LT.new
+      where
+         gNoStrikes''' = FIXTag
+            { tName = "NoStrikes"
+            , tnum = tnum tNoStrikes
+            , tparser = gNoStrikesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStrikesSpec''' }
+
+         gNoStrikesP''' = groupP gNoStrikesSpec'''
+         gNoStrikesSpec''' = FGSpec
+            { gsLength = tNoStrikes
+            , gsSeperator = tSymbol
+            , gsBody = gNoStrikesBody''' }
+            where
+            gNoStrikesBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+
+
+mRegistrationInstructions :: FIXMessageSpec
+mRegistrationInstructions = FMSpec
+   { msName = "RegistrationInstructions"
+   , msType = C.pack "o"
+   , msHeader = headerFIX43
+   , msBody = mRegistrationInstructionsBody
+   , msTrailer = trailerFIX43 }
+   where
+   mRegistrationInstructionsBody = 
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tRegistTransType) tRegistTransType $
+      LT.insert (tnum tRegistRefID) tRegistRefID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tRegistAcctType) tRegistAcctType $
+      LT.insert (tnum tTaxAdvantageType) tTaxAdvantageType $
+      LT.insert (tnum tOwnershipType) tOwnershipType $
+      LT.insert (tnum tNoRegistDtls) gNoRegistDtls''' $
+      LT.insert (tnum tNoDistribInsts) gNoDistribInsts'''       LT.new
+      where
+         gNoDistribInsts''' = FIXTag
+            { tName = "NoDistribInsts"
+            , tnum = tnum tNoDistribInsts
+            , tparser = gNoDistribInstsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDistribInstsSpec''' }
+
+         gNoDistribInstsP''' = groupP gNoDistribInstsSpec'''
+         gNoDistribInstsSpec''' = FGSpec
+            { gsLength = tNoDistribInsts
+            , gsSeperator = tDistribPaymentMethod
+            , gsBody = gNoDistribInstsBody''' }
+            where
+            gNoDistribInstsBody''' = 
+               LT.insert (tnum tDistribPercentage) tDistribPercentage $
+               LT.insert (tnum tCashDistribCurr) tCashDistribCurr $
+               LT.insert (tnum tCashDistribAgentName) tCashDistribAgentName $
+               LT.insert (tnum tCashDistribAgentCode) tCashDistribAgentCode $
+               LT.insert (tnum tCashDistribAgentAcctNumber) tCashDistribAgentAcctNumber $
+               LT.insert (tnum tCashDistribPayRef) tCashDistribPayRef                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoRegistDtls''' = FIXTag
+            { tName = "NoRegistDtls"
+            , tnum = tnum tNoRegistDtls
+            , tparser = gNoRegistDtlsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRegistDtlsSpec''' }
+
+         gNoRegistDtlsP''' = groupP gNoRegistDtlsSpec'''
+         gNoRegistDtlsSpec''' = FGSpec
+            { gsLength = tNoRegistDtls
+            , gsSeperator = tRegistDetls
+            , gsBody = gNoRegistDtlsBody''' }
+            where
+            gNoRegistDtlsBody''' = 
+               LT.insert (tnum tRegistEmail) tRegistEmail $
+               LT.insert (tnum tMailingDtls) tMailingDtls $
+               LT.insert (tnum tMailingInst) tMailingInst $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tOwnerType) tOwnerType $
+               LT.insert (tnum tDateOfBirth) tDateOfBirth $
+               LT.insert (tnum tInvestorCountryOfResidence) tInvestorCountryOfResidence                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+
+
+mRegistrationInstructionsResponse :: FIXMessageSpec
+mRegistrationInstructionsResponse = FMSpec
+   { msName = "RegistrationInstructionsResponse"
+   , msType = C.pack "p"
+   , msHeader = headerFIX43
+   , msBody = mRegistrationInstructionsResponseBody
+   , msTrailer = trailerFIX43 }
+   where
+   mRegistrationInstructionsResponseBody = 
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tRegistTransType) tRegistTransType $
+      LT.insert (tnum tRegistRefID) tRegistRefID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tRegistStatus) tRegistStatus $
+      LT.insert (tnum tRegistRejReasonCode) tRegistRejReasonCode $
+      LT.insert (tnum tRegistRejReasonText) tRegistRejReasonText       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+
+
+mOrderMassCancelRequest :: FIXMessageSpec
+mOrderMassCancelRequest = FMSpec
+   { msName = "OrderMassCancelRequest"
+   , msType = C.pack "q"
+   , msHeader = headerFIX43
+   , msBody = mOrderMassCancelRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderMassCancelRequestBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tMassCancelRequestType) tMassCancelRequestType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+
+
+mOrderMassCancelReport :: FIXMessageSpec
+mOrderMassCancelReport = FMSpec
+   { msName = "OrderMassCancelReport"
+   , msType = C.pack "r"
+   , msHeader = headerFIX43
+   , msBody = mOrderMassCancelReportBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderMassCancelReportBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tMassCancelRequestType) tMassCancelRequestType $
+      LT.insert (tnum tMassCancelResponse) tMassCancelResponse $
+      LT.insert (tnum tMassCancelRejectReason) tMassCancelRejectReason $
+      LT.insert (tnum tTotalAffectedOrders) tTotalAffectedOrders $
+      LT.insert (tnum tNoAffectedOrders) gNoAffectedOrders''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoAffectedOrders''' = FIXTag
+            { tName = "NoAffectedOrders"
+            , tnum = tnum tNoAffectedOrders
+            , tparser = gNoAffectedOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAffectedOrdersSpec''' }
+
+         gNoAffectedOrdersP''' = groupP gNoAffectedOrdersSpec'''
+         gNoAffectedOrdersSpec''' = FGSpec
+            { gsLength = tNoAffectedOrders
+            , gsSeperator = tOrigClOrdID
+            , gsBody = gNoAffectedOrdersBody''' }
+            where
+            gNoAffectedOrdersBody''' = 
+               LT.insert (tnum tAffectedOrderID) tAffectedOrderID $
+               LT.insert (tnum tAffectedSecondaryOrderID) tAffectedSecondaryOrderID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+
+
+mNewOrderCross :: FIXMessageSpec
+mNewOrderCross = FMSpec
+   { msName = "NewOrderCross"
+   , msType = C.pack "s"
+   , msHeader = headerFIX43
+   , msBody = mNewOrderCrossBody
+   , msTrailer = trailerFIX43 }
+   where
+   mNewOrderCrossBody = 
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+      LT.insert (tnum tNoSides) gNoSides''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tNetMoney) tNetMoney       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tDayBookingInst) tDayBookingInst $
+               LT.insert (tnum tBookingUnit) tBookingUnit $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tQuantityType) tQuantityType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tCashMargin) tCashMargin $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tSideComplianceID) tSideComplianceID                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNestedPartySubID) tNestedPartySubID                                  LT.new
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tPartySubID) tPartySubID                         LT.new
+
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mCrossOrderCancelRequest :: FIXMessageSpec
+mCrossOrderCancelRequest = FMSpec
+   { msName = "CrossOrderCancelRequest"
+   , msType = C.pack "u"
+   , msHeader = headerFIX43
+   , msBody = mCrossOrderCancelRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mCrossOrderCancelRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tOrigCrossID) tOrigCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+      LT.insert (tnum tNoSides) gNoSides''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tTransactTime) tTransactTime       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tPartySubID) tPartySubID                         LT.new
+
+
+
+
+mCrossOrderCancelReplaceRequest :: FIXMessageSpec
+mCrossOrderCancelReplaceRequest = FMSpec
+   { msName = "CrossOrderCancelReplaceRequest"
+   , msType = C.pack "t"
+   , msHeader = headerFIX43
+   , msBody = mCrossOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mCrossOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tOrigCrossID) tOrigCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+      LT.insert (tnum tNoSides) gNoSides''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tNetMoney) tNetMoney       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tDayBookingInst) tDayBookingInst $
+               LT.insert (tnum tBookingUnit) tBookingUnit $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tQuantityType) tQuantityType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tCashMargin) tCashMargin $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tSideComplianceID) tSideComplianceID                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNestedPartySubID) tNestedPartySubID                                  LT.new
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tPartySubID) tPartySubID                         LT.new
+
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mSecurityTypeRequest :: FIXMessageSpec
+mSecurityTypeRequest = FMSpec
+   { msName = "SecurityTypeRequest"
+   , msType = C.pack "v"
+   , msHeader = headerFIX43
+   , msBody = mSecurityTypeRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityTypeRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID       LT.new
+
+
+mSecurityTypes :: FIXMessageSpec
+mSecurityTypes = FMSpec
+   { msName = "SecurityTypes"
+   , msType = C.pack "w"
+   , msHeader = headerFIX43
+   , msBody = mSecurityTypesBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityTypesBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+      LT.insert (tnum tTotalNumSecurityTypes) tTotalNumSecurityTypes $
+      LT.insert (tnum tNoSecurityTypes) gNoSecurityTypes''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoSecurityTypes''' = FIXTag
+            { tName = "NoSecurityTypes"
+            , tnum = tnum tNoSecurityTypes
+            , tparser = gNoSecurityTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityTypesSpec''' }
+
+         gNoSecurityTypesP''' = groupP gNoSecurityTypesSpec'''
+         gNoSecurityTypesSpec''' = FGSpec
+            { gsLength = tNoSecurityTypes
+            , gsSeperator = tSecurityType
+            , gsBody = gNoSecurityTypesBody''' }
+            where
+            gNoSecurityTypesBody''' = 
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode                LT.new
+
+
+
+mSecurityListRequest :: FIXMessageSpec
+mSecurityListRequest = FMSpec
+   { msName = "SecurityListRequest"
+   , msType = C.pack "x"
+   , msHeader = headerFIX43
+   , msBody = mSecurityListRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityListRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityListRequestType) tSecurityListRequestType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mSecurityList :: FIXMessageSpec
+mSecurityList = FMSpec
+   { msName = "SecurityList"
+   , msType = C.pack "y"
+   , msHeader = headerFIX43
+   , msBody = mSecurityListBody
+   , msTrailer = trailerFIX43 }
+   where
+   mSecurityListBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityRequestResult) tSecurityRequestResult $
+      LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tRoundLot) tRoundLot $
+               LT.insert (tnum tMinTradeVol) tMinTradeVol $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+
+
+mDerivativeSecurityListRequest :: FIXMessageSpec
+mDerivativeSecurityListRequest = FMSpec
+   { msName = "DerivativeSecurityListRequest"
+   , msType = C.pack "z"
+   , msHeader = headerFIX43
+   , msBody = mDerivativeSecurityListRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mDerivativeSecurityListRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityListRequestType) tSecurityListRequestType $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+
+
+mDerivativeSecurityList :: FIXMessageSpec
+mDerivativeSecurityList = FMSpec
+   { msName = "DerivativeSecurityList"
+   , msType = C.pack "AA"
+   , msHeader = headerFIX43
+   , msBody = mDerivativeSecurityListBody
+   , msTrailer = trailerFIX43 }
+   where
+   mDerivativeSecurityListBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityRequestResult) tSecurityRequestResult $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+
+
+mNewOrderMultileg :: FIXMessageSpec
+mNewOrderMultileg = FMSpec
+   { msName = "NewOrderMultileg"
+   , msType = C.pack "AB"
+   , msHeader = headerFIX43
+   , msBody = mNewOrderMultilegBody
+   , msTrailer = trailerFIX43 }
+   where
+   mNewOrderMultilegBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tQuantityType) tQuantityType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tMultiLegRptTypeReq) tMultiLegRptTypeReq $
+      LT.insert (tnum tNetMoney) tNetMoney       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlmntTyp) tLegSettlmntTyp $
+               LT.insert (tnum tLegFutSettDate) tLegFutSettDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mMultilegOrderCancelReplaceRequest :: FIXMessageSpec
+mMultilegOrderCancelReplaceRequest = FMSpec
+   { msName = "MultilegOrderCancelReplaceRequest"
+   , msType = C.pack "AC"
+   , msHeader = headerFIX43
+   , msBody = mMultilegOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mMultilegOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tQuantityType) tQuantityType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIid) tIOIid $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegDifference) tPegDifference $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tMultiLegRptTypeReq) tMultiLegRptTypeReq $
+      LT.insert (tnum tNetMoney) tNetMoney       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlmntTyp) tLegSettlmntTyp $
+               LT.insert (tnum tLegFutSettDate) tLegFutSettDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNestedPartySubID) tNestedPartySubID                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+
+
+mTradeCaptureReportRequest :: FIXMessageSpec
+mTradeCaptureReportRequest = FMSpec
+   { msName = "TradeCaptureReportRequest"
+   , msType = C.pack "AD"
+   , msHeader = headerFIX43
+   , msBody = mTradeCaptureReportRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mTradeCaptureReportRequestBody = 
+      LT.insert (tnum tTradeRequestID) tTradeRequestID $
+      LT.insert (tnum tTradeRequestType) tTradeRequestType $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tNoDates) gNoDates''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradeInputSource) tTradeInputSource $
+      LT.insert (tnum tTradeInputDevice) tTradeInputDevice       LT.new
+      where
+         gNoDates''' = FIXTag
+            { tName = "NoDates"
+            , tnum = tnum tNoDates
+            , tparser = gNoDatesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDatesSpec''' }
+
+         gNoDatesP''' = groupP gNoDatesSpec'''
+         gNoDatesSpec''' = FGSpec
+            { gsLength = tNoDates
+            , gsSeperator = tTradeDate
+            , gsBody = gNoDatesBody''' }
+            where
+            gNoDatesBody''' = 
+               LT.insert (tnum tTransactTime) tTransactTime                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+mTradeCaptureReport :: FIXMessageSpec
+mTradeCaptureReport = FMSpec
+   { msName = "TradeCaptureReport"
+   , msType = C.pack "AE"
+   , msHeader = headerFIX43
+   , msBody = mTradeCaptureReportBody
+   , msTrailer = trailerFIX43 }
+   where
+   mTradeCaptureReportBody = 
+      LT.insert (tnum tTradeReportID) tTradeReportID $
+      LT.insert (tnum tTradeReportTransType) tTradeReportTransType $
+      LT.insert (tnum tTradeRequestID) tTradeRequestID $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tTradeReportRefID) tTradeReportRefID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+      LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+      LT.insert (tnum tPreviouslyReported) tPreviouslyReported $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tLastQty) tLastQty $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tLastSpotRate) tLastSpotRate $
+      LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tMatchType) tMatchType $
+      LT.insert (tnum tNoSides) gNoSides'''       LT.new
+      where
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tOddLot) tOddLot $
+               LT.insert (tnum tNoClearingInstructions) gNoClearingInstructions'''''' $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tTradeInputSource) tTradeInputSource $
+               LT.insert (tnum tTradeInputDevice) tTradeInputDevice $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tTransBkdTime) tTransBkdTime $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+               LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+               LT.insert (tnum tExDate) tExDate $
+               LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+               LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+               LT.insert (tnum tConcession) tConcession $
+               LT.insert (tnum tTotalTakedown) tTotalTakedown $
+               LT.insert (tnum tNetMoney) tNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+               LT.insert (tnum tNoContAmts) gNoContAmts'''''' $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees''''''                LT.new
+               where
+                  gNoClearingInstructions'''''' = FIXTag
+                     { tName = "NoClearingInstructions"
+                     , tnum = tnum tNoClearingInstructions
+                     , tparser = gNoClearingInstructionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoClearingInstructionsSpec'''''' }
+
+                  gNoClearingInstructionsP'''''' = groupP gNoClearingInstructionsSpec''''''
+                  gNoClearingInstructionsSpec'''''' = FGSpec
+                     { gsLength = tNoClearingInstructions
+                     , gsSeperator = tClearingInstruction
+                     , gsBody = gNoClearingInstructionsBody'''''' }
+                     where
+                     gNoClearingInstructionsBody'''''' = 
+                        LT.new
+
+                  gNoContAmts'''''' = FIXTag
+                     { tName = "NoContAmts"
+                     , tnum = tnum tNoContAmts
+                     , tparser = gNoContAmtsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoContAmtsSpec'''''' }
+
+                  gNoContAmtsP'''''' = groupP gNoContAmtsSpec''''''
+                  gNoContAmtsSpec'''''' = FGSpec
+                     { gsLength = tNoContAmts
+                     , gsSeperator = tContAmtType
+                     , gsBody = gNoContAmtsBody'''''' }
+                     where
+                     gNoContAmtsBody'''''' = 
+                        LT.insert (tnum tContAmtValue) tContAmtValue $
+                        LT.insert (tnum tContAmtCurr) tContAmtCurr                         LT.new
+
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType                         LT.new
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tPartySubID) tPartySubID                         LT.new
+
+
+
+
+mOrderMassStatusRequest :: FIXMessageSpec
+mOrderMassStatusRequest = FMSpec
+   { msName = "OrderMassStatusRequest"
+   , msType = C.pack "AF"
+   , msHeader = headerFIX43
+   , msBody = mOrderMassStatusRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mOrderMassStatusRequestBody = 
+      LT.insert (tnum tMassStatusReqID) tMassStatusReqID $
+      LT.insert (tnum tMassStatusReqType) tMassStatusReqType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tSide) tSide       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+
+
+mQuoteRequestReject :: FIXMessageSpec
+mQuoteRequestReject = FMSpec
+   { msName = "QuoteRequestReject"
+   , msType = C.pack "AG"
+   , msHeader = headerFIX43
+   , msBody = mQuoteRequestRejectBody
+   , msTrailer = trailerFIX43 }
+   where
+   mQuoteRequestRejectBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tRFQReqID) tRFQReqID $
+      LT.insert (tnum tQuoteRequestRejectReason) tQuoteRequestRejectReason $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tQuoteType) tQuoteType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tQuantityType) tQuantityType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+               LT.insert (tnum tFutSettDate) tFutSettDate $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPrice2) tPrice2 $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+
+
+
+mRFQRequest :: FIXMessageSpec
+mRFQRequest = FMSpec
+   { msName = "RFQRequest"
+   , msType = C.pack "AH"
+   , msHeader = headerFIX43
+   , msBody = mRFQRequestBody
+   , msTrailer = trailerFIX43 }
+   where
+   mRFQRequestBody = 
+      LT.insert (tnum tRFQReqID) tRFQReqID $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tQuoteType) tQuoteType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+               where
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+
+
+mQuoteStatusReport :: FIXMessageSpec
+mQuoteStatusReport = FMSpec
+   { msName = "QuoteStatusReport"
+   , msType = C.pack "AI"
+   , msHeader = headerFIX43
+   , msBody = mQuoteStatusReportBody
+   , msTrailer = trailerFIX43 }
+   where
+   mQuoteStatusReportBody = 
+      LT.insert (tnum tQuoteStatusReqID) tQuoteStatusReqID $
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tMktBidPx) tMktBidPx $
+      LT.insert (tnum tMktOfferPx) tMktOfferPx $
+      LT.insert (tnum tMinBidSize) tMinBidSize $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tMinOfferSize) tMinOfferSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tMidPx) tMidPx $
+      LT.insert (tnum tBidYield) tBidYield $
+      LT.insert (tnum tMidYield) tMidYield $
+      LT.insert (tnum tOfferYield) tOfferYield $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tFutSettDate) tFutSettDate $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+      LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+      LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tQuoteStatus) tQuoteStatus       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tPartySubID) tPartySubID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+
+
+fix43 :: FIXSpec
+fix43 = FSpec
+   { fsVersion = "FIX.4.3"
+   , fsHeader = headerFIX43
+   , fsTrailer = trailerFIX43
+   , fsMessages = fix43Messages 
+   , fsTags = fix43Tags }
+   where
+      fix43Messages =
+          LT.insert (msType mHeartbeat) mHeartbeat $
+          LT.insert (msType mTestRequest) mTestRequest $
+          LT.insert (msType mResendRequest) mResendRequest $
+          LT.insert (msType mReject) mReject $
+          LT.insert (msType mSequenceReset) mSequenceReset $
+          LT.insert (msType mLogout) mLogout $
+          LT.insert (msType mIOI) mIOI $
+          LT.insert (msType mAdvertisement) mAdvertisement $
+          LT.insert (msType mExecutionReport) mExecutionReport $
+          LT.insert (msType mOrderCancelReject) mOrderCancelReject $
+          LT.insert (msType mLogon) mLogon $
+          LT.insert (msType mNews) mNews $
+          LT.insert (msType mEmail) mEmail $
+          LT.insert (msType mNewOrderSingle) mNewOrderSingle $
+          LT.insert (msType mNewOrderList) mNewOrderList $
+          LT.insert (msType mOrderCancelRequest) mOrderCancelRequest $
+          LT.insert (msType mOrderCancelReplaceRequest) mOrderCancelReplaceRequest $
+          LT.insert (msType mOrderStatusRequest) mOrderStatusRequest $
+          LT.insert (msType mAllocation) mAllocation $
+          LT.insert (msType mListCancelRequest) mListCancelRequest $
+          LT.insert (msType mListExecute) mListExecute $
+          LT.insert (msType mListStatusRequest) mListStatusRequest $
+          LT.insert (msType mListStatus) mListStatus $
+          LT.insert (msType mAllocationAck) mAllocationAck $
+          LT.insert (msType mDontKnowTrade) mDontKnowTrade $
+          LT.insert (msType mQuoteRequest) mQuoteRequest $
+          LT.insert (msType mQuote) mQuote $
+          LT.insert (msType mSettlementInstructions) mSettlementInstructions $
+          LT.insert (msType mMarketDataRequest) mMarketDataRequest $
+          LT.insert (msType mMarketDataSnapshotFullRefresh) mMarketDataSnapshotFullRefresh $
+          LT.insert (msType mMarketDataIncrementalRefresh) mMarketDataIncrementalRefresh $
+          LT.insert (msType mMarketDataRequestReject) mMarketDataRequestReject $
+          LT.insert (msType mQuoteCancel) mQuoteCancel $
+          LT.insert (msType mQuoteStatusRequest) mQuoteStatusRequest $
+          LT.insert (msType mMassQuoteAcknowledgement) mMassQuoteAcknowledgement $
+          LT.insert (msType mSecurityDefinitionRequest) mSecurityDefinitionRequest $
+          LT.insert (msType mSecurityDefinition) mSecurityDefinition $
+          LT.insert (msType mSecurityStatusRequest) mSecurityStatusRequest $
+          LT.insert (msType mSecurityStatus) mSecurityStatus $
+          LT.insert (msType mTradingSessionStatusRequest) mTradingSessionStatusRequest $
+          LT.insert (msType mTradingSessionStatus) mTradingSessionStatus $
+          LT.insert (msType mMassQuote) mMassQuote $
+          LT.insert (msType mBusinessMessageReject) mBusinessMessageReject $
+          LT.insert (msType mBidRequest) mBidRequest $
+          LT.insert (msType mBidResponse) mBidResponse $
+          LT.insert (msType mListStrikePrice) mListStrikePrice $
+          LT.insert (msType mRegistrationInstructions) mRegistrationInstructions $
+          LT.insert (msType mRegistrationInstructionsResponse) mRegistrationInstructionsResponse $
+          LT.insert (msType mOrderMassCancelRequest) mOrderMassCancelRequest $
+          LT.insert (msType mOrderMassCancelReport) mOrderMassCancelReport $
+          LT.insert (msType mNewOrderCross) mNewOrderCross $
+          LT.insert (msType mCrossOrderCancelRequest) mCrossOrderCancelRequest $
+          LT.insert (msType mCrossOrderCancelReplaceRequest) mCrossOrderCancelReplaceRequest $
+          LT.insert (msType mSecurityTypeRequest) mSecurityTypeRequest $
+          LT.insert (msType mSecurityTypes) mSecurityTypes $
+          LT.insert (msType mSecurityListRequest) mSecurityListRequest $
+          LT.insert (msType mSecurityList) mSecurityList $
+          LT.insert (msType mDerivativeSecurityListRequest) mDerivativeSecurityListRequest $
+          LT.insert (msType mDerivativeSecurityList) mDerivativeSecurityList $
+          LT.insert (msType mNewOrderMultileg) mNewOrderMultileg $
+          LT.insert (msType mMultilegOrderCancelReplaceRequest) mMultilegOrderCancelReplaceRequest $
+          LT.insert (msType mTradeCaptureReportRequest) mTradeCaptureReportRequest $
+          LT.insert (msType mTradeCaptureReport) mTradeCaptureReport $
+          LT.insert (msType mOrderMassStatusRequest) mOrderMassStatusRequest $
+          LT.insert (msType mQuoteRequestReject) mQuoteRequestReject $
+          LT.insert (msType mRFQRequest) mRFQRequest $
+          LT.insert (msType mQuoteStatusReport) mQuoteStatusReport           LT.new 
+      fix43Tags =
+          LT.insert (tnum tAccount) tAccount $
+          LT.insert (tnum tAdvId) tAdvId $
+          LT.insert (tnum tAdvRefID) tAdvRefID $
+          LT.insert (tnum tAdvSide) tAdvSide $
+          LT.insert (tnum tAdvTransType) tAdvTransType $
+          LT.insert (tnum tAvgPx) tAvgPx $
+          LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+          LT.insert (tnum tBeginString) tBeginString $
+          LT.insert (tnum tBodyLength) tBodyLength $
+          LT.insert (tnum tCheckSum) tCheckSum $
+          LT.insert (tnum tClOrdID) tClOrdID $
+          LT.insert (tnum tCommission) tCommission $
+          LT.insert (tnum tCommType) tCommType $
+          LT.insert (tnum tCumQty) tCumQty $
+          LT.insert (tnum tCurrency) tCurrency $
+          LT.insert (tnum tEndSeqNo) tEndSeqNo $
+          LT.insert (tnum tExecID) tExecID $
+          LT.insert (tnum tExecInst) tExecInst $
+          LT.insert (tnum tExecRefID) tExecRefID $
+          LT.insert (tnum tExecTransType) tExecTransType $
+          LT.insert (tnum tHandlInst) tHandlInst $
+          LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+          LT.insert (tnum tIOIid) tIOIid $
+          LT.insert (tnum tIOIOthSvc) tIOIOthSvc $
+          LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+          LT.insert (tnum tIOIRefID) tIOIRefID $
+          LT.insert (tnum tIOIQty) tIOIQty $
+          LT.insert (tnum tIOITransType) tIOITransType $
+          LT.insert (tnum tLastCapacity) tLastCapacity $
+          LT.insert (tnum tLastMkt) tLastMkt $
+          LT.insert (tnum tLastPx) tLastPx $
+          LT.insert (tnum tLastQty) tLastQty $
+          LT.insert (tnum tLinesOfText) tLinesOfText $
+          LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+          LT.insert (tnum tMsgType) tMsgType $
+          LT.insert (tnum tNewSeqNo) tNewSeqNo $
+          LT.insert (tnum tOrderID) tOrderID $
+          LT.insert (tnum tOrderQty) tOrderQty $
+          LT.insert (tnum tOrdStatus) tOrdStatus $
+          LT.insert (tnum tOrdType) tOrdType $
+          LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+          LT.insert (tnum tOrigTime) tOrigTime $
+          LT.insert (tnum tPossDupFlag) tPossDupFlag $
+          LT.insert (tnum tPrice) tPrice $
+          LT.insert (tnum tRefSeqNum) tRefSeqNum $
+          LT.insert (tnum tRelatdSym) tRelatdSym $
+          LT.insert (tnum tRule80A) tRule80A $
+          LT.insert (tnum tSecurityID) tSecurityID $
+          LT.insert (tnum tSenderCompID) tSenderCompID $
+          LT.insert (tnum tSenderSubID) tSenderSubID $
+          LT.insert (tnum tSendingDate) tSendingDate $
+          LT.insert (tnum tSendingTime) tSendingTime $
+          LT.insert (tnum tQuantity) tQuantity $
+          LT.insert (tnum tSide) tSide $
+          LT.insert (tnum tSymbol) tSymbol $
+          LT.insert (tnum tTargetCompID) tTargetCompID $
+          LT.insert (tnum tTargetSubID) tTargetSubID $
+          LT.insert (tnum tText) tText $
+          LT.insert (tnum tTimeInForce) tTimeInForce $
+          LT.insert (tnum tTransactTime) tTransactTime $
+          LT.insert (tnum tUrgency) tUrgency $
+          LT.insert (tnum tValidUntilTime) tValidUntilTime $
+          LT.insert (tnum tSettlmntTyp) tSettlmntTyp $
+          LT.insert (tnum tFutSettDate) tFutSettDate $
+          LT.insert (tnum tSymbolSfx) tSymbolSfx $
+          LT.insert (tnum tListID) tListID $
+          LT.insert (tnum tListSeqNo) tListSeqNo $
+          LT.insert (tnum tTotNoOrders) tTotNoOrders $
+          LT.insert (tnum tListExecInst) tListExecInst $
+          LT.insert (tnum tAllocID) tAllocID $
+          LT.insert (tnum tAllocTransType) tAllocTransType $
+          LT.insert (tnum tRefAllocID) tRefAllocID $
+          LT.insert (tnum tNoOrders) tNoOrders $
+          LT.insert (tnum tAvgPrxPrecision) tAvgPrxPrecision $
+          LT.insert (tnum tTradeDate) tTradeDate $
+          LT.insert (tnum tExecBroker) tExecBroker $
+          LT.insert (tnum tPositionEffect) tPositionEffect $
+          LT.insert (tnum tNoAllocs) tNoAllocs $
+          LT.insert (tnum tAllocAccount) tAllocAccount $
+          LT.insert (tnum tAllocQty) tAllocQty $
+          LT.insert (tnum tProcessCode) tProcessCode $
+          LT.insert (tnum tNoRpts) tNoRpts $
+          LT.insert (tnum tRptSeq) tRptSeq $
+          LT.insert (tnum tCxlQty) tCxlQty $
+          LT.insert (tnum tNoDlvyInst) tNoDlvyInst $
+          LT.insert (tnum tDlvyInst) tDlvyInst $
+          LT.insert (tnum tAllocStatus) tAllocStatus $
+          LT.insert (tnum tAllocRejCode) tAllocRejCode $
+          LT.insert (tnum tSignature) tSignature $
+          LT.insert (tnum tSecureDataLen) tSecureDataLen $
+          LT.insert (tnum tSecureData) tSecureData $
+          LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+          LT.insert (tnum tSignatureLength) tSignatureLength $
+          LT.insert (tnum tEmailType) tEmailType $
+          LT.insert (tnum tRawDataLength) tRawDataLength $
+          LT.insert (tnum tRawData) tRawData $
+          LT.insert (tnum tPossResend) tPossResend $
+          LT.insert (tnum tEncryptMethod) tEncryptMethod $
+          LT.insert (tnum tStopPx) tStopPx $
+          LT.insert (tnum tExDestination) tExDestination $
+          LT.insert (tnum tCxlRejReason) tCxlRejReason $
+          LT.insert (tnum tOrdRejReason) tOrdRejReason $
+          LT.insert (tnum tIOIQualifier) tIOIQualifier $
+          LT.insert (tnum tWaveNo) tWaveNo $
+          LT.insert (tnum tIssuer) tIssuer $
+          LT.insert (tnum tSecurityDesc) tSecurityDesc $
+          LT.insert (tnum tHeartBtInt) tHeartBtInt $
+          LT.insert (tnum tClientID) tClientID $
+          LT.insert (tnum tMinQty) tMinQty $
+          LT.insert (tnum tMaxFloor) tMaxFloor $
+          LT.insert (tnum tTestReqID) tTestReqID $
+          LT.insert (tnum tReportToExch) tReportToExch $
+          LT.insert (tnum tLocateReqd) tLocateReqd $
+          LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+          LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+          LT.insert (tnum tQuoteID) tQuoteID $
+          LT.insert (tnum tNetMoney) tNetMoney $
+          LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+          LT.insert (tnum tSettlCurrency) tSettlCurrency $
+          LT.insert (tnum tForexReq) tForexReq $
+          LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+          LT.insert (tnum tGapFillFlag) tGapFillFlag $
+          LT.insert (tnum tNoExecs) tNoExecs $
+          LT.insert (tnum tCxlType) tCxlType $
+          LT.insert (tnum tExpireTime) tExpireTime $
+          LT.insert (tnum tDKReason) tDKReason $
+          LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+          LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+          LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+          LT.insert (tnum tQuoteReqID) tQuoteReqID $
+          LT.insert (tnum tBidPx) tBidPx $
+          LT.insert (tnum tOfferPx) tOfferPx $
+          LT.insert (tnum tBidSize) tBidSize $
+          LT.insert (tnum tOfferSize) tOfferSize $
+          LT.insert (tnum tNoMiscFees) tNoMiscFees $
+          LT.insert (tnum tMiscFeeAmt) tMiscFeeAmt $
+          LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+          LT.insert (tnum tMiscFeeType) tMiscFeeType $
+          LT.insert (tnum tPrevClosePx) tPrevClosePx $
+          LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+          LT.insert (tnum tSenderLocationID) tSenderLocationID $
+          LT.insert (tnum tTargetLocationID) tTargetLocationID $
+          LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+          LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+          LT.insert (tnum tNoRelatedSym) tNoRelatedSym $
+          LT.insert (tnum tSubject) tSubject $
+          LT.insert (tnum tHeadline) tHeadline $
+          LT.insert (tnum tURLLink) tURLLink $
+          LT.insert (tnum tExecType) tExecType $
+          LT.insert (tnum tLeavesQty) tLeavesQty $
+          LT.insert (tnum tCashOrderQty) tCashOrderQty $
+          LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+          LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+          LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+          LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+          LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+          LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+          LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+          LT.insert (tnum tSettlInstMode) tSettlInstMode $
+          LT.insert (tnum tAllocText) tAllocText $
+          LT.insert (tnum tSettlInstID) tSettlInstID $
+          LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+          LT.insert (tnum tEmailThreadID) tEmailThreadID $
+          LT.insert (tnum tSettlInstSource) tSettlInstSource $
+          LT.insert (tnum tSettlLocation) tSettlLocation $
+          LT.insert (tnum tSecurityType) tSecurityType $
+          LT.insert (tnum tEffectiveTime) tEffectiveTime $
+          LT.insert (tnum tStandInstDbType) tStandInstDbType $
+          LT.insert (tnum tStandInstDbName) tStandInstDbName $
+          LT.insert (tnum tStandInstDbID) tStandInstDbID $
+          LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+          LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+          LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+          LT.insert (tnum tSettlInstCode) tSettlInstCode $
+          LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+          LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+          LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+          LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+          LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+          LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+          LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+          LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+          LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+          LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+          LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+          LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone $
+          LT.insert (tnum tBidSpotRate) tBidSpotRate $
+          LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+          LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+          LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+          LT.insert (tnum tOrderQty2) tOrderQty2 $
+          LT.insert (tnum tFutSettDate2) tFutSettDate2 $
+          LT.insert (tnum tLastSpotRate) tLastSpotRate $
+          LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+          LT.insert (tnum tAllocLinkID) tAllocLinkID $
+          LT.insert (tnum tAllocLinkType) tAllocLinkType $
+          LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+          LT.insert (tnum tNoIOIQualifiers) tNoIOIQualifiers $
+          LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+          LT.insert (tnum tPutOrCall) tPutOrCall $
+          LT.insert (tnum tStrikePrice) tStrikePrice $
+          LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+          LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+          LT.insert (tnum tMaturityDay) tMaturityDay $
+          LT.insert (tnum tOptAttribute) tOptAttribute $
+          LT.insert (tnum tSecurityExchange) tSecurityExchange $
+          LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+          LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+          LT.insert (tnum tMaxShow) tMaxShow $
+          LT.insert (tnum tPegDifference) tPegDifference $
+          LT.insert (tnum tXmlDataLen) tXmlDataLen $
+          LT.insert (tnum tXmlData) tXmlData $
+          LT.insert (tnum tSettlInstRefID) tSettlInstRefID $
+          LT.insert (tnum tNoRoutingIDs) tNoRoutingIDs $
+          LT.insert (tnum tRoutingType) tRoutingType $
+          LT.insert (tnum tRoutingID) tRoutingID $
+          LT.insert (tnum tSpread) tSpread $
+          LT.insert (tnum tBenchmark) tBenchmark $
+          LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+          LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+          LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+          LT.insert (tnum tCouponRate) tCouponRate $
+          LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+          LT.insert (tnum tIssueDate) tIssueDate $
+          LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+          LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+          LT.insert (tnum tFactor) tFactor $
+          LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+          LT.insert (tnum tExDate) tExDate $
+          LT.insert (tnum tContractMultiplier) tContractMultiplier $
+          LT.insert (tnum tNoStipulations) tNoStipulations $
+          LT.insert (tnum tStipulationType) tStipulationType $
+          LT.insert (tnum tStipulationValue) tStipulationValue $
+          LT.insert (tnum tYieldType) tYieldType $
+          LT.insert (tnum tYield) tYield $
+          LT.insert (tnum tTotalTakedown) tTotalTakedown $
+          LT.insert (tnum tConcession) tConcession $
+          LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+          LT.insert (tnum tRedemptionDate) tRedemptionDate $
+          LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+          LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+          LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+          LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+          LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+          LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+          LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+          LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+          LT.insert (tnum tLegIssueDate) tLegIssueDate $
+          LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+          LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+          LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+          LT.insert (tnum tLegFactor) tLegFactor $
+          LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+          LT.insert (tnum tCreditRating) tCreditRating $
+          LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+          LT.insert (tnum tLegCreditRating) tLegCreditRating $
+          LT.insert (tnum tTradedFlatSwitch) tTradedFlatSwitch $
+          LT.insert (tnum tBasisFeatureDate) tBasisFeatureDate $
+          LT.insert (tnum tBasisFeaturePrice) tBasisFeaturePrice $
+          LT.insert (tnum tMDReqID) tMDReqID $
+          LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+          LT.insert (tnum tMarketDepth) tMarketDepth $
+          LT.insert (tnum tMDUpdateType) tMDUpdateType $
+          LT.insert (tnum tAggregatedBook) tAggregatedBook $
+          LT.insert (tnum tNoMDEntryTypes) tNoMDEntryTypes $
+          LT.insert (tnum tNoMDEntries) tNoMDEntries $
+          LT.insert (tnum tMDEntryType) tMDEntryType $
+          LT.insert (tnum tMDEntryPx) tMDEntryPx $
+          LT.insert (tnum tMDEntrySize) tMDEntrySize $
+          LT.insert (tnum tMDEntryDate) tMDEntryDate $
+          LT.insert (tnum tMDEntryTime) tMDEntryTime $
+          LT.insert (tnum tTickDirection) tTickDirection $
+          LT.insert (tnum tMDMkt) tMDMkt $
+          LT.insert (tnum tQuoteCondition) tQuoteCondition $
+          LT.insert (tnum tTradeCondition) tTradeCondition $
+          LT.insert (tnum tMDEntryID) tMDEntryID $
+          LT.insert (tnum tMDUpdateAction) tMDUpdateAction $
+          LT.insert (tnum tMDEntryRefID) tMDEntryRefID $
+          LT.insert (tnum tMDReqRejReason) tMDReqRejReason $
+          LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+          LT.insert (tnum tLocationID) tLocationID $
+          LT.insert (tnum tDeskID) tDeskID $
+          LT.insert (tnum tDeleteReason) tDeleteReason $
+          LT.insert (tnum tOpenCloseSettleFlag) tOpenCloseSettleFlag $
+          LT.insert (tnum tSellerDays) tSellerDays $
+          LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+          LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+          LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+          LT.insert (tnum tFinancialStatus) tFinancialStatus $
+          LT.insert (tnum tCorporateAction) tCorporateAction $
+          LT.insert (tnum tDefBidSize) tDefBidSize $
+          LT.insert (tnum tDefOfferSize) tDefOfferSize $
+          LT.insert (tnum tNoQuoteEntries) tNoQuoteEntries $
+          LT.insert (tnum tNoQuoteSets) tNoQuoteSets $
+          LT.insert (tnum tQuoteStatus) tQuoteStatus $
+          LT.insert (tnum tQuoteCancelType) tQuoteCancelType $
+          LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+          LT.insert (tnum tQuoteRejectReason) tQuoteRejectReason $
+          LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+          LT.insert (tnum tQuoteSetID) tQuoteSetID $
+          LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+          LT.insert (tnum tTotQuoteEntries) tTotQuoteEntries $
+          LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+          LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+          LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+          LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+          LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+          LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+          LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+          LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+          LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+          LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+          LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+          LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+          LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+          LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+          LT.insert (tnum tRatioQty) tRatioQty $
+          LT.insert (tnum tSecurityReqID) tSecurityReqID $
+          LT.insert (tnum tSecurityRequestType) tSecurityRequestType $
+          LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+          LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+          LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+          LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+          LT.insert (tnum tSecurityTradingStatus) tSecurityTradingStatus $
+          LT.insert (tnum tHaltReasonChar) tHaltReasonChar $
+          LT.insert (tnum tInViewOfCommon) tInViewOfCommon $
+          LT.insert (tnum tDueToRelated) tDueToRelated $
+          LT.insert (tnum tBuyVolume) tBuyVolume $
+          LT.insert (tnum tSellVolume) tSellVolume $
+          LT.insert (tnum tHighPx) tHighPx $
+          LT.insert (tnum tLowPx) tLowPx $
+          LT.insert (tnum tAdjustment) tAdjustment $
+          LT.insert (tnum tTradSesReqID) tTradSesReqID $
+          LT.insert (tnum tTradingSessionID) tTradingSessionID $
+          LT.insert (tnum tContraTrader) tContraTrader $
+          LT.insert (tnum tTradSesMethod) tTradSesMethod $
+          LT.insert (tnum tTradSesMode) tTradSesMode $
+          LT.insert (tnum tTradSesStatus) tTradSesStatus $
+          LT.insert (tnum tTradSesStartTime) tTradSesStartTime $
+          LT.insert (tnum tTradSesOpenTime) tTradSesOpenTime $
+          LT.insert (tnum tTradSesPreCloseTime) tTradSesPreCloseTime $
+          LT.insert (tnum tTradSesCloseTime) tTradSesCloseTime $
+          LT.insert (tnum tTradSesEndTime) tTradSesEndTime $
+          LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+          LT.insert (tnum tMessageEncoding) tMessageEncoding $
+          LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+          LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+          LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+          LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+          LT.insert (tnum tEncodedListExecInstLen) tEncodedListExecInstLen $
+          LT.insert (tnum tEncodedListExecInst) tEncodedListExecInst $
+          LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+          LT.insert (tnum tEncodedText) tEncodedText $
+          LT.insert (tnum tEncodedSubjectLen) tEncodedSubjectLen $
+          LT.insert (tnum tEncodedSubject) tEncodedSubject $
+          LT.insert (tnum tEncodedHeadlineLen) tEncodedHeadlineLen $
+          LT.insert (tnum tEncodedHeadline) tEncodedHeadline $
+          LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+          LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+          LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+          LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+          LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+          LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+          LT.insert (tnum tAllocPrice) tAllocPrice $
+          LT.insert (tnum tQuoteSetValidUntilTime) tQuoteSetValidUntilTime $
+          LT.insert (tnum tQuoteEntryRejectReason) tQuoteEntryRejectReason $
+          LT.insert (tnum tLastMsgSeqNumProcessed) tLastMsgSeqNumProcessed $
+          LT.insert (tnum tOnBehalfOfSendingTime) tOnBehalfOfSendingTime $
+          LT.insert (tnum tRefTagID) tRefTagID $
+          LT.insert (tnum tRefMsgType) tRefMsgType $
+          LT.insert (tnum tSessionRejectReason) tSessionRejectReason $
+          LT.insert (tnum tBidRequestTransType) tBidRequestTransType $
+          LT.insert (tnum tContraBroker) tContraBroker $
+          LT.insert (tnum tComplianceID) tComplianceID $
+          LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+          LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+          LT.insert (tnum tBusinessRejectRefID) tBusinessRejectRefID $
+          LT.insert (tnum tBusinessRejectReason) tBusinessRejectReason $
+          LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+          LT.insert (tnum tNoContraBrokers) tNoContraBrokers $
+          LT.insert (tnum tMaxMessageSize) tMaxMessageSize $
+          LT.insert (tnum tNoMsgTypes) tNoMsgTypes $
+          LT.insert (tnum tMsgDirection) tMsgDirection $
+          LT.insert (tnum tNoTradingSessions) tNoTradingSessions $
+          LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+          LT.insert (tnum tDiscretionInst) tDiscretionInst $
+          LT.insert (tnum tDiscretionOffset) tDiscretionOffset $
+          LT.insert (tnum tBidID) tBidID $
+          LT.insert (tnum tClientBidID) tClientBidID $
+          LT.insert (tnum tListName) tListName $
+          LT.insert (tnum tTotalNumSecurities) tTotalNumSecurities $
+          LT.insert (tnum tBidType) tBidType $
+          LT.insert (tnum tNumTickets) tNumTickets $
+          LT.insert (tnum tSideValue1) tSideValue1 $
+          LT.insert (tnum tSideValue2) tSideValue2 $
+          LT.insert (tnum tNoBidDescriptors) tNoBidDescriptors $
+          LT.insert (tnum tBidDescriptorType) tBidDescriptorType $
+          LT.insert (tnum tBidDescriptor) tBidDescriptor $
+          LT.insert (tnum tSideValueInd) tSideValueInd $
+          LT.insert (tnum tLiquidityPctLow) tLiquidityPctLow $
+          LT.insert (tnum tLiquidityPctHigh) tLiquidityPctHigh $
+          LT.insert (tnum tLiquidityValue) tLiquidityValue $
+          LT.insert (tnum tEFPTrackingError) tEFPTrackingError $
+          LT.insert (tnum tFairValue) tFairValue $
+          LT.insert (tnum tOutsideIndexPct) tOutsideIndexPct $
+          LT.insert (tnum tValueOfFutures) tValueOfFutures $
+          LT.insert (tnum tLiquidityIndType) tLiquidityIndType $
+          LT.insert (tnum tWtAverageLiquidity) tWtAverageLiquidity $
+          LT.insert (tnum tExchangeForPhysical) tExchangeForPhysical $
+          LT.insert (tnum tOutMainCntryUIndex) tOutMainCntryUIndex $
+          LT.insert (tnum tCrossPercent) tCrossPercent $
+          LT.insert (tnum tProgRptReqs) tProgRptReqs $
+          LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+          LT.insert (tnum tIncTaxInd) tIncTaxInd $
+          LT.insert (tnum tNumBidders) tNumBidders $
+          LT.insert (tnum tTradeType) tTradeType $
+          LT.insert (tnum tBasisPxType) tBasisPxType $
+          LT.insert (tnum tNoBidComponents) tNoBidComponents $
+          LT.insert (tnum tCountry) tCountry $
+          LT.insert (tnum tTotNoStrikes) tTotNoStrikes $
+          LT.insert (tnum tPriceType) tPriceType $
+          LT.insert (tnum tDayOrderQty) tDayOrderQty $
+          LT.insert (tnum tDayCumQty) tDayCumQty $
+          LT.insert (tnum tDayAvgPx) tDayAvgPx $
+          LT.insert (tnum tGTBookingInst) tGTBookingInst $
+          LT.insert (tnum tNoStrikes) tNoStrikes $
+          LT.insert (tnum tListStatusType) tListStatusType $
+          LT.insert (tnum tNetGrossInd) tNetGrossInd $
+          LT.insert (tnum tListOrderStatus) tListOrderStatus $
+          LT.insert (tnum tExpireDate) tExpireDate $
+          LT.insert (tnum tListExecInstType) tListExecInstType $
+          LT.insert (tnum tCxlRejResponseTo) tCxlRejResponseTo $
+          LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+          LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+          LT.insert (tnum tContraTradeQty) tContraTradeQty $
+          LT.insert (tnum tContraTradeTime) tContraTradeTime $
+          LT.insert (tnum tClearingFirm) tClearingFirm $
+          LT.insert (tnum tClearingAccount) tClearingAccount $
+          LT.insert (tnum tLiquidityNumSecurities) tLiquidityNumSecurities $
+          LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+          LT.insert (tnum tStrikeTime) tStrikeTime $
+          LT.insert (tnum tListStatusText) tListStatusText $
+          LT.insert (tnum tEncodedListStatusTextLen) tEncodedListStatusTextLen $
+          LT.insert (tnum tEncodedListStatusText) tEncodedListStatusText $
+          LT.insert (tnum tPartyIDSource) tPartyIDSource $
+          LT.insert (tnum tPartyID) tPartyID $
+          LT.insert (tnum tTotalVolumeTradedDate) tTotalVolumeTradedDate $
+          LT.insert (tnum tTotalVolumeTradedTime) tTotalVolumeTradedTime $
+          LT.insert (tnum tNetChgPrevDay) tNetChgPrevDay $
+          LT.insert (tnum tPartyRole) tPartyRole $
+          LT.insert (tnum tNoPartyIDs) tNoPartyIDs $
+          LT.insert (tnum tNoSecurityAltID) tNoSecurityAltID $
+          LT.insert (tnum tSecurityAltID) tSecurityAltID $
+          LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource $
+          LT.insert (tnum tNoUnderlyingSecurityAltID) tNoUnderlyingSecurityAltID $
+          LT.insert (tnum tUnderlyingSecurityAltID) tUnderlyingSecurityAltID $
+          LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource $
+          LT.insert (tnum tProduct) tProduct $
+          LT.insert (tnum tCFICode) tCFICode $
+          LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+          LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+          LT.insert (tnum tTestMessageIndicator) tTestMessageIndicator $
+          LT.insert (tnum tQuantityType) tQuantityType $
+          LT.insert (tnum tBookingRefID) tBookingRefID $
+          LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+          LT.insert (tnum tRoundingDirection) tRoundingDirection $
+          LT.insert (tnum tRoundingModulus) tRoundingModulus $
+          LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+          LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+          LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+          LT.insert (tnum tNoRegistDtls) tNoRegistDtls $
+          LT.insert (tnum tMailingDtls) tMailingDtls $
+          LT.insert (tnum tInvestorCountryOfResidence) tInvestorCountryOfResidence $
+          LT.insert (tnum tPaymentRef) tPaymentRef $
+          LT.insert (tnum tDistribPaymentMethod) tDistribPaymentMethod $
+          LT.insert (tnum tCashDistribCurr) tCashDistribCurr $
+          LT.insert (tnum tCommCurrency) tCommCurrency $
+          LT.insert (tnum tCancellationRights) tCancellationRights $
+          LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+          LT.insert (tnum tMailingInst) tMailingInst $
+          LT.insert (tnum tTransBkdTime) tTransBkdTime $
+          LT.insert (tnum tExecPriceType) tExecPriceType $
+          LT.insert (tnum tExecPriceAdjustment) tExecPriceAdjustment $
+          LT.insert (tnum tDateOfBirth) tDateOfBirth $
+          LT.insert (tnum tTradeReportTransType) tTradeReportTransType $
+          LT.insert (tnum tCardHolderName) tCardHolderName $
+          LT.insert (tnum tCardNumber) tCardNumber $
+          LT.insert (tnum tCardExpDate) tCardExpDate $
+          LT.insert (tnum tCardIssNo) tCardIssNo $
+          LT.insert (tnum tPaymentMethod) tPaymentMethod $
+          LT.insert (tnum tRegistAcctType) tRegistAcctType $
+          LT.insert (tnum tDesignation) tDesignation $
+          LT.insert (tnum tTaxAdvantageType) tTaxAdvantageType $
+          LT.insert (tnum tRegistRejReasonText) tRegistRejReasonText $
+          LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+          LT.insert (tnum tCashDistribAgentName) tCashDistribAgentName $
+          LT.insert (tnum tCashDistribAgentCode) tCashDistribAgentCode $
+          LT.insert (tnum tCashDistribAgentAcctNumber) tCashDistribAgentAcctNumber $
+          LT.insert (tnum tCashDistribPayRef) tCashDistribPayRef $
+          LT.insert (tnum tCashDistribAgentAcctName) tCashDistribAgentAcctName $
+          LT.insert (tnum tCardStartDate) tCardStartDate $
+          LT.insert (tnum tPaymentDate) tPaymentDate $
+          LT.insert (tnum tPaymentRemitterID) tPaymentRemitterID $
+          LT.insert (tnum tRegistStatus) tRegistStatus $
+          LT.insert (tnum tRegistRejReasonCode) tRegistRejReasonCode $
+          LT.insert (tnum tRegistRefID) tRegistRefID $
+          LT.insert (tnum tRegistDetls) tRegistDetls $
+          LT.insert (tnum tNoDistribInsts) tNoDistribInsts $
+          LT.insert (tnum tRegistEmail) tRegistEmail $
+          LT.insert (tnum tDistribPercentage) tDistribPercentage $
+          LT.insert (tnum tRegistID) tRegistID $
+          LT.insert (tnum tRegistTransType) tRegistTransType $
+          LT.insert (tnum tExecValuationPoint) tExecValuationPoint $
+          LT.insert (tnum tOrderPercent) tOrderPercent $
+          LT.insert (tnum tOwnershipType) tOwnershipType $
+          LT.insert (tnum tNoContAmts) tNoContAmts $
+          LT.insert (tnum tContAmtType) tContAmtType $
+          LT.insert (tnum tContAmtValue) tContAmtValue $
+          LT.insert (tnum tContAmtCurr) tContAmtCurr $
+          LT.insert (tnum tOwnerType) tOwnerType $
+          LT.insert (tnum tPartySubID) tPartySubID $
+          LT.insert (tnum tNestedPartyID) tNestedPartyID $
+          LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+          LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+          LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+          LT.insert (tnum tOrderCapacity) tOrderCapacity $
+          LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+          LT.insert (tnum tMassCancelRequestType) tMassCancelRequestType $
+          LT.insert (tnum tMassCancelResponse) tMassCancelResponse $
+          LT.insert (tnum tMassCancelRejectReason) tMassCancelRejectReason $
+          LT.insert (tnum tTotalAffectedOrders) tTotalAffectedOrders $
+          LT.insert (tnum tNoAffectedOrders) tNoAffectedOrders $
+          LT.insert (tnum tAffectedOrderID) tAffectedOrderID $
+          LT.insert (tnum tAffectedSecondaryOrderID) tAffectedSecondaryOrderID $
+          LT.insert (tnum tQuoteType) tQuoteType $
+          LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+          LT.insert (tnum tNoNestedPartyIDs) tNoNestedPartyIDs $
+          LT.insert (tnum tTotalAccruedInterestAmt) tTotalAccruedInterestAmt $
+          LT.insert (tnum tMaturityDate) tMaturityDate $
+          LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+          LT.insert (tnum tInstrRegistry) tInstrRegistry $
+          LT.insert (tnum tCashMargin) tCashMargin $
+          LT.insert (tnum tNestedPartySubID) tNestedPartySubID $
+          LT.insert (tnum tScope) tScope $
+          LT.insert (tnum tMDImplicitDelete) tMDImplicitDelete $
+          LT.insert (tnum tCrossID) tCrossID $
+          LT.insert (tnum tCrossType) tCrossType $
+          LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+          LT.insert (tnum tOrigCrossID) tOrigCrossID $
+          LT.insert (tnum tNoSides) tNoSides $
+          LT.insert (tnum tUsername) tUsername $
+          LT.insert (tnum tPassword) tPassword $
+          LT.insert (tnum tNoLegs) tNoLegs $
+          LT.insert (tnum tLegCurrency) tLegCurrency $
+          LT.insert (tnum tTotalNumSecurityTypes) tTotalNumSecurityTypes $
+          LT.insert (tnum tNoSecurityTypes) tNoSecurityTypes $
+          LT.insert (tnum tSecurityListRequestType) tSecurityListRequestType $
+          LT.insert (tnum tSecurityRequestResult) tSecurityRequestResult $
+          LT.insert (tnum tRoundLot) tRoundLot $
+          LT.insert (tnum tMinTradeVol) tMinTradeVol $
+          LT.insert (tnum tMultiLegRptTypeReq) tMultiLegRptTypeReq $
+          LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+          LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+          LT.insert (tnum tLegPrice) tLegPrice $
+          LT.insert (tnum tTradSesStatusRejReason) tTradSesStatusRejReason $
+          LT.insert (tnum tTradeRequestID) tTradeRequestID $
+          LT.insert (tnum tTradeRequestType) tTradeRequestType $
+          LT.insert (tnum tPreviouslyReported) tPreviouslyReported $
+          LT.insert (tnum tTradeReportID) tTradeReportID $
+          LT.insert (tnum tTradeReportRefID) tTradeReportRefID $
+          LT.insert (tnum tMatchStatus) tMatchStatus $
+          LT.insert (tnum tMatchType) tMatchType $
+          LT.insert (tnum tOddLot) tOddLot $
+          LT.insert (tnum tNoClearingInstructions) tNoClearingInstructions $
+          LT.insert (tnum tClearingInstruction) tClearingInstruction $
+          LT.insert (tnum tTradeInputSource) tTradeInputSource $
+          LT.insert (tnum tTradeInputDevice) tTradeInputDevice $
+          LT.insert (tnum tNoDates) tNoDates $
+          LT.insert (tnum tAccountType) tAccountType $
+          LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+          LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+          LT.insert (tnum tMassStatusReqID) tMassStatusReqID $
+          LT.insert (tnum tMassStatusReqType) tMassStatusReqType $
+          LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+          LT.insert (tnum tLegSettlmntTyp) tLegSettlmntTyp $
+          LT.insert (tnum tLegFutSettDate) tLegFutSettDate $
+          LT.insert (tnum tDayBookingInst) tDayBookingInst $
+          LT.insert (tnum tBookingUnit) tBookingUnit $
+          LT.insert (tnum tPreallocMethod) tPreallocMethod $
+          LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+          LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+          LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+          LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+          LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+          LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+          LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+          LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+          LT.insert (tnum tLegSymbol) tLegSymbol $
+          LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+          LT.insert (tnum tLegSecurityID) tLegSecurityID $
+          LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+          LT.insert (tnum tNoLegSecurityAltID) tNoLegSecurityAltID $
+          LT.insert (tnum tLegSecurityAltID) tLegSecurityAltID $
+          LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource $
+          LT.insert (tnum tLegProduct) tLegProduct $
+          LT.insert (tnum tLegCFICode) tLegCFICode $
+          LT.insert (tnum tLegSecurityType) tLegSecurityType $
+          LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+          LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+          LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+          LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+          LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+          LT.insert (tnum tLegCouponRate) tLegCouponRate $
+          LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+          LT.insert (tnum tLegIssuer) tLegIssuer $
+          LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+          LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+          LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+          LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+          LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+          LT.insert (tnum tLegRatioQty) tLegRatioQty $
+          LT.insert (tnum tLegSide) tLegSide $
+          LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+          LT.insert (tnum tAllocType) tAllocType $
+          LT.insert (tnum tNoHops) tNoHops $
+          LT.insert (tnum tHopCompID) tHopCompID $
+          LT.insert (tnum tHopSendingTime) tHopSendingTime $
+          LT.insert (tnum tHopRefID) tHopRefID $
+          LT.insert (tnum tMidPx) tMidPx $
+          LT.insert (tnum tBidYield) tBidYield $
+          LT.insert (tnum tMidYield) tMidYield $
+          LT.insert (tnum tOfferYield) tOfferYield $
+          LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+          LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+          LT.insert (tnum tLegLastPx) tLegLastPx $
+          LT.insert (tnum tPriorityIndicator) tPriorityIndicator $
+          LT.insert (tnum tPriceImprovement) tPriceImprovement $
+          LT.insert (tnum tPrice2) tPrice2 $
+          LT.insert (tnum tLastForwardPoints2) tLastForwardPoints2 $
+          LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+          LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+          LT.insert (tnum tRFQReqID) tRFQReqID $
+          LT.insert (tnum tMktBidPx) tMktBidPx $
+          LT.insert (tnum tMktOfferPx) tMktOfferPx $
+          LT.insert (tnum tMinBidSize) tMinBidSize $
+          LT.insert (tnum tMinOfferSize) tMinOfferSize $
+          LT.insert (tnum tQuoteStatusReqID) tQuoteStatusReqID $
+          LT.insert (tnum tLegalConfirm) tLegalConfirm $
+          LT.insert (tnum tUnderlyingLastPx) tUnderlyingLastPx $
+          LT.insert (tnum tUnderlyingLastQty) tUnderlyingLastQty $
+          LT.insert (tnum tSecDefStatus) tSecDefStatus $
+          LT.insert (tnum tLegRefID) tLegRefID $
+          LT.insert (tnum tContraLegRefID) tContraLegRefID $
+          LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+          LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+          LT.insert (tnum tQuoteRequestRejectReason) tQuoteRequestRejectReason $
+          LT.insert (tnum tSideComplianceID) tSideComplianceID $
+          LT.new 
diff --git a/src/Data/FIX/Spec/FIX44.hs b/src/Data/FIX/Spec/FIX44.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/FIX/Spec/FIX44.hs
@@ -0,0 +1,31002 @@
+module Data.FIX.Spec.FIX44 ( fix44 ) where
+import qualified Data.ByteString.Char8 as C
+import qualified Data.LookupTable as LT ( new, insert )
+import Data.FIX.Message
+import Data.FIX.Parser
+import Data.Functor ( (<$>) )
+import Data.FIX.Arbitrary 
+import Test.QuickCheck ( arbitrary )
+
+
+tAccount :: FIXTag
+tAccount = FIXTag 
+   { tName = "Account"
+   , tnum = 1
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvId :: FIXTag
+tAdvId = FIXTag 
+   { tName = "AdvId"
+   , tnum = 2
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvRefID :: FIXTag
+tAdvRefID = FIXTag 
+   { tName = "AdvRefID"
+   , tnum = 3
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdvSide :: FIXTag
+tAdvSide = FIXTag 
+   { tName = "AdvSide"
+   , tnum = 4
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAdvTransType :: FIXTag
+tAdvTransType = FIXTag 
+   { tName = "AdvTransType"
+   , tnum = 5
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAvgPx :: FIXTag
+tAvgPx = FIXTag 
+   { tName = "AvgPx"
+   , tnum = 6
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBeginSeqNo :: FIXTag
+tBeginSeqNo = FIXTag 
+   { tName = "BeginSeqNo"
+   , tnum = 7
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdID :: FIXTag
+tClOrdID = FIXTag 
+   { tName = "ClOrdID"
+   , tnum = 11
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCommission :: FIXTag
+tCommission = FIXTag 
+   { tName = "Commission"
+   , tnum = 12
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCommType :: FIXTag
+tCommType = FIXTag 
+   { tName = "CommType"
+   , tnum = 13
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCumQty :: FIXTag
+tCumQty = FIXTag 
+   { tName = "CumQty"
+   , tnum = 14
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCurrency :: FIXTag
+tCurrency = FIXTag 
+   { tName = "Currency"
+   , tnum = 15
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEndSeqNo :: FIXTag
+tEndSeqNo = FIXTag 
+   { tName = "EndSeqNo"
+   , tnum = 16
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExecID :: FIXTag
+tExecID = FIXTag 
+   { tName = "ExecID"
+   , tnum = 17
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecInst :: FIXTag
+tExecInst = FIXTag 
+   { tName = "ExecInst"
+   , tnum = 18
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tExecRefID :: FIXTag
+tExecRefID = FIXTag 
+   { tName = "ExecRefID"
+   , tnum = 19
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecTransType :: FIXTag
+tExecTransType = FIXTag 
+   { tName = "ExecTransType"
+   , tnum = 20
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tHandlInst :: FIXTag
+tHandlInst = FIXTag 
+   { tName = "HandlInst"
+   , tnum = 21
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityIDSource :: FIXTag
+tSecurityIDSource = FIXTag 
+   { tName = "SecurityIDSource"
+   , tnum = 22
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIID :: FIXTag
+tIOIID = FIXTag 
+   { tName = "IOIID"
+   , tnum = 23
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIOthSvc :: FIXTag
+tIOIOthSvc = FIXTag 
+   { tName = "IOIOthSvc"
+   , tnum = 24
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIQltyInd :: FIXTag
+tIOIQltyInd = FIXTag 
+   { tName = "IOIQltyInd"
+   , tnum = 25
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tIOIRefID :: FIXTag
+tIOIRefID = FIXTag 
+   { tName = "IOIRefID"
+   , tnum = 26
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOIQty :: FIXTag
+tIOIQty = FIXTag 
+   { tName = "IOIQty"
+   , tnum = 27
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOITransType :: FIXTag
+tIOITransType = FIXTag 
+   { tName = "IOITransType"
+   , tnum = 28
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastCapacity :: FIXTag
+tLastCapacity = FIXTag 
+   { tName = "LastCapacity"
+   , tnum = 29
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLastMkt :: FIXTag
+tLastMkt = FIXTag 
+   { tName = "LastMkt"
+   , tnum = 30
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLastPx :: FIXTag
+tLastPx = FIXTag 
+   { tName = "LastPx"
+   , tnum = 31
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastQty :: FIXTag
+tLastQty = FIXTag 
+   { tName = "LastQty"
+   , tnum = 32
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoLinesOfText :: FIXTag
+tNoLinesOfText = FIXTag 
+   { tName = "NoLinesOfText"
+   , tnum = 33
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgSeqNum :: FIXTag
+tMsgSeqNum = FIXTag 
+   { tName = "MsgSeqNum"
+   , tnum = 34
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNewSeqNo :: FIXTag
+tNewSeqNo = FIXTag 
+   { tName = "NewSeqNo"
+   , tnum = 36
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderID :: FIXTag
+tOrderID = FIXTag 
+   { tName = "OrderID"
+   , tnum = 37
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrderQty :: FIXTag
+tOrderQty = FIXTag 
+   { tName = "OrderQty"
+   , tnum = 38
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrdStatus :: FIXTag
+tOrdStatus = FIXTag 
+   { tName = "OrdStatus"
+   , tnum = 39
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrdType :: FIXTag
+tOrdType = FIXTag 
+   { tName = "OrdType"
+   , tnum = 40
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrigClOrdID :: FIXTag
+tOrigClOrdID = FIXTag 
+   { tName = "OrigClOrdID"
+   , tnum = 41
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrigTime :: FIXTag
+tOrigTime = FIXTag 
+   { tName = "OrigTime"
+   , tnum = 42
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tPossDupFlag :: FIXTag
+tPossDupFlag = FIXTag 
+   { tName = "PossDupFlag"
+   , tnum = 43
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tPrice :: FIXTag
+tPrice = FIXTag 
+   { tName = "Price"
+   , tnum = 44
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRefSeqNum :: FIXTag
+tRefSeqNum = FIXTag 
+   { tName = "RefSeqNum"
+   , tnum = 45
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRelatdSym :: FIXTag
+tRelatdSym = FIXTag 
+   { tName = "RelatdSym"
+   , tnum = 46
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRule80A :: FIXTag
+tRule80A = FIXTag 
+   { tName = "Rule80A"
+   , tnum = 47
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityID :: FIXTag
+tSecurityID = FIXTag 
+   { tName = "SecurityID"
+   , tnum = 48
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSenderCompID :: FIXTag
+tSenderCompID = FIXTag 
+   { tName = "SenderCompID"
+   , tnum = 49
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSenderSubID :: FIXTag
+tSenderSubID = FIXTag 
+   { tName = "SenderSubID"
+   , tnum = 50
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSendingDate :: FIXTag
+tSendingDate = FIXTag 
+   { tName = "SendingDate"
+   , tnum = 51
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSendingTime :: FIXTag
+tSendingTime = FIXTag 
+   { tName = "SendingTime"
+   , tnum = 52
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tQuantity :: FIXTag
+tQuantity = FIXTag 
+   { tName = "Quantity"
+   , tnum = 53
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSide :: FIXTag
+tSide = FIXTag 
+   { tName = "Side"
+   , tnum = 54
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSymbol :: FIXTag
+tSymbol = FIXTag 
+   { tName = "Symbol"
+   , tnum = 55
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetCompID :: FIXTag
+tTargetCompID = FIXTag 
+   { tName = "TargetCompID"
+   , tnum = 56
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetSubID :: FIXTag
+tTargetSubID = FIXTag 
+   { tName = "TargetSubID"
+   , tnum = 57
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tText :: FIXTag
+tText = FIXTag 
+   { tName = "Text"
+   , tnum = 58
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTimeInForce :: FIXTag
+tTimeInForce = FIXTag 
+   { tName = "TimeInForce"
+   , tnum = 59
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTransactTime :: FIXTag
+tTransactTime = FIXTag 
+   { tName = "TransactTime"
+   , tnum = 60
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tUrgency :: FIXTag
+tUrgency = FIXTag 
+   { tName = "Urgency"
+   , tnum = 61
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tValidUntilTime :: FIXTag
+tValidUntilTime = FIXTag 
+   { tName = "ValidUntilTime"
+   , tnum = 62
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tSettlType :: FIXTag
+tSettlType = FIXTag 
+   { tName = "SettlType"
+   , tnum = 63
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlDate :: FIXTag
+tSettlDate = FIXTag 
+   { tName = "SettlDate"
+   , tnum = 64
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSymbolSfx :: FIXTag
+tSymbolSfx = FIXTag 
+   { tName = "SymbolSfx"
+   , tnum = 65
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListID :: FIXTag
+tListID = FIXTag 
+   { tName = "ListID"
+   , tnum = 66
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListSeqNo :: FIXTag
+tListSeqNo = FIXTag 
+   { tName = "ListSeqNo"
+   , tnum = 67
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotNoOrders :: FIXTag
+tTotNoOrders = FIXTag 
+   { tName = "TotNoOrders"
+   , tnum = 68
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListExecInst :: FIXTag
+tListExecInst = FIXTag 
+   { tName = "ListExecInst"
+   , tnum = 69
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocID :: FIXTag
+tAllocID = FIXTag 
+   { tName = "AllocID"
+   , tnum = 70
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocTransType :: FIXTag
+tAllocTransType = FIXTag 
+   { tName = "AllocTransType"
+   , tnum = 71
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRefAllocID :: FIXTag
+tRefAllocID = FIXTag 
+   { tName = "RefAllocID"
+   , tnum = 72
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoOrders :: FIXTag
+tNoOrders = FIXTag 
+   { tName = "NoOrders"
+   , tnum = 73
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAvgPxPrecision :: FIXTag
+tAvgPxPrecision = FIXTag 
+   { tName = "AvgPxPrecision"
+   , tnum = 74
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeDate :: FIXTag
+tTradeDate = FIXTag 
+   { tName = "TradeDate"
+   , tnum = 75
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExecBroker :: FIXTag
+tExecBroker = FIXTag 
+   { tName = "ExecBroker"
+   , tnum = 76
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPositionEffect :: FIXTag
+tPositionEffect = FIXTag 
+   { tName = "PositionEffect"
+   , tnum = 77
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoAllocs :: FIXTag
+tNoAllocs = FIXTag 
+   { tName = "NoAllocs"
+   , tnum = 78
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocAccount :: FIXTag
+tAllocAccount = FIXTag 
+   { tName = "AllocAccount"
+   , tnum = 79
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocQty :: FIXTag
+tAllocQty = FIXTag 
+   { tName = "AllocQty"
+   , tnum = 80
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tProcessCode :: FIXTag
+tProcessCode = FIXTag 
+   { tName = "ProcessCode"
+   , tnum = 81
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoRpts :: FIXTag
+tNoRpts = FIXTag 
+   { tName = "NoRpts"
+   , tnum = 82
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRptSeq :: FIXTag
+tRptSeq = FIXTag 
+   { tName = "RptSeq"
+   , tnum = 83
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlQty :: FIXTag
+tCxlQty = FIXTag 
+   { tName = "CxlQty"
+   , tnum = 84
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoDlvyInst :: FIXTag
+tNoDlvyInst = FIXTag 
+   { tName = "NoDlvyInst"
+   , tnum = 85
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDlvyInst :: FIXTag
+tDlvyInst = FIXTag 
+   { tName = "DlvyInst"
+   , tnum = 86
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocStatus :: FIXTag
+tAllocStatus = FIXTag 
+   { tName = "AllocStatus"
+   , tnum = 87
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocRejCode :: FIXTag
+tAllocRejCode = FIXTag 
+   { tName = "AllocRejCode"
+   , tnum = 88
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSignature :: FIXTag
+tSignature = FIXTag 
+   { tName = "Signature"
+   , tnum = 89
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSecureDataLen :: FIXTag
+tSecureDataLen = FIXTag 
+   { tName = "SecureDataLen"
+   , tnum = 90
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecureData :: FIXTag
+tSecureData = FIXTag 
+   { tName = "SecureData"
+   , tnum = 91
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tBrokerOfCredit :: FIXTag
+tBrokerOfCredit = FIXTag 
+   { tName = "BrokerOfCredit"
+   , tnum = 92
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSignatureLength :: FIXTag
+tSignatureLength = FIXTag 
+   { tName = "SignatureLength"
+   , tnum = 93
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEmailType :: FIXTag
+tEmailType = FIXTag 
+   { tName = "EmailType"
+   , tnum = 94
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRawDataLength :: FIXTag
+tRawDataLength = FIXTag 
+   { tName = "RawDataLength"
+   , tnum = 95
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRawData :: FIXTag
+tRawData = FIXTag 
+   { tName = "RawData"
+   , tnum = 96
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPossResend :: FIXTag
+tPossResend = FIXTag 
+   { tName = "PossResend"
+   , tnum = 97
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tEncryptMethod :: FIXTag
+tEncryptMethod = FIXTag 
+   { tName = "EncryptMethod"
+   , tnum = 98
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStopPx :: FIXTag
+tStopPx = FIXTag 
+   { tName = "StopPx"
+   , tnum = 99
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExDestination :: FIXTag
+tExDestination = FIXTag 
+   { tName = "ExDestination"
+   , tnum = 100
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCxlRejReason :: FIXTag
+tCxlRejReason = FIXTag 
+   { tName = "CxlRejReason"
+   , tnum = 102
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdRejReason :: FIXTag
+tOrdRejReason = FIXTag 
+   { tName = "OrdRejReason"
+   , tnum = 103
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIOIQualifier :: FIXTag
+tIOIQualifier = FIXTag 
+   { tName = "IOIQualifier"
+   , tnum = 104
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tWaveNo :: FIXTag
+tWaveNo = FIXTag 
+   { tName = "WaveNo"
+   , tnum = 105
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIssuer :: FIXTag
+tIssuer = FIXTag 
+   { tName = "Issuer"
+   , tnum = 106
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityDesc :: FIXTag
+tSecurityDesc = FIXTag 
+   { tName = "SecurityDesc"
+   , tnum = 107
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHeartBtInt :: FIXTag
+tHeartBtInt = FIXTag 
+   { tName = "HeartBtInt"
+   , tnum = 108
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClientID :: FIXTag
+tClientID = FIXTag 
+   { tName = "ClientID"
+   , tnum = 109
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMinQty :: FIXTag
+tMinQty = FIXTag 
+   { tName = "MinQty"
+   , tnum = 110
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMaxFloor :: FIXTag
+tMaxFloor = FIXTag 
+   { tName = "MaxFloor"
+   , tnum = 111
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTestReqID :: FIXTag
+tTestReqID = FIXTag 
+   { tName = "TestReqID"
+   , tnum = 112
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tReportToExch :: FIXTag
+tReportToExch = FIXTag 
+   { tName = "ReportToExch"
+   , tnum = 113
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tLocateReqd :: FIXTag
+tLocateReqd = FIXTag 
+   { tName = "LocateReqd"
+   , tnum = 114
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOnBehalfOfCompID :: FIXTag
+tOnBehalfOfCompID = FIXTag 
+   { tName = "OnBehalfOfCompID"
+   , tnum = 115
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOnBehalfOfSubID :: FIXTag
+tOnBehalfOfSubID = FIXTag 
+   { tName = "OnBehalfOfSubID"
+   , tnum = 116
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteID :: FIXTag
+tQuoteID = FIXTag 
+   { tName = "QuoteID"
+   , tnum = 117
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNetMoney :: FIXTag
+tNetMoney = FIXTag 
+   { tName = "NetMoney"
+   , tnum = 118
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrAmt :: FIXTag
+tSettlCurrAmt = FIXTag 
+   { tName = "SettlCurrAmt"
+   , tnum = 119
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrency :: FIXTag
+tSettlCurrency = FIXTag 
+   { tName = "SettlCurrency"
+   , tnum = 120
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tForexReq :: FIXTag
+tForexReq = FIXTag 
+   { tName = "ForexReq"
+   , tnum = 121
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOrigSendingTime :: FIXTag
+tOrigSendingTime = FIXTag 
+   { tName = "OrigSendingTime"
+   , tnum = 122
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tGapFillFlag :: FIXTag
+tGapFillFlag = FIXTag 
+   { tName = "GapFillFlag"
+   , tnum = 123
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoExecs :: FIXTag
+tNoExecs = FIXTag 
+   { tName = "NoExecs"
+   , tnum = 124
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCxlType :: FIXTag
+tCxlType = FIXTag 
+   { tName = "CxlType"
+   , tnum = 125
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExpireTime :: FIXTag
+tExpireTime = FIXTag 
+   { tName = "ExpireTime"
+   , tnum = 126
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tDKReason :: FIXTag
+tDKReason = FIXTag 
+   { tName = "DKReason"
+   , tnum = 127
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDeliverToCompID :: FIXTag
+tDeliverToCompID = FIXTag 
+   { tName = "DeliverToCompID"
+   , tnum = 128
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliverToSubID :: FIXTag
+tDeliverToSubID = FIXTag 
+   { tName = "DeliverToSubID"
+   , tnum = 129
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIOINaturalFlag :: FIXTag
+tIOINaturalFlag = FIXTag 
+   { tName = "IOINaturalFlag"
+   , tnum = 130
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tQuoteReqID :: FIXTag
+tQuoteReqID = FIXTag 
+   { tName = "QuoteReqID"
+   , tnum = 131
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBidPx :: FIXTag
+tBidPx = FIXTag 
+   { tName = "BidPx"
+   , tnum = 132
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferPx :: FIXTag
+tOfferPx = FIXTag 
+   { tName = "OfferPx"
+   , tnum = 133
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidSize :: FIXTag
+tBidSize = FIXTag 
+   { tName = "BidSize"
+   , tnum = 134
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSize :: FIXTag
+tOfferSize = FIXTag 
+   { tName = "OfferSize"
+   , tnum = 135
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoMiscFees :: FIXTag
+tNoMiscFees = FIXTag 
+   { tName = "NoMiscFees"
+   , tnum = 136
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMiscFeeAmt :: FIXTag
+tMiscFeeAmt = FIXTag 
+   { tName = "MiscFeeAmt"
+   , tnum = 137
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMiscFeeCurr :: FIXTag
+tMiscFeeCurr = FIXTag 
+   { tName = "MiscFeeCurr"
+   , tnum = 138
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMiscFeeType :: FIXTag
+tMiscFeeType = FIXTag 
+   { tName = "MiscFeeType"
+   , tnum = 139
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPrevClosePx :: FIXTag
+tPrevClosePx = FIXTag 
+   { tName = "PrevClosePx"
+   , tnum = 140
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tResetSeqNumFlag :: FIXTag
+tResetSeqNumFlag = FIXTag 
+   { tName = "ResetSeqNumFlag"
+   , tnum = 141
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tSenderLocationID :: FIXTag
+tSenderLocationID = FIXTag 
+   { tName = "SenderLocationID"
+   , tnum = 142
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTargetLocationID :: FIXTag
+tTargetLocationID = FIXTag 
+   { tName = "TargetLocationID"
+   , tnum = 143
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOnBehalfOfLocationID :: FIXTag
+tOnBehalfOfLocationID = FIXTag 
+   { tName = "OnBehalfOfLocationID"
+   , tnum = 144
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliverToLocationID :: FIXTag
+tDeliverToLocationID = FIXTag 
+   { tName = "DeliverToLocationID"
+   , tnum = 145
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRelatedSym :: FIXTag
+tNoRelatedSym = FIXTag 
+   { tName = "NoRelatedSym"
+   , tnum = 146
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSubject :: FIXTag
+tSubject = FIXTag 
+   { tName = "Subject"
+   , tnum = 147
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHeadline :: FIXTag
+tHeadline = FIXTag 
+   { tName = "Headline"
+   , tnum = 148
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tURLLink :: FIXTag
+tURLLink = FIXTag 
+   { tName = "URLLink"
+   , tnum = 149
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExecType :: FIXTag
+tExecType = FIXTag 
+   { tName = "ExecType"
+   , tnum = 150
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLeavesQty :: FIXTag
+tLeavesQty = FIXTag 
+   { tName = "LeavesQty"
+   , tnum = 151
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCashOrderQty :: FIXTag
+tCashOrderQty = FIXTag 
+   { tName = "CashOrderQty"
+   , tnum = 152
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocAvgPx :: FIXTag
+tAllocAvgPx = FIXTag 
+   { tName = "AllocAvgPx"
+   , tnum = 153
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocNetMoney :: FIXTag
+tAllocNetMoney = FIXTag 
+   { tName = "AllocNetMoney"
+   , tnum = 154
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRate :: FIXTag
+tSettlCurrFxRate = FIXTag 
+   { tName = "SettlCurrFxRate"
+   , tnum = 155
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrFxRateCalc :: FIXTag
+tSettlCurrFxRateCalc = FIXTag 
+   { tName = "SettlCurrFxRateCalc"
+   , tnum = 156
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNumDaysInterest :: FIXTag
+tNumDaysInterest = FIXTag 
+   { tName = "NumDaysInterest"
+   , tnum = 157
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAccruedInterestRate :: FIXTag
+tAccruedInterestRate = FIXTag 
+   { tName = "AccruedInterestRate"
+   , tnum = 158
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAccruedInterestAmt :: FIXTag
+tAccruedInterestAmt = FIXTag 
+   { tName = "AccruedInterestAmt"
+   , tnum = 159
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlInstMode :: FIXTag
+tSettlInstMode = FIXTag 
+   { tName = "SettlInstMode"
+   , tnum = 160
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAllocText :: FIXTag
+tAllocText = FIXTag 
+   { tName = "AllocText"
+   , tnum = 161
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstID :: FIXTag
+tSettlInstID = FIXTag 
+   { tName = "SettlInstID"
+   , tnum = 162
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstTransType :: FIXTag
+tSettlInstTransType = FIXTag 
+   { tName = "SettlInstTransType"
+   , tnum = 163
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tEmailThreadID :: FIXTag
+tEmailThreadID = FIXTag 
+   { tName = "EmailThreadID"
+   , tnum = 164
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstSource :: FIXTag
+tSettlInstSource = FIXTag 
+   { tName = "SettlInstSource"
+   , tnum = 165
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlLocation :: FIXTag
+tSettlLocation = FIXTag 
+   { tName = "SettlLocation"
+   , tnum = 166
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityType :: FIXTag
+tSecurityType = FIXTag 
+   { tName = "SecurityType"
+   , tnum = 167
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEffectiveTime :: FIXTag
+tEffectiveTime = FIXTag 
+   { tName = "EffectiveTime"
+   , tnum = 168
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tStandInstDbType :: FIXTag
+tStandInstDbType = FIXTag 
+   { tName = "StandInstDbType"
+   , tnum = 169
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStandInstDbName :: FIXTag
+tStandInstDbName = FIXTag 
+   { tName = "StandInstDbName"
+   , tnum = 170
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStandInstDbID :: FIXTag
+tStandInstDbID = FIXTag 
+   { tName = "StandInstDbID"
+   , tnum = 171
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlDeliveryType :: FIXTag
+tSettlDeliveryType = FIXTag 
+   { tName = "SettlDeliveryType"
+   , tnum = 172
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlDepositoryCode :: FIXTag
+tSettlDepositoryCode = FIXTag 
+   { tName = "SettlDepositoryCode"
+   , tnum = 173
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlBrkrCode :: FIXTag
+tSettlBrkrCode = FIXTag 
+   { tName = "SettlBrkrCode"
+   , tnum = 174
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstCode :: FIXTag
+tSettlInstCode = FIXTag 
+   { tName = "SettlInstCode"
+   , tnum = 175
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentName :: FIXTag
+tSecuritySettlAgentName = FIXTag 
+   { tName = "SecuritySettlAgentName"
+   , tnum = 176
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentCode :: FIXTag
+tSecuritySettlAgentCode = FIXTag 
+   { tName = "SecuritySettlAgentCode"
+   , tnum = 177
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentAcctNum :: FIXTag
+tSecuritySettlAgentAcctNum = FIXTag 
+   { tName = "SecuritySettlAgentAcctNum"
+   , tnum = 178
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentAcctName :: FIXTag
+tSecuritySettlAgentAcctName = FIXTag 
+   { tName = "SecuritySettlAgentAcctName"
+   , tnum = 179
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentContactName :: FIXTag
+tSecuritySettlAgentContactName = FIXTag 
+   { tName = "SecuritySettlAgentContactName"
+   , tnum = 180
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySettlAgentContactPhone :: FIXTag
+tSecuritySettlAgentContactPhone = FIXTag 
+   { tName = "SecuritySettlAgentContactPhone"
+   , tnum = 181
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentName :: FIXTag
+tCashSettlAgentName = FIXTag 
+   { tName = "CashSettlAgentName"
+   , tnum = 182
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentCode :: FIXTag
+tCashSettlAgentCode = FIXTag 
+   { tName = "CashSettlAgentCode"
+   , tnum = 183
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentAcctNum :: FIXTag
+tCashSettlAgentAcctNum = FIXTag 
+   { tName = "CashSettlAgentAcctNum"
+   , tnum = 184
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentAcctName :: FIXTag
+tCashSettlAgentAcctName = FIXTag 
+   { tName = "CashSettlAgentAcctName"
+   , tnum = 185
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentContactName :: FIXTag
+tCashSettlAgentContactName = FIXTag 
+   { tName = "CashSettlAgentContactName"
+   , tnum = 186
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashSettlAgentContactPhone :: FIXTag
+tCashSettlAgentContactPhone = FIXTag 
+   { tName = "CashSettlAgentContactPhone"
+   , tnum = 187
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBidSpotRate :: FIXTag
+tBidSpotRate = FIXTag 
+   { tName = "BidSpotRate"
+   , tnum = 188
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidForwardPoints :: FIXTag
+tBidForwardPoints = FIXTag 
+   { tName = "BidForwardPoints"
+   , tnum = 189
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferSpotRate :: FIXTag
+tOfferSpotRate = FIXTag 
+   { tName = "OfferSpotRate"
+   , tnum = 190
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferForwardPoints :: FIXTag
+tOfferForwardPoints = FIXTag 
+   { tName = "OfferForwardPoints"
+   , tnum = 191
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrderQty2 :: FIXTag
+tOrderQty2 = FIXTag 
+   { tName = "OrderQty2"
+   , tnum = 192
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlDate2 :: FIXTag
+tSettlDate2 = FIXTag 
+   { tName = "SettlDate2"
+   , tnum = 193
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLastSpotRate :: FIXTag
+tLastSpotRate = FIXTag 
+   { tName = "LastSpotRate"
+   , tnum = 194
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastForwardPoints :: FIXTag
+tLastForwardPoints = FIXTag 
+   { tName = "LastForwardPoints"
+   , tnum = 195
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocLinkID :: FIXTag
+tAllocLinkID = FIXTag 
+   { tName = "AllocLinkID"
+   , tnum = 196
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocLinkType :: FIXTag
+tAllocLinkType = FIXTag 
+   { tName = "AllocLinkType"
+   , tnum = 197
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecondaryOrderID :: FIXTag
+tSecondaryOrderID = FIXTag 
+   { tName = "SecondaryOrderID"
+   , tnum = 198
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoIOIQualifiers :: FIXTag
+tNoIOIQualifiers = FIXTag 
+   { tName = "NoIOIQualifiers"
+   , tnum = 199
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityMonthYear :: FIXTag
+tMaturityMonthYear = FIXTag 
+   { tName = "MaturityMonthYear"
+   , tnum = 200
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tPutOrCall :: FIXTag
+tPutOrCall = FIXTag 
+   { tName = "PutOrCall"
+   , tnum = 201
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStrikePrice :: FIXTag
+tStrikePrice = FIXTag 
+   { tName = "StrikePrice"
+   , tnum = 202
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCoveredOrUncovered :: FIXTag
+tCoveredOrUncovered = FIXTag 
+   { tName = "CoveredOrUncovered"
+   , tnum = 203
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCustomerOrFirm :: FIXTag
+tCustomerOrFirm = FIXTag 
+   { tName = "CustomerOrFirm"
+   , tnum = 204
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaturityDay :: FIXTag
+tMaturityDay = FIXTag 
+   { tName = "MaturityDay"
+   , tnum = 205
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOptAttribute :: FIXTag
+tOptAttribute = FIXTag 
+   { tName = "OptAttribute"
+   , tnum = 206
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecurityExchange :: FIXTag
+tSecurityExchange = FIXTag 
+   { tName = "SecurityExchange"
+   , tnum = 207
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNotifyBrokerOfCredit :: FIXTag
+tNotifyBrokerOfCredit = FIXTag 
+   { tName = "NotifyBrokerOfCredit"
+   , tnum = 208
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tAllocHandlInst :: FIXTag
+tAllocHandlInst = FIXTag 
+   { tName = "AllocHandlInst"
+   , tnum = 209
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxShow :: FIXTag
+tMaxShow = FIXTag 
+   { tName = "MaxShow"
+   , tnum = 210
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPegOffsetValue :: FIXTag
+tPegOffsetValue = FIXTag 
+   { tName = "PegOffsetValue"
+   , tnum = 211
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tXmlDataLen :: FIXTag
+tXmlDataLen = FIXTag 
+   { tName = "XmlDataLen"
+   , tnum = 212
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tXmlData :: FIXTag
+tXmlData = FIXTag 
+   { tName = "XmlData"
+   , tnum = 213
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tSettlInstRefID :: FIXTag
+tSettlInstRefID = FIXTag 
+   { tName = "SettlInstRefID"
+   , tnum = 214
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRoutingIDs :: FIXTag
+tNoRoutingIDs = FIXTag 
+   { tName = "NoRoutingIDs"
+   , tnum = 215
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoutingType :: FIXTag
+tRoutingType = FIXTag 
+   { tName = "RoutingType"
+   , tnum = 216
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoutingID :: FIXTag
+tRoutingID = FIXTag 
+   { tName = "RoutingID"
+   , tnum = 217
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSpread :: FIXTag
+tSpread = FIXTag 
+   { tName = "Spread"
+   , tnum = 218
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBenchmark :: FIXTag
+tBenchmark = FIXTag 
+   { tName = "Benchmark"
+   , tnum = 219
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBenchmarkCurveCurrency :: FIXTag
+tBenchmarkCurveCurrency = FIXTag 
+   { tName = "BenchmarkCurveCurrency"
+   , tnum = 220
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBenchmarkCurveName :: FIXTag
+tBenchmarkCurveName = FIXTag 
+   { tName = "BenchmarkCurveName"
+   , tnum = 221
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBenchmarkCurvePoint :: FIXTag
+tBenchmarkCurvePoint = FIXTag 
+   { tName = "BenchmarkCurvePoint"
+   , tnum = 222
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCouponRate :: FIXTag
+tCouponRate = FIXTag 
+   { tName = "CouponRate"
+   , tnum = 223
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCouponPaymentDate :: FIXTag
+tCouponPaymentDate = FIXTag 
+   { tName = "CouponPaymentDate"
+   , tnum = 224
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tIssueDate :: FIXTag
+tIssueDate = FIXTag 
+   { tName = "IssueDate"
+   , tnum = 225
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tRepurchaseTerm :: FIXTag
+tRepurchaseTerm = FIXTag 
+   { tName = "RepurchaseTerm"
+   , tnum = 226
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRepurchaseRate :: FIXTag
+tRepurchaseRate = FIXTag 
+   { tName = "RepurchaseRate"
+   , tnum = 227
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFactor :: FIXTag
+tFactor = FIXTag 
+   { tName = "Factor"
+   , tnum = 228
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTradeOriginationDate :: FIXTag
+tTradeOriginationDate = FIXTag 
+   { tName = "TradeOriginationDate"
+   , tnum = 229
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tExDate :: FIXTag
+tExDate = FIXTag 
+   { tName = "ExDate"
+   , tnum = 230
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tContractMultiplier :: FIXTag
+tContractMultiplier = FIXTag 
+   { tName = "ContractMultiplier"
+   , tnum = 231
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoStipulations :: FIXTag
+tNoStipulations = FIXTag 
+   { tName = "NoStipulations"
+   , tnum = 232
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStipulationType :: FIXTag
+tStipulationType = FIXTag 
+   { tName = "StipulationType"
+   , tnum = 233
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStipulationValue :: FIXTag
+tStipulationValue = FIXTag 
+   { tName = "StipulationValue"
+   , tnum = 234
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tYieldType :: FIXTag
+tYieldType = FIXTag 
+   { tName = "YieldType"
+   , tnum = 235
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tYield :: FIXTag
+tYield = FIXTag 
+   { tName = "Yield"
+   , tnum = 236
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTotalTakedown :: FIXTag
+tTotalTakedown = FIXTag 
+   { tName = "TotalTakedown"
+   , tnum = 237
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tConcession :: FIXTag
+tConcession = FIXTag 
+   { tName = "Concession"
+   , tnum = 238
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRepoCollateralSecurityType :: FIXTag
+tRepoCollateralSecurityType = FIXTag 
+   { tName = "RepoCollateralSecurityType"
+   , tnum = 239
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRedemptionDate :: FIXTag
+tRedemptionDate = FIXTag 
+   { tName = "RedemptionDate"
+   , tnum = 240
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingCouponPaymentDate :: FIXTag
+tUnderlyingCouponPaymentDate = FIXTag 
+   { tName = "UnderlyingCouponPaymentDate"
+   , tnum = 241
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingIssueDate :: FIXTag
+tUnderlyingIssueDate = FIXTag 
+   { tName = "UnderlyingIssueDate"
+   , tnum = 242
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingRepoCollateralSecurityType :: FIXTag
+tUnderlyingRepoCollateralSecurityType = FIXTag 
+   { tName = "UnderlyingRepoCollateralSecurityType"
+   , tnum = 243
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingRepurchaseTerm :: FIXTag
+tUnderlyingRepurchaseTerm = FIXTag 
+   { tName = "UnderlyingRepurchaseTerm"
+   , tnum = 244
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingRepurchaseRate :: FIXTag
+tUnderlyingRepurchaseRate = FIXTag 
+   { tName = "UnderlyingRepurchaseRate"
+   , tnum = 245
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingFactor :: FIXTag
+tUnderlyingFactor = FIXTag 
+   { tName = "UnderlyingFactor"
+   , tnum = 246
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingRedemptionDate :: FIXTag
+tUnderlyingRedemptionDate = FIXTag 
+   { tName = "UnderlyingRedemptionDate"
+   , tnum = 247
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegCouponPaymentDate :: FIXTag
+tLegCouponPaymentDate = FIXTag 
+   { tName = "LegCouponPaymentDate"
+   , tnum = 248
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegIssueDate :: FIXTag
+tLegIssueDate = FIXTag 
+   { tName = "LegIssueDate"
+   , tnum = 249
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegRepoCollateralSecurityType :: FIXTag
+tLegRepoCollateralSecurityType = FIXTag 
+   { tName = "LegRepoCollateralSecurityType"
+   , tnum = 250
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegRepurchaseTerm :: FIXTag
+tLegRepurchaseTerm = FIXTag 
+   { tName = "LegRepurchaseTerm"
+   , tnum = 251
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegRepurchaseRate :: FIXTag
+tLegRepurchaseRate = FIXTag 
+   { tName = "LegRepurchaseRate"
+   , tnum = 252
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegFactor :: FIXTag
+tLegFactor = FIXTag 
+   { tName = "LegFactor"
+   , tnum = 253
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegRedemptionDate :: FIXTag
+tLegRedemptionDate = FIXTag 
+   { tName = "LegRedemptionDate"
+   , tnum = 254
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tCreditRating :: FIXTag
+tCreditRating = FIXTag 
+   { tName = "CreditRating"
+   , tnum = 255
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingCreditRating :: FIXTag
+tUnderlyingCreditRating = FIXTag 
+   { tName = "UnderlyingCreditRating"
+   , tnum = 256
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegCreditRating :: FIXTag
+tLegCreditRating = FIXTag 
+   { tName = "LegCreditRating"
+   , tnum = 257
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradedFlatSwitch :: FIXTag
+tTradedFlatSwitch = FIXTag 
+   { tName = "TradedFlatSwitch"
+   , tnum = 258
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tBasisFeatureDate :: FIXTag
+tBasisFeatureDate = FIXTag 
+   { tName = "BasisFeatureDate"
+   , tnum = 259
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tBasisFeaturePrice :: FIXTag
+tBasisFeaturePrice = FIXTag 
+   { tName = "BasisFeaturePrice"
+   , tnum = 260
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDReqID :: FIXTag
+tMDReqID = FIXTag 
+   { tName = "MDReqID"
+   , tnum = 262
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSubscriptionRequestType :: FIXTag
+tSubscriptionRequestType = FIXTag 
+   { tName = "SubscriptionRequestType"
+   , tnum = 263
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMarketDepth :: FIXTag
+tMarketDepth = FIXTag 
+   { tName = "MarketDepth"
+   , tnum = 264
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDUpdateType :: FIXTag
+tMDUpdateType = FIXTag 
+   { tName = "MDUpdateType"
+   , tnum = 265
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAggregatedBook :: FIXTag
+tAggregatedBook = FIXTag 
+   { tName = "AggregatedBook"
+   , tnum = 266
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoMDEntryTypes :: FIXTag
+tNoMDEntryTypes = FIXTag 
+   { tName = "NoMDEntryTypes"
+   , tnum = 267
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMDEntries :: FIXTag
+tNoMDEntries = FIXTag 
+   { tName = "NoMDEntries"
+   , tnum = 268
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDEntryType :: FIXTag
+tMDEntryType = FIXTag 
+   { tName = "MDEntryType"
+   , tnum = 269
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryPx :: FIXTag
+tMDEntryPx = FIXTag 
+   { tName = "MDEntryPx"
+   , tnum = 270
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDEntrySize :: FIXTag
+tMDEntrySize = FIXTag 
+   { tName = "MDEntrySize"
+   , tnum = 271
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMDEntryDate :: FIXTag
+tMDEntryDate = FIXTag 
+   { tName = "MDEntryDate"
+   , tnum = 272
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tMDEntryTime :: FIXTag
+tMDEntryTime = FIXTag 
+   { tName = "MDEntryTime"
+   , tnum = 273
+   , tparser = toFIXTimeOnly
+   , arbitraryValue = FIXTimeOnly <$> arbitrary }
+
+tTickDirection :: FIXTag
+tTickDirection = FIXTag 
+   { tName = "TickDirection"
+   , tnum = 274
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDMkt :: FIXTag
+tMDMkt = FIXTag 
+   { tName = "MDMkt"
+   , tnum = 275
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteCondition :: FIXTag
+tQuoteCondition = FIXTag 
+   { tName = "QuoteCondition"
+   , tnum = 276
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tTradeCondition :: FIXTag
+tTradeCondition = FIXTag 
+   { tName = "TradeCondition"
+   , tnum = 277
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMDEntryID :: FIXTag
+tMDEntryID = FIXTag 
+   { tName = "MDEntryID"
+   , tnum = 278
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDUpdateAction :: FIXTag
+tMDUpdateAction = FIXTag 
+   { tName = "MDUpdateAction"
+   , tnum = 279
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryRefID :: FIXTag
+tMDEntryRefID = FIXTag 
+   { tName = "MDEntryRefID"
+   , tnum = 280
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDReqRejReason :: FIXTag
+tMDReqRejReason = FIXTag 
+   { tName = "MDReqRejReason"
+   , tnum = 281
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMDEntryOriginator :: FIXTag
+tMDEntryOriginator = FIXTag 
+   { tName = "MDEntryOriginator"
+   , tnum = 282
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLocationID :: FIXTag
+tLocationID = FIXTag 
+   { tName = "LocationID"
+   , tnum = 283
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeskID :: FIXTag
+tDeskID = FIXTag 
+   { tName = "DeskID"
+   , tnum = 284
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeleteReason :: FIXTag
+tDeleteReason = FIXTag 
+   { tName = "DeleteReason"
+   , tnum = 285
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOpenCloseSettlFlag :: FIXTag
+tOpenCloseSettlFlag = FIXTag 
+   { tName = "OpenCloseSettlFlag"
+   , tnum = 286
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tSellerDays :: FIXTag
+tSellerDays = FIXTag 
+   { tName = "SellerDays"
+   , tnum = 287
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMDEntryBuyer :: FIXTag
+tMDEntryBuyer = FIXTag 
+   { tName = "MDEntryBuyer"
+   , tnum = 288
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDEntrySeller :: FIXTag
+tMDEntrySeller = FIXTag 
+   { tName = "MDEntrySeller"
+   , tnum = 289
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMDEntryPositionNo :: FIXTag
+tMDEntryPositionNo = FIXTag 
+   { tName = "MDEntryPositionNo"
+   , tnum = 290
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tFinancialStatus :: FIXTag
+tFinancialStatus = FIXTag 
+   { tName = "FinancialStatus"
+   , tnum = 291
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tCorporateAction :: FIXTag
+tCorporateAction = FIXTag 
+   { tName = "CorporateAction"
+   , tnum = 292
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tDefBidSize :: FIXTag
+tDefBidSize = FIXTag 
+   { tName = "DefBidSize"
+   , tnum = 293
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDefOfferSize :: FIXTag
+tDefOfferSize = FIXTag 
+   { tName = "DefOfferSize"
+   , tnum = 294
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoQuoteEntries :: FIXTag
+tNoQuoteEntries = FIXTag 
+   { tName = "NoQuoteEntries"
+   , tnum = 295
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoQuoteSets :: FIXTag
+tNoQuoteSets = FIXTag 
+   { tName = "NoQuoteSets"
+   , tnum = 296
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteStatus :: FIXTag
+tQuoteStatus = FIXTag 
+   { tName = "QuoteStatus"
+   , tnum = 297
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteCancelType :: FIXTag
+tQuoteCancelType = FIXTag 
+   { tName = "QuoteCancelType"
+   , tnum = 298
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteEntryID :: FIXTag
+tQuoteEntryID = FIXTag 
+   { tName = "QuoteEntryID"
+   , tnum = 299
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRejectReason :: FIXTag
+tQuoteRejectReason = FIXTag 
+   { tName = "QuoteRejectReason"
+   , tnum = 300
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteResponseLevel :: FIXTag
+tQuoteResponseLevel = FIXTag 
+   { tName = "QuoteResponseLevel"
+   , tnum = 301
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteSetID :: FIXTag
+tQuoteSetID = FIXTag 
+   { tName = "QuoteSetID"
+   , tnum = 302
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRequestType :: FIXTag
+tQuoteRequestType = FIXTag 
+   { tName = "QuoteRequestType"
+   , tnum = 303
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotNoQuoteEntries :: FIXTag
+tTotNoQuoteEntries = FIXTag 
+   { tName = "TotNoQuoteEntries"
+   , tnum = 304
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingSecurityIDSource :: FIXTag
+tUnderlyingSecurityIDSource = FIXTag 
+   { tName = "UnderlyingSecurityIDSource"
+   , tnum = 305
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingIssuer :: FIXTag
+tUnderlyingIssuer = FIXTag 
+   { tName = "UnderlyingIssuer"
+   , tnum = 306
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityDesc :: FIXTag
+tUnderlyingSecurityDesc = FIXTag 
+   { tName = "UnderlyingSecurityDesc"
+   , tnum = 307
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityExchange :: FIXTag
+tUnderlyingSecurityExchange = FIXTag 
+   { tName = "UnderlyingSecurityExchange"
+   , tnum = 308
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityID :: FIXTag
+tUnderlyingSecurityID = FIXTag 
+   { tName = "UnderlyingSecurityID"
+   , tnum = 309
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityType :: FIXTag
+tUnderlyingSecurityType = FIXTag 
+   { tName = "UnderlyingSecurityType"
+   , tnum = 310
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSymbol :: FIXTag
+tUnderlyingSymbol = FIXTag 
+   { tName = "UnderlyingSymbol"
+   , tnum = 311
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSymbolSfx :: FIXTag
+tUnderlyingSymbolSfx = FIXTag 
+   { tName = "UnderlyingSymbolSfx"
+   , tnum = 312
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingMaturityMonthYear :: FIXTag
+tUnderlyingMaturityMonthYear = FIXTag 
+   { tName = "UnderlyingMaturityMonthYear"
+   , tnum = 313
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tUnderlyingMaturityDay :: FIXTag
+tUnderlyingMaturityDay = FIXTag 
+   { tName = "UnderlyingMaturityDay"
+   , tnum = 314
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingPutOrCall :: FIXTag
+tUnderlyingPutOrCall = FIXTag 
+   { tName = "UnderlyingPutOrCall"
+   , tnum = 315
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingStrikePrice :: FIXTag
+tUnderlyingStrikePrice = FIXTag 
+   { tName = "UnderlyingStrikePrice"
+   , tnum = 316
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingOptAttribute :: FIXTag
+tUnderlyingOptAttribute = FIXTag 
+   { tName = "UnderlyingOptAttribute"
+   , tnum = 317
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCurrency :: FIXTag
+tUnderlyingCurrency = FIXTag 
+   { tName = "UnderlyingCurrency"
+   , tnum = 318
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRatioQty :: FIXTag
+tRatioQty = FIXTag 
+   { tName = "RatioQty"
+   , tnum = 319
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSecurityReqID :: FIXTag
+tSecurityReqID = FIXTag 
+   { tName = "SecurityReqID"
+   , tnum = 320
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityRequestType :: FIXTag
+tSecurityRequestType = FIXTag 
+   { tName = "SecurityRequestType"
+   , tnum = 321
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityResponseID :: FIXTag
+tSecurityResponseID = FIXTag 
+   { tName = "SecurityResponseID"
+   , tnum = 322
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityResponseType :: FIXTag
+tSecurityResponseType = FIXTag 
+   { tName = "SecurityResponseType"
+   , tnum = 323
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityStatusReqID :: FIXTag
+tSecurityStatusReqID = FIXTag 
+   { tName = "SecurityStatusReqID"
+   , tnum = 324
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnsolicitedIndicator :: FIXTag
+tUnsolicitedIndicator = FIXTag 
+   { tName = "UnsolicitedIndicator"
+   , tnum = 325
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tSecurityTradingStatus :: FIXTag
+tSecurityTradingStatus = FIXTag 
+   { tName = "SecurityTradingStatus"
+   , tnum = 326
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tHaltReasonChar :: FIXTag
+tHaltReasonChar = FIXTag 
+   { tName = "HaltReasonChar"
+   , tnum = 327
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tInViewOfCommon :: FIXTag
+tInViewOfCommon = FIXTag 
+   { tName = "InViewOfCommon"
+   , tnum = 328
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tDueToRelated :: FIXTag
+tDueToRelated = FIXTag 
+   { tName = "DueToRelated"
+   , tnum = 329
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tBuyVolume :: FIXTag
+tBuyVolume = FIXTag 
+   { tName = "BuyVolume"
+   , tnum = 330
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSellVolume :: FIXTag
+tSellVolume = FIXTag 
+   { tName = "SellVolume"
+   , tnum = 331
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tHighPx :: FIXTag
+tHighPx = FIXTag 
+   { tName = "HighPx"
+   , tnum = 332
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLowPx :: FIXTag
+tLowPx = FIXTag 
+   { tName = "LowPx"
+   , tnum = 333
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAdjustment :: FIXTag
+tAdjustment = FIXTag 
+   { tName = "Adjustment"
+   , tnum = 334
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesReqID :: FIXTag
+tTradSesReqID = FIXTag 
+   { tName = "TradSesReqID"
+   , tnum = 335
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradingSessionID :: FIXTag
+tTradingSessionID = FIXTag 
+   { tName = "TradingSessionID"
+   , tnum = 336
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tContraTrader :: FIXTag
+tContraTrader = FIXTag 
+   { tName = "ContraTrader"
+   , tnum = 337
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradSesMethod :: FIXTag
+tTradSesMethod = FIXTag 
+   { tName = "TradSesMethod"
+   , tnum = 338
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesMode :: FIXTag
+tTradSesMode = FIXTag 
+   { tName = "TradSesMode"
+   , tnum = 339
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesStatus :: FIXTag
+tTradSesStatus = FIXTag 
+   { tName = "TradSesStatus"
+   , tnum = 340
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradSesStartTime :: FIXTag
+tTradSesStartTime = FIXTag 
+   { tName = "TradSesStartTime"
+   , tnum = 341
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesOpenTime :: FIXTag
+tTradSesOpenTime = FIXTag 
+   { tName = "TradSesOpenTime"
+   , tnum = 342
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesPreCloseTime :: FIXTag
+tTradSesPreCloseTime = FIXTag 
+   { tName = "TradSesPreCloseTime"
+   , tnum = 343
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesCloseTime :: FIXTag
+tTradSesCloseTime = FIXTag 
+   { tName = "TradSesCloseTime"
+   , tnum = 344
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTradSesEndTime :: FIXTag
+tTradSesEndTime = FIXTag 
+   { tName = "TradSesEndTime"
+   , tnum = 345
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tNumberOfOrders :: FIXTag
+tNumberOfOrders = FIXTag 
+   { tName = "NumberOfOrders"
+   , tnum = 346
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMessageEncoding :: FIXTag
+tMessageEncoding = FIXTag 
+   { tName = "MessageEncoding"
+   , tnum = 347
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedIssuerLen :: FIXTag
+tEncodedIssuerLen = FIXTag 
+   { tName = "EncodedIssuerLen"
+   , tnum = 348
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedIssuer :: FIXTag
+tEncodedIssuer = FIXTag 
+   { tName = "EncodedIssuer"
+   , tnum = 349
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedSecurityDescLen :: FIXTag
+tEncodedSecurityDescLen = FIXTag 
+   { tName = "EncodedSecurityDescLen"
+   , tnum = 350
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedSecurityDesc :: FIXTag
+tEncodedSecurityDesc = FIXTag 
+   { tName = "EncodedSecurityDesc"
+   , tnum = 351
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedListExecInstLen :: FIXTag
+tEncodedListExecInstLen = FIXTag 
+   { tName = "EncodedListExecInstLen"
+   , tnum = 352
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedListExecInst :: FIXTag
+tEncodedListExecInst = FIXTag 
+   { tName = "EncodedListExecInst"
+   , tnum = 353
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedTextLen :: FIXTag
+tEncodedTextLen = FIXTag 
+   { tName = "EncodedTextLen"
+   , tnum = 354
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedText :: FIXTag
+tEncodedText = FIXTag 
+   { tName = "EncodedText"
+   , tnum = 355
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedSubjectLen :: FIXTag
+tEncodedSubjectLen = FIXTag 
+   { tName = "EncodedSubjectLen"
+   , tnum = 356
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedSubject :: FIXTag
+tEncodedSubject = FIXTag 
+   { tName = "EncodedSubject"
+   , tnum = 357
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedHeadlineLen :: FIXTag
+tEncodedHeadlineLen = FIXTag 
+   { tName = "EncodedHeadlineLen"
+   , tnum = 358
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedHeadline :: FIXTag
+tEncodedHeadline = FIXTag 
+   { tName = "EncodedHeadline"
+   , tnum = 359
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedAllocTextLen :: FIXTag
+tEncodedAllocTextLen = FIXTag 
+   { tName = "EncodedAllocTextLen"
+   , tnum = 360
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedAllocText :: FIXTag
+tEncodedAllocText = FIXTag 
+   { tName = "EncodedAllocText"
+   , tnum = 361
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedUnderlyingIssuerLen :: FIXTag
+tEncodedUnderlyingIssuerLen = FIXTag 
+   { tName = "EncodedUnderlyingIssuerLen"
+   , tnum = 362
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedUnderlyingIssuer :: FIXTag
+tEncodedUnderlyingIssuer = FIXTag 
+   { tName = "EncodedUnderlyingIssuer"
+   , tnum = 363
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tEncodedUnderlyingSecurityDescLen :: FIXTag
+tEncodedUnderlyingSecurityDescLen = FIXTag 
+   { tName = "EncodedUnderlyingSecurityDescLen"
+   , tnum = 364
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedUnderlyingSecurityDesc :: FIXTag
+tEncodedUnderlyingSecurityDesc = FIXTag 
+   { tName = "EncodedUnderlyingSecurityDesc"
+   , tnum = 365
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tAllocPrice :: FIXTag
+tAllocPrice = FIXTag 
+   { tName = "AllocPrice"
+   , tnum = 366
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteSetValidUntilTime :: FIXTag
+tQuoteSetValidUntilTime = FIXTag 
+   { tName = "QuoteSetValidUntilTime"
+   , tnum = 367
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tQuoteEntryRejectReason :: FIXTag
+tQuoteEntryRejectReason = FIXTag 
+   { tName = "QuoteEntryRejectReason"
+   , tnum = 368
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastMsgSeqNumProcessed :: FIXTag
+tLastMsgSeqNumProcessed = FIXTag 
+   { tName = "LastMsgSeqNumProcessed"
+   , tnum = 369
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOnBehalfOfSendingTime :: FIXTag
+tOnBehalfOfSendingTime = FIXTag 
+   { tName = "OnBehalfOfSendingTime"
+   , tnum = 370
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tRefTagID :: FIXTag
+tRefTagID = FIXTag 
+   { tName = "RefTagID"
+   , tnum = 371
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRefMsgType :: FIXTag
+tRefMsgType = FIXTag 
+   { tName = "RefMsgType"
+   , tnum = 372
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSessionRejectReason :: FIXTag
+tSessionRejectReason = FIXTag 
+   { tName = "SessionRejectReason"
+   , tnum = 373
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidRequestTransType :: FIXTag
+tBidRequestTransType = FIXTag 
+   { tName = "BidRequestTransType"
+   , tnum = 374
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tContraBroker :: FIXTag
+tContraBroker = FIXTag 
+   { tName = "ContraBroker"
+   , tnum = 375
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tComplianceID :: FIXTag
+tComplianceID = FIXTag 
+   { tName = "ComplianceID"
+   , tnum = 376
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSolicitedFlag :: FIXTag
+tSolicitedFlag = FIXTag 
+   { tName = "SolicitedFlag"
+   , tnum = 377
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tExecRestatementReason :: FIXTag
+tExecRestatementReason = FIXTag 
+   { tName = "ExecRestatementReason"
+   , tnum = 378
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBusinessRejectRefID :: FIXTag
+tBusinessRejectRefID = FIXTag 
+   { tName = "BusinessRejectRefID"
+   , tnum = 379
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBusinessRejectReason :: FIXTag
+tBusinessRejectReason = FIXTag 
+   { tName = "BusinessRejectReason"
+   , tnum = 380
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tGrossTradeAmt :: FIXTag
+tGrossTradeAmt = FIXTag 
+   { tName = "GrossTradeAmt"
+   , tnum = 381
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoContraBrokers :: FIXTag
+tNoContraBrokers = FIXTag 
+   { tName = "NoContraBrokers"
+   , tnum = 382
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMaxMessageSize :: FIXTag
+tMaxMessageSize = FIXTag 
+   { tName = "MaxMessageSize"
+   , tnum = 383
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoMsgTypes :: FIXTag
+tNoMsgTypes = FIXTag 
+   { tName = "NoMsgTypes"
+   , tnum = 384
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMsgDirection :: FIXTag
+tMsgDirection = FIXTag 
+   { tName = "MsgDirection"
+   , tnum = 385
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoTradingSessions :: FIXTag
+tNoTradingSessions = FIXTag 
+   { tName = "NoTradingSessions"
+   , tnum = 386
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotalVolumeTraded :: FIXTag
+tTotalVolumeTraded = FIXTag 
+   { tName = "TotalVolumeTraded"
+   , tnum = 387
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDiscretionInst :: FIXTag
+tDiscretionInst = FIXTag 
+   { tName = "DiscretionInst"
+   , tnum = 388
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tDiscretionOffsetValue :: FIXTag
+tDiscretionOffsetValue = FIXTag 
+   { tName = "DiscretionOffsetValue"
+   , tnum = 389
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidID :: FIXTag
+tBidID = FIXTag 
+   { tName = "BidID"
+   , tnum = 390
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClientBidID :: FIXTag
+tClientBidID = FIXTag 
+   { tName = "ClientBidID"
+   , tnum = 391
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tListName :: FIXTag
+tListName = FIXTag 
+   { tName = "ListName"
+   , tnum = 392
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotNoRelatedSym :: FIXTag
+tTotNoRelatedSym = FIXTag 
+   { tName = "TotNoRelatedSym"
+   , tnum = 393
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidType :: FIXTag
+tBidType = FIXTag 
+   { tName = "BidType"
+   , tnum = 394
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNumTickets :: FIXTag
+tNumTickets = FIXTag 
+   { tName = "NumTickets"
+   , tnum = 395
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSideValue1 :: FIXTag
+tSideValue1 = FIXTag 
+   { tName = "SideValue1"
+   , tnum = 396
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSideValue2 :: FIXTag
+tSideValue2 = FIXTag 
+   { tName = "SideValue2"
+   , tnum = 397
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoBidDescriptors :: FIXTag
+tNoBidDescriptors = FIXTag 
+   { tName = "NoBidDescriptors"
+   , tnum = 398
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidDescriptorType :: FIXTag
+tBidDescriptorType = FIXTag 
+   { tName = "BidDescriptorType"
+   , tnum = 399
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidDescriptor :: FIXTag
+tBidDescriptor = FIXTag 
+   { tName = "BidDescriptor"
+   , tnum = 400
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSideValueInd :: FIXTag
+tSideValueInd = FIXTag 
+   { tName = "SideValueInd"
+   , tnum = 401
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLiquidityPctLow :: FIXTag
+tLiquidityPctLow = FIXTag 
+   { tName = "LiquidityPctLow"
+   , tnum = 402
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityPctHigh :: FIXTag
+tLiquidityPctHigh = FIXTag 
+   { tName = "LiquidityPctHigh"
+   , tnum = 403
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityValue :: FIXTag
+tLiquidityValue = FIXTag 
+   { tName = "LiquidityValue"
+   , tnum = 404
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tEFPTrackingError :: FIXTag
+tEFPTrackingError = FIXTag 
+   { tName = "EFPTrackingError"
+   , tnum = 405
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tFairValue :: FIXTag
+tFairValue = FIXTag 
+   { tName = "FairValue"
+   , tnum = 406
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOutsideIndexPct :: FIXTag
+tOutsideIndexPct = FIXTag 
+   { tName = "OutsideIndexPct"
+   , tnum = 407
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tValueOfFutures :: FIXTag
+tValueOfFutures = FIXTag 
+   { tName = "ValueOfFutures"
+   , tnum = 408
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLiquidityIndType :: FIXTag
+tLiquidityIndType = FIXTag 
+   { tName = "LiquidityIndType"
+   , tnum = 409
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tWtAverageLiquidity :: FIXTag
+tWtAverageLiquidity = FIXTag 
+   { tName = "WtAverageLiquidity"
+   , tnum = 410
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExchangeForPhysical :: FIXTag
+tExchangeForPhysical = FIXTag 
+   { tName = "ExchangeForPhysical"
+   , tnum = 411
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tOutMainCntryUIndex :: FIXTag
+tOutMainCntryUIndex = FIXTag 
+   { tName = "OutMainCntryUIndex"
+   , tnum = 412
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCrossPercent :: FIXTag
+tCrossPercent = FIXTag 
+   { tName = "CrossPercent"
+   , tnum = 413
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tProgRptReqs :: FIXTag
+tProgRptReqs = FIXTag 
+   { tName = "ProgRptReqs"
+   , tnum = 414
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tProgPeriodInterval :: FIXTag
+tProgPeriodInterval = FIXTag 
+   { tName = "ProgPeriodInterval"
+   , tnum = 415
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIncTaxInd :: FIXTag
+tIncTaxInd = FIXTag 
+   { tName = "IncTaxInd"
+   , tnum = 416
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNumBidders :: FIXTag
+tNumBidders = FIXTag 
+   { tName = "NumBidders"
+   , tnum = 417
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBidTradeType :: FIXTag
+tBidTradeType = FIXTag 
+   { tName = "BidTradeType"
+   , tnum = 418
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBasisPxType :: FIXTag
+tBasisPxType = FIXTag 
+   { tName = "BasisPxType"
+   , tnum = 419
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoBidComponents :: FIXTag
+tNoBidComponents = FIXTag 
+   { tName = "NoBidComponents"
+   , tnum = 420
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCountry :: FIXTag
+tCountry = FIXTag 
+   { tName = "Country"
+   , tnum = 421
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotNoStrikes :: FIXTag
+tTotNoStrikes = FIXTag 
+   { tName = "TotNoStrikes"
+   , tnum = 422
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPriceType :: FIXTag
+tPriceType = FIXTag 
+   { tName = "PriceType"
+   , tnum = 423
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDayOrderQty :: FIXTag
+tDayOrderQty = FIXTag 
+   { tName = "DayOrderQty"
+   , tnum = 424
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDayCumQty :: FIXTag
+tDayCumQty = FIXTag 
+   { tName = "DayCumQty"
+   , tnum = 425
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDayAvgPx :: FIXTag
+tDayAvgPx = FIXTag 
+   { tName = "DayAvgPx"
+   , tnum = 426
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tGTBookingInst :: FIXTag
+tGTBookingInst = FIXTag 
+   { tName = "GTBookingInst"
+   , tnum = 427
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoStrikes :: FIXTag
+tNoStrikes = FIXTag 
+   { tName = "NoStrikes"
+   , tnum = 428
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListStatusType :: FIXTag
+tListStatusType = FIXTag 
+   { tName = "ListStatusType"
+   , tnum = 429
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNetGrossInd :: FIXTag
+tNetGrossInd = FIXTag 
+   { tName = "NetGrossInd"
+   , tnum = 430
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tListOrderStatus :: FIXTag
+tListOrderStatus = FIXTag 
+   { tName = "ListOrderStatus"
+   , tnum = 431
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExpireDate :: FIXTag
+tExpireDate = FIXTag 
+   { tName = "ExpireDate"
+   , tnum = 432
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tListExecInstType :: FIXTag
+tListExecInstType = FIXTag 
+   { tName = "ListExecInstType"
+   , tnum = 433
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCxlRejResponseTo :: FIXTag
+tCxlRejResponseTo = FIXTag 
+   { tName = "CxlRejResponseTo"
+   , tnum = 434
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCouponRate :: FIXTag
+tUnderlyingCouponRate = FIXTag 
+   { tName = "UnderlyingCouponRate"
+   , tnum = 435
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingContractMultiplier :: FIXTag
+tUnderlyingContractMultiplier = FIXTag 
+   { tName = "UnderlyingContractMultiplier"
+   , tnum = 436
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContraTradeQty :: FIXTag
+tContraTradeQty = FIXTag 
+   { tName = "ContraTradeQty"
+   , tnum = 437
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContraTradeTime :: FIXTag
+tContraTradeTime = FIXTag 
+   { tName = "ContraTradeTime"
+   , tnum = 438
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tClearingFirm :: FIXTag
+tClearingFirm = FIXTag 
+   { tName = "ClearingFirm"
+   , tnum = 439
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClearingAccount :: FIXTag
+tClearingAccount = FIXTag 
+   { tName = "ClearingAccount"
+   , tnum = 440
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLiquidityNumSecurities :: FIXTag
+tLiquidityNumSecurities = FIXTag 
+   { tName = "LiquidityNumSecurities"
+   , tnum = 441
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMultiLegReportingType :: FIXTag
+tMultiLegReportingType = FIXTag 
+   { tName = "MultiLegReportingType"
+   , tnum = 442
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tStrikeTime :: FIXTag
+tStrikeTime = FIXTag 
+   { tName = "StrikeTime"
+   , tnum = 443
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tListStatusText :: FIXTag
+tListStatusText = FIXTag 
+   { tName = "ListStatusText"
+   , tnum = 444
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedListStatusTextLen :: FIXTag
+tEncodedListStatusTextLen = FIXTag 
+   { tName = "EncodedListStatusTextLen"
+   , tnum = 445
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedListStatusText :: FIXTag
+tEncodedListStatusText = FIXTag 
+   { tName = "EncodedListStatusText"
+   , tnum = 446
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tPartyIDSource :: FIXTag
+tPartyIDSource = FIXTag 
+   { tName = "PartyIDSource"
+   , tnum = 447
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPartyID :: FIXTag
+tPartyID = FIXTag 
+   { tName = "PartyID"
+   , tnum = 448
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotalVolumeTradedDate :: FIXTag
+tTotalVolumeTradedDate = FIXTag 
+   { tName = "TotalVolumeTradedDate"
+   , tnum = 449
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tTotalVolumeTradedTime :: FIXTag
+tTotalVolumeTradedTime = FIXTag 
+   { tName = "TotalVolumeTradedTime"
+   , tnum = 450
+   , tparser = toFIXTimeOnly
+   , arbitraryValue = FIXTimeOnly <$> arbitrary }
+
+tNetChgPrevDay :: FIXTag
+tNetChgPrevDay = FIXTag 
+   { tName = "NetChgPrevDay"
+   , tnum = 451
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPartyRole :: FIXTag
+tPartyRole = FIXTag 
+   { tName = "PartyRole"
+   , tnum = 452
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoPartyIDs :: FIXTag
+tNoPartyIDs = FIXTag 
+   { tName = "NoPartyIDs"
+   , tnum = 453
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoSecurityAltID :: FIXTag
+tNoSecurityAltID = FIXTag 
+   { tName = "NoSecurityAltID"
+   , tnum = 454
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityAltID :: FIXTag
+tSecurityAltID = FIXTag 
+   { tName = "SecurityAltID"
+   , tnum = 455
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecurityAltIDSource :: FIXTag
+tSecurityAltIDSource = FIXTag 
+   { tName = "SecurityAltIDSource"
+   , tnum = 456
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoUnderlyingSecurityAltID :: FIXTag
+tNoUnderlyingSecurityAltID = FIXTag 
+   { tName = "NoUnderlyingSecurityAltID"
+   , tnum = 457
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingSecurityAltID :: FIXTag
+tUnderlyingSecurityAltID = FIXTag 
+   { tName = "UnderlyingSecurityAltID"
+   , tnum = 458
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecurityAltIDSource :: FIXTag
+tUnderlyingSecurityAltIDSource = FIXTag 
+   { tName = "UnderlyingSecurityAltIDSource"
+   , tnum = 459
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tProduct :: FIXTag
+tProduct = FIXTag 
+   { tName = "Product"
+   , tnum = 460
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCFICode :: FIXTag
+tCFICode = FIXTag 
+   { tName = "CFICode"
+   , tnum = 461
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingProduct :: FIXTag
+tUnderlyingProduct = FIXTag 
+   { tName = "UnderlyingProduct"
+   , tnum = 462
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingCFICode :: FIXTag
+tUnderlyingCFICode = FIXTag 
+   { tName = "UnderlyingCFICode"
+   , tnum = 463
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTestMessageIndicator :: FIXTag
+tTestMessageIndicator = FIXTag 
+   { tName = "TestMessageIndicator"
+   , tnum = 464
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tQuantityType :: FIXTag
+tQuantityType = FIXTag 
+   { tName = "QuantityType"
+   , tnum = 465
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBookingRefID :: FIXTag
+tBookingRefID = FIXTag 
+   { tName = "BookingRefID"
+   , tnum = 466
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tIndividualAllocID :: FIXTag
+tIndividualAllocID = FIXTag 
+   { tName = "IndividualAllocID"
+   , tnum = 467
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRoundingDirection :: FIXTag
+tRoundingDirection = FIXTag 
+   { tName = "RoundingDirection"
+   , tnum = 468
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRoundingModulus :: FIXTag
+tRoundingModulus = FIXTag 
+   { tName = "RoundingModulus"
+   , tnum = 469
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCountryOfIssue :: FIXTag
+tCountryOfIssue = FIXTag 
+   { tName = "CountryOfIssue"
+   , tnum = 470
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStateOrProvinceOfIssue :: FIXTag
+tStateOrProvinceOfIssue = FIXTag 
+   { tName = "StateOrProvinceOfIssue"
+   , tnum = 471
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLocaleOfIssue :: FIXTag
+tLocaleOfIssue = FIXTag 
+   { tName = "LocaleOfIssue"
+   , tnum = 472
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoRegistDtls :: FIXTag
+tNoRegistDtls = FIXTag 
+   { tName = "NoRegistDtls"
+   , tnum = 473
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMailingDtls :: FIXTag
+tMailingDtls = FIXTag 
+   { tName = "MailingDtls"
+   , tnum = 474
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tInvestorCountryOfResidence :: FIXTag
+tInvestorCountryOfResidence = FIXTag 
+   { tName = "InvestorCountryOfResidence"
+   , tnum = 475
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPaymentRef :: FIXTag
+tPaymentRef = FIXTag 
+   { tName = "PaymentRef"
+   , tnum = 476
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDistribPaymentMethod :: FIXTag
+tDistribPaymentMethod = FIXTag 
+   { tName = "DistribPaymentMethod"
+   , tnum = 477
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCashDistribCurr :: FIXTag
+tCashDistribCurr = FIXTag 
+   { tName = "CashDistribCurr"
+   , tnum = 478
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCommCurrency :: FIXTag
+tCommCurrency = FIXTag 
+   { tName = "CommCurrency"
+   , tnum = 479
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCancellationRights :: FIXTag
+tCancellationRights = FIXTag 
+   { tName = "CancellationRights"
+   , tnum = 480
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMoneyLaunderingStatus :: FIXTag
+tMoneyLaunderingStatus = FIXTag 
+   { tName = "MoneyLaunderingStatus"
+   , tnum = 481
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMailingInst :: FIXTag
+tMailingInst = FIXTag 
+   { tName = "MailingInst"
+   , tnum = 482
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTransBkdTime :: FIXTag
+tTransBkdTime = FIXTag 
+   { tName = "TransBkdTime"
+   , tnum = 483
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tExecPriceType :: FIXTag
+tExecPriceType = FIXTag 
+   { tName = "ExecPriceType"
+   , tnum = 484
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecPriceAdjustment :: FIXTag
+tExecPriceAdjustment = FIXTag 
+   { tName = "ExecPriceAdjustment"
+   , tnum = 485
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDateOfBirth :: FIXTag
+tDateOfBirth = FIXTag 
+   { tName = "DateOfBirth"
+   , tnum = 486
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tTradeReportTransType :: FIXTag
+tTradeReportTransType = FIXTag 
+   { tName = "TradeReportTransType"
+   , tnum = 487
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCardHolderName :: FIXTag
+tCardHolderName = FIXTag 
+   { tName = "CardHolderName"
+   , tnum = 488
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCardNumber :: FIXTag
+tCardNumber = FIXTag 
+   { tName = "CardNumber"
+   , tnum = 489
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCardExpDate :: FIXTag
+tCardExpDate = FIXTag 
+   { tName = "CardExpDate"
+   , tnum = 490
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tCardIssNum :: FIXTag
+tCardIssNum = FIXTag 
+   { tName = "CardIssNum"
+   , tnum = 491
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPaymentMethod :: FIXTag
+tPaymentMethod = FIXTag 
+   { tName = "PaymentMethod"
+   , tnum = 492
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistAcctType :: FIXTag
+tRegistAcctType = FIXTag 
+   { tName = "RegistAcctType"
+   , tnum = 493
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDesignation :: FIXTag
+tDesignation = FIXTag 
+   { tName = "Designation"
+   , tnum = 494
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTaxAdvantageType :: FIXTag
+tTaxAdvantageType = FIXTag 
+   { tName = "TaxAdvantageType"
+   , tnum = 495
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistRejReasonText :: FIXTag
+tRegistRejReasonText = FIXTag 
+   { tName = "RegistRejReasonText"
+   , tnum = 496
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tFundRenewWaiv :: FIXTag
+tFundRenewWaiv = FIXTag 
+   { tName = "FundRenewWaiv"
+   , tnum = 497
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tCashDistribAgentName :: FIXTag
+tCashDistribAgentName = FIXTag 
+   { tName = "CashDistribAgentName"
+   , tnum = 498
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribAgentCode :: FIXTag
+tCashDistribAgentCode = FIXTag 
+   { tName = "CashDistribAgentCode"
+   , tnum = 499
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribAgentAcctNumber :: FIXTag
+tCashDistribAgentAcctNumber = FIXTag 
+   { tName = "CashDistribAgentAcctNumber"
+   , tnum = 500
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribPayRef :: FIXTag
+tCashDistribPayRef = FIXTag 
+   { tName = "CashDistribPayRef"
+   , tnum = 501
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashDistribAgentAcctName :: FIXTag
+tCashDistribAgentAcctName = FIXTag 
+   { tName = "CashDistribAgentAcctName"
+   , tnum = 502
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCardStartDate :: FIXTag
+tCardStartDate = FIXTag 
+   { tName = "CardStartDate"
+   , tnum = 503
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tPaymentDate :: FIXTag
+tPaymentDate = FIXTag 
+   { tName = "PaymentDate"
+   , tnum = 504
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tPaymentRemitterID :: FIXTag
+tPaymentRemitterID = FIXTag 
+   { tName = "PaymentRemitterID"
+   , tnum = 505
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRegistStatus :: FIXTag
+tRegistStatus = FIXTag 
+   { tName = "RegistStatus"
+   , tnum = 506
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tRegistRejReasonCode :: FIXTag
+tRegistRejReasonCode = FIXTag 
+   { tName = "RegistRejReasonCode"
+   , tnum = 507
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistRefID :: FIXTag
+tRegistRefID = FIXTag 
+   { tName = "RegistRefID"
+   , tnum = 508
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRegistDtls :: FIXTag
+tRegistDtls = FIXTag 
+   { tName = "RegistDtls"
+   , tnum = 509
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoDistribInsts :: FIXTag
+tNoDistribInsts = FIXTag 
+   { tName = "NoDistribInsts"
+   , tnum = 510
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRegistEmail :: FIXTag
+tRegistEmail = FIXTag 
+   { tName = "RegistEmail"
+   , tnum = 511
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDistribPercentage :: FIXTag
+tDistribPercentage = FIXTag 
+   { tName = "DistribPercentage"
+   , tnum = 512
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRegistID :: FIXTag
+tRegistID = FIXTag 
+   { tName = "RegistID"
+   , tnum = 513
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRegistTransType :: FIXTag
+tRegistTransType = FIXTag 
+   { tName = "RegistTransType"
+   , tnum = 514
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tExecValuationPoint :: FIXTag
+tExecValuationPoint = FIXTag 
+   { tName = "ExecValuationPoint"
+   , tnum = 515
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tOrderPercent :: FIXTag
+tOrderPercent = FIXTag 
+   { tName = "OrderPercent"
+   , tnum = 516
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOwnershipType :: FIXTag
+tOwnershipType = FIXTag 
+   { tName = "OwnershipType"
+   , tnum = 517
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNoContAmts :: FIXTag
+tNoContAmts = FIXTag 
+   { tName = "NoContAmts"
+   , tnum = 518
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tContAmtType :: FIXTag
+tContAmtType = FIXTag 
+   { tName = "ContAmtType"
+   , tnum = 519
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tContAmtValue :: FIXTag
+tContAmtValue = FIXTag 
+   { tName = "ContAmtValue"
+   , tnum = 520
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tContAmtCurr :: FIXTag
+tContAmtCurr = FIXTag 
+   { tName = "ContAmtCurr"
+   , tnum = 521
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOwnerType :: FIXTag
+tOwnerType = FIXTag 
+   { tName = "OwnerType"
+   , tnum = 522
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPartySubID :: FIXTag
+tPartySubID = FIXTag 
+   { tName = "PartySubID"
+   , tnum = 523
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNestedPartyID :: FIXTag
+tNestedPartyID = FIXTag 
+   { tName = "NestedPartyID"
+   , tnum = 524
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNestedPartyIDSource :: FIXTag
+tNestedPartyIDSource = FIXTag 
+   { tName = "NestedPartyIDSource"
+   , tnum = 525
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSecondaryClOrdID :: FIXTag
+tSecondaryClOrdID = FIXTag 
+   { tName = "SecondaryClOrdID"
+   , tnum = 526
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecondaryExecID :: FIXTag
+tSecondaryExecID = FIXTag 
+   { tName = "SecondaryExecID"
+   , tnum = 527
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrderCapacity :: FIXTag
+tOrderCapacity = FIXTag 
+   { tName = "OrderCapacity"
+   , tnum = 528
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tOrderRestrictions :: FIXTag
+tOrderRestrictions = FIXTag 
+   { tName = "OrderRestrictions"
+   , tnum = 529
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMassCancelRequestType :: FIXTag
+tMassCancelRequestType = FIXTag 
+   { tName = "MassCancelRequestType"
+   , tnum = 530
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMassCancelResponse :: FIXTag
+tMassCancelResponse = FIXTag 
+   { tName = "MassCancelResponse"
+   , tnum = 531
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMassCancelRejectReason :: FIXTag
+tMassCancelRejectReason = FIXTag 
+   { tName = "MassCancelRejectReason"
+   , tnum = 532
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTotalAffectedOrders :: FIXTag
+tTotalAffectedOrders = FIXTag 
+   { tName = "TotalAffectedOrders"
+   , tnum = 533
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoAffectedOrders :: FIXTag
+tNoAffectedOrders = FIXTag 
+   { tName = "NoAffectedOrders"
+   , tnum = 534
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAffectedOrderID :: FIXTag
+tAffectedOrderID = FIXTag 
+   { tName = "AffectedOrderID"
+   , tnum = 535
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAffectedSecondaryOrderID :: FIXTag
+tAffectedSecondaryOrderID = FIXTag 
+   { tName = "AffectedSecondaryOrderID"
+   , tnum = 536
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteType :: FIXTag
+tQuoteType = FIXTag 
+   { tName = "QuoteType"
+   , tnum = 537
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNestedPartyRole :: FIXTag
+tNestedPartyRole = FIXTag 
+   { tName = "NestedPartyRole"
+   , tnum = 538
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoNestedPartyIDs :: FIXTag
+tNoNestedPartyIDs = FIXTag 
+   { tName = "NoNestedPartyIDs"
+   , tnum = 539
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotalAccruedInterestAmt :: FIXTag
+tTotalAccruedInterestAmt = FIXTag 
+   { tName = "TotalAccruedInterestAmt"
+   , tnum = 540
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMaturityDate :: FIXTag
+tMaturityDate = FIXTag 
+   { tName = "MaturityDate"
+   , tnum = 541
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tUnderlyingMaturityDate :: FIXTag
+tUnderlyingMaturityDate = FIXTag 
+   { tName = "UnderlyingMaturityDate"
+   , tnum = 542
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tInstrRegistry :: FIXTag
+tInstrRegistry = FIXTag 
+   { tName = "InstrRegistry"
+   , tnum = 543
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCashMargin :: FIXTag
+tCashMargin = FIXTag 
+   { tName = "CashMargin"
+   , tnum = 544
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNestedPartySubID :: FIXTag
+tNestedPartySubID = FIXTag 
+   { tName = "NestedPartySubID"
+   , tnum = 545
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tScope :: FIXTag
+tScope = FIXTag 
+   { tName = "Scope"
+   , tnum = 546
+   , tparser = toFIXMultipleValueString
+   , arbitraryValue = FIXMultipleValueString <$> arbitrary }
+
+tMDImplicitDelete :: FIXTag
+tMDImplicitDelete = FIXTag 
+   { tName = "MDImplicitDelete"
+   , tnum = 547
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tCrossID :: FIXTag
+tCrossID = FIXTag 
+   { tName = "CrossID"
+   , tnum = 548
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCrossType :: FIXTag
+tCrossType = FIXTag 
+   { tName = "CrossType"
+   , tnum = 549
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCrossPrioritization :: FIXTag
+tCrossPrioritization = FIXTag 
+   { tName = "CrossPrioritization"
+   , tnum = 550
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrigCrossID :: FIXTag
+tOrigCrossID = FIXTag 
+   { tName = "OrigCrossID"
+   , tnum = 551
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoSides :: FIXTag
+tNoSides = FIXTag 
+   { tName = "NoSides"
+   , tnum = 552
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUsername :: FIXTag
+tUsername = FIXTag 
+   { tName = "Username"
+   , tnum = 553
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPassword :: FIXTag
+tPassword = FIXTag 
+   { tName = "Password"
+   , tnum = 554
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoLegs :: FIXTag
+tNoLegs = FIXTag 
+   { tName = "NoLegs"
+   , tnum = 555
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegCurrency :: FIXTag
+tLegCurrency = FIXTag 
+   { tName = "LegCurrency"
+   , tnum = 556
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotNoSecurityTypes :: FIXTag
+tTotNoSecurityTypes = FIXTag 
+   { tName = "TotNoSecurityTypes"
+   , tnum = 557
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoSecurityTypes :: FIXTag
+tNoSecurityTypes = FIXTag 
+   { tName = "NoSecurityTypes"
+   , tnum = 558
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityListRequestType :: FIXTag
+tSecurityListRequestType = FIXTag 
+   { tName = "SecurityListRequestType"
+   , tnum = 559
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecurityRequestResult :: FIXTag
+tSecurityRequestResult = FIXTag 
+   { tName = "SecurityRequestResult"
+   , tnum = 560
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tRoundLot :: FIXTag
+tRoundLot = FIXTag 
+   { tName = "RoundLot"
+   , tnum = 561
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMinTradeVol :: FIXTag
+tMinTradeVol = FIXTag 
+   { tName = "MinTradeVol"
+   , tnum = 562
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMultiLegRptTypeReq :: FIXTag
+tMultiLegRptTypeReq = FIXTag 
+   { tName = "MultiLegRptTypeReq"
+   , tnum = 563
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegPositionEffect :: FIXTag
+tLegPositionEffect = FIXTag 
+   { tName = "LegPositionEffect"
+   , tnum = 564
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLegCoveredOrUncovered :: FIXTag
+tLegCoveredOrUncovered = FIXTag 
+   { tName = "LegCoveredOrUncovered"
+   , tnum = 565
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegPrice :: FIXTag
+tLegPrice = FIXTag 
+   { tName = "LegPrice"
+   , tnum = 566
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTradSesStatusRejReason :: FIXTag
+tTradSesStatusRejReason = FIXTag 
+   { tName = "TradSesStatusRejReason"
+   , tnum = 567
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeRequestID :: FIXTag
+tTradeRequestID = FIXTag 
+   { tName = "TradeRequestID"
+   , tnum = 568
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeRequestType :: FIXTag
+tTradeRequestType = FIXTag 
+   { tName = "TradeRequestType"
+   , tnum = 569
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPreviouslyReported :: FIXTag
+tPreviouslyReported = FIXTag 
+   { tName = "PreviouslyReported"
+   , tnum = 570
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tTradeReportID :: FIXTag
+tTradeReportID = FIXTag 
+   { tName = "TradeReportID"
+   , tnum = 571
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeReportRefID :: FIXTag
+tTradeReportRefID = FIXTag 
+   { tName = "TradeReportRefID"
+   , tnum = 572
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMatchStatus :: FIXTag
+tMatchStatus = FIXTag 
+   { tName = "MatchStatus"
+   , tnum = 573
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tMatchType :: FIXTag
+tMatchType = FIXTag 
+   { tName = "MatchType"
+   , tnum = 574
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOddLot :: FIXTag
+tOddLot = FIXTag 
+   { tName = "OddLot"
+   , tnum = 575
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tNoClearingInstructions :: FIXTag
+tNoClearingInstructions = FIXTag 
+   { tName = "NoClearingInstructions"
+   , tnum = 576
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClearingInstruction :: FIXTag
+tClearingInstruction = FIXTag 
+   { tName = "ClearingInstruction"
+   , tnum = 577
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeInputSource :: FIXTag
+tTradeInputSource = FIXTag 
+   { tName = "TradeInputSource"
+   , tnum = 578
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeInputDevice :: FIXTag
+tTradeInputDevice = FIXTag 
+   { tName = "TradeInputDevice"
+   , tnum = 579
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoDates :: FIXTag
+tNoDates = FIXTag 
+   { tName = "NoDates"
+   , tnum = 580
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAccountType :: FIXTag
+tAccountType = FIXTag 
+   { tName = "AccountType"
+   , tnum = 581
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCustOrderCapacity :: FIXTag
+tCustOrderCapacity = FIXTag 
+   { tName = "CustOrderCapacity"
+   , tnum = 582
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tClOrdLinkID :: FIXTag
+tClOrdLinkID = FIXTag 
+   { tName = "ClOrdLinkID"
+   , tnum = 583
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMassStatusReqID :: FIXTag
+tMassStatusReqID = FIXTag 
+   { tName = "MassStatusReqID"
+   , tnum = 584
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMassStatusReqType :: FIXTag
+tMassStatusReqType = FIXTag 
+   { tName = "MassStatusReqType"
+   , tnum = 585
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrigOrdModTime :: FIXTag
+tOrigOrdModTime = FIXTag 
+   { tName = "OrigOrdModTime"
+   , tnum = 586
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tLegSettlType :: FIXTag
+tLegSettlType = FIXTag 
+   { tName = "LegSettlType"
+   , tnum = 587
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLegSettlDate :: FIXTag
+tLegSettlDate = FIXTag 
+   { tName = "LegSettlDate"
+   , tnum = 588
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tDayBookingInst :: FIXTag
+tDayBookingInst = FIXTag 
+   { tName = "DayBookingInst"
+   , tnum = 589
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tBookingUnit :: FIXTag
+tBookingUnit = FIXTag 
+   { tName = "BookingUnit"
+   , tnum = 590
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tPreallocMethod :: FIXTag
+tPreallocMethod = FIXTag 
+   { tName = "PreallocMethod"
+   , tnum = 591
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tUnderlyingCountryOfIssue :: FIXTag
+tUnderlyingCountryOfIssue = FIXTag 
+   { tName = "UnderlyingCountryOfIssue"
+   , tnum = 592
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingStateOrProvinceOfIssue :: FIXTag
+tUnderlyingStateOrProvinceOfIssue = FIXTag 
+   { tName = "UnderlyingStateOrProvinceOfIssue"
+   , tnum = 593
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingLocaleOfIssue :: FIXTag
+tUnderlyingLocaleOfIssue = FIXTag 
+   { tName = "UnderlyingLocaleOfIssue"
+   , tnum = 594
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingInstrRegistry :: FIXTag
+tUnderlyingInstrRegistry = FIXTag 
+   { tName = "UnderlyingInstrRegistry"
+   , tnum = 595
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegCountryOfIssue :: FIXTag
+tLegCountryOfIssue = FIXTag 
+   { tName = "LegCountryOfIssue"
+   , tnum = 596
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegStateOrProvinceOfIssue :: FIXTag
+tLegStateOrProvinceOfIssue = FIXTag 
+   { tName = "LegStateOrProvinceOfIssue"
+   , tnum = 597
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegLocaleOfIssue :: FIXTag
+tLegLocaleOfIssue = FIXTag 
+   { tName = "LegLocaleOfIssue"
+   , tnum = 598
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegInstrRegistry :: FIXTag
+tLegInstrRegistry = FIXTag 
+   { tName = "LegInstrRegistry"
+   , tnum = 599
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSymbol :: FIXTag
+tLegSymbol = FIXTag 
+   { tName = "LegSymbol"
+   , tnum = 600
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSymbolSfx :: FIXTag
+tLegSymbolSfx = FIXTag 
+   { tName = "LegSymbolSfx"
+   , tnum = 601
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityID :: FIXTag
+tLegSecurityID = FIXTag 
+   { tName = "LegSecurityID"
+   , tnum = 602
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityIDSource :: FIXTag
+tLegSecurityIDSource = FIXTag 
+   { tName = "LegSecurityIDSource"
+   , tnum = 603
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoLegSecurityAltID :: FIXTag
+tNoLegSecurityAltID = FIXTag 
+   { tName = "NoLegSecurityAltID"
+   , tnum = 604
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegSecurityAltID :: FIXTag
+tLegSecurityAltID = FIXTag 
+   { tName = "LegSecurityAltID"
+   , tnum = 605
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityAltIDSource :: FIXTag
+tLegSecurityAltIDSource = FIXTag 
+   { tName = "LegSecurityAltIDSource"
+   , tnum = 606
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegProduct :: FIXTag
+tLegProduct = FIXTag 
+   { tName = "LegProduct"
+   , tnum = 607
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegCFICode :: FIXTag
+tLegCFICode = FIXTag 
+   { tName = "LegCFICode"
+   , tnum = 608
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecurityType :: FIXTag
+tLegSecurityType = FIXTag 
+   { tName = "LegSecurityType"
+   , tnum = 609
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegMaturityMonthYear :: FIXTag
+tLegMaturityMonthYear = FIXTag 
+   { tName = "LegMaturityMonthYear"
+   , tnum = 610
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tLegMaturityDate :: FIXTag
+tLegMaturityDate = FIXTag 
+   { tName = "LegMaturityDate"
+   , tnum = 611
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegStrikePrice :: FIXTag
+tLegStrikePrice = FIXTag 
+   { tName = "LegStrikePrice"
+   , tnum = 612
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegOptAttribute :: FIXTag
+tLegOptAttribute = FIXTag 
+   { tName = "LegOptAttribute"
+   , tnum = 613
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tLegContractMultiplier :: FIXTag
+tLegContractMultiplier = FIXTag 
+   { tName = "LegContractMultiplier"
+   , tnum = 614
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegCouponRate :: FIXTag
+tLegCouponRate = FIXTag 
+   { tName = "LegCouponRate"
+   , tnum = 615
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegSecurityExchange :: FIXTag
+tLegSecurityExchange = FIXTag 
+   { tName = "LegSecurityExchange"
+   , tnum = 616
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegIssuer :: FIXTag
+tLegIssuer = FIXTag 
+   { tName = "LegIssuer"
+   , tnum = 617
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedLegIssuerLen :: FIXTag
+tEncodedLegIssuerLen = FIXTag 
+   { tName = "EncodedLegIssuerLen"
+   , tnum = 618
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedLegIssuer :: FIXTag
+tEncodedLegIssuer = FIXTag 
+   { tName = "EncodedLegIssuer"
+   , tnum = 619
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tLegSecurityDesc :: FIXTag
+tLegSecurityDesc = FIXTag 
+   { tName = "LegSecurityDesc"
+   , tnum = 620
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tEncodedLegSecurityDescLen :: FIXTag
+tEncodedLegSecurityDescLen = FIXTag 
+   { tName = "EncodedLegSecurityDescLen"
+   , tnum = 621
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEncodedLegSecurityDesc :: FIXTag
+tEncodedLegSecurityDesc = FIXTag 
+   { tName = "EncodedLegSecurityDesc"
+   , tnum = 622
+   , tparser = toFIXData
+   , arbitraryValue = FIXData <$> arbitrary }
+
+tLegRatioQty :: FIXTag
+tLegRatioQty = FIXTag 
+   { tName = "LegRatioQty"
+   , tnum = 623
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegSide :: FIXTag
+tLegSide = FIXTag 
+   { tName = "LegSide"
+   , tnum = 624
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTradingSessionSubID :: FIXTag
+tTradingSessionSubID = FIXTag 
+   { tName = "TradingSessionSubID"
+   , tnum = 625
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocType :: FIXTag
+tAllocType = FIXTag 
+   { tName = "AllocType"
+   , tnum = 626
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoHops :: FIXTag
+tNoHops = FIXTag 
+   { tName = "NoHops"
+   , tnum = 627
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tHopCompID :: FIXTag
+tHopCompID = FIXTag 
+   { tName = "HopCompID"
+   , tnum = 628
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tHopSendingTime :: FIXTag
+tHopSendingTime = FIXTag 
+   { tName = "HopSendingTime"
+   , tnum = 629
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tHopRefID :: FIXTag
+tHopRefID = FIXTag 
+   { tName = "HopRefID"
+   , tnum = 630
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMidPx :: FIXTag
+tMidPx = FIXTag 
+   { tName = "MidPx"
+   , tnum = 631
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidYield :: FIXTag
+tBidYield = FIXTag 
+   { tName = "BidYield"
+   , tnum = 632
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMidYield :: FIXTag
+tMidYield = FIXTag 
+   { tName = "MidYield"
+   , tnum = 633
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferYield :: FIXTag
+tOfferYield = FIXTag 
+   { tName = "OfferYield"
+   , tnum = 634
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tClearingFeeIndicator :: FIXTag
+tClearingFeeIndicator = FIXTag 
+   { tName = "ClearingFeeIndicator"
+   , tnum = 635
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tWorkingIndicator :: FIXTag
+tWorkingIndicator = FIXTag 
+   { tName = "WorkingIndicator"
+   , tnum = 636
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tLegLastPx :: FIXTag
+tLegLastPx = FIXTag 
+   { tName = "LegLastPx"
+   , tnum = 637
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPriorityIndicator :: FIXTag
+tPriorityIndicator = FIXTag 
+   { tName = "PriorityIndicator"
+   , tnum = 638
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPriceImprovement :: FIXTag
+tPriceImprovement = FIXTag 
+   { tName = "PriceImprovement"
+   , tnum = 639
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPrice2 :: FIXTag
+tPrice2 = FIXTag 
+   { tName = "Price2"
+   , tnum = 640
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastForwardPoints2 :: FIXTag
+tLastForwardPoints2 = FIXTag 
+   { tName = "LastForwardPoints2"
+   , tnum = 641
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBidForwardPoints2 :: FIXTag
+tBidForwardPoints2 = FIXTag 
+   { tName = "BidForwardPoints2"
+   , tnum = 642
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOfferForwardPoints2 :: FIXTag
+tOfferForwardPoints2 = FIXTag 
+   { tName = "OfferForwardPoints2"
+   , tnum = 643
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tRFQReqID :: FIXTag
+tRFQReqID = FIXTag 
+   { tName = "RFQReqID"
+   , tnum = 644
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMktBidPx :: FIXTag
+tMktBidPx = FIXTag 
+   { tName = "MktBidPx"
+   , tnum = 645
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMktOfferPx :: FIXTag
+tMktOfferPx = FIXTag 
+   { tName = "MktOfferPx"
+   , tnum = 646
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMinBidSize :: FIXTag
+tMinBidSize = FIXTag 
+   { tName = "MinBidSize"
+   , tnum = 647
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMinOfferSize :: FIXTag
+tMinOfferSize = FIXTag 
+   { tName = "MinOfferSize"
+   , tnum = 648
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteStatusReqID :: FIXTag
+tQuoteStatusReqID = FIXTag 
+   { tName = "QuoteStatusReqID"
+   , tnum = 649
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegalConfirm :: FIXTag
+tLegalConfirm = FIXTag 
+   { tName = "LegalConfirm"
+   , tnum = 650
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tUnderlyingLastPx :: FIXTag
+tUnderlyingLastPx = FIXTag 
+   { tName = "UnderlyingLastPx"
+   , tnum = 651
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingLastQty :: FIXTag
+tUnderlyingLastQty = FIXTag 
+   { tName = "UnderlyingLastQty"
+   , tnum = 652
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSecDefStatus :: FIXTag
+tSecDefStatus = FIXTag 
+   { tName = "SecDefStatus"
+   , tnum = 653
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegRefID :: FIXTag
+tLegRefID = FIXTag 
+   { tName = "LegRefID"
+   , tnum = 654
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tContraLegRefID :: FIXTag
+tContraLegRefID = FIXTag 
+   { tName = "ContraLegRefID"
+   , tnum = 655
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlCurrBidFxRate :: FIXTag
+tSettlCurrBidFxRate = FIXTag 
+   { tName = "SettlCurrBidFxRate"
+   , tnum = 656
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlCurrOfferFxRate :: FIXTag
+tSettlCurrOfferFxRate = FIXTag 
+   { tName = "SettlCurrOfferFxRate"
+   , tnum = 657
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tQuoteRequestRejectReason :: FIXTag
+tQuoteRequestRejectReason = FIXTag 
+   { tName = "QuoteRequestRejectReason"
+   , tnum = 658
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSideComplianceID :: FIXTag
+tSideComplianceID = FIXTag 
+   { tName = "SideComplianceID"
+   , tnum = 659
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAcctIDSource :: FIXTag
+tAcctIDSource = FIXTag 
+   { tName = "AcctIDSource"
+   , tnum = 660
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocAcctIDSource :: FIXTag
+tAllocAcctIDSource = FIXTag 
+   { tName = "AllocAcctIDSource"
+   , tnum = 661
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBenchmarkPrice :: FIXTag
+tBenchmarkPrice = FIXTag 
+   { tName = "BenchmarkPrice"
+   , tnum = 662
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tBenchmarkPriceType :: FIXTag
+tBenchmarkPriceType = FIXTag 
+   { tName = "BenchmarkPriceType"
+   , tnum = 663
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tConfirmID :: FIXTag
+tConfirmID = FIXTag 
+   { tName = "ConfirmID"
+   , tnum = 664
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tConfirmStatus :: FIXTag
+tConfirmStatus = FIXTag 
+   { tName = "ConfirmStatus"
+   , tnum = 665
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tConfirmTransType :: FIXTag
+tConfirmTransType = FIXTag 
+   { tName = "ConfirmTransType"
+   , tnum = 666
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tContractSettlMonth :: FIXTag
+tContractSettlMonth = FIXTag 
+   { tName = "ContractSettlMonth"
+   , tnum = 667
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tDeliveryForm :: FIXTag
+tDeliveryForm = FIXTag 
+   { tName = "DeliveryForm"
+   , tnum = 668
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastParPx :: FIXTag
+tLastParPx = FIXTag 
+   { tName = "LastParPx"
+   , tnum = 669
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoLegAllocs :: FIXTag
+tNoLegAllocs = FIXTag 
+   { tName = "NoLegAllocs"
+   , tnum = 670
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegAllocAccount :: FIXTag
+tLegAllocAccount = FIXTag 
+   { tName = "LegAllocAccount"
+   , tnum = 671
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegIndividualAllocID :: FIXTag
+tLegIndividualAllocID = FIXTag 
+   { tName = "LegIndividualAllocID"
+   , tnum = 672
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegAllocQty :: FIXTag
+tLegAllocQty = FIXTag 
+   { tName = "LegAllocQty"
+   , tnum = 673
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegAllocAcctIDSource :: FIXTag
+tLegAllocAcctIDSource = FIXTag 
+   { tName = "LegAllocAcctIDSource"
+   , tnum = 674
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSettlCurrency :: FIXTag
+tLegSettlCurrency = FIXTag 
+   { tName = "LegSettlCurrency"
+   , tnum = 675
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegBenchmarkCurveCurrency :: FIXTag
+tLegBenchmarkCurveCurrency = FIXTag 
+   { tName = "LegBenchmarkCurveCurrency"
+   , tnum = 676
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegBenchmarkCurveName :: FIXTag
+tLegBenchmarkCurveName = FIXTag 
+   { tName = "LegBenchmarkCurveName"
+   , tnum = 677
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegBenchmarkCurvePoint :: FIXTag
+tLegBenchmarkCurvePoint = FIXTag 
+   { tName = "LegBenchmarkCurvePoint"
+   , tnum = 678
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegBenchmarkPrice :: FIXTag
+tLegBenchmarkPrice = FIXTag 
+   { tName = "LegBenchmarkPrice"
+   , tnum = 679
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegBenchmarkPriceType :: FIXTag
+tLegBenchmarkPriceType = FIXTag 
+   { tName = "LegBenchmarkPriceType"
+   , tnum = 680
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegBidPx :: FIXTag
+tLegBidPx = FIXTag 
+   { tName = "LegBidPx"
+   , tnum = 681
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegIOIQty :: FIXTag
+tLegIOIQty = FIXTag 
+   { tName = "LegIOIQty"
+   , tnum = 682
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoLegStipulations :: FIXTag
+tNoLegStipulations = FIXTag 
+   { tName = "NoLegStipulations"
+   , tnum = 683
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegOfferPx :: FIXTag
+tLegOfferPx = FIXTag 
+   { tName = "LegOfferPx"
+   , tnum = 684
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegOrderQty :: FIXTag
+tLegOrderQty = FIXTag 
+   { tName = "LegOrderQty"
+   , tnum = 685
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegPriceType :: FIXTag
+tLegPriceType = FIXTag 
+   { tName = "LegPriceType"
+   , tnum = 686
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegQty :: FIXTag
+tLegQty = FIXTag 
+   { tName = "LegQty"
+   , tnum = 687
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegStipulationType :: FIXTag
+tLegStipulationType = FIXTag 
+   { tName = "LegStipulationType"
+   , tnum = 688
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegStipulationValue :: FIXTag
+tLegStipulationValue = FIXTag 
+   { tName = "LegStipulationValue"
+   , tnum = 689
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSwapType :: FIXTag
+tLegSwapType = FIXTag 
+   { tName = "LegSwapType"
+   , tnum = 690
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPool :: FIXTag
+tPool = FIXTag 
+   { tName = "Pool"
+   , tnum = 691
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuotePriceType :: FIXTag
+tQuotePriceType = FIXTag 
+   { tName = "QuotePriceType"
+   , tnum = 692
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteRespID :: FIXTag
+tQuoteRespID = FIXTag 
+   { tName = "QuoteRespID"
+   , tnum = 693
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tQuoteRespType :: FIXTag
+tQuoteRespType = FIXTag 
+   { tName = "QuoteRespType"
+   , tnum = 694
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQuoteQualifier :: FIXTag
+tQuoteQualifier = FIXTag 
+   { tName = "QuoteQualifier"
+   , tnum = 695
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tYieldRedemptionDate :: FIXTag
+tYieldRedemptionDate = FIXTag 
+   { tName = "YieldRedemptionDate"
+   , tnum = 696
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tYieldRedemptionPrice :: FIXTag
+tYieldRedemptionPrice = FIXTag 
+   { tName = "YieldRedemptionPrice"
+   , tnum = 697
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tYieldRedemptionPriceType :: FIXTag
+tYieldRedemptionPriceType = FIXTag 
+   { tName = "YieldRedemptionPriceType"
+   , tnum = 698
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBenchmarkSecurityID :: FIXTag
+tBenchmarkSecurityID = FIXTag 
+   { tName = "BenchmarkSecurityID"
+   , tnum = 699
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tReversalIndicator :: FIXTag
+tReversalIndicator = FIXTag 
+   { tName = "ReversalIndicator"
+   , tnum = 700
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tYieldCalcDate :: FIXTag
+tYieldCalcDate = FIXTag 
+   { tName = "YieldCalcDate"
+   , tnum = 701
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tNoPositions :: FIXTag
+tNoPositions = FIXTag 
+   { tName = "NoPositions"
+   , tnum = 702
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosType :: FIXTag
+tPosType = FIXTag 
+   { tName = "PosType"
+   , tnum = 703
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLongQty :: FIXTag
+tLongQty = FIXTag 
+   { tName = "LongQty"
+   , tnum = 704
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tShortQty :: FIXTag
+tShortQty = FIXTag 
+   { tName = "ShortQty"
+   , tnum = 705
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPosQtyStatus :: FIXTag
+tPosQtyStatus = FIXTag 
+   { tName = "PosQtyStatus"
+   , tnum = 706
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosAmtType :: FIXTag
+tPosAmtType = FIXTag 
+   { tName = "PosAmtType"
+   , tnum = 707
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPosAmt :: FIXTag
+tPosAmt = FIXTag 
+   { tName = "PosAmt"
+   , tnum = 708
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPosTransType :: FIXTag
+tPosTransType = FIXTag 
+   { tName = "PosTransType"
+   , tnum = 709
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosReqID :: FIXTag
+tPosReqID = FIXTag 
+   { tName = "PosReqID"
+   , tnum = 710
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoUnderlyings :: FIXTag
+tNoUnderlyings = FIXTag 
+   { tName = "NoUnderlyings"
+   , tnum = 711
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosMaintAction :: FIXTag
+tPosMaintAction = FIXTag 
+   { tName = "PosMaintAction"
+   , tnum = 712
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrigPosReqRefID :: FIXTag
+tOrigPosReqRefID = FIXTag 
+   { tName = "OrigPosReqRefID"
+   , tnum = 713
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPosMaintRptRefID :: FIXTag
+tPosMaintRptRefID = FIXTag 
+   { tName = "PosMaintRptRefID"
+   , tnum = 714
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tClearingBusinessDate :: FIXTag
+tClearingBusinessDate = FIXTag 
+   { tName = "ClearingBusinessDate"
+   , tnum = 715
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tSettlSessID :: FIXTag
+tSettlSessID = FIXTag 
+   { tName = "SettlSessID"
+   , tnum = 716
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlSessSubID :: FIXTag
+tSettlSessSubID = FIXTag 
+   { tName = "SettlSessSubID"
+   , tnum = 717
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAdjustmentType :: FIXTag
+tAdjustmentType = FIXTag 
+   { tName = "AdjustmentType"
+   , tnum = 718
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tContraryInstructionIndicator :: FIXTag
+tContraryInstructionIndicator = FIXTag 
+   { tName = "ContraryInstructionIndicator"
+   , tnum = 719
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tPriorSpreadIndicator :: FIXTag
+tPriorSpreadIndicator = FIXTag 
+   { tName = "PriorSpreadIndicator"
+   , tnum = 720
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tPosMaintRptID :: FIXTag
+tPosMaintRptID = FIXTag 
+   { tName = "PosMaintRptID"
+   , tnum = 721
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPosMaintStatus :: FIXTag
+tPosMaintStatus = FIXTag 
+   { tName = "PosMaintStatus"
+   , tnum = 722
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosMaintResult :: FIXTag
+tPosMaintResult = FIXTag 
+   { tName = "PosMaintResult"
+   , tnum = 723
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosReqType :: FIXTag
+tPosReqType = FIXTag 
+   { tName = "PosReqType"
+   , tnum = 724
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tResponseTransportType :: FIXTag
+tResponseTransportType = FIXTag 
+   { tName = "ResponseTransportType"
+   , tnum = 725
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tResponseDestination :: FIXTag
+tResponseDestination = FIXTag 
+   { tName = "ResponseDestination"
+   , tnum = 726
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotalNumPosReports :: FIXTag
+tTotalNumPosReports = FIXTag 
+   { tName = "TotalNumPosReports"
+   , tnum = 727
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosReqResult :: FIXTag
+tPosReqResult = FIXTag 
+   { tName = "PosReqResult"
+   , tnum = 728
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPosReqStatus :: FIXTag
+tPosReqStatus = FIXTag 
+   { tName = "PosReqStatus"
+   , tnum = 729
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlPrice :: FIXTag
+tSettlPrice = FIXTag 
+   { tName = "SettlPrice"
+   , tnum = 730
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tSettlPriceType :: FIXTag
+tSettlPriceType = FIXTag 
+   { tName = "SettlPriceType"
+   , tnum = 731
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingSettlPrice :: FIXTag
+tUnderlyingSettlPrice = FIXTag 
+   { tName = "UnderlyingSettlPrice"
+   , tnum = 732
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingSettlPriceType :: FIXTag
+tUnderlyingSettlPriceType = FIXTag 
+   { tName = "UnderlyingSettlPriceType"
+   , tnum = 733
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPriorSettlPrice :: FIXTag
+tPriorSettlPrice = FIXTag 
+   { tName = "PriorSettlPrice"
+   , tnum = 734
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoQuoteQualifiers :: FIXTag
+tNoQuoteQualifiers = FIXTag 
+   { tName = "NoQuoteQualifiers"
+   , tnum = 735
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocSettlCurrency :: FIXTag
+tAllocSettlCurrency = FIXTag 
+   { tName = "AllocSettlCurrency"
+   , tnum = 736
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocSettlCurrAmt :: FIXTag
+tAllocSettlCurrAmt = FIXTag 
+   { tName = "AllocSettlCurrAmt"
+   , tnum = 737
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tInterestAtMaturity :: FIXTag
+tInterestAtMaturity = FIXTag 
+   { tName = "InterestAtMaturity"
+   , tnum = 738
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLegDatedDate :: FIXTag
+tLegDatedDate = FIXTag 
+   { tName = "LegDatedDate"
+   , tnum = 739
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tLegPool :: FIXTag
+tLegPool = FIXTag 
+   { tName = "LegPool"
+   , tnum = 740
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocInterestAtMaturity :: FIXTag
+tAllocInterestAtMaturity = FIXTag 
+   { tName = "AllocInterestAtMaturity"
+   , tnum = 741
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllocAccruedInterestAmt :: FIXTag
+tAllocAccruedInterestAmt = FIXTag 
+   { tName = "AllocAccruedInterestAmt"
+   , tnum = 742
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDeliveryDate :: FIXTag
+tDeliveryDate = FIXTag 
+   { tName = "DeliveryDate"
+   , tnum = 743
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tAssignmentMethod :: FIXTag
+tAssignmentMethod = FIXTag 
+   { tName = "AssignmentMethod"
+   , tnum = 744
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tAssignmentUnit :: FIXTag
+tAssignmentUnit = FIXTag 
+   { tName = "AssignmentUnit"
+   , tnum = 745
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOpenInterest :: FIXTag
+tOpenInterest = FIXTag 
+   { tName = "OpenInterest"
+   , tnum = 746
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tExerciseMethod :: FIXTag
+tExerciseMethod = FIXTag 
+   { tName = "ExerciseMethod"
+   , tnum = 747
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTotNumTradeReports :: FIXTag
+tTotNumTradeReports = FIXTag 
+   { tName = "TotNumTradeReports"
+   , tnum = 748
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeRequestResult :: FIXTag
+tTradeRequestResult = FIXTag 
+   { tName = "TradeRequestResult"
+   , tnum = 749
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeRequestStatus :: FIXTag
+tTradeRequestStatus = FIXTag 
+   { tName = "TradeRequestStatus"
+   , tnum = 750
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeReportRejectReason :: FIXTag
+tTradeReportRejectReason = FIXTag 
+   { tName = "TradeReportRejectReason"
+   , tnum = 751
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSideMultiLegReportingType :: FIXTag
+tSideMultiLegReportingType = FIXTag 
+   { tName = "SideMultiLegReportingType"
+   , tnum = 752
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoPosAmt :: FIXTag
+tNoPosAmt = FIXTag 
+   { tName = "NoPosAmt"
+   , tnum = 753
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAutoAcceptIndicator :: FIXTag
+tAutoAcceptIndicator = FIXTag 
+   { tName = "AutoAcceptIndicator"
+   , tnum = 754
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tAllocReportID :: FIXTag
+tAllocReportID = FIXTag 
+   { tName = "AllocReportID"
+   , tnum = 755
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoNested2PartyIDs :: FIXTag
+tNoNested2PartyIDs = FIXTag 
+   { tName = "NoNested2PartyIDs"
+   , tnum = 756
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNested2PartyID :: FIXTag
+tNested2PartyID = FIXTag 
+   { tName = "Nested2PartyID"
+   , tnum = 757
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNested2PartyIDSource :: FIXTag
+tNested2PartyIDSource = FIXTag 
+   { tName = "Nested2PartyIDSource"
+   , tnum = 758
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNested2PartyRole :: FIXTag
+tNested2PartyRole = FIXTag 
+   { tName = "Nested2PartyRole"
+   , tnum = 759
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNested2PartySubID :: FIXTag
+tNested2PartySubID = FIXTag 
+   { tName = "Nested2PartySubID"
+   , tnum = 760
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tBenchmarkSecurityIDSource :: FIXTag
+tBenchmarkSecurityIDSource = FIXTag 
+   { tName = "BenchmarkSecurityIDSource"
+   , tnum = 761
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecuritySubType :: FIXTag
+tSecuritySubType = FIXTag 
+   { tName = "SecuritySubType"
+   , tnum = 762
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingSecuritySubType :: FIXTag
+tUnderlyingSecuritySubType = FIXTag 
+   { tName = "UnderlyingSecuritySubType"
+   , tnum = 763
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegSecuritySubType :: FIXTag
+tLegSecuritySubType = FIXTag 
+   { tName = "LegSecuritySubType"
+   , tnum = 764
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllowableOneSidednessPct :: FIXTag
+tAllowableOneSidednessPct = FIXTag 
+   { tName = "AllowableOneSidednessPct"
+   , tnum = 765
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllowableOneSidednessValue :: FIXTag
+tAllowableOneSidednessValue = FIXTag 
+   { tName = "AllowableOneSidednessValue"
+   , tnum = 766
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tAllowableOneSidednessCurr :: FIXTag
+tAllowableOneSidednessCurr = FIXTag 
+   { tName = "AllowableOneSidednessCurr"
+   , tnum = 767
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoTrdRegTimestamps :: FIXTag
+tNoTrdRegTimestamps = FIXTag 
+   { tName = "NoTrdRegTimestamps"
+   , tnum = 768
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTrdRegTimestamp :: FIXTag
+tTrdRegTimestamp = FIXTag 
+   { tName = "TrdRegTimestamp"
+   , tnum = 769
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tTrdRegTimestampType :: FIXTag
+tTrdRegTimestampType = FIXTag 
+   { tName = "TrdRegTimestampType"
+   , tnum = 770
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTrdRegTimestampOrigin :: FIXTag
+tTrdRegTimestampOrigin = FIXTag 
+   { tName = "TrdRegTimestampOrigin"
+   , tnum = 771
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tConfirmRefID :: FIXTag
+tConfirmRefID = FIXTag 
+   { tName = "ConfirmRefID"
+   , tnum = 772
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tConfirmType :: FIXTag
+tConfirmType = FIXTag 
+   { tName = "ConfirmType"
+   , tnum = 773
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tConfirmRejReason :: FIXTag
+tConfirmRejReason = FIXTag 
+   { tName = "ConfirmRejReason"
+   , tnum = 774
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tBookingType :: FIXTag
+tBookingType = FIXTag 
+   { tName = "BookingType"
+   , tnum = 775
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tIndividualAllocRejCode :: FIXTag
+tIndividualAllocRejCode = FIXTag 
+   { tName = "IndividualAllocRejCode"
+   , tnum = 776
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlInstMsgID :: FIXTag
+tSettlInstMsgID = FIXTag 
+   { tName = "SettlInstMsgID"
+   , tnum = 777
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoSettlInst :: FIXTag
+tNoSettlInst = FIXTag 
+   { tName = "NoSettlInst"
+   , tnum = 778
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastUpdateTime :: FIXTag
+tLastUpdateTime = FIXTag 
+   { tName = "LastUpdateTime"
+   , tnum = 779
+   , tparser = toFIXTimestamp
+   , arbitraryValue = FIXTimestamp <$> arbitrary }
+
+tAllocSettlInstType :: FIXTag
+tAllocSettlInstType = FIXTag 
+   { tName = "AllocSettlInstType"
+   , tnum = 780
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoSettlPartyIDs :: FIXTag
+tNoSettlPartyIDs = FIXTag 
+   { tName = "NoSettlPartyIDs"
+   , tnum = 781
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlPartyID :: FIXTag
+tSettlPartyID = FIXTag 
+   { tName = "SettlPartyID"
+   , tnum = 782
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlPartyIDSource :: FIXTag
+tSettlPartyIDSource = FIXTag 
+   { tName = "SettlPartyIDSource"
+   , tnum = 783
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tSettlPartyRole :: FIXTag
+tSettlPartyRole = FIXTag 
+   { tName = "SettlPartyRole"
+   , tnum = 784
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSettlPartySubID :: FIXTag
+tSettlPartySubID = FIXTag 
+   { tName = "SettlPartySubID"
+   , tnum = 785
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlPartySubIDType :: FIXTag
+tSettlPartySubIDType = FIXTag 
+   { tName = "SettlPartySubIDType"
+   , tnum = 786
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDlvyInstType :: FIXTag
+tDlvyInstType = FIXTag 
+   { tName = "DlvyInstType"
+   , tnum = 787
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tTerminationType :: FIXTag
+tTerminationType = FIXTag 
+   { tName = "TerminationType"
+   , tnum = 788
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNextExpectedMsgSeqNum :: FIXTag
+tNextExpectedMsgSeqNum = FIXTag 
+   { tName = "NextExpectedMsgSeqNum"
+   , tnum = 789
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrdStatusReqID :: FIXTag
+tOrdStatusReqID = FIXTag 
+   { tName = "OrdStatusReqID"
+   , tnum = 790
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstReqID :: FIXTag
+tSettlInstReqID = FIXTag 
+   { tName = "SettlInstReqID"
+   , tnum = 791
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSettlInstReqRejCode :: FIXTag
+tSettlInstReqRejCode = FIXTag 
+   { tName = "SettlInstReqRejCode"
+   , tnum = 792
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecondaryAllocID :: FIXTag
+tSecondaryAllocID = FIXTag 
+   { tName = "SecondaryAllocID"
+   , tnum = 793
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocReportType :: FIXTag
+tAllocReportType = FIXTag 
+   { tName = "AllocReportType"
+   , tnum = 794
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocReportRefID :: FIXTag
+tAllocReportRefID = FIXTag 
+   { tName = "AllocReportRefID"
+   , tnum = 795
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAllocCancReplaceReason :: FIXTag
+tAllocCancReplaceReason = FIXTag 
+   { tName = "AllocCancReplaceReason"
+   , tnum = 796
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCopyMsgIndicator :: FIXTag
+tCopyMsgIndicator = FIXTag 
+   { tName = "CopyMsgIndicator"
+   , tnum = 797
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tAllocAccountType :: FIXTag
+tAllocAccountType = FIXTag 
+   { tName = "AllocAccountType"
+   , tnum = 798
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderAvgPx :: FIXTag
+tOrderAvgPx = FIXTag 
+   { tName = "OrderAvgPx"
+   , tnum = 799
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tOrderBookingQty :: FIXTag
+tOrderBookingQty = FIXTag 
+   { tName = "OrderBookingQty"
+   , tnum = 800
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoSettlPartySubIDs :: FIXTag
+tNoSettlPartySubIDs = FIXTag 
+   { tName = "NoSettlPartySubIDs"
+   , tnum = 801
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoPartySubIDs :: FIXTag
+tNoPartySubIDs = FIXTag 
+   { tName = "NoPartySubIDs"
+   , tnum = 802
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPartySubIDType :: FIXTag
+tPartySubIDType = FIXTag 
+   { tName = "PartySubIDType"
+   , tnum = 803
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoNestedPartySubIDs :: FIXTag
+tNoNestedPartySubIDs = FIXTag 
+   { tName = "NoNestedPartySubIDs"
+   , tnum = 804
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNestedPartySubIDType :: FIXTag
+tNestedPartySubIDType = FIXTag 
+   { tName = "NestedPartySubIDType"
+   , tnum = 805
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoNested2PartySubIDs :: FIXTag
+tNoNested2PartySubIDs = FIXTag 
+   { tName = "NoNested2PartySubIDs"
+   , tnum = 806
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNested2PartySubIDType :: FIXTag
+tNested2PartySubIDType = FIXTag 
+   { tName = "Nested2PartySubIDType"
+   , tnum = 807
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocIntermedReqType :: FIXTag
+tAllocIntermedReqType = FIXTag 
+   { tName = "AllocIntermedReqType"
+   , tnum = 808
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingPx :: FIXTag
+tUnderlyingPx = FIXTag 
+   { tName = "UnderlyingPx"
+   , tnum = 810
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPriceDelta :: FIXTag
+tPriceDelta = FIXTag 
+   { tName = "PriceDelta"
+   , tnum = 811
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tApplQueueMax :: FIXTag
+tApplQueueMax = FIXTag 
+   { tName = "ApplQueueMax"
+   , tnum = 812
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tApplQueueDepth :: FIXTag
+tApplQueueDepth = FIXTag 
+   { tName = "ApplQueueDepth"
+   , tnum = 813
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tApplQueueResolution :: FIXTag
+tApplQueueResolution = FIXTag 
+   { tName = "ApplQueueResolution"
+   , tnum = 814
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tApplQueueAction :: FIXTag
+tApplQueueAction = FIXTag 
+   { tName = "ApplQueueAction"
+   , tnum = 815
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoAltMDSource :: FIXTag
+tNoAltMDSource = FIXTag 
+   { tName = "NoAltMDSource"
+   , tnum = 816
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAltMDSourceID :: FIXTag
+tAltMDSourceID = FIXTag 
+   { tName = "AltMDSourceID"
+   , tnum = 817
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecondaryTradeReportID :: FIXTag
+tSecondaryTradeReportID = FIXTag 
+   { tName = "SecondaryTradeReportID"
+   , tnum = 818
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAvgPxIndicator :: FIXTag
+tAvgPxIndicator = FIXTag 
+   { tName = "AvgPxIndicator"
+   , tnum = 819
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeLinkID :: FIXTag
+tTradeLinkID = FIXTag 
+   { tName = "TradeLinkID"
+   , tnum = 820
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tOrderInputDevice :: FIXTag
+tOrderInputDevice = FIXTag 
+   { tName = "OrderInputDevice"
+   , tnum = 821
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingTradingSessionID :: FIXTag
+tUnderlyingTradingSessionID = FIXTag 
+   { tName = "UnderlyingTradingSessionID"
+   , tnum = 822
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingTradingSessionSubID :: FIXTag
+tUnderlyingTradingSessionSubID = FIXTag 
+   { tName = "UnderlyingTradingSessionSubID"
+   , tnum = 823
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeLegRefID :: FIXTag
+tTradeLegRefID = FIXTag 
+   { tName = "TradeLegRefID"
+   , tnum = 824
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tExchangeRule :: FIXTag
+tExchangeRule = FIXTag 
+   { tName = "ExchangeRule"
+   , tnum = 825
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTradeAllocIndicator :: FIXTag
+tTradeAllocIndicator = FIXTag 
+   { tName = "TradeAllocIndicator"
+   , tnum = 826
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tExpirationCycle :: FIXTag
+tExpirationCycle = FIXTag 
+   { tName = "ExpirationCycle"
+   , tnum = 827
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTrdType :: FIXTag
+tTrdType = FIXTag 
+   { tName = "TrdType"
+   , tnum = 828
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTrdSubType :: FIXTag
+tTrdSubType = FIXTag 
+   { tName = "TrdSubType"
+   , tnum = 829
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTransferReason :: FIXTag
+tTransferReason = FIXTag 
+   { tName = "TransferReason"
+   , tnum = 830
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAsgnReqID :: FIXTag
+tAsgnReqID = FIXTag 
+   { tName = "AsgnReqID"
+   , tnum = 831
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTotNumAssignmentReports :: FIXTag
+tTotNumAssignmentReports = FIXTag 
+   { tName = "TotNumAssignmentReports"
+   , tnum = 832
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAsgnRptID :: FIXTag
+tAsgnRptID = FIXTag 
+   { tName = "AsgnRptID"
+   , tnum = 833
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tThresholdAmount :: FIXTag
+tThresholdAmount = FIXTag 
+   { tName = "ThresholdAmount"
+   , tnum = 834
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPegMoveType :: FIXTag
+tPegMoveType = FIXTag 
+   { tName = "PegMoveType"
+   , tnum = 835
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPegOffsetType :: FIXTag
+tPegOffsetType = FIXTag 
+   { tName = "PegOffsetType"
+   , tnum = 836
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPegLimitType :: FIXTag
+tPegLimitType = FIXTag 
+   { tName = "PegLimitType"
+   , tnum = 837
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPegRoundDirection :: FIXTag
+tPegRoundDirection = FIXTag 
+   { tName = "PegRoundDirection"
+   , tnum = 838
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPeggedPrice :: FIXTag
+tPeggedPrice = FIXTag 
+   { tName = "PeggedPrice"
+   , tnum = 839
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tPegScope :: FIXTag
+tPegScope = FIXTag 
+   { tName = "PegScope"
+   , tnum = 840
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDiscretionMoveType :: FIXTag
+tDiscretionMoveType = FIXTag 
+   { tName = "DiscretionMoveType"
+   , tnum = 841
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDiscretionOffsetType :: FIXTag
+tDiscretionOffsetType = FIXTag 
+   { tName = "DiscretionOffsetType"
+   , tnum = 842
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDiscretionLimitType :: FIXTag
+tDiscretionLimitType = FIXTag 
+   { tName = "DiscretionLimitType"
+   , tnum = 843
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDiscretionRoundDirection :: FIXTag
+tDiscretionRoundDirection = FIXTag 
+   { tName = "DiscretionRoundDirection"
+   , tnum = 844
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tDiscretionPrice :: FIXTag
+tDiscretionPrice = FIXTag 
+   { tName = "DiscretionPrice"
+   , tnum = 845
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tDiscretionScope :: FIXTag
+tDiscretionScope = FIXTag 
+   { tName = "DiscretionScope"
+   , tnum = 846
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTargetStrategy :: FIXTag
+tTargetStrategy = FIXTag 
+   { tName = "TargetStrategy"
+   , tnum = 847
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTargetStrategyParameters :: FIXTag
+tTargetStrategyParameters = FIXTag 
+   { tName = "TargetStrategyParameters"
+   , tnum = 848
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tParticipationRate :: FIXTag
+tParticipationRate = FIXTag 
+   { tName = "ParticipationRate"
+   , tnum = 849
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTargetStrategyPerformance :: FIXTag
+tTargetStrategyPerformance = FIXTag 
+   { tName = "TargetStrategyPerformance"
+   , tnum = 850
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tLastLiquidityInd :: FIXTag
+tLastLiquidityInd = FIXTag 
+   { tName = "LastLiquidityInd"
+   , tnum = 851
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tPublishTrdIndicator :: FIXTag
+tPublishTrdIndicator = FIXTag 
+   { tName = "PublishTrdIndicator"
+   , tnum = 852
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tShortSaleReason :: FIXTag
+tShortSaleReason = FIXTag 
+   { tName = "ShortSaleReason"
+   , tnum = 853
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tQtyType :: FIXTag
+tQtyType = FIXTag 
+   { tName = "QtyType"
+   , tnum = 854
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSecondaryTrdType :: FIXTag
+tSecondaryTrdType = FIXTag 
+   { tName = "SecondaryTrdType"
+   , tnum = 855
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTradeReportType :: FIXTag
+tTradeReportType = FIXTag 
+   { tName = "TradeReportType"
+   , tnum = 856
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAllocNoOrdersType :: FIXTag
+tAllocNoOrdersType = FIXTag 
+   { tName = "AllocNoOrdersType"
+   , tnum = 857
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tSharedCommission :: FIXTag
+tSharedCommission = FIXTag 
+   { tName = "SharedCommission"
+   , tnum = 858
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tConfirmReqID :: FIXTag
+tConfirmReqID = FIXTag 
+   { tName = "ConfirmReqID"
+   , tnum = 859
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAvgParPx :: FIXTag
+tAvgParPx = FIXTag 
+   { tName = "AvgParPx"
+   , tnum = 860
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tReportedPx :: FIXTag
+tReportedPx = FIXTag 
+   { tName = "ReportedPx"
+   , tnum = 861
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoCapacities :: FIXTag
+tNoCapacities = FIXTag 
+   { tName = "NoCapacities"
+   , tnum = 862
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tOrderCapacityQty :: FIXTag
+tOrderCapacityQty = FIXTag 
+   { tName = "OrderCapacityQty"
+   , tnum = 863
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoEvents :: FIXTag
+tNoEvents = FIXTag 
+   { tName = "NoEvents"
+   , tnum = 864
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEventType :: FIXTag
+tEventType = FIXTag 
+   { tName = "EventType"
+   , tnum = 865
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEventDate :: FIXTag
+tEventDate = FIXTag 
+   { tName = "EventDate"
+   , tnum = 866
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tEventPx :: FIXTag
+tEventPx = FIXTag 
+   { tName = "EventPx"
+   , tnum = 867
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tEventText :: FIXTag
+tEventText = FIXTag 
+   { tName = "EventText"
+   , tnum = 868
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tPctAtRisk :: FIXTag
+tPctAtRisk = FIXTag 
+   { tName = "PctAtRisk"
+   , tnum = 869
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoInstrAttrib :: FIXTag
+tNoInstrAttrib = FIXTag 
+   { tName = "NoInstrAttrib"
+   , tnum = 870
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tInstrAttribType :: FIXTag
+tInstrAttribType = FIXTag 
+   { tName = "InstrAttribType"
+   , tnum = 871
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tInstrAttribValue :: FIXTag
+tInstrAttribValue = FIXTag 
+   { tName = "InstrAttribValue"
+   , tnum = 872
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDatedDate :: FIXTag
+tDatedDate = FIXTag 
+   { tName = "DatedDate"
+   , tnum = 873
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tInterestAccrualDate :: FIXTag
+tInterestAccrualDate = FIXTag 
+   { tName = "InterestAccrualDate"
+   , tnum = 874
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tCPProgram :: FIXTag
+tCPProgram = FIXTag 
+   { tName = "CPProgram"
+   , tnum = 875
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCPRegType :: FIXTag
+tCPRegType = FIXTag 
+   { tName = "CPRegType"
+   , tnum = 876
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingCPProgram :: FIXTag
+tUnderlyingCPProgram = FIXTag 
+   { tName = "UnderlyingCPProgram"
+   , tnum = 877
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingCPRegType :: FIXTag
+tUnderlyingCPRegType = FIXTag 
+   { tName = "UnderlyingCPRegType"
+   , tnum = 878
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingQty :: FIXTag
+tUnderlyingQty = FIXTag 
+   { tName = "UnderlyingQty"
+   , tnum = 879
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTrdMatchID :: FIXTag
+tTrdMatchID = FIXTag 
+   { tName = "TrdMatchID"
+   , tnum = 880
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tSecondaryTradeReportRefID :: FIXTag
+tSecondaryTradeReportRefID = FIXTag 
+   { tName = "SecondaryTradeReportRefID"
+   , tnum = 881
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingDirtyPrice :: FIXTag
+tUnderlyingDirtyPrice = FIXTag 
+   { tName = "UnderlyingDirtyPrice"
+   , tnum = 882
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingEndPrice :: FIXTag
+tUnderlyingEndPrice = FIXTag 
+   { tName = "UnderlyingEndPrice"
+   , tnum = 883
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingStartValue :: FIXTag
+tUnderlyingStartValue = FIXTag 
+   { tName = "UnderlyingStartValue"
+   , tnum = 884
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingCurrentValue :: FIXTag
+tUnderlyingCurrentValue = FIXTag 
+   { tName = "UnderlyingCurrentValue"
+   , tnum = 885
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUnderlyingEndValue :: FIXTag
+tUnderlyingEndValue = FIXTag 
+   { tName = "UnderlyingEndValue"
+   , tnum = 886
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tNoUnderlyingStips :: FIXTag
+tNoUnderlyingStips = FIXTag 
+   { tName = "NoUnderlyingStips"
+   , tnum = 887
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingStipType :: FIXTag
+tUnderlyingStipType = FIXTag 
+   { tName = "UnderlyingStipType"
+   , tnum = 888
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUnderlyingStipValue :: FIXTag
+tUnderlyingStipValue = FIXTag 
+   { tName = "UnderlyingStipValue"
+   , tnum = 889
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tMaturityNetMoney :: FIXTag
+tMaturityNetMoney = FIXTag 
+   { tName = "MaturityNetMoney"
+   , tnum = 890
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMiscFeeBasis :: FIXTag
+tMiscFeeBasis = FIXTag 
+   { tName = "MiscFeeBasis"
+   , tnum = 891
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotNoAllocs :: FIXTag
+tTotNoAllocs = FIXTag 
+   { tName = "TotNoAllocs"
+   , tnum = 892
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastFragment :: FIXTag
+tLastFragment = FIXTag 
+   { tName = "LastFragment"
+   , tnum = 893
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tCollReqID :: FIXTag
+tCollReqID = FIXTag 
+   { tName = "CollReqID"
+   , tnum = 894
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollAsgnReason :: FIXTag
+tCollAsgnReason = FIXTag 
+   { tName = "CollAsgnReason"
+   , tnum = 895
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCollInquiryQualifier :: FIXTag
+tCollInquiryQualifier = FIXTag 
+   { tName = "CollInquiryQualifier"
+   , tnum = 896
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoTrades :: FIXTag
+tNoTrades = FIXTag 
+   { tName = "NoTrades"
+   , tnum = 897
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tMarginRatio :: FIXTag
+tMarginRatio = FIXTag 
+   { tName = "MarginRatio"
+   , tnum = 898
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tMarginExcess :: FIXTag
+tMarginExcess = FIXTag 
+   { tName = "MarginExcess"
+   , tnum = 899
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tTotalNetValue :: FIXTag
+tTotalNetValue = FIXTag 
+   { tName = "TotalNetValue"
+   , tnum = 900
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCashOutstanding :: FIXTag
+tCashOutstanding = FIXTag 
+   { tName = "CashOutstanding"
+   , tnum = 901
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tCollAsgnID :: FIXTag
+tCollAsgnID = FIXTag 
+   { tName = "CollAsgnID"
+   , tnum = 902
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollAsgnTransType :: FIXTag
+tCollAsgnTransType = FIXTag 
+   { tName = "CollAsgnTransType"
+   , tnum = 903
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCollRespID :: FIXTag
+tCollRespID = FIXTag 
+   { tName = "CollRespID"
+   , tnum = 904
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollAsgnRespType :: FIXTag
+tCollAsgnRespType = FIXTag 
+   { tName = "CollAsgnRespType"
+   , tnum = 905
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCollAsgnRejectReason :: FIXTag
+tCollAsgnRejectReason = FIXTag 
+   { tName = "CollAsgnRejectReason"
+   , tnum = 906
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCollAsgnRefID :: FIXTag
+tCollAsgnRefID = FIXTag 
+   { tName = "CollAsgnRefID"
+   , tnum = 907
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollRptID :: FIXTag
+tCollRptID = FIXTag 
+   { tName = "CollRptID"
+   , tnum = 908
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollInquiryID :: FIXTag
+tCollInquiryID = FIXTag 
+   { tName = "CollInquiryID"
+   , tnum = 909
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollStatus :: FIXTag
+tCollStatus = FIXTag 
+   { tName = "CollStatus"
+   , tnum = 910
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTotNumReports :: FIXTag
+tTotNumReports = FIXTag 
+   { tName = "TotNumReports"
+   , tnum = 911
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLastRptRequested :: FIXTag
+tLastRptRequested = FIXTag 
+   { tName = "LastRptRequested"
+   , tnum = 912
+   , tparser = toFIXBool
+   , arbitraryValue = FIXBool <$> arbitrary }
+
+tAgreementDesc :: FIXTag
+tAgreementDesc = FIXTag 
+   { tName = "AgreementDesc"
+   , tnum = 913
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAgreementID :: FIXTag
+tAgreementID = FIXTag 
+   { tName = "AgreementID"
+   , tnum = 914
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tAgreementDate :: FIXTag
+tAgreementDate = FIXTag 
+   { tName = "AgreementDate"
+   , tnum = 915
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tStartDate :: FIXTag
+tStartDate = FIXTag 
+   { tName = "StartDate"
+   , tnum = 916
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tEndDate :: FIXTag
+tEndDate = FIXTag 
+   { tName = "EndDate"
+   , tnum = 917
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+tAgreementCurrency :: FIXTag
+tAgreementCurrency = FIXTag 
+   { tName = "AgreementCurrency"
+   , tnum = 918
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tDeliveryType :: FIXTag
+tDeliveryType = FIXTag 
+   { tName = "DeliveryType"
+   , tnum = 919
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tEndAccruedInterestAmt :: FIXTag
+tEndAccruedInterestAmt = FIXTag 
+   { tName = "EndAccruedInterestAmt"
+   , tnum = 920
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tStartCash :: FIXTag
+tStartCash = FIXTag 
+   { tName = "StartCash"
+   , tnum = 921
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tEndCash :: FIXTag
+tEndCash = FIXTag 
+   { tName = "EndCash"
+   , tnum = 922
+   , tparser = toFIXDouble
+   , arbitraryValue = FIXDouble <$> (return (-2.112 :: Double)) }
+
+tUserRequestID :: FIXTag
+tUserRequestID = FIXTag 
+   { tName = "UserRequestID"
+   , tnum = 923
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUserRequestType :: FIXTag
+tUserRequestType = FIXTag 
+   { tName = "UserRequestType"
+   , tnum = 924
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNewPassword :: FIXTag
+tNewPassword = FIXTag 
+   { tName = "NewPassword"
+   , tnum = 925
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tUserStatus :: FIXTag
+tUserStatus = FIXTag 
+   { tName = "UserStatus"
+   , tnum = 926
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUserStatusText :: FIXTag
+tUserStatusText = FIXTag 
+   { tName = "UserStatusText"
+   , tnum = 927
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tStatusValue :: FIXTag
+tStatusValue = FIXTag 
+   { tName = "StatusValue"
+   , tnum = 928
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStatusText :: FIXTag
+tStatusText = FIXTag 
+   { tName = "StatusText"
+   , tnum = 929
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRefCompID :: FIXTag
+tRefCompID = FIXTag 
+   { tName = "RefCompID"
+   , tnum = 930
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tRefSubID :: FIXTag
+tRefSubID = FIXTag 
+   { tName = "RefSubID"
+   , tnum = 931
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNetworkResponseID :: FIXTag
+tNetworkResponseID = FIXTag 
+   { tName = "NetworkResponseID"
+   , tnum = 932
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNetworkRequestID :: FIXTag
+tNetworkRequestID = FIXTag 
+   { tName = "NetworkRequestID"
+   , tnum = 933
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLastNetworkResponseID :: FIXTag
+tLastNetworkResponseID = FIXTag 
+   { tName = "LastNetworkResponseID"
+   , tnum = 934
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNetworkRequestType :: FIXTag
+tNetworkRequestType = FIXTag 
+   { tName = "NetworkRequestType"
+   , tnum = 935
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoCompIDs :: FIXTag
+tNoCompIDs = FIXTag 
+   { tName = "NoCompIDs"
+   , tnum = 936
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNetworkStatusResponseType :: FIXTag
+tNetworkStatusResponseType = FIXTag 
+   { tName = "NetworkStatusResponseType"
+   , tnum = 937
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoCollInquiryQualifier :: FIXTag
+tNoCollInquiryQualifier = FIXTag 
+   { tName = "NoCollInquiryQualifier"
+   , tnum = 938
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tTrdRptStatus :: FIXTag
+tTrdRptStatus = FIXTag 
+   { tName = "TrdRptStatus"
+   , tnum = 939
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tAffirmStatus :: FIXTag
+tAffirmStatus = FIXTag 
+   { tName = "AffirmStatus"
+   , tnum = 940
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tUnderlyingStrikeCurrency :: FIXTag
+tUnderlyingStrikeCurrency = FIXTag 
+   { tName = "UnderlyingStrikeCurrency"
+   , tnum = 941
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tLegStrikeCurrency :: FIXTag
+tLegStrikeCurrency = FIXTag 
+   { tName = "LegStrikeCurrency"
+   , tnum = 942
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tTimeBracket :: FIXTag
+tTimeBracket = FIXTag 
+   { tName = "TimeBracket"
+   , tnum = 943
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tCollAction :: FIXTag
+tCollAction = FIXTag 
+   { tName = "CollAction"
+   , tnum = 944
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCollInquiryStatus :: FIXTag
+tCollInquiryStatus = FIXTag 
+   { tName = "CollInquiryStatus"
+   , tnum = 945
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tCollInquiryResult :: FIXTag
+tCollInquiryResult = FIXTag 
+   { tName = "CollInquiryResult"
+   , tnum = 946
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tStrikeCurrency :: FIXTag
+tStrikeCurrency = FIXTag 
+   { tName = "StrikeCurrency"
+   , tnum = 947
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNoNested3PartyIDs :: FIXTag
+tNoNested3PartyIDs = FIXTag 
+   { tName = "NoNested3PartyIDs"
+   , tnum = 948
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNested3PartyID :: FIXTag
+tNested3PartyID = FIXTag 
+   { tName = "Nested3PartyID"
+   , tnum = 949
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNested3PartyIDSource :: FIXTag
+tNested3PartyIDSource = FIXTag 
+   { tName = "Nested3PartyIDSource"
+   , tnum = 950
+   , tparser = toFIXChar
+   , arbitraryValue = FIXChar <$> (return 'A') }
+
+tNested3PartyRole :: FIXTag
+tNested3PartyRole = FIXTag 
+   { tName = "Nested3PartyRole"
+   , tnum = 951
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNoNested3PartySubIDs :: FIXTag
+tNoNested3PartySubIDs = FIXTag 
+   { tName = "NoNested3PartySubIDs"
+   , tnum = 952
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tNested3PartySubID :: FIXTag
+tNested3PartySubID = FIXTag 
+   { tName = "Nested3PartySubID"
+   , tnum = 953
+   , tparser = toFIXString
+   , arbitraryValue = FIXString <$> arbitrary }
+
+tNested3PartySubIDType :: FIXTag
+tNested3PartySubIDType = FIXTag 
+   { tName = "Nested3PartySubIDType"
+   , tnum = 954
+   , tparser = toFIXInt
+   , arbitraryValue = FIXInt <$> arbitrary }
+
+tLegContractSettlMonth :: FIXTag
+tLegContractSettlMonth = FIXTag 
+   { tName = "LegContractSettlMonth"
+   , tnum = 955
+   , tparser = toFIXMonthYear
+   , arbitraryValue = FIXMonthYear <$> arbitrary }
+
+tLegInterestAccrualDate :: FIXTag
+tLegInterestAccrualDate = FIXTag 
+   { tName = "LegInterestAccrualDate"
+   , tnum = 956
+   , tparser = toFIXDateOnly
+   , arbitraryValue = FIXDateOnly <$> arbitrary }
+
+headerFIX44 :: FIXTags
+headerFIX44 = 
+   LT.insert (tnum tSenderCompID) tSenderCompID $
+   LT.insert (tnum tTargetCompID) tTargetCompID $
+   LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+   LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+   LT.insert (tnum tSecureDataLen) tSecureDataLen $
+   LT.insert (tnum tSecureData) tSecureData $
+   LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+   LT.insert (tnum tSenderSubID) tSenderSubID $
+   LT.insert (tnum tSenderLocationID) tSenderLocationID $
+   LT.insert (tnum tTargetSubID) tTargetSubID $
+   LT.insert (tnum tTargetLocationID) tTargetLocationID $
+   LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+   LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+   LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+   LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+   LT.insert (tnum tPossDupFlag) tPossDupFlag $
+   LT.insert (tnum tPossResend) tPossResend $
+   LT.insert (tnum tSendingTime) tSendingTime $
+   LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+   LT.insert (tnum tXmlDataLen) tXmlDataLen $
+   LT.insert (tnum tXmlData) tXmlData $
+   LT.insert (tnum tMessageEncoding) tMessageEncoding $
+   LT.insert (tnum tLastMsgSeqNumProcessed) tLastMsgSeqNumProcessed $
+   LT.insert (tnum tNoHops) gNoHops''    LT.new
+   where
+      gNoHops'' = FIXTag
+         { tName = "NoHops"
+         , tnum = tnum tNoHops
+         , tparser = gNoHopsP''
+         , arbitraryValue = arbibtraryFIXGroup gNoHopsSpec'' }
+
+      gNoHopsP'' = groupP gNoHopsSpec''
+      gNoHopsSpec'' = FGSpec
+         { gsLength = tNoHops
+         , gsSeperator = tHopCompID
+         , gsBody = gNoHopsBody'' }
+         where
+         gNoHopsBody'' = 
+            LT.insert (tnum tHopSendingTime) tHopSendingTime $
+            LT.insert (tnum tHopRefID) tHopRefID             LT.new
+
+
+
+trailerFIX44 :: FIXTags
+trailerFIX44 = 
+   LT.insert (tnum tSignatureLength) tSignatureLength $
+   LT.insert (tnum tSignature) tSignature    LT.new
+
+
+mHeartbeat :: FIXMessageSpec
+mHeartbeat = FMSpec
+   { msName = "Heartbeat"
+   , msType = C.pack "0"
+   , msHeader = headerFIX44
+   , msBody = mHeartbeatBody
+   , msTrailer = trailerFIX44 }
+   where
+   mHeartbeatBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mTestRequest :: FIXMessageSpec
+mTestRequest = FMSpec
+   { msName = "TestRequest"
+   , msType = C.pack "1"
+   , msHeader = headerFIX44
+   , msBody = mTestRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTestRequestBody = 
+      LT.insert (tnum tTestReqID) tTestReqID       LT.new
+
+
+mResendRequest :: FIXMessageSpec
+mResendRequest = FMSpec
+   { msName = "ResendRequest"
+   , msType = C.pack "2"
+   , msHeader = headerFIX44
+   , msBody = mResendRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mResendRequestBody = 
+      LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+      LT.insert (tnum tEndSeqNo) tEndSeqNo       LT.new
+
+
+mReject :: FIXMessageSpec
+mReject = FMSpec
+   { msName = "Reject"
+   , msType = C.pack "3"
+   , msHeader = headerFIX44
+   , msBody = mRejectBody
+   , msTrailer = trailerFIX44 }
+   where
+   mRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tRefTagID) tRefTagID $
+      LT.insert (tnum tRefMsgType) tRefMsgType $
+      LT.insert (tnum tSessionRejectReason) tSessionRejectReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mSequenceReset :: FIXMessageSpec
+mSequenceReset = FMSpec
+   { msName = "SequenceReset"
+   , msType = C.pack "4"
+   , msHeader = headerFIX44
+   , msBody = mSequenceResetBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSequenceResetBody = 
+      LT.insert (tnum tGapFillFlag) tGapFillFlag $
+      LT.insert (tnum tNewSeqNo) tNewSeqNo       LT.new
+
+
+mLogout :: FIXMessageSpec
+mLogout = FMSpec
+   { msName = "Logout"
+   , msType = C.pack "5"
+   , msHeader = headerFIX44
+   , msBody = mLogoutBody
+   , msTrailer = trailerFIX44 }
+   where
+   mLogoutBody = 
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mIOI :: FIXMessageSpec
+mIOI = FMSpec
+   { msName = "IOI"
+   , msType = C.pack "6"
+   , msHeader = headerFIX44
+   , msBody = mIOIBody
+   , msTrailer = trailerFIX44 }
+   where
+   mIOIBody = 
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tIOITransType) tIOITransType $
+      LT.insert (tnum tIOIRefID) tIOIRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tIOIQty) tIOIQty $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+      LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+      LT.insert (tnum tNoIOIQualifiers) gNoIOIQualifiers''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoIOIQualifiers''' = FIXTag
+            { tName = "NoIOIQualifiers"
+            , tnum = tnum tNoIOIQualifiers
+            , tparser = gNoIOIQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoIOIQualifiersSpec''' }
+
+         gNoIOIQualifiersP''' = groupP gNoIOIQualifiersSpec'''
+         gNoIOIQualifiersSpec''' = FGSpec
+            { gsLength = tNoIOIQualifiers
+            , gsSeperator = tIOIQualifier
+            , gsBody = gNoIOIQualifiersBody''' }
+            where
+            gNoIOIQualifiersBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegIOIQty) tLegIOIQty $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations''''''                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mAdvertisement :: FIXMessageSpec
+mAdvertisement = FMSpec
+   { msName = "Advertisement"
+   , msType = C.pack "7"
+   , msHeader = headerFIX44
+   , msBody = mAdvertisementBody
+   , msTrailer = trailerFIX44 }
+   where
+   mAdvertisementBody = 
+      LT.insert (tnum tAdvId) tAdvId $
+      LT.insert (tnum tAdvTransType) tAdvTransType $
+      LT.insert (tnum tAdvRefID) tAdvRefID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tAdvSide) tAdvSide $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mExecutionReport :: FIXMessageSpec
+mExecutionReport = FMSpec
+   { msName = "ExecutionReport"
+   , msType = C.pack "8"
+   , msHeader = headerFIX44
+   , msBody = mExecutionReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mExecutionReportBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tQuoteRespID) tQuoteRespID $
+      LT.insert (tnum tOrdStatusReqID) tOrdStatusReqID $
+      LT.insert (tnum tMassStatusReqID) tMassStatusReqID $
+      LT.insert (tnum tTotNumReports) tTotNumReports $
+      LT.insert (tnum tLastRptRequested) tLastRptRequested $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tNoContraBrokers) gNoContraBrokers''' $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tOrigCrossID) tOrigCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tExecRefID) tExecRefID $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+      LT.insert (tnum tOrdRejReason) tOrdRejReason $
+      LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tPeggedPrice) tPeggedPrice $
+      LT.insert (tnum tDiscretionPrice) tDiscretionPrice $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tTargetStrategyPerformance) tTargetStrategyPerformance $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tLastQty) tLastQty $
+      LT.insert (tnum tUnderlyingLastQty) tUnderlyingLastQty $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tUnderlyingLastPx) tUnderlyingLastPx $
+      LT.insert (tnum tLastParPx) tLastParPx $
+      LT.insert (tnum tLastSpotRate) tLastSpotRate $
+      LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tTimeBracket) tTimeBracket $
+      LT.insert (tnum tLastCapacity) tLastCapacity $
+      LT.insert (tnum tLeavesQty) tLeavesQty $
+      LT.insert (tnum tCumQty) tCumQty $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tDayOrderQty) tDayOrderQty $
+      LT.insert (tnum tDayCumQty) tDayCumQty $
+      LT.insert (tnum tDayAvgPx) tDayAvgPx $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tReportToExch) tReportToExch $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tExDate) tExDate $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tInterestAtMaturity) tInterestAtMaturity $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tTradedFlatSwitch) tTradedFlatSwitch $
+      LT.insert (tnum tBasisFeatureDate) tBasisFeatureDate $
+      LT.insert (tnum tBasisFeaturePrice) tBasisFeaturePrice $
+      LT.insert (tnum tConcession) tConcession $
+      LT.insert (tnum tTotalTakedown) tTotalTakedown $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tSettlDate2) tSettlDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tLastForwardPoints2) tLastForwardPoints2 $
+      LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tTransBkdTime) tTransBkdTime $
+      LT.insert (tnum tExecValuationPoint) tExecValuationPoint $
+      LT.insert (tnum tExecPriceType) tExecPriceType $
+      LT.insert (tnum tExecPriceAdjustment) tExecPriceAdjustment $
+      LT.insert (tnum tPriorityIndicator) tPriorityIndicator $
+      LT.insert (tnum tPriceImprovement) tPriceImprovement $
+      LT.insert (tnum tLastLiquidityInd) tLastLiquidityInd $
+      LT.insert (tnum tNoContAmts) gNoContAmts''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tCopyMsgIndicator) tCopyMsgIndicator $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees'''       LT.new
+      where
+         gNoContAmts''' = FIXTag
+            { tName = "NoContAmts"
+            , tnum = tnum tNoContAmts
+            , tparser = gNoContAmtsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoContAmtsSpec''' }
+
+         gNoContAmtsP''' = groupP gNoContAmtsSpec'''
+         gNoContAmtsSpec''' = FGSpec
+            { gsLength = tNoContAmts
+            , gsSeperator = tContAmtType
+            , gsBody = gNoContAmtsBody''' }
+            where
+            gNoContAmtsBody''' = 
+               LT.insert (tnum tContAmtValue) tContAmtValue $
+               LT.insert (tnum tContAmtCurr) tContAmtCurr                LT.new
+
+         gNoContraBrokers''' = FIXTag
+            { tName = "NoContraBrokers"
+            , tnum = tnum tNoContraBrokers
+            , tparser = gNoContraBrokersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoContraBrokersSpec''' }
+
+         gNoContraBrokersP''' = groupP gNoContraBrokersSpec'''
+         gNoContraBrokersSpec''' = FGSpec
+            { gsLength = tNoContraBrokers
+            , gsSeperator = tContraBroker
+            , gsBody = gNoContraBrokersBody''' }
+            where
+            gNoContraBrokersBody''' = 
+               LT.insert (tnum tContraTrader) tContraTrader $
+               LT.insert (tnum tContraTradeQty) tContraTradeQty $
+               LT.insert (tnum tContraTradeTime) tContraTradeTime $
+               LT.insert (tnum tContraLegRefID) tContraLegRefID                LT.new
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate $
+               LT.insert (tnum tLegLastPx) tLegLastPx                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType $
+               LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mOrderCancelReject :: FIXMessageSpec
+mOrderCancelReject = FMSpec
+   { msName = "OrderCancelReject"
+   , msType = C.pack "9"
+   , msHeader = headerFIX44
+   , msBody = mOrderCancelRejectBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderCancelRejectBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tCxlRejResponseTo) tCxlRejResponseTo $
+      LT.insert (tnum tCxlRejReason) tCxlRejReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mLogon :: FIXMessageSpec
+mLogon = FMSpec
+   { msName = "Logon"
+   , msType = C.pack "A"
+   , msHeader = headerFIX44
+   , msBody = mLogonBody
+   , msTrailer = trailerFIX44 }
+   where
+   mLogonBody = 
+      LT.insert (tnum tEncryptMethod) tEncryptMethod $
+      LT.insert (tnum tHeartBtInt) tHeartBtInt $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData $
+      LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+      LT.insert (tnum tNextExpectedMsgSeqNum) tNextExpectedMsgSeqNum $
+      LT.insert (tnum tMaxMessageSize) tMaxMessageSize $
+      LT.insert (tnum tNoMsgTypes) gNoMsgTypes''' $
+      LT.insert (tnum tTestMessageIndicator) tTestMessageIndicator $
+      LT.insert (tnum tUsername) tUsername $
+      LT.insert (tnum tPassword) tPassword       LT.new
+      where
+         gNoMsgTypes''' = FIXTag
+            { tName = "NoMsgTypes"
+            , tnum = tnum tNoMsgTypes
+            , tparser = gNoMsgTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMsgTypesSpec''' }
+
+         gNoMsgTypesP''' = groupP gNoMsgTypesSpec'''
+         gNoMsgTypesSpec''' = FGSpec
+            { gsLength = tNoMsgTypes
+            , gsSeperator = tRefMsgType
+            , gsBody = gNoMsgTypesBody''' }
+            where
+            gNoMsgTypesBody''' = 
+               LT.insert (tnum tMsgDirection) tMsgDirection                LT.new
+
+
+
+mNews :: FIXMessageSpec
+mNews = FMSpec
+   { msName = "News"
+   , msType = C.pack "B"
+   , msHeader = headerFIX44
+   , msBody = mNewsBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNewsBody = 
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tUrgency) tUrgency $
+      LT.insert (tnum tHeadline) tHeadline $
+      LT.insert (tnum tEncodedHeadlineLen) tEncodedHeadlineLen $
+      LT.insert (tnum tEncodedHeadline) tEncodedHeadline $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLinesOfText) gNoLinesOfText''' $
+      LT.insert (tnum tURLLink) tURLLink $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoLinesOfText''' = FIXTag
+            { tName = "NoLinesOfText"
+            , tnum = tnum tNoLinesOfText
+            , tparser = gNoLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLinesOfTextSpec''' }
+
+         gNoLinesOfTextP''' = groupP gNoLinesOfTextSpec'''
+         gNoLinesOfTextSpec''' = FGSpec
+            { gsLength = tNoLinesOfText
+            , gsSeperator = tText
+            , gsBody = gNoLinesOfTextBody''' }
+            where
+            gNoLinesOfTextBody''' = 
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mEmail :: FIXMessageSpec
+mEmail = FMSpec
+   { msName = "Email"
+   , msType = C.pack "C"
+   , msHeader = headerFIX44
+   , msBody = mEmailBody
+   , msTrailer = trailerFIX44 }
+   where
+   mEmailBody = 
+      LT.insert (tnum tEmailThreadID) tEmailThreadID $
+      LT.insert (tnum tEmailType) tEmailType $
+      LT.insert (tnum tOrigTime) tOrigTime $
+      LT.insert (tnum tSubject) tSubject $
+      LT.insert (tnum tEncodedSubjectLen) tEncodedSubjectLen $
+      LT.insert (tnum tEncodedSubject) tEncodedSubject $
+      LT.insert (tnum tNoRoutingIDs) gNoRoutingIDs''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tNoLinesOfText) gNoLinesOfText''' $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+      where
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoLinesOfText''' = FIXTag
+            { tName = "NoLinesOfText"
+            , tnum = tnum tNoLinesOfText
+            , tparser = gNoLinesOfTextP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLinesOfTextSpec''' }
+
+         gNoLinesOfTextP''' = groupP gNoLinesOfTextSpec'''
+         gNoLinesOfTextSpec''' = FGSpec
+            { gsLength = tNoLinesOfText
+            , gsSeperator = tText
+            , gsBody = gNoLinesOfTextBody''' }
+            where
+            gNoLinesOfTextBody''' = 
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoRoutingIDs''' = FIXTag
+            { tName = "NoRoutingIDs"
+            , tnum = tnum tNoRoutingIDs
+            , tparser = gNoRoutingIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRoutingIDsSpec''' }
+
+         gNoRoutingIDsP''' = groupP gNoRoutingIDsSpec'''
+         gNoRoutingIDsSpec''' = FGSpec
+            { gsLength = tNoRoutingIDs
+            , gsSeperator = tRoutingType
+            , gsBody = gNoRoutingIDsBody''' }
+            where
+            gNoRoutingIDsBody''' = 
+               LT.insert (tnum tRoutingID) tRoutingID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mNewOrderSingle :: FIXMessageSpec
+mNewOrderSingle = FMSpec
+   { msName = "NewOrderSingle"
+   , msType = C.pack "D"
+   , msHeader = headerFIX44
+   , msBody = mNewOrderSingleBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNewOrderSingleBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tSettlDate2) tSettlDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tPrice2) tPrice2 $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mNewOrderList :: FIXMessageSpec
+mNewOrderList = FMSpec
+   { msName = "NewOrderList"
+   , msType = C.pack "E"
+   , msHeader = headerFIX44
+   , msBody = mNewOrderListBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNewOrderListBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tProgRptReqs) tProgRptReqs $
+      LT.insert (tnum tBidType) tBidType $
+      LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tListExecInstType) tListExecInstType $
+      LT.insert (tnum tListExecInst) tListExecInst $
+      LT.insert (tnum tEncodedListExecInstLen) tEncodedListExecInstLen $
+      LT.insert (tnum tEncodedListExecInst) tEncodedListExecInst $
+      LT.insert (tnum tAllowableOneSidednessPct) tAllowableOneSidednessPct $
+      LT.insert (tnum tAllowableOneSidednessValue) tAllowableOneSidednessValue $
+      LT.insert (tnum tAllowableOneSidednessCurr) tAllowableOneSidednessCurr $
+      LT.insert (tnum tTotNoOrders) tTotNoOrders $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListSeqNo) tListSeqNo $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tSettlInstMode) tSettlInstMode $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tTradeDate) tTradeDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tDayBookingInst) tDayBookingInst $
+               LT.insert (tnum tBookingUnit) tBookingUnit $
+               LT.insert (tnum tAllocID) tAllocID $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tSettlType) tSettlType $
+               LT.insert (tnum tSettlDate) tSettlDate $
+               LT.insert (tnum tCashMargin) tCashMargin $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tHandlInst) tHandlInst $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tMaxFloor) tMaxFloor $
+               LT.insert (tnum tExDestination) tExDestination $
+               LT.insert (tnum tNoTradingSessions) gNoTradingSessions'''''' $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tSymbol) tSymbol $
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tSideValueInd) tSideValueInd $
+               LT.insert (tnum tLocateReqd) tLocateReqd $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tQtyType) tQtyType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tStopPx) tStopPx $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+               LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+               LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+               LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield $
+               LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+               LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+               LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+               LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tIOIID) tIOIID $
+               LT.insert (tnum tQuoteID) tQuoteID $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tEffectiveTime) tEffectiveTime $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tGTBookingInst) tGTBookingInst $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tBookingType) tBookingType $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tSettlDate2) tSettlDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tPrice2) tPrice2 $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tMaxShow) tMaxShow $
+               LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+               LT.insert (tnum tPegMoveType) tPegMoveType $
+               LT.insert (tnum tPegOffsetType) tPegOffsetType $
+               LT.insert (tnum tPegLimitType) tPegLimitType $
+               LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+               LT.insert (tnum tPegScope) tPegScope $
+               LT.insert (tnum tDiscretionInst) tDiscretionInst $
+               LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+               LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+               LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+               LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+               LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+               LT.insert (tnum tDiscretionScope) tDiscretionScope $
+               LT.insert (tnum tTargetStrategy) tTargetStrategy $
+               LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+               LT.insert (tnum tParticipationRate) tParticipationRate $
+               LT.insert (tnum tDesignation) tDesignation                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+                        LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNestedPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNestedPartySubIDs"
+                                       , tnum = tnum tNoNestedPartySubIDs
+                                       , tparser = gNoNestedPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec'''''''''''' }
+
+                                    gNoNestedPartySubIDsP'''''''''''' = groupP gNoNestedPartySubIDsSpec''''''''''''
+                                    gNoNestedPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNestedPartySubIDs
+                                       , gsSeperator = tNestedPartySubID
+                                       , gsBody = gNoNestedPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNestedPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                           LT.new
+
+
+
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+                  gNoTradingSessions'''''' = FIXTag
+                     { tName = "NoTradingSessions"
+                     , tnum = tnum tNoTradingSessions
+                     , tparser = gNoTradingSessionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec'''''' }
+
+                  gNoTradingSessionsP'''''' = groupP gNoTradingSessionsSpec''''''
+                  gNoTradingSessionsSpec'''''' = FGSpec
+                     { gsLength = tNoTradingSessions
+                     , gsSeperator = tTradingSessionID
+                     , gsBody = gNoTradingSessionsBody'''''' }
+                     where
+                     gNoTradingSessionsBody'''''' = 
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mOrderCancelRequest :: FIXMessageSpec
+mOrderCancelRequest = FMSpec
+   { msName = "OrderCancelRequest"
+   , msType = C.pack "F"
+   , msHeader = headerFIX44
+   , msBody = mOrderCancelRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderCancelRequestBody = 
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mOrderCancelReplaceRequest :: FIXMessageSpec
+mOrderCancelReplaceRequest = FMSpec
+   { msName = "OrderCancelReplaceRequest"
+   , msType = C.pack "G"
+   , msHeader = headerFIX44
+   , msBody = mOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tSettlDate2) tSettlDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tPrice2) tPrice2 $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mOrderStatusRequest :: FIXMessageSpec
+mOrderStatusRequest = FMSpec
+   { msName = "OrderStatusRequest"
+   , msType = C.pack "H"
+   , msHeader = headerFIX44
+   , msBody = mOrderStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderStatusRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tOrdStatusReqID) tOrdStatusReqID $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mAllocationInstruction :: FIXMessageSpec
+mAllocationInstruction = FMSpec
+   { msName = "AllocationInstruction"
+   , msType = C.pack "J"
+   , msHeader = headerFIX44
+   , msBody = mAllocationInstructionBody
+   , msTrailer = trailerFIX44 }
+   where
+   mAllocationInstructionBody = 
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tAllocTransType) tAllocTransType $
+      LT.insert (tnum tAllocType) tAllocType $
+      LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+      LT.insert (tnum tRefAllocID) tRefAllocID $
+      LT.insert (tnum tAllocCancReplaceReason) tAllocCancReplaceReason $
+      LT.insert (tnum tAllocIntermedReqType) tAllocIntermedReqType $
+      LT.insert (tnum tAllocLinkID) tAllocLinkID $
+      LT.insert (tnum tAllocLinkType) tAllocLinkType $
+      LT.insert (tnum tBookingRefID) tBookingRefID $
+      LT.insert (tnum tAllocNoOrdersType) tAllocNoOrdersType $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tPreviouslyReported) tPreviouslyReported $
+      LT.insert (tnum tReversalIndicator) tReversalIndicator $
+      LT.insert (tnum tMatchType) tMatchType $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tAvgParPx) tAvgParPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tAvgPxPrecision) tAvgPxPrecision $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tConcession) tConcession $
+      LT.insert (tnum tTotalTakedown) tTotalTakedown $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tAutoAcceptIndicator) tAutoAcceptIndicator $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tTotalAccruedInterestAmt) tTotalAccruedInterestAmt $
+      LT.insert (tnum tInterestAtMaturity) tInterestAtMaturity $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tLegalConfirm) tLegalConfirm $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tTotNoAllocs) tTotNoAllocs $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tMatchStatus) tMatchStatus $
+               LT.insert (tnum tAllocPrice) tAllocPrice $
+               LT.insert (tnum tAllocQty) tAllocQty $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+               LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+               LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+               LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tAllocSettlCurrAmt) tAllocSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tAllocAccruedInterestAmt) tAllocAccruedInterestAmt $
+               LT.insert (tnum tAllocInterestAtMaturity) tAllocInterestAtMaturity $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees'''''' $
+               LT.insert (tnum tNoClearingInstructions) gNoClearingInstructions'''''' $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tAllocSettlInstType) tAllocSettlInstType $
+               LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+               LT.insert (tnum tStandInstDbType) tStandInstDbType $
+               LT.insert (tnum tStandInstDbName) tStandInstDbName $
+               LT.insert (tnum tStandInstDbID) tStandInstDbID $
+               LT.insert (tnum tNoDlvyInst) gNoDlvyInst''''''                LT.new
+               where
+                  gNoClearingInstructions'''''' = FIXTag
+                     { tName = "NoClearingInstructions"
+                     , tnum = tnum tNoClearingInstructions
+                     , tparser = gNoClearingInstructionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoClearingInstructionsSpec'''''' }
+
+                  gNoClearingInstructionsP'''''' = groupP gNoClearingInstructionsSpec''''''
+                  gNoClearingInstructionsSpec'''''' = FGSpec
+                     { gsLength = tNoClearingInstructions
+                     , gsSeperator = tClearingInstruction
+                     , gsBody = gNoClearingInstructionsBody'''''' }
+                     where
+                     gNoClearingInstructionsBody'''''' = 
+                        LT.new
+
+                  gNoDlvyInst'''''' = FIXTag
+                     { tName = "NoDlvyInst"
+                     , tnum = tnum tNoDlvyInst
+                     , tparser = gNoDlvyInstP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec'''''' }
+
+                  gNoDlvyInstP'''''' = groupP gNoDlvyInstSpec''''''
+                  gNoDlvyInstSpec'''''' = FGSpec
+                     { gsLength = tNoDlvyInst
+                     , gsSeperator = tSettlInstSource
+                     , gsBody = gNoDlvyInstBody'''''' }
+                     where
+                     gNoDlvyInstBody'''''' = 
+                        LT.insert (tnum tDlvyInstType) tDlvyInstType $
+                        LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartyIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartyIDs"
+                              , tnum = tnum tNoSettlPartyIDs
+                              , tparser = gNoSettlPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec''''''''' }
+
+                           gNoSettlPartyIDsP''''''''' = groupP gNoSettlPartyIDsSpec'''''''''
+                           gNoSettlPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartyIDs
+                              , gsSeperator = tSettlPartyID
+                              , gsBody = gNoSettlPartyIDsBody''''''''' }
+                              where
+                              gNoSettlPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                                 LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                                 LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoSettlPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoSettlPartySubIDs"
+                                       , tnum = tnum tNoSettlPartySubIDs
+                                       , tparser = gNoSettlPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec'''''''''''' }
+
+                                    gNoSettlPartySubIDsP'''''''''''' = groupP gNoSettlPartySubIDsSpec''''''''''''
+                                    gNoSettlPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoSettlPartySubIDs
+                                       , gsSeperator = tSettlPartySubID
+                                       , gsBody = gNoSettlPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoSettlPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                           LT.new
+
+
+
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType $
+                        LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tLastQty
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.insert (tnum tExecID) tExecID $
+               LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+               LT.insert (tnum tLastPx) tLastPx $
+               LT.insert (tnum tLastParPx) tLastParPx $
+               LT.insert (tnum tLastCapacity) tLastCapacity                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs'''''' $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tOrderAvgPx) tOrderAvgPx $
+               LT.insert (tnum tOrderBookingQty) tOrderBookingQty                LT.new
+               where
+                  gNoNested2PartyIDs'''''' = FIXTag
+                     { tName = "NoNested2PartyIDs"
+                     , tnum = tnum tNoNested2PartyIDs
+                     , tparser = gNoNested2PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec'''''' }
+
+                  gNoNested2PartyIDsP'''''' = groupP gNoNested2PartyIDsSpec''''''
+                  gNoNested2PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested2PartyIDs
+                     , gsSeperator = tNested2PartyID
+                     , gsBody = gNoNested2PartyIDsBody'''''' }
+                     where
+                     gNoNested2PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                        LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                        LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested2PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartySubIDs"
+                              , tnum = tnum tNoNested2PartySubIDs
+                              , tparser = gNoNested2PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec''''''''' }
+
+                           gNoNested2PartySubIDsP''''''''' = groupP gNoNested2PartySubIDsSpec'''''''''
+                           gNoNested2PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartySubIDs
+                              , gsSeperator = tNested2PartySubID
+                              , gsBody = gNoNested2PartySubIDsBody''''''''' }
+                              where
+                              gNoNested2PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mListCancelRequest :: FIXMessageSpec
+mListCancelRequest = FMSpec
+   { msName = "ListCancelRequest"
+   , msType = C.pack "K"
+   , msHeader = headerFIX44
+   , msBody = mListCancelRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mListCancelRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListExecute :: FIXMessageSpec
+mListExecute = FMSpec
+   { msName = "ListExecute"
+   , msType = C.pack "L"
+   , msHeader = headerFIX44
+   , msBody = mListExecuteBody
+   , msTrailer = trailerFIX44 }
+   where
+   mListExecuteBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListStatusRequest :: FIXMessageSpec
+mListStatusRequest = FMSpec
+   { msName = "ListStatusRequest"
+   , msType = C.pack "M"
+   , msHeader = headerFIX44
+   , msBody = mListStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mListStatusRequestBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mListStatus :: FIXMessageSpec
+mListStatus = FMSpec
+   { msName = "ListStatus"
+   , msType = C.pack "N"
+   , msHeader = headerFIX44
+   , msBody = mListStatusBody
+   , msTrailer = trailerFIX44 }
+   where
+   mListStatusBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tListStatusType) tListStatusType $
+      LT.insert (tnum tNoRpts) tNoRpts $
+      LT.insert (tnum tListOrderStatus) tListOrderStatus $
+      LT.insert (tnum tRptSeq) tRptSeq $
+      LT.insert (tnum tListStatusText) tListStatusText $
+      LT.insert (tnum tEncodedListStatusTextLen) tEncodedListStatusTextLen $
+      LT.insert (tnum tEncodedListStatusText) tEncodedListStatusText $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tTotNoOrders) tTotNoOrders $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoOrders) gNoOrders'''       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tCumQty) tCumQty $
+               LT.insert (tnum tOrdStatus) tOrdStatus $
+               LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+               LT.insert (tnum tLeavesQty) tLeavesQty $
+               LT.insert (tnum tCxlQty) tCxlQty $
+               LT.insert (tnum tAvgPx) tAvgPx $
+               LT.insert (tnum tOrdRejReason) tOrdRejReason $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mAllocationInstructionAck :: FIXMessageSpec
+mAllocationInstructionAck = FMSpec
+   { msName = "AllocationInstructionAck"
+   , msType = C.pack "P"
+   , msHeader = headerFIX44
+   , msBody = mAllocationInstructionAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mAllocationInstructionAckBody = 
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tAllocType) tAllocType $
+      LT.insert (tnum tAllocIntermedReqType) tAllocIntermedReqType $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocPrice) tAllocPrice $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tIndividualAllocRejCode) tIndividualAllocRejCode $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+               LT.insert (tnum tEncodedAllocText) tEncodedAllocText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+
+
+mDontKnowTrade :: FIXMessageSpec
+mDontKnowTrade = FMSpec
+   { msName = "DontKnowTrade"
+   , msType = C.pack "Q"
+   , msHeader = headerFIX44
+   , msBody = mDontKnowTradeBody
+   , msTrailer = trailerFIX44 }
+   where
+   mDontKnowTradeBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tDKReason) tDKReason $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tLastQty) tLastQty $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mQuoteRequest :: FIXMessageSpec
+mQuoteRequest = FMSpec
+   { msName = "QuoteRequest"
+   , msType = C.pack "R"
+   , msHeader = headerFIX44
+   , msBody = mQuoteRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteRequestBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tRFQReqID) tRFQReqID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tAgreementDesc) tAgreementDesc $
+               LT.insert (tnum tAgreementID) tAgreementID $
+               LT.insert (tnum tAgreementDate) tAgreementDate $
+               LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+               LT.insert (tnum tTerminationType) tTerminationType $
+               LT.insert (tnum tStartDate) tStartDate $
+               LT.insert (tnum tEndDate) tEndDate $
+               LT.insert (tnum tDeliveryType) tDeliveryType $
+               LT.insert (tnum tMarginRatio) tMarginRatio $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tQuoteType) tQuoteType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tQtyType) tQtyType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tSettlType) tSettlType $
+               LT.insert (tnum tSettlDate) tSettlDate $
+               LT.insert (tnum tSettlDate2) tSettlDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tNoQuoteQualifiers) gNoQuoteQualifiers'''''' $
+               LT.insert (tnum tQuotePriceType) tQuotePriceType $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tValidUntilTime) tValidUntilTime $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+               LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+               LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+               LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPrice2) tPrice2 $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield $
+               LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+               LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+               LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+               LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs''''''                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+                        LT.insert (tnum tLegQty) tLegQty $
+                        LT.insert (tnum tLegSwapType) tLegSwapType $
+                        LT.insert (tnum tLegSettlType) tLegSettlType $
+                        LT.insert (tnum tLegSettlDate) tLegSettlDate $
+                        LT.insert (tnum tNoLegStipulations) gNoLegStipulations''''''''' $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tLegBenchmarkCurveCurrency) tLegBenchmarkCurveCurrency $
+                        LT.insert (tnum tLegBenchmarkCurveName) tLegBenchmarkCurveName $
+                        LT.insert (tnum tLegBenchmarkCurvePoint) tLegBenchmarkCurvePoint $
+                        LT.insert (tnum tLegBenchmarkPrice) tLegBenchmarkPrice $
+                        LT.insert (tnum tLegBenchmarkPriceType) tLegBenchmarkPriceType                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+                           gNoLegStipulations''''''''' = FIXTag
+                              { tName = "NoLegStipulations"
+                              , tnum = tnum tNoLegStipulations
+                              , tparser = gNoLegStipulationsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec''''''''' }
+
+                           gNoLegStipulationsP''''''''' = groupP gNoLegStipulationsSpec'''''''''
+                           gNoLegStipulationsSpec''''''''' = FGSpec
+                              { gsLength = tNoLegStipulations
+                              , gsSeperator = tLegStipulationType
+                              , gsBody = gNoLegStipulationsBody''''''''' }
+                              where
+                              gNoLegStipulationsBody''''''''' = 
+                                 LT.insert (tnum tLegStipulationValue) tLegStipulationValue                                  LT.new
+
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNestedPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNestedPartySubIDs"
+                                       , tnum = tnum tNoNestedPartySubIDs
+                                       , tparser = gNoNestedPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec'''''''''''' }
+
+                                    gNoNestedPartySubIDsP'''''''''''' = groupP gNoNestedPartySubIDsSpec''''''''''''
+                                    gNoNestedPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNestedPartySubIDs
+                                       , gsSeperator = tNestedPartySubID
+                                       , gsBody = gNoNestedPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNestedPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                           LT.new
+
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+                  gNoQuoteQualifiers'''''' = FIXTag
+                     { tName = "NoQuoteQualifiers"
+                     , tnum = tnum tNoQuoteQualifiers
+                     , tparser = gNoQuoteQualifiersP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteQualifiersSpec'''''' }
+
+                  gNoQuoteQualifiersP'''''' = groupP gNoQuoteQualifiersSpec''''''
+                  gNoQuoteQualifiersSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteQualifiers
+                     , gsSeperator = tQuoteQualifier
+                     , gsBody = gNoQuoteQualifiersBody'''''' }
+                     where
+                     gNoQuoteQualifiersBody'''''' = 
+                        LT.new
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mQuote :: FIXMessageSpec
+mQuote = FMSpec
+   { msName = "Quote"
+   , msType = C.pack "S"
+   , msHeader = headerFIX44
+   , msBody = mQuoteBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteRespID) tQuoteRespID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tNoQuoteQualifiers) gNoQuoteQualifiers''' $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tSettlDate2) tSettlDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tMktBidPx) tMktBidPx $
+      LT.insert (tnum tMktOfferPx) tMktOfferPx $
+      LT.insert (tnum tMinBidSize) tMinBidSize $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tMinOfferSize) tMinOfferSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tMidPx) tMidPx $
+      LT.insert (tnum tBidYield) tBidYield $
+      LT.insert (tnum tMidYield) tMidYield $
+      LT.insert (tnum tOfferYield) tOfferYield $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+      LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+      LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+      LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegPriceType) tLegPriceType $
+               LT.insert (tnum tLegBidPx) tLegBidPx $
+               LT.insert (tnum tLegOfferPx) tLegOfferPx $
+               LT.insert (tnum tLegBenchmarkCurveCurrency) tLegBenchmarkCurveCurrency $
+               LT.insert (tnum tLegBenchmarkCurveName) tLegBenchmarkCurveName $
+               LT.insert (tnum tLegBenchmarkCurvePoint) tLegBenchmarkCurvePoint $
+               LT.insert (tnum tLegBenchmarkPrice) tLegBenchmarkPrice $
+               LT.insert (tnum tLegBenchmarkPriceType) tLegBenchmarkPriceType                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoQuoteQualifiers''' = FIXTag
+            { tName = "NoQuoteQualifiers"
+            , tnum = tnum tNoQuoteQualifiers
+            , tparser = gNoQuoteQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteQualifiersSpec''' }
+
+         gNoQuoteQualifiersP''' = groupP gNoQuoteQualifiersSpec'''
+         gNoQuoteQualifiersSpec''' = FGSpec
+            { gsLength = tNoQuoteQualifiers
+            , gsSeperator = tQuoteQualifier
+            , gsBody = gNoQuoteQualifiersBody''' }
+            where
+            gNoQuoteQualifiersBody''' = 
+               LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSettlementInstructions :: FIXMessageSpec
+mSettlementInstructions = FMSpec
+   { msName = "SettlementInstructions"
+   , msType = C.pack "T"
+   , msHeader = headerFIX44
+   , msBody = mSettlementInstructionsBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSettlementInstructionsBody = 
+      LT.insert (tnum tSettlInstMsgID) tSettlInstMsgID $
+      LT.insert (tnum tSettlInstReqID) tSettlInstReqID $
+      LT.insert (tnum tSettlInstMode) tSettlInstMode $
+      LT.insert (tnum tSettlInstReqRejCode) tSettlInstReqRejCode $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoSettlInst) gNoSettlInst'''       LT.new
+      where
+         gNoSettlInst''' = FIXTag
+            { tName = "NoSettlInst"
+            , tnum = tnum tNoSettlInst
+            , tparser = gNoSettlInstP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSettlInstSpec''' }
+
+         gNoSettlInstP''' = groupP gNoSettlInstSpec'''
+         gNoSettlInstSpec''' = FGSpec
+            { gsLength = tNoSettlInst
+            , gsSeperator = tSettlInstID
+            , gsBody = gNoSettlInstBody''' }
+            where
+            gNoSettlInstBody''' = 
+               LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+               LT.insert (tnum tSettlInstRefID) tSettlInstRefID $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tEffectiveTime) tEffectiveTime $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tLastUpdateTime) tLastUpdateTime $
+               LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+               LT.insert (tnum tStandInstDbType) tStandInstDbType $
+               LT.insert (tnum tStandInstDbName) tStandInstDbName $
+               LT.insert (tnum tStandInstDbID) tStandInstDbID $
+               LT.insert (tnum tNoDlvyInst) gNoDlvyInst'''''' $
+               LT.insert (tnum tPaymentMethod) tPaymentMethod $
+               LT.insert (tnum tPaymentRef) tPaymentRef $
+               LT.insert (tnum tCardHolderName) tCardHolderName $
+               LT.insert (tnum tCardNumber) tCardNumber $
+               LT.insert (tnum tCardStartDate) tCardStartDate $
+               LT.insert (tnum tCardExpDate) tCardExpDate $
+               LT.insert (tnum tCardIssNum) tCardIssNum $
+               LT.insert (tnum tPaymentDate) tPaymentDate $
+               LT.insert (tnum tPaymentRemitterID) tPaymentRemitterID                LT.new
+               where
+                  gNoDlvyInst'''''' = FIXTag
+                     { tName = "NoDlvyInst"
+                     , tnum = tnum tNoDlvyInst
+                     , tparser = gNoDlvyInstP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec'''''' }
+
+                  gNoDlvyInstP'''''' = groupP gNoDlvyInstSpec''''''
+                  gNoDlvyInstSpec'''''' = FGSpec
+                     { gsLength = tNoDlvyInst
+                     , gsSeperator = tSettlInstSource
+                     , gsBody = gNoDlvyInstBody'''''' }
+                     where
+                     gNoDlvyInstBody'''''' = 
+                        LT.insert (tnum tDlvyInstType) tDlvyInstType $
+                        LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartyIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartyIDs"
+                              , tnum = tnum tNoSettlPartyIDs
+                              , tparser = gNoSettlPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec''''''''' }
+
+                           gNoSettlPartyIDsP''''''''' = groupP gNoSettlPartyIDsSpec'''''''''
+                           gNoSettlPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartyIDs
+                              , gsSeperator = tSettlPartyID
+                              , gsBody = gNoSettlPartyIDsBody''''''''' }
+                              where
+                              gNoSettlPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                                 LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                                 LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoSettlPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoSettlPartySubIDs"
+                                       , tnum = tnum tNoSettlPartySubIDs
+                                       , tparser = gNoSettlPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec'''''''''''' }
+
+                                    gNoSettlPartySubIDsP'''''''''''' = groupP gNoSettlPartySubIDsSpec''''''''''''
+                                    gNoSettlPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoSettlPartySubIDs
+                                       , gsSeperator = tSettlPartySubID
+                                       , gsBody = gNoSettlPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoSettlPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                           LT.new
+
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+
+
+
+mMarketDataRequest :: FIXMessageSpec
+mMarketDataRequest = FMSpec
+   { msName = "MarketDataRequest"
+   , msType = C.pack "V"
+   , msHeader = headerFIX44
+   , msBody = mMarketDataRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMarketDataRequestBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tMarketDepth) tMarketDepth $
+      LT.insert (tnum tMDUpdateType) tMDUpdateType $
+      LT.insert (tnum tAggregatedBook) tAggregatedBook $
+      LT.insert (tnum tOpenCloseSettlFlag) tOpenCloseSettlFlag $
+      LT.insert (tnum tScope) tScope $
+      LT.insert (tnum tMDImplicitDelete) tMDImplicitDelete $
+      LT.insert (tnum tNoMDEntryTypes) gNoMDEntryTypes''' $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoMDEntryTypes''' = FIXTag
+            { tName = "NoMDEntryTypes"
+            , tnum = tnum tNoMDEntryTypes
+            , tparser = gNoMDEntryTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntryTypesSpec''' }
+
+         gNoMDEntryTypesP''' = groupP gNoMDEntryTypesSpec'''
+         gNoMDEntryTypesSpec''' = FGSpec
+            { gsLength = tNoMDEntryTypes
+            , gsSeperator = tMDEntryType
+            , gsBody = gNoMDEntryTypesBody''' }
+            where
+            gNoMDEntryTypesBody''' = 
+               LT.new
+
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tNoTradingSessions) gNoTradingSessions'''''' $
+               LT.insert (tnum tApplQueueAction) tApplQueueAction $
+               LT.insert (tnum tApplQueueMax) tApplQueueMax                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoTradingSessions'''''' = FIXTag
+                     { tName = "NoTradingSessions"
+                     , tnum = tnum tNoTradingSessions
+                     , tparser = gNoTradingSessionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec'''''' }
+
+                  gNoTradingSessionsP'''''' = groupP gNoTradingSessionsSpec''''''
+                  gNoTradingSessionsSpec'''''' = FGSpec
+                     { gsLength = tNoTradingSessions
+                     , gsSeperator = tTradingSessionID
+                     , gsBody = gNoTradingSessionsBody'''''' }
+                     where
+                     gNoTradingSessionsBody'''''' = 
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mMarketDataSnapshotFullRefresh :: FIXMessageSpec
+mMarketDataSnapshotFullRefresh = FMSpec
+   { msName = "MarketDataSnapshotFullRefresh"
+   , msType = C.pack "W"
+   , msHeader = headerFIX44
+   , msBody = mMarketDataSnapshotFullRefreshBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMarketDataSnapshotFullRefreshBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tFinancialStatus) tFinancialStatus $
+      LT.insert (tnum tCorporateAction) tCorporateAction $
+      LT.insert (tnum tNetChgPrevDay) tNetChgPrevDay $
+      LT.insert (tnum tNoMDEntries) gNoMDEntries''' $
+      LT.insert (tnum tApplQueueDepth) tApplQueueDepth $
+      LT.insert (tnum tApplQueueResolution) tApplQueueResolution       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoMDEntries''' = FIXTag
+            { tName = "NoMDEntries"
+            , tnum = tnum tNoMDEntries
+            , tparser = gNoMDEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntriesSpec''' }
+
+         gNoMDEntriesP''' = groupP gNoMDEntriesSpec'''
+         gNoMDEntriesSpec''' = FGSpec
+            { gsLength = tNoMDEntries
+            , gsSeperator = tMDEntryType
+            , gsBody = gNoMDEntriesBody''' }
+            where
+            gNoMDEntriesBody''' = 
+               LT.insert (tnum tMDEntryPx) tMDEntryPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tMDEntrySize) tMDEntrySize $
+               LT.insert (tnum tMDEntryDate) tMDEntryDate $
+               LT.insert (tnum tMDEntryTime) tMDEntryTime $
+               LT.insert (tnum tTickDirection) tTickDirection $
+               LT.insert (tnum tMDMkt) tMDMkt $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tQuoteCondition) tQuoteCondition $
+               LT.insert (tnum tTradeCondition) tTradeCondition $
+               LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tOpenCloseSettlFlag) tOpenCloseSettlFlag $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tSellerDays) tSellerDays $
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+               LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+               LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+               LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+               LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+               LT.insert (tnum tScope) tScope $
+               LT.insert (tnum tPriceDelta) tPriceDelta $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mMarketDataIncrementalRefresh :: FIXMessageSpec
+mMarketDataIncrementalRefresh = FMSpec
+   { msName = "MarketDataIncrementalRefresh"
+   , msType = C.pack "X"
+   , msHeader = headerFIX44
+   , msBody = mMarketDataIncrementalRefreshBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMarketDataIncrementalRefreshBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tNoMDEntries) gNoMDEntries''' $
+      LT.insert (tnum tApplQueueDepth) tApplQueueDepth $
+      LT.insert (tnum tApplQueueResolution) tApplQueueResolution       LT.new
+      where
+         gNoMDEntries''' = FIXTag
+            { tName = "NoMDEntries"
+            , tnum = tnum tNoMDEntries
+            , tparser = gNoMDEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMDEntriesSpec''' }
+
+         gNoMDEntriesP''' = groupP gNoMDEntriesSpec'''
+         gNoMDEntriesSpec''' = FGSpec
+            { gsLength = tNoMDEntries
+            , gsSeperator = tMDUpdateAction
+            , gsBody = gNoMDEntriesBody''' }
+            where
+            gNoMDEntriesBody''' = 
+               LT.insert (tnum tDeleteReason) tDeleteReason $
+               LT.insert (tnum tMDEntryType) tMDEntryType $
+               LT.insert (tnum tMDEntryID) tMDEntryID $
+               LT.insert (tnum tMDEntryRefID) tMDEntryRefID $
+               LT.insert (tnum tSymbol) tSymbol $
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tFinancialStatus) tFinancialStatus $
+               LT.insert (tnum tCorporateAction) tCorporateAction $
+               LT.insert (tnum tMDEntryPx) tMDEntryPx $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tMDEntrySize) tMDEntrySize $
+               LT.insert (tnum tMDEntryDate) tMDEntryDate $
+               LT.insert (tnum tMDEntryTime) tMDEntryTime $
+               LT.insert (tnum tTickDirection) tTickDirection $
+               LT.insert (tnum tMDMkt) tMDMkt $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tQuoteCondition) tQuoteCondition $
+               LT.insert (tnum tTradeCondition) tTradeCondition $
+               LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tOpenCloseSettlFlag) tOpenCloseSettlFlag $
+               LT.insert (tnum tTimeInForce) tTimeInForce $
+               LT.insert (tnum tExpireDate) tExpireDate $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tMinQty) tMinQty $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tSellerDays) tSellerDays $
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+               LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+               LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+               LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+               LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+               LT.insert (tnum tScope) tScope $
+               LT.insert (tnum tPriceDelta) tPriceDelta $
+               LT.insert (tnum tNetChgPrevDay) tNetChgPrevDay $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mMarketDataRequestReject :: FIXMessageSpec
+mMarketDataRequestReject = FMSpec
+   { msName = "MarketDataRequestReject"
+   , msType = C.pack "Y"
+   , msHeader = headerFIX44
+   , msBody = mMarketDataRequestRejectBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMarketDataRequestRejectBody = 
+      LT.insert (tnum tMDReqID) tMDReqID $
+      LT.insert (tnum tMDReqRejReason) tMDReqRejReason $
+      LT.insert (tnum tNoAltMDSource) gNoAltMDSource''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoAltMDSource''' = FIXTag
+            { tName = "NoAltMDSource"
+            , tnum = tnum tNoAltMDSource
+            , tparser = gNoAltMDSourceP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAltMDSourceSpec''' }
+
+         gNoAltMDSourceP''' = groupP gNoAltMDSourceSpec'''
+         gNoAltMDSourceSpec''' = FGSpec
+            { gsLength = tNoAltMDSource
+            , gsSeperator = tAltMDSourceID
+            , gsBody = gNoAltMDSourceBody''' }
+            where
+            gNoAltMDSourceBody''' = 
+               LT.new
+
+
+
+mQuoteCancel :: FIXMessageSpec
+mQuoteCancel = FMSpec
+   { msName = "QuoteCancel"
+   , msType = C.pack "Z"
+   , msHeader = headerFIX44
+   , msBody = mQuoteCancelBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteCancelBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteCancelType) tQuoteCancelType $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries'''       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoQuoteEntries''' = FIXTag
+            { tName = "NoQuoteEntries"
+            , tnum = tnum tNoQuoteEntries
+            , tparser = gNoQuoteEntriesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec''' }
+
+         gNoQuoteEntriesP''' = groupP gNoQuoteEntriesSpec'''
+         gNoQuoteEntriesSpec''' = FGSpec
+            { gsLength = tNoQuoteEntries
+            , gsSeperator = tSymbol
+            , gsBody = gNoQuoteEntriesBody''' }
+            where
+            gNoQuoteEntriesBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tAgreementDesc) tAgreementDesc $
+               LT.insert (tnum tAgreementID) tAgreementID $
+               LT.insert (tnum tAgreementDate) tAgreementDate $
+               LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+               LT.insert (tnum tTerminationType) tTerminationType $
+               LT.insert (tnum tStartDate) tStartDate $
+               LT.insert (tnum tEndDate) tEndDate $
+               LT.insert (tnum tDeliveryType) tDeliveryType $
+               LT.insert (tnum tMarginRatio) tMarginRatio $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tNoLegs) gNoLegs''''''                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mQuoteStatusRequest :: FIXMessageSpec
+mQuoteStatusRequest = FMSpec
+   { msName = "QuoteStatusRequest"
+   , msType = C.pack "a"
+   , msHeader = headerFIX44
+   , msBody = mQuoteStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteStatusRequestBody = 
+      LT.insert (tnum tQuoteStatusReqID) tQuoteStatusReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mMassQuoteAcknowledgement :: FIXMessageSpec
+mMassQuoteAcknowledgement = FMSpec
+   { msName = "MassQuoteAcknowledgement"
+   , msType = C.pack "b"
+   , msHeader = headerFIX44
+   , msBody = mMassQuoteAcknowledgementBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMassQuoteAcknowledgementBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteStatus) tQuoteStatus $
+      LT.insert (tnum tQuoteRejectReason) tQuoteRejectReason $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoQuoteSets) gNoQuoteSets'''       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoQuoteSets''' = FIXTag
+            { tName = "NoQuoteSets"
+            , tnum = tnum tNoQuoteSets
+            , tparser = gNoQuoteSetsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteSetsSpec''' }
+
+         gNoQuoteSetsP''' = groupP gNoQuoteSetsSpec'''
+         gNoQuoteSetsSpec''' = FGSpec
+            { gsLength = tNoQuoteSets
+            , gsSeperator = tQuoteSetID
+            , gsBody = gNoQuoteSetsBody''' }
+            where
+            gNoQuoteSetsBody''' = 
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tTotNoQuoteEntries) tTotNoQuoteEntries $
+               LT.insert (tnum tLastFragment) tLastFragment $
+               LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries''''''                LT.new
+               where
+                  gNoQuoteEntries'''''' = FIXTag
+                     { tName = "NoQuoteEntries"
+                     , tnum = tnum tNoQuoteEntries
+                     , tparser = gNoQuoteEntriesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec'''''' }
+
+                  gNoQuoteEntriesP'''''' = groupP gNoQuoteEntriesSpec''''''
+                  gNoQuoteEntriesSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteEntries
+                     , gsSeperator = tQuoteEntryID
+                     , gsBody = gNoQuoteEntriesBody'''''' }
+                     where
+                     gNoQuoteEntriesBody'''''' = 
+                        LT.insert (tnum tSymbol) tSymbol $
+                        LT.insert (tnum tSymbolSfx) tSymbolSfx $
+                        LT.insert (tnum tSecurityID) tSecurityID $
+                        LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+                        LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''''''''' $
+                        LT.insert (tnum tProduct) tProduct $
+                        LT.insert (tnum tCFICode) tCFICode $
+                        LT.insert (tnum tSecurityType) tSecurityType $
+                        LT.insert (tnum tSecuritySubType) tSecuritySubType $
+                        LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+                        LT.insert (tnum tMaturityDate) tMaturityDate $
+                        LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+                        LT.insert (tnum tIssueDate) tIssueDate $
+                        LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+                        LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+                        LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+                        LT.insert (tnum tFactor) tFactor $
+                        LT.insert (tnum tCreditRating) tCreditRating $
+                        LT.insert (tnum tInstrRegistry) tInstrRegistry $
+                        LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+                        LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+                        LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+                        LT.insert (tnum tRedemptionDate) tRedemptionDate $
+                        LT.insert (tnum tStrikePrice) tStrikePrice $
+                        LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+                        LT.insert (tnum tOptAttribute) tOptAttribute $
+                        LT.insert (tnum tContractMultiplier) tContractMultiplier $
+                        LT.insert (tnum tCouponRate) tCouponRate $
+                        LT.insert (tnum tSecurityExchange) tSecurityExchange $
+                        LT.insert (tnum tIssuer) tIssuer $
+                        LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+                        LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+                        LT.insert (tnum tSecurityDesc) tSecurityDesc $
+                        LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+                        LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+                        LT.insert (tnum tPool) tPool $
+                        LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+                        LT.insert (tnum tCPProgram) tCPProgram $
+                        LT.insert (tnum tCPRegType) tCPRegType $
+                        LT.insert (tnum tNoEvents) gNoEvents''''''''' $
+                        LT.insert (tnum tDatedDate) tDatedDate $
+                        LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+                        LT.insert (tnum tNoLegs) gNoLegs''''''''' $
+                        LT.insert (tnum tBidPx) tBidPx $
+                        LT.insert (tnum tOfferPx) tOfferPx $
+                        LT.insert (tnum tBidSize) tBidSize $
+                        LT.insert (tnum tOfferSize) tOfferSize $
+                        LT.insert (tnum tValidUntilTime) tValidUntilTime $
+                        LT.insert (tnum tBidSpotRate) tBidSpotRate $
+                        LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+                        LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+                        LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+                        LT.insert (tnum tMidPx) tMidPx $
+                        LT.insert (tnum tBidYield) tBidYield $
+                        LT.insert (tnum tMidYield) tMidYield $
+                        LT.insert (tnum tOfferYield) tOfferYield $
+                        LT.insert (tnum tTransactTime) tTransactTime $
+                        LT.insert (tnum tTradingSessionID) tTradingSessionID $
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+                        LT.insert (tnum tSettlDate) tSettlDate $
+                        LT.insert (tnum tOrdType) tOrdType $
+                        LT.insert (tnum tSettlDate2) tSettlDate2 $
+                        LT.insert (tnum tOrderQty2) tOrderQty2 $
+                        LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+                        LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+                        LT.insert (tnum tCurrency) tCurrency $
+                        LT.insert (tnum tQuoteEntryRejectReason) tQuoteEntryRejectReason                         LT.new
+                        where
+                           gNoEvents''''''''' = FIXTag
+                              { tName = "NoEvents"
+                              , tnum = tnum tNoEvents
+                              , tparser = gNoEventsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''''''''' }
+
+                           gNoEventsP''''''''' = groupP gNoEventsSpec'''''''''
+                           gNoEventsSpec''''''''' = FGSpec
+                              { gsLength = tNoEvents
+                              , gsSeperator = tEventType
+                              , gsBody = gNoEventsBody''''''''' }
+                              where
+                              gNoEventsBody''''''''' = 
+                                 LT.insert (tnum tEventDate) tEventDate $
+                                 LT.insert (tnum tEventPx) tEventPx $
+                                 LT.insert (tnum tEventText) tEventText                                  LT.new
+
+                           gNoLegs''''''''' = FIXTag
+                              { tName = "NoLegs"
+                              , tnum = tnum tNoLegs
+                              , tparser = gNoLegsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''''''''' }
+
+                           gNoLegsP''''''''' = groupP gNoLegsSpec'''''''''
+                           gNoLegsSpec''''''''' = FGSpec
+                              { gsLength = tNoLegs
+                              , gsSeperator = tLegSymbol
+                              , gsBody = gNoLegsBody''''''''' }
+                              where
+                              gNoLegsBody''''''''' = 
+                                 LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                                 LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                                 LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                                 LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''''''''' $
+                                 LT.insert (tnum tLegProduct) tLegProduct $
+                                 LT.insert (tnum tLegCFICode) tLegCFICode $
+                                 LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                                 LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                                 LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                                 LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                                 LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                                 LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                                 LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                                 LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                                 LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                                 LT.insert (tnum tLegFactor) tLegFactor $
+                                 LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                                 LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                                 LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                                 LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                                 LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                                 LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                                 LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                                 LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                                 LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                                 LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                                 LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                                 LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                                 LT.insert (tnum tLegIssuer) tLegIssuer $
+                                 LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                                 LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                                 LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                                 LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                                 LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                                 LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                                 LT.insert (tnum tLegSide) tLegSide $
+                                 LT.insert (tnum tLegCurrency) tLegCurrency $
+                                 LT.insert (tnum tLegPool) tLegPool $
+                                 LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                                 LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                                 LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                                  LT.new
+                                 where
+                                    gNoLegSecurityAltID'''''''''''' = FIXTag
+                                       { tName = "NoLegSecurityAltID"
+                                       , tnum = tnum tNoLegSecurityAltID
+                                       , tparser = gNoLegSecurityAltIDP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''''''''' }
+
+                                    gNoLegSecurityAltIDP'''''''''''' = groupP gNoLegSecurityAltIDSpec''''''''''''
+                                    gNoLegSecurityAltIDSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoLegSecurityAltID
+                                       , gsSeperator = tLegSecurityAltID
+                                       , gsBody = gNoLegSecurityAltIDBody'''''''''''' }
+                                       where
+                                       gNoLegSecurityAltIDBody'''''''''''' = 
+                                          LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                           LT.new
+
+
+                           gNoSecurityAltID''''''''' = FIXTag
+                              { tName = "NoSecurityAltID"
+                              , tnum = tnum tNoSecurityAltID
+                              , tparser = gNoSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''''''''' }
+
+                           gNoSecurityAltIDP''''''''' = groupP gNoSecurityAltIDSpec'''''''''
+                           gNoSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoSecurityAltID
+                              , gsSeperator = tSecurityAltID
+                              , gsBody = gNoSecurityAltIDBody''''''''' }
+                              where
+                              gNoSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                                  LT.new
+
+
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSecurityDefinitionRequest :: FIXMessageSpec
+mSecurityDefinitionRequest = FMSpec
+   { msName = "SecurityDefinitionRequest"
+   , msType = C.pack "c"
+   , msHeader = headerFIX44
+   , msBody = mSecurityDefinitionRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityDefinitionRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityRequestType) tSecurityRequestType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tExpirationCycle) tExpirationCycle $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSecurityDefinition :: FIXMessageSpec
+mSecurityDefinition = FMSpec
+   { msName = "SecurityDefinition"
+   , msType = C.pack "d"
+   , msHeader = headerFIX44
+   , msBody = mSecurityDefinitionBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityDefinitionBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tExpirationCycle) tExpirationCycle $
+      LT.insert (tnum tRoundLot) tRoundLot $
+      LT.insert (tnum tMinTradeVol) tMinTradeVol       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSecurityStatusRequest :: FIXMessageSpec
+mSecurityStatusRequest = FMSpec
+   { msName = "SecurityStatusRequest"
+   , msType = C.pack "e"
+   , msHeader = headerFIX44
+   , msBody = mSecurityStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityStatusRequestBody = 
+      LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSecurityStatus :: FIXMessageSpec
+mSecurityStatus = FMSpec
+   { msName = "SecurityStatus"
+   , msType = C.pack "f"
+   , msHeader = headerFIX44
+   , msBody = mSecurityStatusBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityStatusBody = 
+      LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tSecurityTradingStatus) tSecurityTradingStatus $
+      LT.insert (tnum tFinancialStatus) tFinancialStatus $
+      LT.insert (tnum tCorporateAction) tCorporateAction $
+      LT.insert (tnum tHaltReasonChar) tHaltReasonChar $
+      LT.insert (tnum tInViewOfCommon) tInViewOfCommon $
+      LT.insert (tnum tDueToRelated) tDueToRelated $
+      LT.insert (tnum tBuyVolume) tBuyVolume $
+      LT.insert (tnum tSellVolume) tSellVolume $
+      LT.insert (tnum tHighPx) tHighPx $
+      LT.insert (tnum tLowPx) tLowPx $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAdjustment) tAdjustment $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mTradingSessionStatusRequest :: FIXMessageSpec
+mTradingSessionStatusRequest = FMSpec
+   { msName = "TradingSessionStatusRequest"
+   , msType = C.pack "g"
+   , msHeader = headerFIX44
+   , msBody = mTradingSessionStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTradingSessionStatusRequestBody = 
+      LT.insert (tnum tTradSesReqID) tTradSesReqID $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tTradSesMethod) tTradSesMethod $
+      LT.insert (tnum tTradSesMode) tTradSesMode $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+
+
+mTradingSessionStatus :: FIXMessageSpec
+mTradingSessionStatus = FMSpec
+   { msName = "TradingSessionStatus"
+   , msType = C.pack "h"
+   , msHeader = headerFIX44
+   , msBody = mTradingSessionStatusBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTradingSessionStatusBody = 
+      LT.insert (tnum tTradSesReqID) tTradSesReqID $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tTradSesMethod) tTradSesMethod $
+      LT.insert (tnum tTradSesMode) tTradSesMode $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tTradSesStatus) tTradSesStatus $
+      LT.insert (tnum tTradSesStatusRejReason) tTradSesStatusRejReason $
+      LT.insert (tnum tTradSesStartTime) tTradSesStartTime $
+      LT.insert (tnum tTradSesOpenTime) tTradSesOpenTime $
+      LT.insert (tnum tTradSesPreCloseTime) tTradSesPreCloseTime $
+      LT.insert (tnum tTradSesCloseTime) tTradSesCloseTime $
+      LT.insert (tnum tTradSesEndTime) tTradSesEndTime $
+      LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mMassQuote :: FIXMessageSpec
+mMassQuote = FMSpec
+   { msName = "MassQuote"
+   , msType = C.pack "i"
+   , msHeader = headerFIX44
+   , msBody = mMassQuoteBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMassQuoteBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDefBidSize) tDefBidSize $
+      LT.insert (tnum tDefOfferSize) tDefOfferSize $
+      LT.insert (tnum tNoQuoteSets) gNoQuoteSets'''       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoQuoteSets''' = FIXTag
+            { tName = "NoQuoteSets"
+            , tnum = tnum tNoQuoteSets
+            , tparser = gNoQuoteSetsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteSetsSpec''' }
+
+         gNoQuoteSetsP''' = groupP gNoQuoteSetsSpec'''
+         gNoQuoteSetsSpec''' = FGSpec
+            { gsLength = tNoQuoteSets
+            , gsSeperator = tQuoteSetID
+            , gsBody = gNoQuoteSetsBody''' }
+            where
+            gNoQuoteSetsBody''' = 
+               LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tQuoteSetValidUntilTime) tQuoteSetValidUntilTime $
+               LT.insert (tnum tTotNoQuoteEntries) tTotNoQuoteEntries $
+               LT.insert (tnum tLastFragment) tLastFragment $
+               LT.insert (tnum tNoQuoteEntries) gNoQuoteEntries''''''                LT.new
+               where
+                  gNoQuoteEntries'''''' = FIXTag
+                     { tName = "NoQuoteEntries"
+                     , tnum = tnum tNoQuoteEntries
+                     , tparser = gNoQuoteEntriesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteEntriesSpec'''''' }
+
+                  gNoQuoteEntriesP'''''' = groupP gNoQuoteEntriesSpec''''''
+                  gNoQuoteEntriesSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteEntries
+                     , gsSeperator = tQuoteEntryID
+                     , gsBody = gNoQuoteEntriesBody'''''' }
+                     where
+                     gNoQuoteEntriesBody'''''' = 
+                        LT.insert (tnum tSymbol) tSymbol $
+                        LT.insert (tnum tSymbolSfx) tSymbolSfx $
+                        LT.insert (tnum tSecurityID) tSecurityID $
+                        LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+                        LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''''''''' $
+                        LT.insert (tnum tProduct) tProduct $
+                        LT.insert (tnum tCFICode) tCFICode $
+                        LT.insert (tnum tSecurityType) tSecurityType $
+                        LT.insert (tnum tSecuritySubType) tSecuritySubType $
+                        LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+                        LT.insert (tnum tMaturityDate) tMaturityDate $
+                        LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+                        LT.insert (tnum tIssueDate) tIssueDate $
+                        LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+                        LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+                        LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+                        LT.insert (tnum tFactor) tFactor $
+                        LT.insert (tnum tCreditRating) tCreditRating $
+                        LT.insert (tnum tInstrRegistry) tInstrRegistry $
+                        LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+                        LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+                        LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+                        LT.insert (tnum tRedemptionDate) tRedemptionDate $
+                        LT.insert (tnum tStrikePrice) tStrikePrice $
+                        LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+                        LT.insert (tnum tOptAttribute) tOptAttribute $
+                        LT.insert (tnum tContractMultiplier) tContractMultiplier $
+                        LT.insert (tnum tCouponRate) tCouponRate $
+                        LT.insert (tnum tSecurityExchange) tSecurityExchange $
+                        LT.insert (tnum tIssuer) tIssuer $
+                        LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+                        LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+                        LT.insert (tnum tSecurityDesc) tSecurityDesc $
+                        LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+                        LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+                        LT.insert (tnum tPool) tPool $
+                        LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+                        LT.insert (tnum tCPProgram) tCPProgram $
+                        LT.insert (tnum tCPRegType) tCPRegType $
+                        LT.insert (tnum tNoEvents) gNoEvents''''''''' $
+                        LT.insert (tnum tDatedDate) tDatedDate $
+                        LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+                        LT.insert (tnum tNoLegs) gNoLegs''''''''' $
+                        LT.insert (tnum tBidPx) tBidPx $
+                        LT.insert (tnum tOfferPx) tOfferPx $
+                        LT.insert (tnum tBidSize) tBidSize $
+                        LT.insert (tnum tOfferSize) tOfferSize $
+                        LT.insert (tnum tValidUntilTime) tValidUntilTime $
+                        LT.insert (tnum tBidSpotRate) tBidSpotRate $
+                        LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+                        LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+                        LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+                        LT.insert (tnum tMidPx) tMidPx $
+                        LT.insert (tnum tBidYield) tBidYield $
+                        LT.insert (tnum tMidYield) tMidYield $
+                        LT.insert (tnum tOfferYield) tOfferYield $
+                        LT.insert (tnum tTransactTime) tTransactTime $
+                        LT.insert (tnum tTradingSessionID) tTradingSessionID $
+                        LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+                        LT.insert (tnum tSettlDate) tSettlDate $
+                        LT.insert (tnum tOrdType) tOrdType $
+                        LT.insert (tnum tSettlDate2) tSettlDate2 $
+                        LT.insert (tnum tOrderQty2) tOrderQty2 $
+                        LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+                        LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+                        LT.insert (tnum tCurrency) tCurrency                         LT.new
+                        where
+                           gNoEvents''''''''' = FIXTag
+                              { tName = "NoEvents"
+                              , tnum = tnum tNoEvents
+                              , tparser = gNoEventsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''''''''' }
+
+                           gNoEventsP''''''''' = groupP gNoEventsSpec'''''''''
+                           gNoEventsSpec''''''''' = FGSpec
+                              { gsLength = tNoEvents
+                              , gsSeperator = tEventType
+                              , gsBody = gNoEventsBody''''''''' }
+                              where
+                              gNoEventsBody''''''''' = 
+                                 LT.insert (tnum tEventDate) tEventDate $
+                                 LT.insert (tnum tEventPx) tEventPx $
+                                 LT.insert (tnum tEventText) tEventText                                  LT.new
+
+                           gNoLegs''''''''' = FIXTag
+                              { tName = "NoLegs"
+                              , tnum = tnum tNoLegs
+                              , tparser = gNoLegsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''''''''' }
+
+                           gNoLegsP''''''''' = groupP gNoLegsSpec'''''''''
+                           gNoLegsSpec''''''''' = FGSpec
+                              { gsLength = tNoLegs
+                              , gsSeperator = tLegSymbol
+                              , gsBody = gNoLegsBody''''''''' }
+                              where
+                              gNoLegsBody''''''''' = 
+                                 LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                                 LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                                 LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                                 LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''''''''' $
+                                 LT.insert (tnum tLegProduct) tLegProduct $
+                                 LT.insert (tnum tLegCFICode) tLegCFICode $
+                                 LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                                 LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                                 LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                                 LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                                 LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                                 LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                                 LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                                 LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                                 LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                                 LT.insert (tnum tLegFactor) tLegFactor $
+                                 LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                                 LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                                 LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                                 LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                                 LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                                 LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                                 LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                                 LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                                 LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                                 LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                                 LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                                 LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                                 LT.insert (tnum tLegIssuer) tLegIssuer $
+                                 LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                                 LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                                 LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                                 LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                                 LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                                 LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                                 LT.insert (tnum tLegSide) tLegSide $
+                                 LT.insert (tnum tLegCurrency) tLegCurrency $
+                                 LT.insert (tnum tLegPool) tLegPool $
+                                 LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                                 LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                                 LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                                  LT.new
+                                 where
+                                    gNoLegSecurityAltID'''''''''''' = FIXTag
+                                       { tName = "NoLegSecurityAltID"
+                                       , tnum = tnum tNoLegSecurityAltID
+                                       , tparser = gNoLegSecurityAltIDP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''''''''' }
+
+                                    gNoLegSecurityAltIDP'''''''''''' = groupP gNoLegSecurityAltIDSpec''''''''''''
+                                    gNoLegSecurityAltIDSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoLegSecurityAltID
+                                       , gsSeperator = tLegSecurityAltID
+                                       , gsBody = gNoLegSecurityAltIDBody'''''''''''' }
+                                       where
+                                       gNoLegSecurityAltIDBody'''''''''''' = 
+                                          LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                           LT.new
+
+
+                           gNoSecurityAltID''''''''' = FIXTag
+                              { tName = "NoSecurityAltID"
+                              , tnum = tnum tNoSecurityAltID
+                              , tparser = gNoSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''''''''' }
+
+                           gNoSecurityAltIDP''''''''' = groupP gNoSecurityAltIDSpec'''''''''
+                           gNoSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoSecurityAltID
+                              , gsSeperator = tSecurityAltID
+                              , gsBody = gNoSecurityAltIDBody''''''''' }
+                              where
+                              gNoSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                                  LT.new
+
+
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mBusinessMessageReject :: FIXMessageSpec
+mBusinessMessageReject = FMSpec
+   { msName = "BusinessMessageReject"
+   , msType = C.pack "j"
+   , msHeader = headerFIX44
+   , msBody = mBusinessMessageRejectBody
+   , msTrailer = trailerFIX44 }
+   where
+   mBusinessMessageRejectBody = 
+      LT.insert (tnum tRefSeqNum) tRefSeqNum $
+      LT.insert (tnum tRefMsgType) tRefMsgType $
+      LT.insert (tnum tBusinessRejectRefID) tBusinessRejectRefID $
+      LT.insert (tnum tBusinessRejectReason) tBusinessRejectReason $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mBidRequest :: FIXMessageSpec
+mBidRequest = FMSpec
+   { msName = "BidRequest"
+   , msType = C.pack "k"
+   , msHeader = headerFIX44
+   , msBody = mBidRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mBidRequestBody = 
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tBidRequestTransType) tBidRequestTransType $
+      LT.insert (tnum tListName) tListName $
+      LT.insert (tnum tTotNoRelatedSym) tTotNoRelatedSym $
+      LT.insert (tnum tBidType) tBidType $
+      LT.insert (tnum tNumTickets) tNumTickets $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSideValue1) tSideValue1 $
+      LT.insert (tnum tSideValue2) tSideValue2 $
+      LT.insert (tnum tNoBidDescriptors) gNoBidDescriptors''' $
+      LT.insert (tnum tNoBidComponents) gNoBidComponents''' $
+      LT.insert (tnum tLiquidityIndType) tLiquidityIndType $
+      LT.insert (tnum tWtAverageLiquidity) tWtAverageLiquidity $
+      LT.insert (tnum tExchangeForPhysical) tExchangeForPhysical $
+      LT.insert (tnum tOutMainCntryUIndex) tOutMainCntryUIndex $
+      LT.insert (tnum tCrossPercent) tCrossPercent $
+      LT.insert (tnum tProgRptReqs) tProgRptReqs $
+      LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+      LT.insert (tnum tIncTaxInd) tIncTaxInd $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tNumBidders) tNumBidders $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tBidTradeType) tBidTradeType $
+      LT.insert (tnum tBasisPxType) tBasisPxType $
+      LT.insert (tnum tStrikeTime) tStrikeTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoBidComponents''' = FIXTag
+            { tName = "NoBidComponents"
+            , tnum = tnum tNoBidComponents
+            , tparser = gNoBidComponentsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidComponentsSpec''' }
+
+         gNoBidComponentsP''' = groupP gNoBidComponentsSpec'''
+         gNoBidComponentsSpec''' = FGSpec
+            { gsLength = tNoBidComponents
+            , gsSeperator = tListID
+            , gsBody = gNoBidComponentsBody''' }
+            where
+            gNoBidComponentsBody''' = 
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tNetGrossInd) tNetGrossInd $
+               LT.insert (tnum tSettlType) tSettlType $
+               LT.insert (tnum tSettlDate) tSettlDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource                LT.new
+
+         gNoBidDescriptors''' = FIXTag
+            { tName = "NoBidDescriptors"
+            , tnum = tnum tNoBidDescriptors
+            , tparser = gNoBidDescriptorsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidDescriptorsSpec''' }
+
+         gNoBidDescriptorsP''' = groupP gNoBidDescriptorsSpec'''
+         gNoBidDescriptorsSpec''' = FGSpec
+            { gsLength = tNoBidDescriptors
+            , gsSeperator = tBidDescriptorType
+            , gsBody = gNoBidDescriptorsBody''' }
+            where
+            gNoBidDescriptorsBody''' = 
+               LT.insert (tnum tBidDescriptor) tBidDescriptor $
+               LT.insert (tnum tSideValueInd) tSideValueInd $
+               LT.insert (tnum tLiquidityValue) tLiquidityValue $
+               LT.insert (tnum tLiquidityNumSecurities) tLiquidityNumSecurities $
+               LT.insert (tnum tLiquidityPctLow) tLiquidityPctLow $
+               LT.insert (tnum tLiquidityPctHigh) tLiquidityPctHigh $
+               LT.insert (tnum tEFPTrackingError) tEFPTrackingError $
+               LT.insert (tnum tFairValue) tFairValue $
+               LT.insert (tnum tOutsideIndexPct) tOutsideIndexPct $
+               LT.insert (tnum tValueOfFutures) tValueOfFutures                LT.new
+
+
+
+mBidResponse :: FIXMessageSpec
+mBidResponse = FMSpec
+   { msName = "BidResponse"
+   , msType = C.pack "l"
+   , msHeader = headerFIX44
+   , msBody = mBidResponseBody
+   , msTrailer = trailerFIX44 }
+   where
+   mBidResponseBody = 
+      LT.insert (tnum tBidID) tBidID $
+      LT.insert (tnum tClientBidID) tClientBidID $
+      LT.insert (tnum tNoBidComponents) gNoBidComponents'''       LT.new
+      where
+         gNoBidComponents''' = FIXTag
+            { tName = "NoBidComponents"
+            , tnum = tnum tNoBidComponents
+            , tparser = gNoBidComponentsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoBidComponentsSpec''' }
+
+         gNoBidComponentsP''' = groupP gNoBidComponentsSpec'''
+         gNoBidComponentsSpec''' = FGSpec
+            { gsLength = tNoBidComponents
+            , gsSeperator = tCommission
+            , gsBody = gNoBidComponentsBody''' }
+            where
+            gNoBidComponentsBody''' = 
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tCountry) tCountry $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tFairValue) tFairValue $
+               LT.insert (tnum tNetGrossInd) tNetGrossInd $
+               LT.insert (tnum tSettlType) tSettlType $
+               LT.insert (tnum tSettlDate) tSettlDate $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+
+
+
+mListStrikePrice :: FIXMessageSpec
+mListStrikePrice = FMSpec
+   { msName = "ListStrikePrice"
+   , msType = C.pack "m"
+   , msHeader = headerFIX44
+   , msBody = mListStrikePriceBody
+   , msTrailer = trailerFIX44 }
+   where
+   mListStrikePriceBody = 
+      LT.insert (tnum tListID) tListID $
+      LT.insert (tnum tTotNoStrikes) tTotNoStrikes $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoStrikes) gNoStrikes''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''       LT.new
+      where
+         gNoStrikes''' = FIXTag
+            { tName = "NoStrikes"
+            , tnum = tnum tNoStrikes
+            , tparser = gNoStrikesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStrikesSpec''' }
+
+         gNoStrikesP''' = groupP gNoStrikesSpec'''
+         gNoStrikesSpec''' = FGSpec
+            { gsLength = tNoStrikes
+            , gsSeperator = tSymbol
+            , gsBody = gNoStrikesBody''' }
+            where
+            gNoStrikesBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mRegistrationInstructions :: FIXMessageSpec
+mRegistrationInstructions = FMSpec
+   { msName = "RegistrationInstructions"
+   , msType = C.pack "o"
+   , msHeader = headerFIX44
+   , msBody = mRegistrationInstructionsBody
+   , msTrailer = trailerFIX44 }
+   where
+   mRegistrationInstructionsBody = 
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tRegistTransType) tRegistTransType $
+      LT.insert (tnum tRegistRefID) tRegistRefID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tRegistAcctType) tRegistAcctType $
+      LT.insert (tnum tTaxAdvantageType) tTaxAdvantageType $
+      LT.insert (tnum tOwnershipType) tOwnershipType $
+      LT.insert (tnum tNoRegistDtls) gNoRegistDtls''' $
+      LT.insert (tnum tNoDistribInsts) gNoDistribInsts'''       LT.new
+      where
+         gNoDistribInsts''' = FIXTag
+            { tName = "NoDistribInsts"
+            , tnum = tnum tNoDistribInsts
+            , tparser = gNoDistribInstsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDistribInstsSpec''' }
+
+         gNoDistribInstsP''' = groupP gNoDistribInstsSpec'''
+         gNoDistribInstsSpec''' = FGSpec
+            { gsLength = tNoDistribInsts
+            , gsSeperator = tDistribPaymentMethod
+            , gsBody = gNoDistribInstsBody''' }
+            where
+            gNoDistribInstsBody''' = 
+               LT.insert (tnum tDistribPercentage) tDistribPercentage $
+               LT.insert (tnum tCashDistribCurr) tCashDistribCurr $
+               LT.insert (tnum tCashDistribAgentName) tCashDistribAgentName $
+               LT.insert (tnum tCashDistribAgentCode) tCashDistribAgentCode $
+               LT.insert (tnum tCashDistribAgentAcctNumber) tCashDistribAgentAcctNumber $
+               LT.insert (tnum tCashDistribPayRef) tCashDistribPayRef $
+               LT.insert (tnum tCashDistribAgentAcctName) tCashDistribAgentAcctName                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoRegistDtls''' = FIXTag
+            { tName = "NoRegistDtls"
+            , tnum = tnum tNoRegistDtls
+            , tparser = gNoRegistDtlsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRegistDtlsSpec''' }
+
+         gNoRegistDtlsP''' = groupP gNoRegistDtlsSpec'''
+         gNoRegistDtlsSpec''' = FGSpec
+            { gsLength = tNoRegistDtls
+            , gsSeperator = tRegistDtls
+            , gsBody = gNoRegistDtlsBody''' }
+            where
+            gNoRegistDtlsBody''' = 
+               LT.insert (tnum tRegistEmail) tRegistEmail $
+               LT.insert (tnum tMailingDtls) tMailingDtls $
+               LT.insert (tnum tMailingInst) tMailingInst $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tOwnerType) tOwnerType $
+               LT.insert (tnum tDateOfBirth) tDateOfBirth $
+               LT.insert (tnum tInvestorCountryOfResidence) tInvestorCountryOfResidence                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+
+
+mRegistrationInstructionsResponse :: FIXMessageSpec
+mRegistrationInstructionsResponse = FMSpec
+   { msName = "RegistrationInstructionsResponse"
+   , msType = C.pack "p"
+   , msHeader = headerFIX44
+   , msBody = mRegistrationInstructionsResponseBody
+   , msTrailer = trailerFIX44 }
+   where
+   mRegistrationInstructionsResponseBody = 
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tRegistTransType) tRegistTransType $
+      LT.insert (tnum tRegistRefID) tRegistRefID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tRegistStatus) tRegistStatus $
+      LT.insert (tnum tRegistRejReasonCode) tRegistRejReasonCode $
+      LT.insert (tnum tRegistRejReasonText) tRegistRejReasonText       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+
+
+mOrderMassCancelRequest :: FIXMessageSpec
+mOrderMassCancelRequest = FMSpec
+   { msName = "OrderMassCancelRequest"
+   , msType = C.pack "q"
+   , msHeader = headerFIX44
+   , msBody = mOrderMassCancelRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderMassCancelRequestBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tMassCancelRequestType) tMassCancelRequestType $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+      LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+      LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+      LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+      LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+      LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+      LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+      LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+      LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+      LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+      LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+         gNoUnderlyingStips''' = FIXTag
+            { tName = "NoUnderlyingStips"
+            , tnum = tnum tNoUnderlyingStips
+            , tparser = gNoUnderlyingStipsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''' }
+
+         gNoUnderlyingStipsP''' = groupP gNoUnderlyingStipsSpec'''
+         gNoUnderlyingStipsSpec''' = FGSpec
+            { gsLength = tNoUnderlyingStips
+            , gsSeperator = tUnderlyingStipType
+            , gsBody = gNoUnderlyingStipsBody''' }
+            where
+            gNoUnderlyingStipsBody''' = 
+               LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                LT.new
+
+
+
+mOrderMassCancelReport :: FIXMessageSpec
+mOrderMassCancelReport = FMSpec
+   { msName = "OrderMassCancelReport"
+   , msType = C.pack "r"
+   , msHeader = headerFIX44
+   , msBody = mOrderMassCancelReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderMassCancelReportBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tMassCancelRequestType) tMassCancelRequestType $
+      LT.insert (tnum tMassCancelResponse) tMassCancelResponse $
+      LT.insert (tnum tMassCancelRejectReason) tMassCancelRejectReason $
+      LT.insert (tnum tTotalAffectedOrders) tTotalAffectedOrders $
+      LT.insert (tnum tNoAffectedOrders) gNoAffectedOrders''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+      LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+      LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+      LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+      LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+      LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+      LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+      LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+      LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+      LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+      LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoAffectedOrders''' = FIXTag
+            { tName = "NoAffectedOrders"
+            , tnum = tnum tNoAffectedOrders
+            , tparser = gNoAffectedOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAffectedOrdersSpec''' }
+
+         gNoAffectedOrdersP''' = groupP gNoAffectedOrdersSpec'''
+         gNoAffectedOrdersSpec''' = FGSpec
+            { gsLength = tNoAffectedOrders
+            , gsSeperator = tOrigClOrdID
+            , gsBody = gNoAffectedOrdersBody''' }
+            where
+            gNoAffectedOrdersBody''' = 
+               LT.insert (tnum tAffectedOrderID) tAffectedOrderID $
+               LT.insert (tnum tAffectedSecondaryOrderID) tAffectedSecondaryOrderID                LT.new
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+         gNoUnderlyingStips''' = FIXTag
+            { tName = "NoUnderlyingStips"
+            , tnum = tnum tNoUnderlyingStips
+            , tparser = gNoUnderlyingStipsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''' }
+
+         gNoUnderlyingStipsP''' = groupP gNoUnderlyingStipsSpec'''
+         gNoUnderlyingStipsSpec''' = FGSpec
+            { gsLength = tNoUnderlyingStips
+            , gsSeperator = tUnderlyingStipType
+            , gsBody = gNoUnderlyingStipsBody''' }
+            where
+            gNoUnderlyingStipsBody''' = 
+               LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                LT.new
+
+
+
+mNewOrderCross :: FIXMessageSpec
+mNewOrderCross = FMSpec
+   { msName = "NewOrderCross"
+   , msType = C.pack "s"
+   , msHeader = headerFIX44
+   , msBody = mNewOrderCrossBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNewOrderCrossBody = 
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+      LT.insert (tnum tNoSides) gNoSides''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tTradeDate) tTradeDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tDayBookingInst) tDayBookingInst $
+               LT.insert (tnum tBookingUnit) tBookingUnit $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tAllocID) tAllocID $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tQtyType) tQtyType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tBookingType) tBookingType $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tCashMargin) tCashMargin $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tSideComplianceID) tSideComplianceID                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+                        LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNestedPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNestedPartySubIDs"
+                                       , tnum = tnum tNoNestedPartySubIDs
+                                       , tparser = gNoNestedPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec'''''''''''' }
+
+                                    gNoNestedPartySubIDsP'''''''''''' = groupP gNoNestedPartySubIDsSpec''''''''''''
+                                    gNoNestedPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNestedPartySubIDs
+                                       , gsSeperator = tNestedPartySubID
+                                       , gsBody = gNoNestedPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNestedPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                           LT.new
+
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCrossOrderCancelReplaceRequest :: FIXMessageSpec
+mCrossOrderCancelReplaceRequest = FMSpec
+   { msName = "CrossOrderCancelReplaceRequest"
+   , msType = C.pack "t"
+   , msHeader = headerFIX44
+   , msBody = mCrossOrderCancelReplaceRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCrossOrderCancelReplaceRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tOrigCrossID) tOrigCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+      LT.insert (tnum tNoSides) gNoSides''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tTradeDate) tTradeDate $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tDayBookingInst) tDayBookingInst $
+               LT.insert (tnum tBookingUnit) tBookingUnit $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tAllocID) tAllocID $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tQtyType) tQtyType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tForexReq) tForexReq $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tBookingType) tBookingType $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+               LT.insert (tnum tCashMargin) tCashMargin $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tSideComplianceID) tSideComplianceID                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+                        LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNestedPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNestedPartySubIDs"
+                                       , tnum = tnum tNoNestedPartySubIDs
+                                       , tparser = gNoNestedPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec'''''''''''' }
+
+                                    gNoNestedPartySubIDsP'''''''''''' = groupP gNoNestedPartySubIDsSpec''''''''''''
+                                    gNoNestedPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNestedPartySubIDs
+                                       , gsSeperator = tNestedPartySubID
+                                       , gsBody = gNoNestedPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNestedPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                           LT.new
+
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCrossOrderCancelRequest :: FIXMessageSpec
+mCrossOrderCancelRequest = FMSpec
+   { msName = "CrossOrderCancelRequest"
+   , msType = C.pack "u"
+   , msHeader = headerFIX44
+   , msBody = mCrossOrderCancelRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCrossOrderCancelRequestBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tCrossID) tCrossID $
+      LT.insert (tnum tOrigCrossID) tOrigCrossID $
+      LT.insert (tnum tCrossType) tCrossType $
+      LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+      LT.insert (tnum tNoSides) gNoSides''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tTransactTime) tTransactTime       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+               LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tTradeDate) tTradeDate $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSecurityTypeRequest :: FIXMessageSpec
+mSecurityTypeRequest = FMSpec
+   { msName = "SecurityTypeRequest"
+   , msType = C.pack "v"
+   , msHeader = headerFIX44
+   , msBody = mSecurityTypeRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityTypeRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType       LT.new
+
+
+mSecurityTypes :: FIXMessageSpec
+mSecurityTypes = FMSpec
+   { msName = "SecurityTypes"
+   , msType = C.pack "w"
+   , msHeader = headerFIX44
+   , msBody = mSecurityTypesBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityTypesBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+      LT.insert (tnum tTotNoSecurityTypes) tTotNoSecurityTypes $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoSecurityTypes) gNoSecurityTypes''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoSecurityTypes''' = FIXTag
+            { tName = "NoSecurityTypes"
+            , tnum = tnum tNoSecurityTypes
+            , tparser = gNoSecurityTypesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityTypesSpec''' }
+
+         gNoSecurityTypesP''' = groupP gNoSecurityTypesSpec'''
+         gNoSecurityTypesSpec''' = FGSpec
+            { gsLength = tNoSecurityTypes
+            , gsSeperator = tSecurityType
+            , gsBody = gNoSecurityTypesBody''' }
+            where
+            gNoSecurityTypesBody''' = 
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode                LT.new
+
+
+
+mSecurityListRequest :: FIXMessageSpec
+mSecurityListRequest = FMSpec
+   { msName = "SecurityListRequest"
+   , msType = C.pack "x"
+   , msHeader = headerFIX44
+   , msBody = mSecurityListRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityListRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityListRequestType) tSecurityListRequestType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mSecurityList :: FIXMessageSpec
+mSecurityList = FMSpec
+   { msName = "SecurityList"
+   , msType = C.pack "y"
+   , msHeader = headerFIX44
+   , msBody = mSecurityListBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSecurityListBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityRequestResult) tSecurityRequestResult $
+      LT.insert (tnum tTotNoRelatedSym) tTotNoRelatedSym $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tDeliveryForm) tDeliveryForm $
+               LT.insert (tnum tPctAtRisk) tPctAtRisk $
+               LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib'''''' $
+               LT.insert (tnum tAgreementDesc) tAgreementDesc $
+               LT.insert (tnum tAgreementID) tAgreementID $
+               LT.insert (tnum tAgreementDate) tAgreementDate $
+               LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+               LT.insert (tnum tTerminationType) tTerminationType $
+               LT.insert (tnum tStartDate) tStartDate $
+               LT.insert (tnum tEndDate) tEndDate $
+               LT.insert (tnum tDeliveryType) tDeliveryType $
+               LT.insert (tnum tMarginRatio) tMarginRatio $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+               LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+               LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+               LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield $
+               LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+               LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+               LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+               LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+               LT.insert (tnum tRoundLot) tRoundLot $
+               LT.insert (tnum tMinTradeVol) tMinTradeVol $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tExpirationCycle) tExpirationCycle $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoInstrAttrib'''''' = FIXTag
+                     { tName = "NoInstrAttrib"
+                     , tnum = tnum tNoInstrAttrib
+                     , tparser = gNoInstrAttribP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec'''''' }
+
+                  gNoInstrAttribP'''''' = groupP gNoInstrAttribSpec''''''
+                  gNoInstrAttribSpec'''''' = FGSpec
+                     { gsLength = tNoInstrAttrib
+                     , gsSeperator = tInstrAttribType
+                     , gsBody = gNoInstrAttribBody'''''' }
+                     where
+                     gNoInstrAttribBody'''''' = 
+                        LT.insert (tnum tInstrAttribValue) tInstrAttribValue                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+                        LT.insert (tnum tLegSwapType) tLegSwapType $
+                        LT.insert (tnum tLegSettlType) tLegSettlType $
+                        LT.insert (tnum tNoLegStipulations) gNoLegStipulations''''''''' $
+                        LT.insert (tnum tLegBenchmarkCurveCurrency) tLegBenchmarkCurveCurrency $
+                        LT.insert (tnum tLegBenchmarkCurveName) tLegBenchmarkCurveName $
+                        LT.insert (tnum tLegBenchmarkCurvePoint) tLegBenchmarkCurvePoint $
+                        LT.insert (tnum tLegBenchmarkPrice) tLegBenchmarkPrice $
+                        LT.insert (tnum tLegBenchmarkPriceType) tLegBenchmarkPriceType                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+                           gNoLegStipulations''''''''' = FIXTag
+                              { tName = "NoLegStipulations"
+                              , tnum = tnum tNoLegStipulations
+                              , tparser = gNoLegStipulationsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec''''''''' }
+
+                           gNoLegStipulationsP''''''''' = groupP gNoLegStipulationsSpec'''''''''
+                           gNoLegStipulationsSpec''''''''' = FGSpec
+                              { gsLength = tNoLegStipulations
+                              , gsSeperator = tLegStipulationType
+                              , gsBody = gNoLegStipulationsBody''''''''' }
+                              where
+                              gNoLegStipulationsBody''''''''' = 
+                                 LT.insert (tnum tLegStipulationValue) tLegStipulationValue                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mDerivativeSecurityListRequest :: FIXMessageSpec
+mDerivativeSecurityListRequest = FMSpec
+   { msName = "DerivativeSecurityListRequest"
+   , msType = C.pack "z"
+   , msHeader = headerFIX44
+   , msBody = mDerivativeSecurityListRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mDerivativeSecurityListRequestBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityListRequestType) tSecurityListRequestType $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+      LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+      LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+      LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+      LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+      LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+      LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+      LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+      LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+      LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+      LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''' $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+         gNoUnderlyingStips''' = FIXTag
+            { tName = "NoUnderlyingStips"
+            , tnum = tnum tNoUnderlyingStips
+            , tparser = gNoUnderlyingStipsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''' }
+
+         gNoUnderlyingStipsP''' = groupP gNoUnderlyingStipsSpec'''
+         gNoUnderlyingStipsSpec''' = FGSpec
+            { gsLength = tNoUnderlyingStips
+            , gsSeperator = tUnderlyingStipType
+            , gsBody = gNoUnderlyingStipsBody''' }
+            where
+            gNoUnderlyingStipsBody''' = 
+               LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                LT.new
+
+
+
+mDerivativeSecurityList :: FIXMessageSpec
+mDerivativeSecurityList = FMSpec
+   { msName = "DerivativeSecurityList"
+   , msType = C.pack "AA"
+   , msHeader = headerFIX44
+   , msBody = mDerivativeSecurityListBody
+   , msTrailer = trailerFIX44 }
+   where
+   mDerivativeSecurityListBody = 
+      LT.insert (tnum tSecurityReqID) tSecurityReqID $
+      LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+      LT.insert (tnum tSecurityRequestResult) tSecurityRequestResult $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+      LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+      LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+      LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+      LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+      LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+      LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+      LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+      LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+      LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+      LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''' $
+      LT.insert (tnum tTotNoRelatedSym) tTotNoRelatedSym $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym'''       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tExpirationCycle) tExpirationCycle $
+               LT.insert (tnum tDeliveryForm) tDeliveryForm $
+               LT.insert (tnum tPctAtRisk) tPctAtRisk $
+               LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib'''''' $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoInstrAttrib'''''' = FIXTag
+                     { tName = "NoInstrAttrib"
+                     , tnum = tnum tNoInstrAttrib
+                     , tparser = gNoInstrAttribP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec'''''' }
+
+                  gNoInstrAttribP'''''' = groupP gNoInstrAttribSpec''''''
+                  gNoInstrAttribSpec'''''' = FGSpec
+                     { gsLength = tNoInstrAttrib
+                     , gsSeperator = tInstrAttribType
+                     , gsBody = gNoInstrAttribBody'''''' }
+                     where
+                     gNoInstrAttribBody'''''' = 
+                        LT.insert (tnum tInstrAttribValue) tInstrAttribValue                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+         gNoUnderlyingStips''' = FIXTag
+            { tName = "NoUnderlyingStips"
+            , tnum = tnum tNoUnderlyingStips
+            , tparser = gNoUnderlyingStipsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''' }
+
+         gNoUnderlyingStipsP''' = groupP gNoUnderlyingStipsSpec'''
+         gNoUnderlyingStipsSpec''' = FGSpec
+            { gsLength = tNoUnderlyingStips
+            , gsSeperator = tUnderlyingStipType
+            , gsBody = gNoUnderlyingStipsBody''' }
+            where
+            gNoUnderlyingStipsBody''' = 
+               LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                LT.new
+
+
+
+mNewOrderMultileg :: FIXMessageSpec
+mNewOrderMultileg = FMSpec
+   { msName = "NewOrderMultileg"
+   , msType = C.pack "AB"
+   , msHeader = headerFIX44
+   , msBody = mNewOrderMultilegBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNewOrderMultilegBody = 
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tMultiLegRptTypeReq) tMultiLegRptTypeReq       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNested3PartyIDs) gNoNested3PartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNested3PartyIDs'''''' = FIXTag
+                     { tName = "NoNested3PartyIDs"
+                     , tnum = tnum tNoNested3PartyIDs
+                     , tparser = gNoNested3PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested3PartyIDsSpec'''''' }
+
+                  gNoNested3PartyIDsP'''''' = groupP gNoNested3PartyIDsSpec''''''
+                  gNoNested3PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested3PartyIDs
+                     , gsSeperator = tNested3PartyID
+                     , gsBody = gNoNested3PartyIDsBody'''''' }
+                     where
+                     gNoNested3PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested3PartyIDSource) tNested3PartyIDSource $
+                        LT.insert (tnum tNested3PartyRole) tNested3PartyRole $
+                        LT.insert (tnum tNoNested3PartySubIDs) gNoNested3PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested3PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested3PartySubIDs"
+                              , tnum = tnum tNoNested3PartySubIDs
+                              , tparser = gNoNested3PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested3PartySubIDsSpec''''''''' }
+
+                           gNoNested3PartySubIDsP''''''''' = groupP gNoNested3PartySubIDsSpec'''''''''
+                           gNoNested3PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested3PartySubIDs
+                              , gsSeperator = tNested3PartySubID
+                              , gsBody = gNoNested3PartySubIDsBody''''''''' }
+                              where
+                              gNoNested3PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested3PartySubIDType) tNested3PartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tNoLegAllocs) gNoLegAllocs'''''' $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate                LT.new
+               where
+                  gNoLegAllocs'''''' = FIXTag
+                     { tName = "NoLegAllocs"
+                     , tnum = tnum tNoLegAllocs
+                     , tparser = gNoLegAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegAllocsSpec'''''' }
+
+                  gNoLegAllocsP'''''' = groupP gNoLegAllocsSpec''''''
+                  gNoLegAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoLegAllocs
+                     , gsSeperator = tLegAllocAccount
+                     , gsBody = gNoLegAllocsBody'''''' }
+                     where
+                     gNoLegAllocsBody'''''' = 
+                        LT.insert (tnum tLegIndividualAllocID) tLegIndividualAllocID $
+                        LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs''''''''' $
+                        LT.insert (tnum tLegAllocQty) tLegAllocQty $
+                        LT.insert (tnum tLegAllocAcctIDSource) tLegAllocAcctIDSource $
+                        LT.insert (tnum tLegSettlCurrency) tLegSettlCurrency                         LT.new
+                        where
+                           gNoNested2PartyIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartyIDs"
+                              , tnum = tnum tNoNested2PartyIDs
+                              , tparser = gNoNested2PartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec''''''''' }
+
+                           gNoNested2PartyIDsP''''''''' = groupP gNoNested2PartyIDsSpec'''''''''
+                           gNoNested2PartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartyIDs
+                              , gsSeperator = tNested2PartyID
+                              , gsBody = gNoNested2PartyIDsBody''''''''' }
+                              where
+                              gNoNested2PartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                                 LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                                 LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNested2PartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNested2PartySubIDs"
+                                       , tnum = tnum tNoNested2PartySubIDs
+                                       , tparser = gNoNested2PartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec'''''''''''' }
+
+                                    gNoNested2PartySubIDsP'''''''''''' = groupP gNoNested2PartySubIDsSpec''''''''''''
+                                    gNoNested2PartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNested2PartySubIDs
+                                       , gsSeperator = tNested2PartySubID
+                                       , gsBody = gNoNested2PartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNested2PartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                           LT.new
+
+
+
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mMultilegOrderCancelReplace :: FIXMessageSpec
+mMultilegOrderCancelReplace = FMSpec
+   { msName = "MultilegOrderCancelReplace"
+   , msType = C.pack "AC"
+   , msHeader = headerFIX44
+   , msBody = mMultilegOrderCancelReplaceBody
+   , msTrailer = trailerFIX44 }
+   where
+   mMultilegOrderCancelReplaceBody = 
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+      LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tDayBookingInst) tDayBookingInst $
+      LT.insert (tnum tBookingUnit) tBookingUnit $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tNoAllocs) gNoAllocs''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tCashMargin) tCashMargin $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tHandlInst) tHandlInst $
+      LT.insert (tnum tExecInst) tExecInst $
+      LT.insert (tnum tMinQty) tMinQty $
+      LT.insert (tnum tMaxFloor) tMaxFloor $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tPrevClosePx) tPrevClosePx $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tLocateReqd) tLocateReqd $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tStopPx) tStopPx $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tComplianceID) tComplianceID $
+      LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tTimeInForce) tTimeInForce $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tGTBookingInst) tGTBookingInst $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tForexReq) tForexReq $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+      LT.insert (tnum tMaxShow) tMaxShow $
+      LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+      LT.insert (tnum tPegMoveType) tPegMoveType $
+      LT.insert (tnum tPegOffsetType) tPegOffsetType $
+      LT.insert (tnum tPegLimitType) tPegLimitType $
+      LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+      LT.insert (tnum tPegScope) tPegScope $
+      LT.insert (tnum tDiscretionInst) tDiscretionInst $
+      LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+      LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+      LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+      LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+      LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+      LT.insert (tnum tDiscretionScope) tDiscretionScope $
+      LT.insert (tnum tTargetStrategy) tTargetStrategy $
+      LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+      LT.insert (tnum tParticipationRate) tParticipationRate $
+      LT.insert (tnum tCancellationRights) tCancellationRights $
+      LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+      LT.insert (tnum tRegistID) tRegistID $
+      LT.insert (tnum tDesignation) tDesignation $
+      LT.insert (tnum tMultiLegRptTypeReq) tMultiLegRptTypeReq       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNested3PartyIDs) gNoNested3PartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNested3PartyIDs'''''' = FIXTag
+                     { tName = "NoNested3PartyIDs"
+                     , tnum = tnum tNoNested3PartyIDs
+                     , tparser = gNoNested3PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested3PartyIDsSpec'''''' }
+
+                  gNoNested3PartyIDsP'''''' = groupP gNoNested3PartyIDsSpec''''''
+                  gNoNested3PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested3PartyIDs
+                     , gsSeperator = tNested3PartyID
+                     , gsBody = gNoNested3PartyIDsBody'''''' }
+                     where
+                     gNoNested3PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested3PartyIDSource) tNested3PartyIDSource $
+                        LT.insert (tnum tNested3PartyRole) tNested3PartyRole $
+                        LT.insert (tnum tNoNested3PartySubIDs) gNoNested3PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested3PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested3PartySubIDs"
+                              , tnum = tnum tNoNested3PartySubIDs
+                              , tparser = gNoNested3PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested3PartySubIDsSpec''''''''' }
+
+                           gNoNested3PartySubIDsP''''''''' = groupP gNoNested3PartySubIDsSpec'''''''''
+                           gNoNested3PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested3PartySubIDs
+                              , gsSeperator = tNested3PartySubID
+                              , gsBody = gNoNested3PartySubIDsBody''''''''' }
+                              where
+                              gNoNested3PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested3PartySubIDType) tNested3PartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tNoLegAllocs) gNoLegAllocs'''''' $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate                LT.new
+               where
+                  gNoLegAllocs'''''' = FIXTag
+                     { tName = "NoLegAllocs"
+                     , tnum = tnum tNoLegAllocs
+                     , tparser = gNoLegAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegAllocsSpec'''''' }
+
+                  gNoLegAllocsP'''''' = groupP gNoLegAllocsSpec''''''
+                  gNoLegAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoLegAllocs
+                     , gsSeperator = tLegAllocAccount
+                     , gsBody = gNoLegAllocsBody'''''' }
+                     where
+                     gNoLegAllocsBody'''''' = 
+                        LT.insert (tnum tLegIndividualAllocID) tLegIndividualAllocID $
+                        LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs''''''''' $
+                        LT.insert (tnum tLegAllocQty) tLegAllocQty $
+                        LT.insert (tnum tLegAllocAcctIDSource) tLegAllocAcctIDSource $
+                        LT.insert (tnum tLegSettlCurrency) tLegSettlCurrency                         LT.new
+                        where
+                           gNoNested2PartyIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartyIDs"
+                              , tnum = tnum tNoNested2PartyIDs
+                              , tparser = gNoNested2PartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec''''''''' }
+
+                           gNoNested2PartyIDsP''''''''' = groupP gNoNested2PartyIDsSpec'''''''''
+                           gNoNested2PartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartyIDs
+                              , gsSeperator = tNested2PartyID
+                              , gsBody = gNoNested2PartyIDsBody''''''''' }
+                              where
+                              gNoNested2PartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                                 LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                                 LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNested2PartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNested2PartySubIDs"
+                                       , tnum = tnum tNoNested2PartySubIDs
+                                       , tparser = gNoNested2PartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec'''''''''''' }
+
+                                    gNoNested2PartySubIDsP'''''''''''' = groupP gNoNested2PartySubIDsSpec''''''''''''
+                                    gNoNested2PartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNested2PartySubIDs
+                                       , gsSeperator = tNested2PartySubID
+                                       , gsBody = gNoNested2PartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNested2PartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                           LT.new
+
+
+
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mTradeCaptureReportRequest :: FIXMessageSpec
+mTradeCaptureReportRequest = FMSpec
+   { msName = "TradeCaptureReportRequest"
+   , msType = C.pack "AD"
+   , msHeader = headerFIX44
+   , msBody = mTradeCaptureReportRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTradeCaptureReportRequestBody = 
+      LT.insert (tnum tTradeRequestID) tTradeRequestID $
+      LT.insert (tnum tTradeRequestType) tTradeRequestType $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTradeReportID) tTradeReportID $
+      LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tTrdType) tTrdType $
+      LT.insert (tnum tTrdSubType) tTrdSubType $
+      LT.insert (tnum tTransferReason) tTransferReason $
+      LT.insert (tnum tSecondaryTrdType) tSecondaryTrdType $
+      LT.insert (tnum tTradeLinkID) tTradeLinkID $
+      LT.insert (tnum tTrdMatchID) tTrdMatchID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoDates) gNoDates''' $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tTimeBracket) tTimeBracket $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+      LT.insert (tnum tTradeInputSource) tTradeInputSource $
+      LT.insert (tnum tTradeInputDevice) tTradeInputDevice $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoDates''' = FIXTag
+            { tName = "NoDates"
+            , tnum = tnum tNoDates
+            , tparser = gNoDatesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDatesSpec''' }
+
+         gNoDatesP''' = groupP gNoDatesSpec'''
+         gNoDatesSpec''' = FGSpec
+            { gsLength = tNoDates
+            , gsSeperator = tTradeDate
+            , gsBody = gNoDatesBody''' }
+            where
+            gNoDatesBody''' = 
+               LT.insert (tnum tTransactTime) tTransactTime                LT.new
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mTradeCaptureReport :: FIXMessageSpec
+mTradeCaptureReport = FMSpec
+   { msName = "TradeCaptureReport"
+   , msType = C.pack "AE"
+   , msHeader = headerFIX44
+   , msBody = mTradeCaptureReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTradeCaptureReportBody = 
+      LT.insert (tnum tTradeReportID) tTradeReportID $
+      LT.insert (tnum tTradeReportTransType) tTradeReportTransType $
+      LT.insert (tnum tTradeReportType) tTradeReportType $
+      LT.insert (tnum tTradeRequestID) tTradeRequestID $
+      LT.insert (tnum tTrdType) tTrdType $
+      LT.insert (tnum tTrdSubType) tTrdSubType $
+      LT.insert (tnum tSecondaryTrdType) tSecondaryTrdType $
+      LT.insert (tnum tTransferReason) tTransferReason $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tTotNumTradeReports) tTotNumTradeReports $
+      LT.insert (tnum tLastRptRequested) tLastRptRequested $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTradeReportRefID) tTradeReportRefID $
+      LT.insert (tnum tSecondaryTradeReportRefID) tSecondaryTradeReportRefID $
+      LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID $
+      LT.insert (tnum tTradeLinkID) tTradeLinkID $
+      LT.insert (tnum tTrdMatchID) tTrdMatchID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tOrdStatus) tOrdStatus $
+      LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+      LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+      LT.insert (tnum tPreviouslyReported) tPreviouslyReported $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tUnderlyingTradingSessionID) tUnderlyingTradingSessionID $
+      LT.insert (tnum tUnderlyingTradingSessionSubID) tUnderlyingTradingSessionSubID $
+      LT.insert (tnum tLastQty) tLastQty $
+      LT.insert (tnum tLastPx) tLastPx $
+      LT.insert (tnum tLastParPx) tLastParPx $
+      LT.insert (tnum tLastSpotRate) tLastSpotRate $
+      LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tAvgPxIndicator) tAvgPxIndicator $
+      LT.insert (tnum tNoPosAmt) gNoPosAmt''' $
+      LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+      LT.insert (tnum tTradeLegRefID) tTradeLegRefID $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tMatchType) tMatchType $
+      LT.insert (tnum tNoSides) gNoSides'''       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate $
+               LT.insert (tnum tLegLastPx) tLegLastPx                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoPosAmt''' = FIXTag
+            { tName = "NoPosAmt"
+            , tnum = tnum tNoPosAmt
+            , tparser = gNoPosAmtP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPosAmtSpec''' }
+
+         gNoPosAmtP''' = groupP gNoPosAmtSpec'''
+         gNoPosAmtSpec''' = FGSpec
+            { gsLength = tNoPosAmt
+            , gsSeperator = tPosAmtType
+            , gsBody = gNoPosAmtBody''' }
+            where
+            gNoPosAmtBody''' = 
+               LT.insert (tnum tPosAmt) tPosAmt                LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoSides''' = FIXTag
+            { tName = "NoSides"
+            , tnum = tnum tNoSides
+            , tparser = gNoSidesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSidesSpec''' }
+
+         gNoSidesP''' = groupP gNoSidesSpec'''
+         gNoSidesSpec''' = FGSpec
+            { gsLength = tNoSides
+            , gsSeperator = tSide
+            , gsBody = gNoSidesBody''' }
+            where
+            gNoSidesBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tClOrdID) tClOrdID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs'''''' $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tOddLot) tOddLot $
+               LT.insert (tnum tNoClearingInstructions) gNoClearingInstructions'''''' $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tTradeInputSource) tTradeInputSource $
+               LT.insert (tnum tTradeInputDevice) tTradeInputDevice $
+               LT.insert (tnum tOrderInputDevice) tOrderInputDevice $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tComplianceID) tComplianceID $
+               LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+               LT.insert (tnum tOrderCapacity) tOrderCapacity $
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tExecInst) tExecInst $
+               LT.insert (tnum tTransBkdTime) tTransBkdTime $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tTimeBracket) tTimeBracket $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+               LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+               LT.insert (tnum tExDate) tExDate $
+               LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+               LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+               LT.insert (tnum tInterestAtMaturity) tInterestAtMaturity $
+               LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+               LT.insert (tnum tStartCash) tStartCash $
+               LT.insert (tnum tEndCash) tEndCash $
+               LT.insert (tnum tConcession) tConcession $
+               LT.insert (tnum tTotalTakedown) tTotalTakedown $
+               LT.insert (tnum tNetMoney) tNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tPositionEffect) tPositionEffect $
+               LT.insert (tnum tText) tText $
+               LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+               LT.insert (tnum tEncodedText) tEncodedText $
+               LT.insert (tnum tSideMultiLegReportingType) tSideMultiLegReportingType $
+               LT.insert (tnum tNoContAmts) gNoContAmts'''''' $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees'''''' $
+               LT.insert (tnum tExchangeRule) tExchangeRule $
+               LT.insert (tnum tTradeAllocIndicator) tTradeAllocIndicator $
+               LT.insert (tnum tPreallocMethod) tPreallocMethod $
+               LT.insert (tnum tAllocID) tAllocID $
+               LT.insert (tnum tNoAllocs) gNoAllocs'''''' $
+               LT.insert (tnum tCopyMsgIndicator) tCopyMsgIndicator $
+               LT.insert (tnum tPublishTrdIndicator) tPublishTrdIndicator $
+               LT.insert (tnum tShortSaleReason) tShortSaleReason                LT.new
+               where
+                  gNoAllocs'''''' = FIXTag
+                     { tName = "NoAllocs"
+                     , tnum = tnum tNoAllocs
+                     , tparser = gNoAllocsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec'''''' }
+
+                  gNoAllocsP'''''' = groupP gNoAllocsSpec''''''
+                  gNoAllocsSpec'''''' = FGSpec
+                     { gsLength = tNoAllocs
+                     , gsSeperator = tAllocAccount
+                     , gsBody = gNoAllocsBody'''''' }
+                     where
+                     gNoAllocsBody'''''' = 
+                        LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+                        LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+                        LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+                        LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs''''''''' $
+                        LT.insert (tnum tAllocQty) tAllocQty                         LT.new
+                        where
+                           gNoNested2PartyIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartyIDs"
+                              , tnum = tnum tNoNested2PartyIDs
+                              , tparser = gNoNested2PartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec''''''''' }
+
+                           gNoNested2PartyIDsP''''''''' = groupP gNoNested2PartyIDsSpec'''''''''
+                           gNoNested2PartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartyIDs
+                              , gsSeperator = tNested2PartyID
+                              , gsBody = gNoNested2PartyIDsBody''''''''' }
+                              where
+                              gNoNested2PartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                                 LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                                 LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNested2PartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNested2PartySubIDs"
+                                       , tnum = tnum tNoNested2PartySubIDs
+                                       , tparser = gNoNested2PartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec'''''''''''' }
+
+                                    gNoNested2PartySubIDsP'''''''''''' = groupP gNoNested2PartySubIDsSpec''''''''''''
+                                    gNoNested2PartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNested2PartySubIDs
+                                       , gsSeperator = tNested2PartySubID
+                                       , gsBody = gNoNested2PartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNested2PartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                           LT.new
+
+
+
+                  gNoClearingInstructions'''''' = FIXTag
+                     { tName = "NoClearingInstructions"
+                     , tnum = tnum tNoClearingInstructions
+                     , tparser = gNoClearingInstructionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoClearingInstructionsSpec'''''' }
+
+                  gNoClearingInstructionsP'''''' = groupP gNoClearingInstructionsSpec''''''
+                  gNoClearingInstructionsSpec'''''' = FGSpec
+                     { gsLength = tNoClearingInstructions
+                     , gsSeperator = tClearingInstruction
+                     , gsBody = gNoClearingInstructionsBody'''''' }
+                     where
+                     gNoClearingInstructionsBody'''''' = 
+                        LT.new
+
+                  gNoContAmts'''''' = FIXTag
+                     { tName = "NoContAmts"
+                     , tnum = tnum tNoContAmts
+                     , tparser = gNoContAmtsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoContAmtsSpec'''''' }
+
+                  gNoContAmtsP'''''' = groupP gNoContAmtsSpec''''''
+                  gNoContAmtsSpec'''''' = FGSpec
+                     { gsLength = tNoContAmts
+                     , gsSeperator = tContAmtType
+                     , gsBody = gNoContAmtsBody'''''' }
+                     where
+                     gNoContAmtsBody'''''' = 
+                        LT.insert (tnum tContAmtValue) tContAmtValue $
+                        LT.insert (tnum tContAmtCurr) tContAmtCurr                         LT.new
+
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType $
+                        LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                         LT.new
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mOrderMassStatusRequest :: FIXMessageSpec
+mOrderMassStatusRequest = FMSpec
+   { msName = "OrderMassStatusRequest"
+   , msType = C.pack "AF"
+   , msHeader = headerFIX44
+   , msBody = mOrderMassStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mOrderMassStatusRequestBody = 
+      LT.insert (tnum tMassStatusReqID) tMassStatusReqID $
+      LT.insert (tnum tMassStatusReqType) tMassStatusReqType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+      LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+      LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+      LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+      LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''' $
+      LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+      LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+      LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+      LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+      LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+      LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+      LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+      LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+      LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+      LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+      LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+      LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+      LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+      LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+      LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+      LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+      LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+      LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+      LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+      LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+      LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+      LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+      LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+      LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+      LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+      LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+      LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+      LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+      LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+      LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+      LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+      LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+      LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+      LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+      LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+      LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+      LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+      LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+      LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+      LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+      LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''' $
+      LT.insert (tnum tSide) tSide       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyingSecurityAltID''' = FIXTag
+            { tName = "NoUnderlyingSecurityAltID"
+            , tnum = tnum tNoUnderlyingSecurityAltID
+            , tparser = gNoUnderlyingSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''' }
+
+         gNoUnderlyingSecurityAltIDP''' = groupP gNoUnderlyingSecurityAltIDSpec'''
+         gNoUnderlyingSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoUnderlyingSecurityAltID
+            , gsSeperator = tUnderlyingSecurityAltID
+            , gsBody = gNoUnderlyingSecurityAltIDBody''' }
+            where
+            gNoUnderlyingSecurityAltIDBody''' = 
+               LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                LT.new
+
+         gNoUnderlyingStips''' = FIXTag
+            { tName = "NoUnderlyingStips"
+            , tnum = tnum tNoUnderlyingStips
+            , tparser = gNoUnderlyingStipsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''' }
+
+         gNoUnderlyingStipsP''' = groupP gNoUnderlyingStipsSpec'''
+         gNoUnderlyingStipsSpec''' = FGSpec
+            { gsLength = tNoUnderlyingStips
+            , gsSeperator = tUnderlyingStipType
+            , gsBody = gNoUnderlyingStipsBody''' }
+            where
+            gNoUnderlyingStipsBody''' = 
+               LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                LT.new
+
+
+
+mQuoteRequestReject :: FIXMessageSpec
+mQuoteRequestReject = FMSpec
+   { msName = "QuoteRequestReject"
+   , msType = C.pack "AG"
+   , msHeader = headerFIX44
+   , msBody = mQuoteRequestRejectBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteRequestRejectBody = 
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tRFQReqID) tRFQReqID $
+      LT.insert (tnum tQuoteRequestRejectReason) tQuoteRequestRejectReason $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tAgreementDesc) tAgreementDesc $
+               LT.insert (tnum tAgreementID) tAgreementID $
+               LT.insert (tnum tAgreementDate) tAgreementDate $
+               LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+               LT.insert (tnum tTerminationType) tTerminationType $
+               LT.insert (tnum tStartDate) tStartDate $
+               LT.insert (tnum tEndDate) tEndDate $
+               LT.insert (tnum tDeliveryType) tDeliveryType $
+               LT.insert (tnum tMarginRatio) tMarginRatio $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tQuoteType) tQuoteType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+               LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+               LT.insert (tnum tSide) tSide $
+               LT.insert (tnum tQtyType) tQtyType $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tCashOrderQty) tCashOrderQty $
+               LT.insert (tnum tOrderPercent) tOrderPercent $
+               LT.insert (tnum tRoundingDirection) tRoundingDirection $
+               LT.insert (tnum tRoundingModulus) tRoundingModulus $
+               LT.insert (tnum tSettlType) tSettlType $
+               LT.insert (tnum tSettlDate) tSettlDate $
+               LT.insert (tnum tSettlDate2) tSettlDate2 $
+               LT.insert (tnum tOrderQty2) tOrderQty2 $
+               LT.insert (tnum tCurrency) tCurrency $
+               LT.insert (tnum tNoStipulations) gNoStipulations'''''' $
+               LT.insert (tnum tAccount) tAccount $
+               LT.insert (tnum tAcctIDSource) tAcctIDSource $
+               LT.insert (tnum tAccountType) tAccountType $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tNoQuoteQualifiers) gNoQuoteQualifiers'''''' $
+               LT.insert (tnum tQuotePriceType) tQuotePriceType $
+               LT.insert (tnum tOrdType) tOrdType $
+               LT.insert (tnum tExpireTime) tExpireTime $
+               LT.insert (tnum tTransactTime) tTransactTime $
+               LT.insert (tnum tSpread) tSpread $
+               LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+               LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+               LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+               LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+               LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+               LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+               LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+               LT.insert (tnum tPriceType) tPriceType $
+               LT.insert (tnum tPrice) tPrice $
+               LT.insert (tnum tPrice2) tPrice2 $
+               LT.insert (tnum tYieldType) tYieldType $
+               LT.insert (tnum tYield) tYield $
+               LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+               LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+               LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+               LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+               LT.insert (tnum tNoPartyIDs) gNoPartyIDs''''''                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+                        LT.insert (tnum tLegQty) tLegQty $
+                        LT.insert (tnum tLegSwapType) tLegSwapType $
+                        LT.insert (tnum tLegSettlType) tLegSettlType $
+                        LT.insert (tnum tLegSettlDate) tLegSettlDate $
+                        LT.insert (tnum tNoLegStipulations) gNoLegStipulations''''''''' $
+                        LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''''' $
+                        LT.insert (tnum tLegBenchmarkCurveCurrency) tLegBenchmarkCurveCurrency $
+                        LT.insert (tnum tLegBenchmarkCurveName) tLegBenchmarkCurveName $
+                        LT.insert (tnum tLegBenchmarkCurvePoint) tLegBenchmarkCurvePoint $
+                        LT.insert (tnum tLegBenchmarkPrice) tLegBenchmarkPrice $
+                        LT.insert (tnum tLegBenchmarkPriceType) tLegBenchmarkPriceType                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+                           gNoLegStipulations''''''''' = FIXTag
+                              { tName = "NoLegStipulations"
+                              , tnum = tnum tNoLegStipulations
+                              , tparser = gNoLegStipulationsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec''''''''' }
+
+                           gNoLegStipulationsP''''''''' = groupP gNoLegStipulationsSpec'''''''''
+                           gNoLegStipulationsSpec''''''''' = FGSpec
+                              { gsLength = tNoLegStipulations
+                              , gsSeperator = tLegStipulationType
+                              , gsBody = gNoLegStipulationsBody''''''''' }
+                              where
+                              gNoLegStipulationsBody''''''''' = 
+                                 LT.insert (tnum tLegStipulationValue) tLegStipulationValue                                  LT.new
+
+                           gNoNestedPartyIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartyIDs"
+                              , tnum = tnum tNoNestedPartyIDs
+                              , tparser = gNoNestedPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec''''''''' }
+
+                           gNoNestedPartyIDsP''''''''' = groupP gNoNestedPartyIDsSpec'''''''''
+                           gNoNestedPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartyIDs
+                              , gsSeperator = tNestedPartyID
+                              , gsBody = gNoNestedPartyIDsBody''''''''' }
+                              where
+                              gNoNestedPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                                 LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                                 LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoNestedPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoNestedPartySubIDs"
+                                       , tnum = tnum tNoNestedPartySubIDs
+                                       , tparser = gNoNestedPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec'''''''''''' }
+
+                                    gNoNestedPartySubIDsP'''''''''''' = groupP gNoNestedPartySubIDsSpec''''''''''''
+                                    gNoNestedPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoNestedPartySubIDs
+                                       , gsSeperator = tNestedPartySubID
+                                       , gsBody = gNoNestedPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoNestedPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                           LT.new
+
+
+
+                  gNoPartyIDs'''''' = FIXTag
+                     { tName = "NoPartyIDs"
+                     , tnum = tnum tNoPartyIDs
+                     , tparser = gNoPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec'''''' }
+
+                  gNoPartyIDsP'''''' = groupP gNoPartyIDsSpec''''''
+                  gNoPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartyIDs
+                     , gsSeperator = tPartyID
+                     , gsBody = gNoPartyIDsBody'''''' }
+                     where
+                     gNoPartyIDsBody'''''' = 
+                        LT.insert (tnum tPartyIDSource) tPartyIDSource $
+                        LT.insert (tnum tPartyRole) tPartyRole $
+                        LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoPartySubIDs''''''''' = FIXTag
+                              { tName = "NoPartySubIDs"
+                              , tnum = tnum tNoPartySubIDs
+                              , tparser = gNoPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec''''''''' }
+
+                           gNoPartySubIDsP''''''''' = groupP gNoPartySubIDsSpec'''''''''
+                           gNoPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoPartySubIDs
+                              , gsSeperator = tPartySubID
+                              , gsBody = gNoPartySubIDsBody''''''''' }
+                              where
+                              gNoPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tPartySubIDType) tPartySubIDType                                  LT.new
+
+
+                  gNoQuoteQualifiers'''''' = FIXTag
+                     { tName = "NoQuoteQualifiers"
+                     , tnum = tnum tNoQuoteQualifiers
+                     , tparser = gNoQuoteQualifiersP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoQuoteQualifiersSpec'''''' }
+
+                  gNoQuoteQualifiersP'''''' = groupP gNoQuoteQualifiersSpec''''''
+                  gNoQuoteQualifiersSpec'''''' = FGSpec
+                     { gsLength = tNoQuoteQualifiers
+                     , gsSeperator = tQuoteQualifier
+                     , gsBody = gNoQuoteQualifiersBody'''''' }
+                     where
+                     gNoQuoteQualifiersBody'''''' = 
+                        LT.new
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoStipulations'''''' = FIXTag
+                     { tName = "NoStipulations"
+                     , tnum = tnum tNoStipulations
+                     , tparser = gNoStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec'''''' }
+
+                  gNoStipulationsP'''''' = groupP gNoStipulationsSpec''''''
+                  gNoStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoStipulations
+                     , gsSeperator = tStipulationType
+                     , gsBody = gNoStipulationsBody'''''' }
+                     where
+                     gNoStipulationsBody'''''' = 
+                        LT.insert (tnum tStipulationValue) tStipulationValue                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mRFQRequest :: FIXMessageSpec
+mRFQRequest = FMSpec
+   { msName = "RFQRequest"
+   , msType = C.pack "AH"
+   , msHeader = headerFIX44
+   , msBody = mRFQRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mRFQRequestBody = 
+      LT.insert (tnum tRFQReqID) tRFQReqID $
+      LT.insert (tnum tNoRelatedSym) gNoRelatedSym''' $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType       LT.new
+      where
+         gNoRelatedSym''' = FIXTag
+            { tName = "NoRelatedSym"
+            , tnum = tnum tNoRelatedSym
+            , tparser = gNoRelatedSymP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoRelatedSymSpec''' }
+
+         gNoRelatedSymP''' = groupP gNoRelatedSymSpec'''
+         gNoRelatedSymSpec''' = FGSpec
+            { gsLength = tNoRelatedSym
+            , gsSeperator = tSymbol
+            , gsBody = gNoRelatedSymBody''' }
+            where
+            gNoRelatedSymBody''' = 
+               LT.insert (tnum tSymbolSfx) tSymbolSfx $
+               LT.insert (tnum tSecurityID) tSecurityID $
+               LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+               LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID'''''' $
+               LT.insert (tnum tProduct) tProduct $
+               LT.insert (tnum tCFICode) tCFICode $
+               LT.insert (tnum tSecurityType) tSecurityType $
+               LT.insert (tnum tSecuritySubType) tSecuritySubType $
+               LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+               LT.insert (tnum tMaturityDate) tMaturityDate $
+               LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+               LT.insert (tnum tIssueDate) tIssueDate $
+               LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+               LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+               LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+               LT.insert (tnum tFactor) tFactor $
+               LT.insert (tnum tCreditRating) tCreditRating $
+               LT.insert (tnum tInstrRegistry) tInstrRegistry $
+               LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+               LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+               LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+               LT.insert (tnum tRedemptionDate) tRedemptionDate $
+               LT.insert (tnum tStrikePrice) tStrikePrice $
+               LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+               LT.insert (tnum tOptAttribute) tOptAttribute $
+               LT.insert (tnum tContractMultiplier) tContractMultiplier $
+               LT.insert (tnum tCouponRate) tCouponRate $
+               LT.insert (tnum tSecurityExchange) tSecurityExchange $
+               LT.insert (tnum tIssuer) tIssuer $
+               LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+               LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+               LT.insert (tnum tSecurityDesc) tSecurityDesc $
+               LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+               LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+               LT.insert (tnum tPool) tPool $
+               LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+               LT.insert (tnum tCPProgram) tCPProgram $
+               LT.insert (tnum tCPRegType) tCPRegType $
+               LT.insert (tnum tNoEvents) gNoEvents'''''' $
+               LT.insert (tnum tDatedDate) tDatedDate $
+               LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+               LT.insert (tnum tNoUnderlyings) gNoUnderlyings'''''' $
+               LT.insert (tnum tNoLegs) gNoLegs'''''' $
+               LT.insert (tnum tPrevClosePx) tPrevClosePx $
+               LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+               LT.insert (tnum tQuoteType) tQuoteType $
+               LT.insert (tnum tTradingSessionID) tTradingSessionID $
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+               where
+                  gNoEvents'''''' = FIXTag
+                     { tName = "NoEvents"
+                     , tnum = tnum tNoEvents
+                     , tparser = gNoEventsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec'''''' }
+
+                  gNoEventsP'''''' = groupP gNoEventsSpec''''''
+                  gNoEventsSpec'''''' = FGSpec
+                     { gsLength = tNoEvents
+                     , gsSeperator = tEventType
+                     , gsBody = gNoEventsBody'''''' }
+                     where
+                     gNoEventsBody'''''' = 
+                        LT.insert (tnum tEventDate) tEventDate $
+                        LT.insert (tnum tEventPx) tEventPx $
+                        LT.insert (tnum tEventText) tEventText                         LT.new
+
+                  gNoLegs'''''' = FIXTag
+                     { tName = "NoLegs"
+                     , tnum = tnum tNoLegs
+                     , tparser = gNoLegsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec'''''' }
+
+                  gNoLegsP'''''' = groupP gNoLegsSpec''''''
+                  gNoLegsSpec'''''' = FGSpec
+                     { gsLength = tNoLegs
+                     , gsSeperator = tLegSymbol
+                     , gsBody = gNoLegsBody'''''' }
+                     where
+                     gNoLegsBody'''''' = 
+                        LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+                        LT.insert (tnum tLegSecurityID) tLegSecurityID $
+                        LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+                        LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID''''''''' $
+                        LT.insert (tnum tLegProduct) tLegProduct $
+                        LT.insert (tnum tLegCFICode) tLegCFICode $
+                        LT.insert (tnum tLegSecurityType) tLegSecurityType $
+                        LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+                        LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+                        LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+                        LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+                        LT.insert (tnum tLegIssueDate) tLegIssueDate $
+                        LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+                        LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+                        LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+                        LT.insert (tnum tLegFactor) tLegFactor $
+                        LT.insert (tnum tLegCreditRating) tLegCreditRating $
+                        LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+                        LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+                        LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+                        LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+                        LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+                        LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+                        LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+                        LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+                        LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+                        LT.insert (tnum tLegCouponRate) tLegCouponRate $
+                        LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+                        LT.insert (tnum tLegIssuer) tLegIssuer $
+                        LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+                        LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+                        LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+                        LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+                        LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+                        LT.insert (tnum tLegRatioQty) tLegRatioQty $
+                        LT.insert (tnum tLegSide) tLegSide $
+                        LT.insert (tnum tLegCurrency) tLegCurrency $
+                        LT.insert (tnum tLegPool) tLegPool $
+                        LT.insert (tnum tLegDatedDate) tLegDatedDate $
+                        LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+                        LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                         LT.new
+                        where
+                           gNoLegSecurityAltID''''''''' = FIXTag
+                              { tName = "NoLegSecurityAltID"
+                              , tnum = tnum tNoLegSecurityAltID
+                              , tparser = gNoLegSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec''''''''' }
+
+                           gNoLegSecurityAltIDP''''''''' = groupP gNoLegSecurityAltIDSpec'''''''''
+                           gNoLegSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoLegSecurityAltID
+                              , gsSeperator = tLegSecurityAltID
+                              , gsBody = gNoLegSecurityAltIDBody''''''''' }
+                              where
+                              gNoLegSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                                  LT.new
+
+
+                  gNoSecurityAltID'''''' = FIXTag
+                     { tName = "NoSecurityAltID"
+                     , tnum = tnum tNoSecurityAltID
+                     , tparser = gNoSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec'''''' }
+
+                  gNoSecurityAltIDP'''''' = groupP gNoSecurityAltIDSpec''''''
+                  gNoSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoSecurityAltID
+                     , gsSeperator = tSecurityAltID
+                     , gsBody = gNoSecurityAltIDBody'''''' }
+                     where
+                     gNoSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyings'''''' = FIXTag
+                     { tName = "NoUnderlyings"
+                     , tnum = tnum tNoUnderlyings
+                     , tparser = gNoUnderlyingsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec'''''' }
+
+                  gNoUnderlyingsP'''''' = groupP gNoUnderlyingsSpec''''''
+                  gNoUnderlyingsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyings
+                     , gsSeperator = tUnderlyingSymbol
+                     , gsBody = gNoUnderlyingsBody'''''' }
+                     where
+                     gNoUnderlyingsBody'''''' = 
+                        LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+                        LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+                        LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+                        LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID''''''''' $
+                        LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+                        LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+                        LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+                        LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+                        LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+                        LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+                        LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+                        LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+                        LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+                        LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+                        LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+                        LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+                        LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+                        LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+                        LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+                        LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+                        LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+                        LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+                        LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+                        LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+                        LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+                        LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+                        LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+                        LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+                        LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+                        LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+                        LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+                        LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+                        LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+                        LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+                        LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+                        LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+                        LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+                        LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+                        LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+                        LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+                        LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+                        LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+                        LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+                        LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''''''                         LT.new
+                        where
+                           gNoUnderlyingSecurityAltID''''''''' = FIXTag
+                              { tName = "NoUnderlyingSecurityAltID"
+                              , tnum = tnum tNoUnderlyingSecurityAltID
+                              , tparser = gNoUnderlyingSecurityAltIDP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec''''''''' }
+
+                           gNoUnderlyingSecurityAltIDP''''''''' = groupP gNoUnderlyingSecurityAltIDSpec'''''''''
+                           gNoUnderlyingSecurityAltIDSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingSecurityAltID
+                              , gsSeperator = tUnderlyingSecurityAltID
+                              , gsBody = gNoUnderlyingSecurityAltIDBody''''''''' }
+                              where
+                              gNoUnderlyingSecurityAltIDBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                                  LT.new
+
+                           gNoUnderlyingStips''''''''' = FIXTag
+                              { tName = "NoUnderlyingStips"
+                              , tnum = tnum tNoUnderlyingStips
+                              , tparser = gNoUnderlyingStipsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec''''''''' }
+
+                           gNoUnderlyingStipsP''''''''' = groupP gNoUnderlyingStipsSpec'''''''''
+                           gNoUnderlyingStipsSpec''''''''' = FGSpec
+                              { gsLength = tNoUnderlyingStips
+                              , gsSeperator = tUnderlyingStipType
+                              , gsBody = gNoUnderlyingStipsBody''''''''' }
+                              where
+                              gNoUnderlyingStipsBody''''''''' = 
+                                 LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                                  LT.new
+
+
+
+
+
+mQuoteStatusReport :: FIXMessageSpec
+mQuoteStatusReport = FMSpec
+   { msName = "QuoteStatusReport"
+   , msType = C.pack "AI"
+   , msHeader = headerFIX44
+   , msBody = mQuoteStatusReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteStatusReportBody = 
+      LT.insert (tnum tQuoteStatusReqID) tQuoteStatusReqID $
+      LT.insert (tnum tQuoteReqID) tQuoteReqID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteRespID) tQuoteRespID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tSettlDate2) tSettlDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoQuoteQualifiers) gNoQuoteQualifiers''' $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tMktBidPx) tMktBidPx $
+      LT.insert (tnum tMktOfferPx) tMktOfferPx $
+      LT.insert (tnum tMinBidSize) tMinBidSize $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tMinOfferSize) tMinOfferSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tMidPx) tMidPx $
+      LT.insert (tnum tBidYield) tBidYield $
+      LT.insert (tnum tMidYield) tMidYield $
+      LT.insert (tnum tOfferYield) tOfferYield $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+      LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+      LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+      LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tQuoteStatus) tQuoteStatus $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoQuoteQualifiers''' = FIXTag
+            { tName = "NoQuoteQualifiers"
+            , tnum = tnum tNoQuoteQualifiers
+            , tparser = gNoQuoteQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteQualifiersSpec''' }
+
+         gNoQuoteQualifiersP''' = groupP gNoQuoteQualifiersSpec'''
+         gNoQuoteQualifiersSpec''' = FGSpec
+            { gsLength = tNoQuoteQualifiers
+            , gsSeperator = tQuoteQualifier
+            , gsBody = gNoQuoteQualifiersBody''' }
+            where
+            gNoQuoteQualifiersBody''' = 
+               LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mQuoteResponse :: FIXMessageSpec
+mQuoteResponse = FMSpec
+   { msName = "QuoteResponse"
+   , msType = C.pack "AJ"
+   , msHeader = headerFIX44
+   , msBody = mQuoteResponseBody
+   , msTrailer = trailerFIX44 }
+   where
+   mQuoteResponseBody = 
+      LT.insert (tnum tQuoteRespID) tQuoteRespID $
+      LT.insert (tnum tQuoteID) tQuoteID $
+      LT.insert (tnum tQuoteRespType) tQuoteRespType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tIOIID) tIOIID $
+      LT.insert (tnum tQuoteType) tQuoteType $
+      LT.insert (tnum tNoQuoteQualifiers) gNoQuoteQualifiers''' $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tOrderQty) tOrderQty $
+      LT.insert (tnum tCashOrderQty) tCashOrderQty $
+      LT.insert (tnum tOrderPercent) tOrderPercent $
+      LT.insert (tnum tRoundingDirection) tRoundingDirection $
+      LT.insert (tnum tRoundingModulus) tRoundingModulus $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tSettlDate2) tSettlDate2 $
+      LT.insert (tnum tOrderQty2) tOrderQty2 $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tBidPx) tBidPx $
+      LT.insert (tnum tOfferPx) tOfferPx $
+      LT.insert (tnum tMktBidPx) tMktBidPx $
+      LT.insert (tnum tMktOfferPx) tMktOfferPx $
+      LT.insert (tnum tMinBidSize) tMinBidSize $
+      LT.insert (tnum tBidSize) tBidSize $
+      LT.insert (tnum tMinOfferSize) tMinOfferSize $
+      LT.insert (tnum tOfferSize) tOfferSize $
+      LT.insert (tnum tValidUntilTime) tValidUntilTime $
+      LT.insert (tnum tBidSpotRate) tBidSpotRate $
+      LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+      LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+      LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+      LT.insert (tnum tMidPx) tMidPx $
+      LT.insert (tnum tBidYield) tBidYield $
+      LT.insert (tnum tMidYield) tMidYield $
+      LT.insert (tnum tOfferYield) tOfferYield $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tOrdType) tOrdType $
+      LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+      LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+      LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+      LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tExDestination) tExDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegPriceType) tLegPriceType $
+               LT.insert (tnum tLegBidPx) tLegBidPx $
+               LT.insert (tnum tLegOfferPx) tLegOfferPx $
+               LT.insert (tnum tLegBenchmarkCurveCurrency) tLegBenchmarkCurveCurrency $
+               LT.insert (tnum tLegBenchmarkCurveName) tLegBenchmarkCurveName $
+               LT.insert (tnum tLegBenchmarkCurvePoint) tLegBenchmarkCurvePoint $
+               LT.insert (tnum tLegBenchmarkPrice) tLegBenchmarkPrice $
+               LT.insert (tnum tLegBenchmarkPriceType) tLegBenchmarkPriceType                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoQuoteQualifiers''' = FIXTag
+            { tName = "NoQuoteQualifiers"
+            , tnum = tnum tNoQuoteQualifiers
+            , tparser = gNoQuoteQualifiersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoQuoteQualifiersSpec''' }
+
+         gNoQuoteQualifiersP''' = groupP gNoQuoteQualifiersSpec'''
+         gNoQuoteQualifiersSpec''' = FGSpec
+            { gsLength = tNoQuoteQualifiers
+            , gsSeperator = tQuoteQualifier
+            , gsBody = gNoQuoteQualifiersBody''' }
+            where
+            gNoQuoteQualifiersBody''' = 
+               LT.new
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mConfirmation :: FIXMessageSpec
+mConfirmation = FMSpec
+   { msName = "Confirmation"
+   , msType = C.pack "AK"
+   , msHeader = headerFIX44
+   , msBody = mConfirmationBody
+   , msTrailer = trailerFIX44 }
+   where
+   mConfirmationBody = 
+      LT.insert (tnum tConfirmID) tConfirmID $
+      LT.insert (tnum tConfirmRefID) tConfirmRefID $
+      LT.insert (tnum tConfirmReqID) tConfirmReqID $
+      LT.insert (tnum tConfirmTransType) tConfirmTransType $
+      LT.insert (tnum tConfirmType) tConfirmType $
+      LT.insert (tnum tCopyMsgIndicator) tCopyMsgIndicator $
+      LT.insert (tnum tLegalConfirm) tLegalConfirm $
+      LT.insert (tnum tConfirmStatus) tConfirmStatus $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+      LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tAllocQty) tAllocQty $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tNoCapacities) gNoCapacities''' $
+      LT.insert (tnum tAllocAccount) tAllocAccount $
+      LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+      LT.insert (tnum tAllocAccountType) tAllocAccountType $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tAvgPxPrecision) tAvgPxPrecision $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAvgParPx) tAvgParPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tReportedPx) tReportedPx $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tProcessCode) tProcessCode $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tExDate) tExDate $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tInterestAtMaturity) tInterestAtMaturity $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tConcession) tConcession $
+      LT.insert (tnum tTotalTakedown) tTotalTakedown $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tMaturityNetMoney) tMaturityNetMoney $
+      LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+      LT.insert (tnum tSettlCurrency) tSettlCurrency $
+      LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+      LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tNoDlvyInst) gNoDlvyInst''' $
+      LT.insert (tnum tCommission) tCommission $
+      LT.insert (tnum tCommType) tCommType $
+      LT.insert (tnum tCommCurrency) tCommCurrency $
+      LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+      LT.insert (tnum tSharedCommission) tSharedCommission $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees'''       LT.new
+      where
+         gNoCapacities''' = FIXTag
+            { tName = "NoCapacities"
+            , tnum = tnum tNoCapacities
+            , tparser = gNoCapacitiesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoCapacitiesSpec''' }
+
+         gNoCapacitiesP''' = groupP gNoCapacitiesSpec'''
+         gNoCapacitiesSpec''' = FGSpec
+            { gsLength = tNoCapacities
+            , gsSeperator = tOrderCapacity
+            , gsBody = gNoCapacitiesBody''' }
+            where
+            gNoCapacitiesBody''' = 
+               LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+               LT.insert (tnum tOrderCapacityQty) tOrderCapacityQty                LT.new
+
+         gNoDlvyInst''' = FIXTag
+            { tName = "NoDlvyInst"
+            , tnum = tnum tNoDlvyInst
+            , tparser = gNoDlvyInstP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec''' }
+
+         gNoDlvyInstP''' = groupP gNoDlvyInstSpec'''
+         gNoDlvyInstSpec''' = FGSpec
+            { gsLength = tNoDlvyInst
+            , gsSeperator = tSettlInstSource
+            , gsBody = gNoDlvyInstBody''' }
+            where
+            gNoDlvyInstBody''' = 
+               LT.insert (tnum tDlvyInstType) tDlvyInstType $
+               LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs''''''                LT.new
+               where
+                  gNoSettlPartyIDs'''''' = FIXTag
+                     { tName = "NoSettlPartyIDs"
+                     , tnum = tnum tNoSettlPartyIDs
+                     , tparser = gNoSettlPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec'''''' }
+
+                  gNoSettlPartyIDsP'''''' = groupP gNoSettlPartyIDsSpec''''''
+                  gNoSettlPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoSettlPartyIDs
+                     , gsSeperator = tSettlPartyID
+                     , gsBody = gNoSettlPartyIDsBody'''''' }
+                     where
+                     gNoSettlPartyIDsBody'''''' = 
+                        LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                        LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                        LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartySubIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartySubIDs"
+                              , tnum = tnum tNoSettlPartySubIDs
+                              , tparser = gNoSettlPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec''''''''' }
+
+                           gNoSettlPartySubIDsP''''''''' = groupP gNoSettlPartySubIDsSpec'''''''''
+                           gNoSettlPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartySubIDs
+                              , gsSeperator = tSettlPartySubID
+                              , gsBody = gNoSettlPartySubIDsBody''''''''' }
+                              where
+                              gNoSettlPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType $
+               LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                LT.new
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs'''''' $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tOrderAvgPx) tOrderAvgPx $
+               LT.insert (tnum tOrderBookingQty) tOrderBookingQty                LT.new
+               where
+                  gNoNested2PartyIDs'''''' = FIXTag
+                     { tName = "NoNested2PartyIDs"
+                     , tnum = tnum tNoNested2PartyIDs
+                     , tparser = gNoNested2PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec'''''' }
+
+                  gNoNested2PartyIDsP'''''' = groupP gNoNested2PartyIDsSpec''''''
+                  gNoNested2PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested2PartyIDs
+                     , gsSeperator = tNested2PartyID
+                     , gsBody = gNoNested2PartyIDsBody'''''' }
+                     where
+                     gNoNested2PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                        LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                        LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested2PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartySubIDs"
+                              , tnum = tnum tNoNested2PartySubIDs
+                              , tparser = gNoNested2PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec''''''''' }
+
+                           gNoNested2PartySubIDsP''''''''' = groupP gNoNested2PartySubIDsSpec'''''''''
+                           gNoNested2PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartySubIDs
+                              , gsSeperator = tNested2PartySubID
+                              , gsBody = gNoNested2PartySubIDsBody''''''''' }
+                              where
+                              gNoNested2PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mPositionMaintenanceRequest :: FIXMessageSpec
+mPositionMaintenanceRequest = FMSpec
+   { msName = "PositionMaintenanceRequest"
+   , msType = C.pack "AL"
+   , msHeader = headerFIX44
+   , msBody = mPositionMaintenanceRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mPositionMaintenanceRequestBody = 
+      LT.insert (tnum tPosReqID) tPosReqID $
+      LT.insert (tnum tPosTransType) tPosTransType $
+      LT.insert (tnum tPosMaintAction) tPosMaintAction $
+      LT.insert (tnum tOrigPosReqRefID) tOrigPosReqRefID $
+      LT.insert (tnum tPosMaintRptRefID) tPosMaintRptRefID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoPositions) gNoPositions''' $
+      LT.insert (tnum tAdjustmentType) tAdjustmentType $
+      LT.insert (tnum tContraryInstructionIndicator) tContraryInstructionIndicator $
+      LT.insert (tnum tPriorSpreadIndicator) tPriorSpreadIndicator $
+      LT.insert (tnum tThresholdAmount) tThresholdAmount $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoPositions''' = FIXTag
+            { tName = "NoPositions"
+            , tnum = tnum tNoPositions
+            , tparser = gNoPositionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPositionsSpec''' }
+
+         gNoPositionsP''' = groupP gNoPositionsSpec'''
+         gNoPositionsSpec''' = FGSpec
+            { gsLength = tNoPositions
+            , gsSeperator = tPosType
+            , gsBody = gNoPositionsBody''' }
+            where
+            gNoPositionsBody''' = 
+               LT.insert (tnum tLongQty) tLongQty $
+               LT.insert (tnum tShortQty) tShortQty $
+               LT.insert (tnum tPosQtyStatus) tPosQtyStatus $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mPositionMaintenanceReport :: FIXMessageSpec
+mPositionMaintenanceReport = FMSpec
+   { msName = "PositionMaintenanceReport"
+   , msType = C.pack "AM"
+   , msHeader = headerFIX44
+   , msBody = mPositionMaintenanceReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mPositionMaintenanceReportBody = 
+      LT.insert (tnum tPosMaintRptID) tPosMaintRptID $
+      LT.insert (tnum tPosTransType) tPosTransType $
+      LT.insert (tnum tPosReqID) tPosReqID $
+      LT.insert (tnum tPosMaintAction) tPosMaintAction $
+      LT.insert (tnum tOrigPosReqRefID) tOrigPosReqRefID $
+      LT.insert (tnum tPosMaintStatus) tPosMaintStatus $
+      LT.insert (tnum tPosMaintResult) tPosMaintResult $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoPositions) gNoPositions''' $
+      LT.insert (tnum tNoPosAmt) gNoPosAmt''' $
+      LT.insert (tnum tAdjustmentType) tAdjustmentType $
+      LT.insert (tnum tThresholdAmount) tThresholdAmount $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoPosAmt''' = FIXTag
+            { tName = "NoPosAmt"
+            , tnum = tnum tNoPosAmt
+            , tparser = gNoPosAmtP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPosAmtSpec''' }
+
+         gNoPosAmtP''' = groupP gNoPosAmtSpec'''
+         gNoPosAmtSpec''' = FGSpec
+            { gsLength = tNoPosAmt
+            , gsSeperator = tPosAmtType
+            , gsBody = gNoPosAmtBody''' }
+            where
+            gNoPosAmtBody''' = 
+               LT.insert (tnum tPosAmt) tPosAmt                LT.new
+
+         gNoPositions''' = FIXTag
+            { tName = "NoPositions"
+            , tnum = tnum tNoPositions
+            , tparser = gNoPositionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPositionsSpec''' }
+
+         gNoPositionsP''' = groupP gNoPositionsSpec'''
+         gNoPositionsSpec''' = FGSpec
+            { gsLength = tNoPositions
+            , gsSeperator = tPosType
+            , gsBody = gNoPositionsBody''' }
+            where
+            gNoPositionsBody''' = 
+               LT.insert (tnum tLongQty) tLongQty $
+               LT.insert (tnum tShortQty) tShortQty $
+               LT.insert (tnum tPosQtyStatus) tPosQtyStatus $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mRequestForPositions :: FIXMessageSpec
+mRequestForPositions = FMSpec
+   { msName = "RequestForPositions"
+   , msType = C.pack "AN"
+   , msHeader = headerFIX44
+   , msBody = mRequestForPositionsBody
+   , msTrailer = trailerFIX44 }
+   where
+   mRequestForPositionsBody = 
+      LT.insert (tnum tPosReqID) tPosReqID $
+      LT.insert (tnum tPosReqType) tPosReqType $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tNoTradingSessions) gNoTradingSessions''' $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTradingSessions''' = FIXTag
+            { tName = "NoTradingSessions"
+            , tnum = tnum tNoTradingSessions
+            , tparser = gNoTradingSessionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradingSessionsSpec''' }
+
+         gNoTradingSessionsP''' = groupP gNoTradingSessionsSpec'''
+         gNoTradingSessionsSpec''' = FGSpec
+            { gsLength = tNoTradingSessions
+            , gsSeperator = tTradingSessionID
+            , gsBody = gNoTradingSessionsBody''' }
+            where
+            gNoTradingSessionsBody''' = 
+               LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mRequestForPositionsAck :: FIXMessageSpec
+mRequestForPositionsAck = FMSpec
+   { msName = "RequestForPositionsAck"
+   , msType = C.pack "AO"
+   , msHeader = headerFIX44
+   , msBody = mRequestForPositionsAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mRequestForPositionsAckBody = 
+      LT.insert (tnum tPosMaintRptID) tPosMaintRptID $
+      LT.insert (tnum tPosReqID) tPosReqID $
+      LT.insert (tnum tTotalNumPosReports) tTotalNumPosReports $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tPosReqResult) tPosReqResult $
+      LT.insert (tnum tPosReqStatus) tPosReqStatus $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mPositionReport :: FIXMessageSpec
+mPositionReport = FMSpec
+   { msName = "PositionReport"
+   , msType = C.pack "AP"
+   , msHeader = headerFIX44
+   , msBody = mPositionReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mPositionReportBody = 
+      LT.insert (tnum tPosMaintRptID) tPosMaintRptID $
+      LT.insert (tnum tPosReqID) tPosReqID $
+      LT.insert (tnum tPosReqType) tPosReqType $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTotalNumPosReports) tTotalNumPosReports $
+      LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+      LT.insert (tnum tPosReqResult) tPosReqResult $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tSettlPrice) tSettlPrice $
+      LT.insert (tnum tSettlPriceType) tSettlPriceType $
+      LT.insert (tnum tPriorSettlPrice) tPriorSettlPrice $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoPositions) gNoPositions''' $
+      LT.insert (tnum tNoPosAmt) gNoPosAmt''' $
+      LT.insert (tnum tRegistStatus) tRegistStatus $
+      LT.insert (tnum tDeliveryDate) tDeliveryDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoPosAmt''' = FIXTag
+            { tName = "NoPosAmt"
+            , tnum = tnum tNoPosAmt
+            , tparser = gNoPosAmtP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPosAmtSpec''' }
+
+         gNoPosAmtP''' = groupP gNoPosAmtSpec'''
+         gNoPosAmtSpec''' = FGSpec
+            { gsLength = tNoPosAmt
+            , gsSeperator = tPosAmtType
+            , gsBody = gNoPosAmtBody''' }
+            where
+            gNoPosAmtBody''' = 
+               LT.insert (tnum tPosAmt) tPosAmt                LT.new
+
+         gNoPositions''' = FIXTag
+            { tName = "NoPositions"
+            , tnum = tnum tNoPositions
+            , tparser = gNoPositionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPositionsSpec''' }
+
+         gNoPositionsP''' = groupP gNoPositionsSpec'''
+         gNoPositionsSpec''' = FGSpec
+            { gsLength = tNoPositions
+            , gsSeperator = tPosType
+            , gsBody = gNoPositionsBody''' }
+            where
+            gNoPositionsBody''' = 
+               LT.insert (tnum tLongQty) tLongQty $
+               LT.insert (tnum tShortQty) tShortQty $
+               LT.insert (tnum tPosQtyStatus) tPosQtyStatus $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tUnderlyingSettlPrice) tUnderlyingSettlPrice $
+               LT.insert (tnum tUnderlyingSettlPriceType) tUnderlyingSettlPriceType                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mTradeCaptureReportRequestAck :: FIXMessageSpec
+mTradeCaptureReportRequestAck = FMSpec
+   { msName = "TradeCaptureReportRequestAck"
+   , msType = C.pack "AQ"
+   , msHeader = headerFIX44
+   , msBody = mTradeCaptureReportRequestAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTradeCaptureReportRequestAckBody = 
+      LT.insert (tnum tTradeRequestID) tTradeRequestID $
+      LT.insert (tnum tTradeRequestType) tTradeRequestType $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTotNumTradeReports) tTotNumTradeReports $
+      LT.insert (tnum tTradeRequestResult) tTradeRequestResult $
+      LT.insert (tnum tTradeRequestStatus) tTradeRequestStatus $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mTradeCaptureReportAck :: FIXMessageSpec
+mTradeCaptureReportAck = FMSpec
+   { msName = "TradeCaptureReportAck"
+   , msType = C.pack "AR"
+   , msHeader = headerFIX44
+   , msBody = mTradeCaptureReportAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mTradeCaptureReportAckBody = 
+      LT.insert (tnum tTradeReportID) tTradeReportID $
+      LT.insert (tnum tTradeReportTransType) tTradeReportTransType $
+      LT.insert (tnum tTradeReportType) tTradeReportType $
+      LT.insert (tnum tTrdType) tTrdType $
+      LT.insert (tnum tTrdSubType) tTrdSubType $
+      LT.insert (tnum tSecondaryTrdType) tSecondaryTrdType $
+      LT.insert (tnum tTransferReason) tTransferReason $
+      LT.insert (tnum tExecType) tExecType $
+      LT.insert (tnum tTradeReportRefID) tTradeReportRefID $
+      LT.insert (tnum tSecondaryTradeReportRefID) tSecondaryTradeReportRefID $
+      LT.insert (tnum tTrdRptStatus) tTrdRptStatus $
+      LT.insert (tnum tTradeReportRejectReason) tTradeReportRejectReason $
+      LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tTradeLinkID) tTradeLinkID $
+      LT.insert (tnum tTrdMatchID) tTrdMatchID $
+      LT.insert (tnum tExecID) tExecID $
+      LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+      LT.insert (tnum tOrderCapacity) tOrderCapacity $
+      LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+      LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAcctIDSource) tAcctIDSource $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tPreallocMethod) tPreallocMethod $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs'''''' $
+               LT.insert (tnum tAllocQty) tAllocQty                LT.new
+               where
+                  gNoNested2PartyIDs'''''' = FIXTag
+                     { tName = "NoNested2PartyIDs"
+                     , tnum = tnum tNoNested2PartyIDs
+                     , tparser = gNoNested2PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec'''''' }
+
+                  gNoNested2PartyIDsP'''''' = groupP gNoNested2PartyIDsSpec''''''
+                  gNoNested2PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested2PartyIDs
+                     , gsSeperator = tNested2PartyID
+                     , gsBody = gNoNested2PartyIDsBody'''''' }
+                     where
+                     gNoNested2PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                        LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                        LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested2PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartySubIDs"
+                              , tnum = tnum tNoNested2PartySubIDs
+                              , tparser = gNoNested2PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec''''''''' }
+
+                           gNoNested2PartySubIDsP''''''''' = groupP gNoNested2PartySubIDsSpec'''''''''
+                           gNoNested2PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartySubIDs
+                              , gsSeperator = tNested2PartySubID
+                              , gsBody = gNoNested2PartySubIDsBody''''''''' }
+                              where
+                              gNoNested2PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+               LT.insert (tnum tLegQty) tLegQty $
+               LT.insert (tnum tLegSwapType) tLegSwapType $
+               LT.insert (tnum tNoLegStipulations) gNoLegStipulations'''''' $
+               LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+               LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tLegRefID) tLegRefID $
+               LT.insert (tnum tLegPrice) tLegPrice $
+               LT.insert (tnum tLegSettlType) tLegSettlType $
+               LT.insert (tnum tLegSettlDate) tLegSettlDate $
+               LT.insert (tnum tLegLastPx) tLegLastPx                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+                  gNoLegStipulations'''''' = FIXTag
+                     { tName = "NoLegStipulations"
+                     , tnum = tnum tNoLegStipulations
+                     , tparser = gNoLegStipulationsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegStipulationsSpec'''''' }
+
+                  gNoLegStipulationsP'''''' = groupP gNoLegStipulationsSpec''''''
+                  gNoLegStipulationsSpec'''''' = FGSpec
+                     { gsLength = tNoLegStipulations
+                     , gsSeperator = tLegStipulationType
+                     , gsBody = gNoLegStipulationsBody'''''' }
+                     where
+                     gNoLegStipulationsBody'''''' = 
+                        LT.insert (tnum tLegStipulationValue) tLegStipulationValue                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+
+
+mAllocationReport :: FIXMessageSpec
+mAllocationReport = FMSpec
+   { msName = "AllocationReport"
+   , msType = C.pack "AS"
+   , msHeader = headerFIX44
+   , msBody = mAllocationReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mAllocationReportBody = 
+      LT.insert (tnum tAllocReportID) tAllocReportID $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tAllocTransType) tAllocTransType $
+      LT.insert (tnum tAllocReportRefID) tAllocReportRefID $
+      LT.insert (tnum tAllocCancReplaceReason) tAllocCancReplaceReason $
+      LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+      LT.insert (tnum tAllocReportType) tAllocReportType $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tRefAllocID) tRefAllocID $
+      LT.insert (tnum tAllocIntermedReqType) tAllocIntermedReqType $
+      LT.insert (tnum tAllocLinkID) tAllocLinkID $
+      LT.insert (tnum tAllocLinkType) tAllocLinkType $
+      LT.insert (tnum tBookingRefID) tBookingRefID $
+      LT.insert (tnum tAllocNoOrdersType) tAllocNoOrdersType $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tPreviouslyReported) tPreviouslyReported $
+      LT.insert (tnum tReversalIndicator) tReversalIndicator $
+      LT.insert (tnum tMatchType) tMatchType $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tDeliveryForm) tDeliveryForm $
+      LT.insert (tnum tPctAtRisk) tPctAtRisk $
+      LT.insert (tnum tNoInstrAttrib) gNoInstrAttrib''' $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tLastMkt) tLastMkt $
+      LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAvgPx) tAvgPx $
+      LT.insert (tnum tAvgParPx) tAvgParPx $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tAvgPxPrecision) tAvgPxPrecision $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tSettlType) tSettlType $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tBookingType) tBookingType $
+      LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+      LT.insert (tnum tConcession) tConcession $
+      LT.insert (tnum tTotalTakedown) tTotalTakedown $
+      LT.insert (tnum tNetMoney) tNetMoney $
+      LT.insert (tnum tPositionEffect) tPositionEffect $
+      LT.insert (tnum tAutoAcceptIndicator) tAutoAcceptIndicator $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+      LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tTotalAccruedInterestAmt) tTotalAccruedInterestAmt $
+      LT.insert (tnum tInterestAtMaturity) tInterestAtMaturity $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tLegalConfirm) tLegalConfirm $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tYieldType) tYieldType $
+      LT.insert (tnum tYield) tYield $
+      LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+      LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+      LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+      LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+      LT.insert (tnum tTotNoAllocs) tTotNoAllocs $
+      LT.insert (tnum tLastFragment) tLastFragment $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tMatchStatus) tMatchStatus $
+               LT.insert (tnum tAllocPrice) tAllocPrice $
+               LT.insert (tnum tAllocQty) tAllocQty $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tProcessCode) tProcessCode $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs'''''' $
+               LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+               LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+               LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+               LT.insert (tnum tCommission) tCommission $
+               LT.insert (tnum tCommType) tCommType $
+               LT.insert (tnum tCommCurrency) tCommCurrency $
+               LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+               LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+               LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+               LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+               LT.insert (tnum tAllocSettlCurrAmt) tAllocSettlCurrAmt $
+               LT.insert (tnum tSettlCurrency) tSettlCurrency $
+               LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+               LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+               LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+               LT.insert (tnum tAllocAccruedInterestAmt) tAllocAccruedInterestAmt $
+               LT.insert (tnum tAllocInterestAtMaturity) tAllocInterestAtMaturity $
+               LT.insert (tnum tNoMiscFees) gNoMiscFees'''''' $
+               LT.insert (tnum tNoClearingInstructions) gNoClearingInstructions'''''' $
+               LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+               LT.insert (tnum tAllocSettlInstType) tAllocSettlInstType $
+               LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+               LT.insert (tnum tStandInstDbType) tStandInstDbType $
+               LT.insert (tnum tStandInstDbName) tStandInstDbName $
+               LT.insert (tnum tStandInstDbID) tStandInstDbID $
+               LT.insert (tnum tNoDlvyInst) gNoDlvyInst''''''                LT.new
+               where
+                  gNoClearingInstructions'''''' = FIXTag
+                     { tName = "NoClearingInstructions"
+                     , tnum = tnum tNoClearingInstructions
+                     , tparser = gNoClearingInstructionsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoClearingInstructionsSpec'''''' }
+
+                  gNoClearingInstructionsP'''''' = groupP gNoClearingInstructionsSpec''''''
+                  gNoClearingInstructionsSpec'''''' = FGSpec
+                     { gsLength = tNoClearingInstructions
+                     , gsSeperator = tClearingInstruction
+                     , gsBody = gNoClearingInstructionsBody'''''' }
+                     where
+                     gNoClearingInstructionsBody'''''' = 
+                        LT.new
+
+                  gNoDlvyInst'''''' = FIXTag
+                     { tName = "NoDlvyInst"
+                     , tnum = tnum tNoDlvyInst
+                     , tparser = gNoDlvyInstP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec'''''' }
+
+                  gNoDlvyInstP'''''' = groupP gNoDlvyInstSpec''''''
+                  gNoDlvyInstSpec'''''' = FGSpec
+                     { gsLength = tNoDlvyInst
+                     , gsSeperator = tSettlInstSource
+                     , gsBody = gNoDlvyInstBody'''''' }
+                     where
+                     gNoDlvyInstBody'''''' = 
+                        LT.insert (tnum tDlvyInstType) tDlvyInstType $
+                        LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartyIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartyIDs"
+                              , tnum = tnum tNoSettlPartyIDs
+                              , tparser = gNoSettlPartyIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec''''''''' }
+
+                           gNoSettlPartyIDsP''''''''' = groupP gNoSettlPartyIDsSpec'''''''''
+                           gNoSettlPartyIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartyIDs
+                              , gsSeperator = tSettlPartyID
+                              , gsBody = gNoSettlPartyIDsBody''''''''' }
+                              where
+                              gNoSettlPartyIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                                 LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                                 LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs''''''''''''                                  LT.new
+                                 where
+                                    gNoSettlPartySubIDs'''''''''''' = FIXTag
+                                       { tName = "NoSettlPartySubIDs"
+                                       , tnum = tnum tNoSettlPartySubIDs
+                                       , tparser = gNoSettlPartySubIDsP''''''''''''
+                                       , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec'''''''''''' }
+
+                                    gNoSettlPartySubIDsP'''''''''''' = groupP gNoSettlPartySubIDsSpec''''''''''''
+                                    gNoSettlPartySubIDsSpec'''''''''''' = FGSpec
+                                       { gsLength = tNoSettlPartySubIDs
+                                       , gsSeperator = tSettlPartySubID
+                                       , gsBody = gNoSettlPartySubIDsBody'''''''''''' }
+                                       where
+                                       gNoSettlPartySubIDsBody'''''''''''' = 
+                                          LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                           LT.new
+
+
+
+                  gNoMiscFees'''''' = FIXTag
+                     { tName = "NoMiscFees"
+                     , tnum = tnum tNoMiscFees
+                     , tparser = gNoMiscFeesP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec'''''' }
+
+                  gNoMiscFeesP'''''' = groupP gNoMiscFeesSpec''''''
+                  gNoMiscFeesSpec'''''' = FGSpec
+                     { gsLength = tNoMiscFees
+                     , gsSeperator = tMiscFeeAmt
+                     , gsBody = gNoMiscFeesBody'''''' }
+                     where
+                     gNoMiscFeesBody'''''' = 
+                        LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+                        LT.insert (tnum tMiscFeeType) tMiscFeeType $
+                        LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                         LT.new
+
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tLastQty
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.insert (tnum tExecID) tExecID $
+               LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+               LT.insert (tnum tLastPx) tLastPx $
+               LT.insert (tnum tLastParPx) tLastParPx $
+               LT.insert (tnum tLastCapacity) tLastCapacity                LT.new
+
+         gNoInstrAttrib''' = FIXTag
+            { tName = "NoInstrAttrib"
+            , tnum = tnum tNoInstrAttrib
+            , tparser = gNoInstrAttribP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoInstrAttribSpec''' }
+
+         gNoInstrAttribP''' = groupP gNoInstrAttribSpec'''
+         gNoInstrAttribSpec''' = FGSpec
+            { gsLength = tNoInstrAttrib
+            , gsSeperator = tInstrAttribType
+            , gsBody = gNoInstrAttribBody''' }
+            where
+            gNoInstrAttribBody''' = 
+               LT.insert (tnum tInstrAttribValue) tInstrAttribValue                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs'''''' $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tOrderAvgPx) tOrderAvgPx $
+               LT.insert (tnum tOrderBookingQty) tOrderBookingQty                LT.new
+               where
+                  gNoNested2PartyIDs'''''' = FIXTag
+                     { tName = "NoNested2PartyIDs"
+                     , tnum = tnum tNoNested2PartyIDs
+                     , tparser = gNoNested2PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec'''''' }
+
+                  gNoNested2PartyIDsP'''''' = groupP gNoNested2PartyIDsSpec''''''
+                  gNoNested2PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested2PartyIDs
+                     , gsSeperator = tNested2PartyID
+                     , gsBody = gNoNested2PartyIDsBody'''''' }
+                     where
+                     gNoNested2PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                        LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                        LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested2PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartySubIDs"
+                              , tnum = tnum tNoNested2PartySubIDs
+                              , tparser = gNoNested2PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec''''''''' }
+
+                           gNoNested2PartySubIDsP''''''''' = groupP gNoNested2PartySubIDsSpec'''''''''
+                           gNoNested2PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartySubIDs
+                              , gsSeperator = tNested2PartySubID
+                              , gsBody = gNoNested2PartySubIDsBody''''''''' }
+                              where
+                              gNoNested2PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                  LT.new
+
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mAllocationReportAck :: FIXMessageSpec
+mAllocationReportAck = FMSpec
+   { msName = "AllocationReportAck"
+   , msType = C.pack "AT"
+   , msHeader = headerFIX44
+   , msBody = mAllocationReportAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mAllocationReportAckBody = 
+      LT.insert (tnum tAllocReportID) tAllocReportID $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocStatus) tAllocStatus $
+      LT.insert (tnum tAllocRejCode) tAllocRejCode $
+      LT.insert (tnum tAllocReportType) tAllocReportType $
+      LT.insert (tnum tAllocIntermedReqType) tAllocIntermedReqType $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText $
+      LT.insert (tnum tNoAllocs) gNoAllocs'''       LT.new
+      where
+         gNoAllocs''' = FIXTag
+            { tName = "NoAllocs"
+            , tnum = tnum tNoAllocs
+            , tparser = gNoAllocsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoAllocsSpec''' }
+
+         gNoAllocsP''' = groupP gNoAllocsSpec'''
+         gNoAllocsSpec''' = FGSpec
+            { gsLength = tNoAllocs
+            , gsSeperator = tAllocAccount
+            , gsBody = gNoAllocsBody''' }
+            where
+            gNoAllocsBody''' = 
+               LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+               LT.insert (tnum tAllocPrice) tAllocPrice $
+               LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+               LT.insert (tnum tIndividualAllocRejCode) tIndividualAllocRejCode $
+               LT.insert (tnum tAllocText) tAllocText $
+               LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+               LT.insert (tnum tEncodedAllocText) tEncodedAllocText                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+
+
+mConfirmationAck :: FIXMessageSpec
+mConfirmationAck = FMSpec
+   { msName = "ConfirmationAck"
+   , msType = C.pack "AU"
+   , msHeader = headerFIX44
+   , msBody = mConfirmationAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mConfirmationAckBody = 
+      LT.insert (tnum tConfirmID) tConfirmID $
+      LT.insert (tnum tTradeDate) tTradeDate $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAffirmStatus) tAffirmStatus $
+      LT.insert (tnum tConfirmRejReason) tConfirmRejReason $
+      LT.insert (tnum tMatchStatus) tMatchStatus $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+
+
+mSettlementInstructionRequest :: FIXMessageSpec
+mSettlementInstructionRequest = FMSpec
+   { msName = "SettlementInstructionRequest"
+   , msType = C.pack "AV"
+   , msHeader = headerFIX44
+   , msBody = mSettlementInstructionRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mSettlementInstructionRequestBody = 
+      LT.insert (tnum tSettlInstReqID) tSettlInstReqID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAllocAccount) tAllocAccount $
+      LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tEffectiveTime) tEffectiveTime $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tLastUpdateTime) tLastUpdateTime $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID       LT.new
+      where
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+
+
+mAssignmentReport :: FIXMessageSpec
+mAssignmentReport = FMSpec
+   { msName = "AssignmentReport"
+   , msType = C.pack "AW"
+   , msHeader = headerFIX44
+   , msBody = mAssignmentReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mAssignmentReportBody = 
+      LT.insert (tnum tAsgnRptID) tAsgnRptID $
+      LT.insert (tnum tTotNumAssignmentReports) tTotNumAssignmentReports $
+      LT.insert (tnum tLastRptRequested) tLastRptRequested $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tNoPositions) gNoPositions''' $
+      LT.insert (tnum tNoPosAmt) gNoPosAmt''' $
+      LT.insert (tnum tThresholdAmount) tThresholdAmount $
+      LT.insert (tnum tSettlPrice) tSettlPrice $
+      LT.insert (tnum tSettlPriceType) tSettlPriceType $
+      LT.insert (tnum tUnderlyingSettlPrice) tUnderlyingSettlPrice $
+      LT.insert (tnum tExpireDate) tExpireDate $
+      LT.insert (tnum tAssignmentMethod) tAssignmentMethod $
+      LT.insert (tnum tAssignmentUnit) tAssignmentUnit $
+      LT.insert (tnum tOpenInterest) tOpenInterest $
+      LT.insert (tnum tExerciseMethod) tExerciseMethod $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoPosAmt''' = FIXTag
+            { tName = "NoPosAmt"
+            , tnum = tnum tNoPosAmt
+            , tparser = gNoPosAmtP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPosAmtSpec''' }
+
+         gNoPosAmtP''' = groupP gNoPosAmtSpec'''
+         gNoPosAmtSpec''' = FGSpec
+            { gsLength = tNoPosAmt
+            , gsSeperator = tPosAmtType
+            , gsBody = gNoPosAmtBody''' }
+            where
+            gNoPosAmtBody''' = 
+               LT.insert (tnum tPosAmt) tPosAmt                LT.new
+
+         gNoPositions''' = FIXTag
+            { tName = "NoPositions"
+            , tnum = tnum tNoPositions
+            , tparser = gNoPositionsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPositionsSpec''' }
+
+         gNoPositionsP''' = groupP gNoPositionsSpec'''
+         gNoPositionsSpec''' = FGSpec
+            { gsLength = tNoPositions
+            , gsSeperator = tPosType
+            , gsBody = gNoPositionsBody''' }
+            where
+            gNoPositionsBody''' = 
+               LT.insert (tnum tLongQty) tLongQty $
+               LT.insert (tnum tShortQty) tShortQty $
+               LT.insert (tnum tPosQtyStatus) tPosQtyStatus $
+               LT.insert (tnum tNoNestedPartyIDs) gNoNestedPartyIDs''''''                LT.new
+               where
+                  gNoNestedPartyIDs'''''' = FIXTag
+                     { tName = "NoNestedPartyIDs"
+                     , tnum = tnum tNoNestedPartyIDs
+                     , tparser = gNoNestedPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNestedPartyIDsSpec'''''' }
+
+                  gNoNestedPartyIDsP'''''' = groupP gNoNestedPartyIDsSpec''''''
+                  gNoNestedPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNestedPartyIDs
+                     , gsSeperator = tNestedPartyID
+                     , gsBody = gNoNestedPartyIDsBody'''''' }
+                     where
+                     gNoNestedPartyIDsBody'''''' = 
+                        LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+                        LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+                        LT.insert (tnum tNoNestedPartySubIDs) gNoNestedPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNestedPartySubIDs''''''''' = FIXTag
+                              { tName = "NoNestedPartySubIDs"
+                              , tnum = tnum tNoNestedPartySubIDs
+                              , tparser = gNoNestedPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNestedPartySubIDsSpec''''''''' }
+
+                           gNoNestedPartySubIDsP''''''''' = groupP gNoNestedPartySubIDsSpec'''''''''
+                           gNoNestedPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNestedPartySubIDs
+                              , gsSeperator = tNestedPartySubID
+                              , gsBody = gNoNestedPartySubIDsBody''''''''' }
+                              where
+                              gNoNestedPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType                                  LT.new
+
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCollateralRequest :: FIXMessageSpec
+mCollateralRequest = FMSpec
+   { msName = "CollateralRequest"
+   , msType = C.pack "AX"
+   , msHeader = headerFIX44
+   , msBody = mCollateralRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCollateralRequestBody = 
+      LT.insert (tnum tCollReqID) tCollReqID $
+      LT.insert (tnum tCollAsgnReason) tCollAsgnReason $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tNoTrades) gNoTrades''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tMarginExcess) tMarginExcess $
+      LT.insert (tnum tTotalNetValue) tTotalNetValue $
+      LT.insert (tnum tCashOutstanding) tCashOutstanding $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees''' $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType $
+               LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTrades''' = FIXTag
+            { tName = "NoTrades"
+            , tnum = tnum tNoTrades
+            , tparser = gNoTradesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradesSpec''' }
+
+         gNoTradesP''' = groupP gNoTradesSpec'''
+         gNoTradesSpec''' = FGSpec
+            { gsLength = tNoTrades
+            , gsSeperator = tTradeReportID
+            , gsBody = gNoTradesBody''' }
+            where
+            gNoTradesBody''' = 
+               LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tCollAction) tCollAction                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCollateralAssignment :: FIXMessageSpec
+mCollateralAssignment = FMSpec
+   { msName = "CollateralAssignment"
+   , msType = C.pack "AY"
+   , msHeader = headerFIX44
+   , msBody = mCollateralAssignmentBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCollateralAssignmentBody = 
+      LT.insert (tnum tCollAsgnID) tCollAsgnID $
+      LT.insert (tnum tCollReqID) tCollReqID $
+      LT.insert (tnum tCollAsgnReason) tCollAsgnReason $
+      LT.insert (tnum tCollAsgnTransType) tCollAsgnTransType $
+      LT.insert (tnum tCollAsgnRefID) tCollAsgnRefID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tExpireTime) tExpireTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tNoTrades) gNoTrades''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tMarginExcess) tMarginExcess $
+      LT.insert (tnum tTotalNetValue) tTotalNetValue $
+      LT.insert (tnum tCashOutstanding) tCashOutstanding $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees''' $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tNoDlvyInst) gNoDlvyInst''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoDlvyInst''' = FIXTag
+            { tName = "NoDlvyInst"
+            , tnum = tnum tNoDlvyInst
+            , tparser = gNoDlvyInstP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec''' }
+
+         gNoDlvyInstP''' = groupP gNoDlvyInstSpec'''
+         gNoDlvyInstSpec''' = FGSpec
+            { gsLength = tNoDlvyInst
+            , gsSeperator = tSettlInstSource
+            , gsBody = gNoDlvyInstBody''' }
+            where
+            gNoDlvyInstBody''' = 
+               LT.insert (tnum tDlvyInstType) tDlvyInstType $
+               LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs''''''                LT.new
+               where
+                  gNoSettlPartyIDs'''''' = FIXTag
+                     { tName = "NoSettlPartyIDs"
+                     , tnum = tnum tNoSettlPartyIDs
+                     , tparser = gNoSettlPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec'''''' }
+
+                  gNoSettlPartyIDsP'''''' = groupP gNoSettlPartyIDsSpec''''''
+                  gNoSettlPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoSettlPartyIDs
+                     , gsSeperator = tSettlPartyID
+                     , gsBody = gNoSettlPartyIDsBody'''''' }
+                     where
+                     gNoSettlPartyIDsBody'''''' = 
+                        LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                        LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                        LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartySubIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartySubIDs"
+                              , tnum = tnum tNoSettlPartySubIDs
+                              , tparser = gNoSettlPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec''''''''' }
+
+                           gNoSettlPartySubIDsP''''''''' = groupP gNoSettlPartySubIDsSpec'''''''''
+                           gNoSettlPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartySubIDs
+                              , gsSeperator = tSettlPartySubID
+                              , gsBody = gNoSettlPartySubIDsBody''''''''' }
+                              where
+                              gNoSettlPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType $
+               LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTrades''' = FIXTag
+            { tName = "NoTrades"
+            , tnum = tnum tNoTrades
+            , tparser = gNoTradesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradesSpec''' }
+
+         gNoTradesP''' = groupP gNoTradesSpec'''
+         gNoTradesSpec''' = FGSpec
+            { gsLength = tNoTrades
+            , gsSeperator = tTradeReportID
+            , gsBody = gNoTradesBody''' }
+            where
+            gNoTradesBody''' = 
+               LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tCollAction) tCollAction                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCollateralResponse :: FIXMessageSpec
+mCollateralResponse = FMSpec
+   { msName = "CollateralResponse"
+   , msType = C.pack "AZ"
+   , msHeader = headerFIX44
+   , msBody = mCollateralResponseBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCollateralResponseBody = 
+      LT.insert (tnum tCollRespID) tCollRespID $
+      LT.insert (tnum tCollAsgnID) tCollAsgnID $
+      LT.insert (tnum tCollReqID) tCollReqID $
+      LT.insert (tnum tCollAsgnReason) tCollAsgnReason $
+      LT.insert (tnum tCollAsgnTransType) tCollAsgnTransType $
+      LT.insert (tnum tCollAsgnRespType) tCollAsgnRespType $
+      LT.insert (tnum tCollAsgnRejectReason) tCollAsgnRejectReason $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tNoTrades) gNoTrades''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tMarginExcess) tMarginExcess $
+      LT.insert (tnum tTotalNetValue) tTotalNetValue $
+      LT.insert (tnum tCashOutstanding) tCashOutstanding $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees''' $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType $
+               LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTrades''' = FIXTag
+            { tName = "NoTrades"
+            , tnum = tnum tNoTrades
+            , tparser = gNoTradesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradesSpec''' }
+
+         gNoTradesP''' = groupP gNoTradesSpec'''
+         gNoTradesSpec''' = FGSpec
+            { gsLength = tNoTrades
+            , gsSeperator = tTradeReportID
+            , gsBody = gNoTradesBody''' }
+            where
+            gNoTradesBody''' = 
+               LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips'''''' $
+               LT.insert (tnum tCollAction) tCollAction                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCollateralReport :: FIXMessageSpec
+mCollateralReport = FMSpec
+   { msName = "CollateralReport"
+   , msType = C.pack "BA"
+   , msHeader = headerFIX44
+   , msBody = mCollateralReportBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCollateralReportBody = 
+      LT.insert (tnum tCollRptID) tCollRptID $
+      LT.insert (tnum tCollInquiryID) tCollInquiryID $
+      LT.insert (tnum tCollStatus) tCollStatus $
+      LT.insert (tnum tTotNumReports) tTotNumReports $
+      LT.insert (tnum tLastRptRequested) tLastRptRequested $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tNoTrades) gNoTrades''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tMarginExcess) tMarginExcess $
+      LT.insert (tnum tTotalNetValue) tTotalNetValue $
+      LT.insert (tnum tCashOutstanding) tCashOutstanding $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tNoMiscFees) gNoMiscFees''' $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tNoDlvyInst) gNoDlvyInst''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoDlvyInst''' = FIXTag
+            { tName = "NoDlvyInst"
+            , tnum = tnum tNoDlvyInst
+            , tparser = gNoDlvyInstP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec''' }
+
+         gNoDlvyInstP''' = groupP gNoDlvyInstSpec'''
+         gNoDlvyInstSpec''' = FGSpec
+            { gsLength = tNoDlvyInst
+            , gsSeperator = tSettlInstSource
+            , gsBody = gNoDlvyInstBody''' }
+            where
+            gNoDlvyInstBody''' = 
+               LT.insert (tnum tDlvyInstType) tDlvyInstType $
+               LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs''''''                LT.new
+               where
+                  gNoSettlPartyIDs'''''' = FIXTag
+                     { tName = "NoSettlPartyIDs"
+                     , tnum = tnum tNoSettlPartyIDs
+                     , tparser = gNoSettlPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec'''''' }
+
+                  gNoSettlPartyIDsP'''''' = groupP gNoSettlPartyIDsSpec''''''
+                  gNoSettlPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoSettlPartyIDs
+                     , gsSeperator = tSettlPartyID
+                     , gsBody = gNoSettlPartyIDsBody'''''' }
+                     where
+                     gNoSettlPartyIDsBody'''''' = 
+                        LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                        LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                        LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartySubIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartySubIDs"
+                              , tnum = tnum tNoSettlPartySubIDs
+                              , tparser = gNoSettlPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec''''''''' }
+
+                           gNoSettlPartySubIDsP''''''''' = groupP gNoSettlPartySubIDsSpec'''''''''
+                           gNoSettlPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartySubIDs
+                              , gsSeperator = tSettlPartySubID
+                              , gsBody = gNoSettlPartySubIDsBody''''''''' }
+                              where
+                              gNoSettlPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoMiscFees''' = FIXTag
+            { tName = "NoMiscFees"
+            , tnum = tnum tNoMiscFees
+            , tparser = gNoMiscFeesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoMiscFeesSpec''' }
+
+         gNoMiscFeesP''' = groupP gNoMiscFeesSpec'''
+         gNoMiscFeesSpec''' = FGSpec
+            { gsLength = tNoMiscFees
+            , gsSeperator = tMiscFeeAmt
+            , gsBody = gNoMiscFeesBody''' }
+            where
+            gNoMiscFeesBody''' = 
+               LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+               LT.insert (tnum tMiscFeeType) tMiscFeeType $
+               LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis                LT.new
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTrades''' = FIXTag
+            { tName = "NoTrades"
+            , tnum = tnum tNoTrades
+            , tparser = gNoTradesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradesSpec''' }
+
+         gNoTradesP''' = groupP gNoTradesSpec'''
+         gNoTradesSpec''' = FGSpec
+            { gsLength = tNoTrades
+            , gsSeperator = tTradeReportID
+            , gsBody = gNoTradesBody''' }
+            where
+            gNoTradesBody''' = 
+               LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mCollateralInquiry :: FIXMessageSpec
+mCollateralInquiry = FMSpec
+   { msName = "CollateralInquiry"
+   , msType = C.pack "BB"
+   , msHeader = headerFIX44
+   , msBody = mCollateralInquiryBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCollateralInquiryBody = 
+      LT.insert (tnum tCollInquiryID) tCollInquiryID $
+      LT.insert (tnum tNoCollInquiryQualifier) gNoCollInquiryQualifier''' $
+      LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tNoTrades) gNoTrades''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tMarginExcess) tMarginExcess $
+      LT.insert (tnum tTotalNetValue) tTotalNetValue $
+      LT.insert (tnum tCashOutstanding) tCashOutstanding $
+      LT.insert (tnum tNoTrdRegTimestamps) gNoTrdRegTimestamps''' $
+      LT.insert (tnum tSide) tSide $
+      LT.insert (tnum tPrice) tPrice $
+      LT.insert (tnum tPriceType) tPriceType $
+      LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+      LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+      LT.insert (tnum tStartCash) tStartCash $
+      LT.insert (tnum tEndCash) tEndCash $
+      LT.insert (tnum tSpread) tSpread $
+      LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+      LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+      LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+      LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+      LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+      LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+      LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+      LT.insert (tnum tNoStipulations) gNoStipulations''' $
+      LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+      LT.insert (tnum tStandInstDbType) tStandInstDbType $
+      LT.insert (tnum tStandInstDbName) tStandInstDbName $
+      LT.insert (tnum tStandInstDbID) tStandInstDbID $
+      LT.insert (tnum tNoDlvyInst) gNoDlvyInst''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoCollInquiryQualifier''' = FIXTag
+            { tName = "NoCollInquiryQualifier"
+            , tnum = tnum tNoCollInquiryQualifier
+            , tparser = gNoCollInquiryQualifierP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoCollInquiryQualifierSpec''' }
+
+         gNoCollInquiryQualifierP''' = groupP gNoCollInquiryQualifierSpec'''
+         gNoCollInquiryQualifierSpec''' = FGSpec
+            { gsLength = tNoCollInquiryQualifier
+            , gsSeperator = tCollInquiryQualifier
+            , gsBody = gNoCollInquiryQualifierBody''' }
+            where
+            gNoCollInquiryQualifierBody''' = 
+               LT.new
+
+         gNoDlvyInst''' = FIXTag
+            { tName = "NoDlvyInst"
+            , tnum = tnum tNoDlvyInst
+            , tparser = gNoDlvyInstP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoDlvyInstSpec''' }
+
+         gNoDlvyInstP''' = groupP gNoDlvyInstSpec'''
+         gNoDlvyInstSpec''' = FGSpec
+            { gsLength = tNoDlvyInst
+            , gsSeperator = tSettlInstSource
+            , gsBody = gNoDlvyInstBody''' }
+            where
+            gNoDlvyInstBody''' = 
+               LT.insert (tnum tDlvyInstType) tDlvyInstType $
+               LT.insert (tnum tNoSettlPartyIDs) gNoSettlPartyIDs''''''                LT.new
+               where
+                  gNoSettlPartyIDs'''''' = FIXTag
+                     { tName = "NoSettlPartyIDs"
+                     , tnum = tnum tNoSettlPartyIDs
+                     , tparser = gNoSettlPartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoSettlPartyIDsSpec'''''' }
+
+                  gNoSettlPartyIDsP'''''' = groupP gNoSettlPartyIDsSpec''''''
+                  gNoSettlPartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoSettlPartyIDs
+                     , gsSeperator = tSettlPartyID
+                     , gsBody = gNoSettlPartyIDsBody'''''' }
+                     where
+                     gNoSettlPartyIDsBody'''''' = 
+                        LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+                        LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+                        LT.insert (tnum tNoSettlPartySubIDs) gNoSettlPartySubIDs'''''''''                         LT.new
+                        where
+                           gNoSettlPartySubIDs''''''''' = FIXTag
+                              { tName = "NoSettlPartySubIDs"
+                              , tnum = tnum tNoSettlPartySubIDs
+                              , tparser = gNoSettlPartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoSettlPartySubIDsSpec''''''''' }
+
+                           gNoSettlPartySubIDsP''''''''' = groupP gNoSettlPartySubIDsSpec'''''''''
+                           gNoSettlPartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoSettlPartySubIDs
+                              , gsSeperator = tSettlPartySubID
+                              , gsBody = gNoSettlPartySubIDsBody''''''''' }
+                              where
+                              gNoSettlPartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType                                  LT.new
+
+
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoStipulations''' = FIXTag
+            { tName = "NoStipulations"
+            , tnum = tnum tNoStipulations
+            , tparser = gNoStipulationsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoStipulationsSpec''' }
+
+         gNoStipulationsP''' = groupP gNoStipulationsSpec'''
+         gNoStipulationsSpec''' = FGSpec
+            { gsLength = tNoStipulations
+            , gsSeperator = tStipulationType
+            , gsBody = gNoStipulationsBody''' }
+            where
+            gNoStipulationsBody''' = 
+               LT.insert (tnum tStipulationValue) tStipulationValue                LT.new
+
+         gNoTrades''' = FIXTag
+            { tName = "NoTrades"
+            , tnum = tnum tNoTrades
+            , tparser = gNoTradesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradesSpec''' }
+
+         gNoTradesP''' = groupP gNoTradesSpec'''
+         gNoTradesSpec''' = FGSpec
+            { gsLength = tNoTrades
+            , gsSeperator = tTradeReportID
+            , gsBody = gNoTradesBody''' }
+            where
+            gNoTradesBody''' = 
+               LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID                LT.new
+
+         gNoTrdRegTimestamps''' = FIXTag
+            { tName = "NoTrdRegTimestamps"
+            , tnum = tnum tNoTrdRegTimestamps
+            , tparser = gNoTrdRegTimestampsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTrdRegTimestampsSpec''' }
+
+         gNoTrdRegTimestampsP''' = groupP gNoTrdRegTimestampsSpec'''
+         gNoTrdRegTimestampsSpec''' = FGSpec
+            { gsLength = tNoTrdRegTimestamps
+            , gsSeperator = tTrdRegTimestamp
+            , gsBody = gNoTrdRegTimestampsBody''' }
+            where
+            gNoTrdRegTimestampsBody''' = 
+               LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+               LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mNetworkCounterpartySystemStatusRequest :: FIXMessageSpec
+mNetworkCounterpartySystemStatusRequest = FMSpec
+   { msName = "NetworkCounterpartySystemStatusRequest"
+   , msType = C.pack "BC"
+   , msHeader = headerFIX44
+   , msBody = mNetworkCounterpartySystemStatusRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNetworkCounterpartySystemStatusRequestBody = 
+      LT.insert (tnum tNetworkRequestType) tNetworkRequestType $
+      LT.insert (tnum tNetworkRequestID) tNetworkRequestID $
+      LT.insert (tnum tNoCompIDs) gNoCompIDs'''       LT.new
+      where
+         gNoCompIDs''' = FIXTag
+            { tName = "NoCompIDs"
+            , tnum = tnum tNoCompIDs
+            , tparser = gNoCompIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoCompIDsSpec''' }
+
+         gNoCompIDsP''' = groupP gNoCompIDsSpec'''
+         gNoCompIDsSpec''' = FGSpec
+            { gsLength = tNoCompIDs
+            , gsSeperator = tRefCompID
+            , gsBody = gNoCompIDsBody''' }
+            where
+            gNoCompIDsBody''' = 
+               LT.insert (tnum tRefSubID) tRefSubID $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID                LT.new
+
+
+
+mNetworkCounterpartySystemStatusResponse :: FIXMessageSpec
+mNetworkCounterpartySystemStatusResponse = FMSpec
+   { msName = "NetworkCounterpartySystemStatusResponse"
+   , msType = C.pack "BD"
+   , msHeader = headerFIX44
+   , msBody = mNetworkCounterpartySystemStatusResponseBody
+   , msTrailer = trailerFIX44 }
+   where
+   mNetworkCounterpartySystemStatusResponseBody = 
+      LT.insert (tnum tNetworkStatusResponseType) tNetworkStatusResponseType $
+      LT.insert (tnum tNetworkRequestID) tNetworkRequestID $
+      LT.insert (tnum tNetworkResponseID) tNetworkResponseID $
+      LT.insert (tnum tLastNetworkResponseID) tLastNetworkResponseID $
+      LT.insert (tnum tNoCompIDs) gNoCompIDs'''       LT.new
+      where
+         gNoCompIDs''' = FIXTag
+            { tName = "NoCompIDs"
+            , tnum = tnum tNoCompIDs
+            , tparser = gNoCompIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoCompIDsSpec''' }
+
+         gNoCompIDsP''' = groupP gNoCompIDsSpec'''
+         gNoCompIDsSpec''' = FGSpec
+            { gsLength = tNoCompIDs
+            , gsSeperator = tRefCompID
+            , gsBody = gNoCompIDsBody''' }
+            where
+            gNoCompIDsBody''' = 
+               LT.insert (tnum tRefSubID) tRefSubID $
+               LT.insert (tnum tLocationID) tLocationID $
+               LT.insert (tnum tDeskID) tDeskID $
+               LT.insert (tnum tStatusValue) tStatusValue $
+               LT.insert (tnum tStatusText) tStatusText                LT.new
+
+
+
+mUserRequest :: FIXMessageSpec
+mUserRequest = FMSpec
+   { msName = "UserRequest"
+   , msType = C.pack "BE"
+   , msHeader = headerFIX44
+   , msBody = mUserRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mUserRequestBody = 
+      LT.insert (tnum tUserRequestID) tUserRequestID $
+      LT.insert (tnum tUserRequestType) tUserRequestType $
+      LT.insert (tnum tUsername) tUsername $
+      LT.insert (tnum tPassword) tPassword $
+      LT.insert (tnum tNewPassword) tNewPassword $
+      LT.insert (tnum tRawDataLength) tRawDataLength $
+      LT.insert (tnum tRawData) tRawData       LT.new
+
+
+mUserResponse :: FIXMessageSpec
+mUserResponse = FMSpec
+   { msName = "UserResponse"
+   , msType = C.pack "BF"
+   , msHeader = headerFIX44
+   , msBody = mUserResponseBody
+   , msTrailer = trailerFIX44 }
+   where
+   mUserResponseBody = 
+      LT.insert (tnum tUserRequestID) tUserRequestID $
+      LT.insert (tnum tUsername) tUsername $
+      LT.insert (tnum tUserStatus) tUserStatus $
+      LT.insert (tnum tUserStatusText) tUserStatusText       LT.new
+
+
+mCollateralInquiryAck :: FIXMessageSpec
+mCollateralInquiryAck = FMSpec
+   { msName = "CollateralInquiryAck"
+   , msType = C.pack "BG"
+   , msHeader = headerFIX44
+   , msBody = mCollateralInquiryAckBody
+   , msTrailer = trailerFIX44 }
+   where
+   mCollateralInquiryAckBody = 
+      LT.insert (tnum tCollInquiryID) tCollInquiryID $
+      LT.insert (tnum tCollInquiryStatus) tCollInquiryStatus $
+      LT.insert (tnum tCollInquiryResult) tCollInquiryResult $
+      LT.insert (tnum tNoCollInquiryQualifier) gNoCollInquiryQualifier''' $
+      LT.insert (tnum tTotNumReports) tTotNumReports $
+      LT.insert (tnum tNoPartyIDs) gNoPartyIDs''' $
+      LT.insert (tnum tAccount) tAccount $
+      LT.insert (tnum tAccountType) tAccountType $
+      LT.insert (tnum tClOrdID) tClOrdID $
+      LT.insert (tnum tOrderID) tOrderID $
+      LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+      LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+      LT.insert (tnum tNoExecs) gNoExecs''' $
+      LT.insert (tnum tNoTrades) gNoTrades''' $
+      LT.insert (tnum tSymbol) tSymbol $
+      LT.insert (tnum tSymbolSfx) tSymbolSfx $
+      LT.insert (tnum tSecurityID) tSecurityID $
+      LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+      LT.insert (tnum tNoSecurityAltID) gNoSecurityAltID''' $
+      LT.insert (tnum tProduct) tProduct $
+      LT.insert (tnum tCFICode) tCFICode $
+      LT.insert (tnum tSecurityType) tSecurityType $
+      LT.insert (tnum tSecuritySubType) tSecuritySubType $
+      LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+      LT.insert (tnum tMaturityDate) tMaturityDate $
+      LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+      LT.insert (tnum tIssueDate) tIssueDate $
+      LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+      LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+      LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+      LT.insert (tnum tFactor) tFactor $
+      LT.insert (tnum tCreditRating) tCreditRating $
+      LT.insert (tnum tInstrRegistry) tInstrRegistry $
+      LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+      LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+      LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+      LT.insert (tnum tRedemptionDate) tRedemptionDate $
+      LT.insert (tnum tStrikePrice) tStrikePrice $
+      LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+      LT.insert (tnum tOptAttribute) tOptAttribute $
+      LT.insert (tnum tContractMultiplier) tContractMultiplier $
+      LT.insert (tnum tCouponRate) tCouponRate $
+      LT.insert (tnum tSecurityExchange) tSecurityExchange $
+      LT.insert (tnum tIssuer) tIssuer $
+      LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+      LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+      LT.insert (tnum tSecurityDesc) tSecurityDesc $
+      LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+      LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+      LT.insert (tnum tPool) tPool $
+      LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+      LT.insert (tnum tCPProgram) tCPProgram $
+      LT.insert (tnum tCPRegType) tCPRegType $
+      LT.insert (tnum tNoEvents) gNoEvents''' $
+      LT.insert (tnum tDatedDate) tDatedDate $
+      LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+      LT.insert (tnum tAgreementDesc) tAgreementDesc $
+      LT.insert (tnum tAgreementID) tAgreementID $
+      LT.insert (tnum tAgreementDate) tAgreementDate $
+      LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+      LT.insert (tnum tTerminationType) tTerminationType $
+      LT.insert (tnum tStartDate) tStartDate $
+      LT.insert (tnum tEndDate) tEndDate $
+      LT.insert (tnum tDeliveryType) tDeliveryType $
+      LT.insert (tnum tMarginRatio) tMarginRatio $
+      LT.insert (tnum tSettlDate) tSettlDate $
+      LT.insert (tnum tQuantity) tQuantity $
+      LT.insert (tnum tQtyType) tQtyType $
+      LT.insert (tnum tCurrency) tCurrency $
+      LT.insert (tnum tNoLegs) gNoLegs''' $
+      LT.insert (tnum tNoUnderlyings) gNoUnderlyings''' $
+      LT.insert (tnum tTradingSessionID) tTradingSessionID $
+      LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+      LT.insert (tnum tSettlSessID) tSettlSessID $
+      LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+      LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+      LT.insert (tnum tResponseTransportType) tResponseTransportType $
+      LT.insert (tnum tResponseDestination) tResponseDestination $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoCollInquiryQualifier''' = FIXTag
+            { tName = "NoCollInquiryQualifier"
+            , tnum = tnum tNoCollInquiryQualifier
+            , tparser = gNoCollInquiryQualifierP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoCollInquiryQualifierSpec''' }
+
+         gNoCollInquiryQualifierP''' = groupP gNoCollInquiryQualifierSpec'''
+         gNoCollInquiryQualifierSpec''' = FGSpec
+            { gsLength = tNoCollInquiryQualifier
+            , gsSeperator = tCollInquiryQualifier
+            , gsBody = gNoCollInquiryQualifierBody''' }
+            where
+            gNoCollInquiryQualifierBody''' = 
+               LT.new
+
+         gNoEvents''' = FIXTag
+            { tName = "NoEvents"
+            , tnum = tnum tNoEvents
+            , tparser = gNoEventsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoEventsSpec''' }
+
+         gNoEventsP''' = groupP gNoEventsSpec'''
+         gNoEventsSpec''' = FGSpec
+            { gsLength = tNoEvents
+            , gsSeperator = tEventType
+            , gsBody = gNoEventsBody''' }
+            where
+            gNoEventsBody''' = 
+               LT.insert (tnum tEventDate) tEventDate $
+               LT.insert (tnum tEventPx) tEventPx $
+               LT.insert (tnum tEventText) tEventText                LT.new
+
+         gNoExecs''' = FIXTag
+            { tName = "NoExecs"
+            , tnum = tnum tNoExecs
+            , tparser = gNoExecsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoExecsSpec''' }
+
+         gNoExecsP''' = groupP gNoExecsSpec'''
+         gNoExecsSpec''' = FGSpec
+            { gsLength = tNoExecs
+            , gsSeperator = tExecID
+            , gsBody = gNoExecsBody''' }
+            where
+            gNoExecsBody''' = 
+               LT.new
+
+         gNoLegs''' = FIXTag
+            { tName = "NoLegs"
+            , tnum = tnum tNoLegs
+            , tparser = gNoLegsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoLegsSpec''' }
+
+         gNoLegsP''' = groupP gNoLegsSpec'''
+         gNoLegsSpec''' = FGSpec
+            { gsLength = tNoLegs
+            , gsSeperator = tLegSymbol
+            , gsBody = gNoLegsBody''' }
+            where
+            gNoLegsBody''' = 
+               LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+               LT.insert (tnum tLegSecurityID) tLegSecurityID $
+               LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+               LT.insert (tnum tNoLegSecurityAltID) gNoLegSecurityAltID'''''' $
+               LT.insert (tnum tLegProduct) tLegProduct $
+               LT.insert (tnum tLegCFICode) tLegCFICode $
+               LT.insert (tnum tLegSecurityType) tLegSecurityType $
+               LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+               LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+               LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+               LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+               LT.insert (tnum tLegIssueDate) tLegIssueDate $
+               LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+               LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+               LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+               LT.insert (tnum tLegFactor) tLegFactor $
+               LT.insert (tnum tLegCreditRating) tLegCreditRating $
+               LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+               LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+               LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+               LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+               LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+               LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+               LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+               LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+               LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+               LT.insert (tnum tLegCouponRate) tLegCouponRate $
+               LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+               LT.insert (tnum tLegIssuer) tLegIssuer $
+               LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+               LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+               LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+               LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+               LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+               LT.insert (tnum tLegRatioQty) tLegRatioQty $
+               LT.insert (tnum tLegSide) tLegSide $
+               LT.insert (tnum tLegCurrency) tLegCurrency $
+               LT.insert (tnum tLegPool) tLegPool $
+               LT.insert (tnum tLegDatedDate) tLegDatedDate $
+               LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+               LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate                LT.new
+               where
+                  gNoLegSecurityAltID'''''' = FIXTag
+                     { tName = "NoLegSecurityAltID"
+                     , tnum = tnum tNoLegSecurityAltID
+                     , tparser = gNoLegSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoLegSecurityAltIDSpec'''''' }
+
+                  gNoLegSecurityAltIDP'''''' = groupP gNoLegSecurityAltIDSpec''''''
+                  gNoLegSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoLegSecurityAltID
+                     , gsSeperator = tLegSecurityAltID
+                     , gsBody = gNoLegSecurityAltIDBody'''''' }
+                     where
+                     gNoLegSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource                         LT.new
+
+
+         gNoPartyIDs''' = FIXTag
+            { tName = "NoPartyIDs"
+            , tnum = tnum tNoPartyIDs
+            , tparser = gNoPartyIDsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoPartyIDsSpec''' }
+
+         gNoPartyIDsP''' = groupP gNoPartyIDsSpec'''
+         gNoPartyIDsSpec''' = FGSpec
+            { gsLength = tNoPartyIDs
+            , gsSeperator = tPartyID
+            , gsBody = gNoPartyIDsBody''' }
+            where
+            gNoPartyIDsBody''' = 
+               LT.insert (tnum tPartyIDSource) tPartyIDSource $
+               LT.insert (tnum tPartyRole) tPartyRole $
+               LT.insert (tnum tNoPartySubIDs) gNoPartySubIDs''''''                LT.new
+               where
+                  gNoPartySubIDs'''''' = FIXTag
+                     { tName = "NoPartySubIDs"
+                     , tnum = tnum tNoPartySubIDs
+                     , tparser = gNoPartySubIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoPartySubIDsSpec'''''' }
+
+                  gNoPartySubIDsP'''''' = groupP gNoPartySubIDsSpec''''''
+                  gNoPartySubIDsSpec'''''' = FGSpec
+                     { gsLength = tNoPartySubIDs
+                     , gsSeperator = tPartySubID
+                     , gsBody = gNoPartySubIDsBody'''''' }
+                     where
+                     gNoPartySubIDsBody'''''' = 
+                        LT.insert (tnum tPartySubIDType) tPartySubIDType                         LT.new
+
+
+         gNoSecurityAltID''' = FIXTag
+            { tName = "NoSecurityAltID"
+            , tnum = tnum tNoSecurityAltID
+            , tparser = gNoSecurityAltIDP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoSecurityAltIDSpec''' }
+
+         gNoSecurityAltIDP''' = groupP gNoSecurityAltIDSpec'''
+         gNoSecurityAltIDSpec''' = FGSpec
+            { gsLength = tNoSecurityAltID
+            , gsSeperator = tSecurityAltID
+            , gsBody = gNoSecurityAltIDBody''' }
+            where
+            gNoSecurityAltIDBody''' = 
+               LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource                LT.new
+
+         gNoTrades''' = FIXTag
+            { tName = "NoTrades"
+            , tnum = tnum tNoTrades
+            , tparser = gNoTradesP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoTradesSpec''' }
+
+         gNoTradesP''' = groupP gNoTradesSpec'''
+         gNoTradesSpec''' = FGSpec
+            { gsLength = tNoTrades
+            , gsSeperator = tTradeReportID
+            , gsBody = gNoTradesBody''' }
+            where
+            gNoTradesBody''' = 
+               LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID                LT.new
+
+         gNoUnderlyings''' = FIXTag
+            { tName = "NoUnderlyings"
+            , tnum = tnum tNoUnderlyings
+            , tparser = gNoUnderlyingsP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingsSpec''' }
+
+         gNoUnderlyingsP''' = groupP gNoUnderlyingsSpec'''
+         gNoUnderlyingsSpec''' = FGSpec
+            { gsLength = tNoUnderlyings
+            , gsSeperator = tUnderlyingSymbol
+            , gsBody = gNoUnderlyingsBody''' }
+            where
+            gNoUnderlyingsBody''' = 
+               LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+               LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+               LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+               LT.insert (tnum tNoUnderlyingSecurityAltID) gNoUnderlyingSecurityAltID'''''' $
+               LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+               LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+               LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+               LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+               LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+               LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+               LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+               LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+               LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+               LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+               LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+               LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+               LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+               LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+               LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+               LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+               LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+               LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+               LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+               LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+               LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+               LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+               LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+               LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+               LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+               LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+               LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+               LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+               LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+               LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+               LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+               LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+               LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+               LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+               LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+               LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+               LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+               LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+               LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+               LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+               LT.insert (tnum tNoUnderlyingStips) gNoUnderlyingStips''''''                LT.new
+               where
+                  gNoUnderlyingSecurityAltID'''''' = FIXTag
+                     { tName = "NoUnderlyingSecurityAltID"
+                     , tnum = tnum tNoUnderlyingSecurityAltID
+                     , tparser = gNoUnderlyingSecurityAltIDP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingSecurityAltIDSpec'''''' }
+
+                  gNoUnderlyingSecurityAltIDP'''''' = groupP gNoUnderlyingSecurityAltIDSpec''''''
+                  gNoUnderlyingSecurityAltIDSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingSecurityAltID
+                     , gsSeperator = tUnderlyingSecurityAltID
+                     , gsBody = gNoUnderlyingSecurityAltIDBody'''''' }
+                     where
+                     gNoUnderlyingSecurityAltIDBody'''''' = 
+                        LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource                         LT.new
+
+                  gNoUnderlyingStips'''''' = FIXTag
+                     { tName = "NoUnderlyingStips"
+                     , tnum = tnum tNoUnderlyingStips
+                     , tparser = gNoUnderlyingStipsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoUnderlyingStipsSpec'''''' }
+
+                  gNoUnderlyingStipsP'''''' = groupP gNoUnderlyingStipsSpec''''''
+                  gNoUnderlyingStipsSpec'''''' = FGSpec
+                     { gsLength = tNoUnderlyingStips
+                     , gsSeperator = tUnderlyingStipType
+                     , gsBody = gNoUnderlyingStipsBody'''''' }
+                     where
+                     gNoUnderlyingStipsBody'''''' = 
+                        LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue                         LT.new
+
+
+
+
+mConfirmationRequest :: FIXMessageSpec
+mConfirmationRequest = FMSpec
+   { msName = "ConfirmationRequest"
+   , msType = C.pack "BH"
+   , msHeader = headerFIX44
+   , msBody = mConfirmationRequestBody
+   , msTrailer = trailerFIX44 }
+   where
+   mConfirmationRequestBody = 
+      LT.insert (tnum tConfirmReqID) tConfirmReqID $
+      LT.insert (tnum tConfirmType) tConfirmType $
+      LT.insert (tnum tNoOrders) gNoOrders''' $
+      LT.insert (tnum tAllocID) tAllocID $
+      LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+      LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+      LT.insert (tnum tTransactTime) tTransactTime $
+      LT.insert (tnum tAllocAccount) tAllocAccount $
+      LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+      LT.insert (tnum tAllocAccountType) tAllocAccountType $
+      LT.insert (tnum tText) tText $
+      LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+      LT.insert (tnum tEncodedText) tEncodedText       LT.new
+      where
+         gNoOrders''' = FIXTag
+            { tName = "NoOrders"
+            , tnum = tnum tNoOrders
+            , tparser = gNoOrdersP'''
+            , arbitraryValue = arbibtraryFIXGroup gNoOrdersSpec''' }
+
+         gNoOrdersP''' = groupP gNoOrdersSpec'''
+         gNoOrdersSpec''' = FGSpec
+            { gsLength = tNoOrders
+            , gsSeperator = tClOrdID
+            , gsBody = gNoOrdersBody''' }
+            where
+            gNoOrdersBody''' = 
+               LT.insert (tnum tOrderID) tOrderID $
+               LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+               LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+               LT.insert (tnum tListID) tListID $
+               LT.insert (tnum tNoNested2PartyIDs) gNoNested2PartyIDs'''''' $
+               LT.insert (tnum tOrderQty) tOrderQty $
+               LT.insert (tnum tOrderAvgPx) tOrderAvgPx $
+               LT.insert (tnum tOrderBookingQty) tOrderBookingQty                LT.new
+               where
+                  gNoNested2PartyIDs'''''' = FIXTag
+                     { tName = "NoNested2PartyIDs"
+                     , tnum = tnum tNoNested2PartyIDs
+                     , tparser = gNoNested2PartyIDsP''''''
+                     , arbitraryValue = arbibtraryFIXGroup gNoNested2PartyIDsSpec'''''' }
+
+                  gNoNested2PartyIDsP'''''' = groupP gNoNested2PartyIDsSpec''''''
+                  gNoNested2PartyIDsSpec'''''' = FGSpec
+                     { gsLength = tNoNested2PartyIDs
+                     , gsSeperator = tNested2PartyID
+                     , gsBody = gNoNested2PartyIDsBody'''''' }
+                     where
+                     gNoNested2PartyIDsBody'''''' = 
+                        LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+                        LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+                        LT.insert (tnum tNoNested2PartySubIDs) gNoNested2PartySubIDs'''''''''                         LT.new
+                        where
+                           gNoNested2PartySubIDs''''''''' = FIXTag
+                              { tName = "NoNested2PartySubIDs"
+                              , tnum = tnum tNoNested2PartySubIDs
+                              , tparser = gNoNested2PartySubIDsP'''''''''
+                              , arbitraryValue = arbibtraryFIXGroup gNoNested2PartySubIDsSpec''''''''' }
+
+                           gNoNested2PartySubIDsP''''''''' = groupP gNoNested2PartySubIDsSpec'''''''''
+                           gNoNested2PartySubIDsSpec''''''''' = FGSpec
+                              { gsLength = tNoNested2PartySubIDs
+                              , gsSeperator = tNested2PartySubID
+                              , gsBody = gNoNested2PartySubIDsBody''''''''' }
+                              where
+                              gNoNested2PartySubIDsBody''''''''' = 
+                                 LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType                                  LT.new
+
+
+
+
+
+fix44 :: FIXSpec
+fix44 = FSpec
+   { fsVersion = "FIX.4.4"
+   , fsHeader = headerFIX44
+   , fsTrailer = trailerFIX44
+   , fsMessages = fix44Messages 
+   , fsTags = fix44Tags }
+   where
+      fix44Messages =
+          LT.insert (msType mHeartbeat) mHeartbeat $
+          LT.insert (msType mTestRequest) mTestRequest $
+          LT.insert (msType mResendRequest) mResendRequest $
+          LT.insert (msType mReject) mReject $
+          LT.insert (msType mSequenceReset) mSequenceReset $
+          LT.insert (msType mLogout) mLogout $
+          LT.insert (msType mIOI) mIOI $
+          LT.insert (msType mAdvertisement) mAdvertisement $
+          LT.insert (msType mExecutionReport) mExecutionReport $
+          LT.insert (msType mOrderCancelReject) mOrderCancelReject $
+          LT.insert (msType mLogon) mLogon $
+          LT.insert (msType mNews) mNews $
+          LT.insert (msType mEmail) mEmail $
+          LT.insert (msType mNewOrderSingle) mNewOrderSingle $
+          LT.insert (msType mNewOrderList) mNewOrderList $
+          LT.insert (msType mOrderCancelRequest) mOrderCancelRequest $
+          LT.insert (msType mOrderCancelReplaceRequest) mOrderCancelReplaceRequest $
+          LT.insert (msType mOrderStatusRequest) mOrderStatusRequest $
+          LT.insert (msType mAllocationInstruction) mAllocationInstruction $
+          LT.insert (msType mListCancelRequest) mListCancelRequest $
+          LT.insert (msType mListExecute) mListExecute $
+          LT.insert (msType mListStatusRequest) mListStatusRequest $
+          LT.insert (msType mListStatus) mListStatus $
+          LT.insert (msType mAllocationInstructionAck) mAllocationInstructionAck $
+          LT.insert (msType mDontKnowTrade) mDontKnowTrade $
+          LT.insert (msType mQuoteRequest) mQuoteRequest $
+          LT.insert (msType mQuote) mQuote $
+          LT.insert (msType mSettlementInstructions) mSettlementInstructions $
+          LT.insert (msType mMarketDataRequest) mMarketDataRequest $
+          LT.insert (msType mMarketDataSnapshotFullRefresh) mMarketDataSnapshotFullRefresh $
+          LT.insert (msType mMarketDataIncrementalRefresh) mMarketDataIncrementalRefresh $
+          LT.insert (msType mMarketDataRequestReject) mMarketDataRequestReject $
+          LT.insert (msType mQuoteCancel) mQuoteCancel $
+          LT.insert (msType mQuoteStatusRequest) mQuoteStatusRequest $
+          LT.insert (msType mMassQuoteAcknowledgement) mMassQuoteAcknowledgement $
+          LT.insert (msType mSecurityDefinitionRequest) mSecurityDefinitionRequest $
+          LT.insert (msType mSecurityDefinition) mSecurityDefinition $
+          LT.insert (msType mSecurityStatusRequest) mSecurityStatusRequest $
+          LT.insert (msType mSecurityStatus) mSecurityStatus $
+          LT.insert (msType mTradingSessionStatusRequest) mTradingSessionStatusRequest $
+          LT.insert (msType mTradingSessionStatus) mTradingSessionStatus $
+          LT.insert (msType mMassQuote) mMassQuote $
+          LT.insert (msType mBusinessMessageReject) mBusinessMessageReject $
+          LT.insert (msType mBidRequest) mBidRequest $
+          LT.insert (msType mBidResponse) mBidResponse $
+          LT.insert (msType mListStrikePrice) mListStrikePrice $
+          LT.insert (msType mRegistrationInstructions) mRegistrationInstructions $
+          LT.insert (msType mRegistrationInstructionsResponse) mRegistrationInstructionsResponse $
+          LT.insert (msType mOrderMassCancelRequest) mOrderMassCancelRequest $
+          LT.insert (msType mOrderMassCancelReport) mOrderMassCancelReport $
+          LT.insert (msType mNewOrderCross) mNewOrderCross $
+          LT.insert (msType mCrossOrderCancelReplaceRequest) mCrossOrderCancelReplaceRequest $
+          LT.insert (msType mCrossOrderCancelRequest) mCrossOrderCancelRequest $
+          LT.insert (msType mSecurityTypeRequest) mSecurityTypeRequest $
+          LT.insert (msType mSecurityTypes) mSecurityTypes $
+          LT.insert (msType mSecurityListRequest) mSecurityListRequest $
+          LT.insert (msType mSecurityList) mSecurityList $
+          LT.insert (msType mDerivativeSecurityListRequest) mDerivativeSecurityListRequest $
+          LT.insert (msType mDerivativeSecurityList) mDerivativeSecurityList $
+          LT.insert (msType mNewOrderMultileg) mNewOrderMultileg $
+          LT.insert (msType mMultilegOrderCancelReplace) mMultilegOrderCancelReplace $
+          LT.insert (msType mTradeCaptureReportRequest) mTradeCaptureReportRequest $
+          LT.insert (msType mTradeCaptureReport) mTradeCaptureReport $
+          LT.insert (msType mOrderMassStatusRequest) mOrderMassStatusRequest $
+          LT.insert (msType mQuoteRequestReject) mQuoteRequestReject $
+          LT.insert (msType mRFQRequest) mRFQRequest $
+          LT.insert (msType mQuoteStatusReport) mQuoteStatusReport $
+          LT.insert (msType mQuoteResponse) mQuoteResponse $
+          LT.insert (msType mConfirmation) mConfirmation $
+          LT.insert (msType mPositionMaintenanceRequest) mPositionMaintenanceRequest $
+          LT.insert (msType mPositionMaintenanceReport) mPositionMaintenanceReport $
+          LT.insert (msType mRequestForPositions) mRequestForPositions $
+          LT.insert (msType mRequestForPositionsAck) mRequestForPositionsAck $
+          LT.insert (msType mPositionReport) mPositionReport $
+          LT.insert (msType mTradeCaptureReportRequestAck) mTradeCaptureReportRequestAck $
+          LT.insert (msType mTradeCaptureReportAck) mTradeCaptureReportAck $
+          LT.insert (msType mAllocationReport) mAllocationReport $
+          LT.insert (msType mAllocationReportAck) mAllocationReportAck $
+          LT.insert (msType mConfirmationAck) mConfirmationAck $
+          LT.insert (msType mSettlementInstructionRequest) mSettlementInstructionRequest $
+          LT.insert (msType mAssignmentReport) mAssignmentReport $
+          LT.insert (msType mCollateralRequest) mCollateralRequest $
+          LT.insert (msType mCollateralAssignment) mCollateralAssignment $
+          LT.insert (msType mCollateralResponse) mCollateralResponse $
+          LT.insert (msType mCollateralReport) mCollateralReport $
+          LT.insert (msType mCollateralInquiry) mCollateralInquiry $
+          LT.insert (msType mNetworkCounterpartySystemStatusRequest) mNetworkCounterpartySystemStatusRequest $
+          LT.insert (msType mNetworkCounterpartySystemStatusResponse) mNetworkCounterpartySystemStatusResponse $
+          LT.insert (msType mUserRequest) mUserRequest $
+          LT.insert (msType mUserResponse) mUserResponse $
+          LT.insert (msType mCollateralInquiryAck) mCollateralInquiryAck $
+          LT.insert (msType mConfirmationRequest) mConfirmationRequest           LT.new 
+      fix44Tags =
+          LT.insert (tnum tAccount) tAccount $
+          LT.insert (tnum tAdvId) tAdvId $
+          LT.insert (tnum tAdvRefID) tAdvRefID $
+          LT.insert (tnum tAdvSide) tAdvSide $
+          LT.insert (tnum tAdvTransType) tAdvTransType $
+          LT.insert (tnum tAvgPx) tAvgPx $
+          LT.insert (tnum tBeginSeqNo) tBeginSeqNo $
+          LT.insert (tnum tBeginString) tBeginString $
+          LT.insert (tnum tBodyLength) tBodyLength $
+          LT.insert (tnum tCheckSum) tCheckSum $
+          LT.insert (tnum tClOrdID) tClOrdID $
+          LT.insert (tnum tCommission) tCommission $
+          LT.insert (tnum tCommType) tCommType $
+          LT.insert (tnum tCumQty) tCumQty $
+          LT.insert (tnum tCurrency) tCurrency $
+          LT.insert (tnum tEndSeqNo) tEndSeqNo $
+          LT.insert (tnum tExecID) tExecID $
+          LT.insert (tnum tExecInst) tExecInst $
+          LT.insert (tnum tExecRefID) tExecRefID $
+          LT.insert (tnum tExecTransType) tExecTransType $
+          LT.insert (tnum tHandlInst) tHandlInst $
+          LT.insert (tnum tSecurityIDSource) tSecurityIDSource $
+          LT.insert (tnum tIOIID) tIOIID $
+          LT.insert (tnum tIOIOthSvc) tIOIOthSvc $
+          LT.insert (tnum tIOIQltyInd) tIOIQltyInd $
+          LT.insert (tnum tIOIRefID) tIOIRefID $
+          LT.insert (tnum tIOIQty) tIOIQty $
+          LT.insert (tnum tIOITransType) tIOITransType $
+          LT.insert (tnum tLastCapacity) tLastCapacity $
+          LT.insert (tnum tLastMkt) tLastMkt $
+          LT.insert (tnum tLastPx) tLastPx $
+          LT.insert (tnum tLastQty) tLastQty $
+          LT.insert (tnum tNoLinesOfText) tNoLinesOfText $
+          LT.insert (tnum tMsgSeqNum) tMsgSeqNum $
+          LT.insert (tnum tMsgType) tMsgType $
+          LT.insert (tnum tNewSeqNo) tNewSeqNo $
+          LT.insert (tnum tOrderID) tOrderID $
+          LT.insert (tnum tOrderQty) tOrderQty $
+          LT.insert (tnum tOrdStatus) tOrdStatus $
+          LT.insert (tnum tOrdType) tOrdType $
+          LT.insert (tnum tOrigClOrdID) tOrigClOrdID $
+          LT.insert (tnum tOrigTime) tOrigTime $
+          LT.insert (tnum tPossDupFlag) tPossDupFlag $
+          LT.insert (tnum tPrice) tPrice $
+          LT.insert (tnum tRefSeqNum) tRefSeqNum $
+          LT.insert (tnum tRelatdSym) tRelatdSym $
+          LT.insert (tnum tRule80A) tRule80A $
+          LT.insert (tnum tSecurityID) tSecurityID $
+          LT.insert (tnum tSenderCompID) tSenderCompID $
+          LT.insert (tnum tSenderSubID) tSenderSubID $
+          LT.insert (tnum tSendingDate) tSendingDate $
+          LT.insert (tnum tSendingTime) tSendingTime $
+          LT.insert (tnum tQuantity) tQuantity $
+          LT.insert (tnum tSide) tSide $
+          LT.insert (tnum tSymbol) tSymbol $
+          LT.insert (tnum tTargetCompID) tTargetCompID $
+          LT.insert (tnum tTargetSubID) tTargetSubID $
+          LT.insert (tnum tText) tText $
+          LT.insert (tnum tTimeInForce) tTimeInForce $
+          LT.insert (tnum tTransactTime) tTransactTime $
+          LT.insert (tnum tUrgency) tUrgency $
+          LT.insert (tnum tValidUntilTime) tValidUntilTime $
+          LT.insert (tnum tSettlType) tSettlType $
+          LT.insert (tnum tSettlDate) tSettlDate $
+          LT.insert (tnum tSymbolSfx) tSymbolSfx $
+          LT.insert (tnum tListID) tListID $
+          LT.insert (tnum tListSeqNo) tListSeqNo $
+          LT.insert (tnum tTotNoOrders) tTotNoOrders $
+          LT.insert (tnum tListExecInst) tListExecInst $
+          LT.insert (tnum tAllocID) tAllocID $
+          LT.insert (tnum tAllocTransType) tAllocTransType $
+          LT.insert (tnum tRefAllocID) tRefAllocID $
+          LT.insert (tnum tNoOrders) tNoOrders $
+          LT.insert (tnum tAvgPxPrecision) tAvgPxPrecision $
+          LT.insert (tnum tTradeDate) tTradeDate $
+          LT.insert (tnum tExecBroker) tExecBroker $
+          LT.insert (tnum tPositionEffect) tPositionEffect $
+          LT.insert (tnum tNoAllocs) tNoAllocs $
+          LT.insert (tnum tAllocAccount) tAllocAccount $
+          LT.insert (tnum tAllocQty) tAllocQty $
+          LT.insert (tnum tProcessCode) tProcessCode $
+          LT.insert (tnum tNoRpts) tNoRpts $
+          LT.insert (tnum tRptSeq) tRptSeq $
+          LT.insert (tnum tCxlQty) tCxlQty $
+          LT.insert (tnum tNoDlvyInst) tNoDlvyInst $
+          LT.insert (tnum tDlvyInst) tDlvyInst $
+          LT.insert (tnum tAllocStatus) tAllocStatus $
+          LT.insert (tnum tAllocRejCode) tAllocRejCode $
+          LT.insert (tnum tSignature) tSignature $
+          LT.insert (tnum tSecureDataLen) tSecureDataLen $
+          LT.insert (tnum tSecureData) tSecureData $
+          LT.insert (tnum tBrokerOfCredit) tBrokerOfCredit $
+          LT.insert (tnum tSignatureLength) tSignatureLength $
+          LT.insert (tnum tEmailType) tEmailType $
+          LT.insert (tnum tRawDataLength) tRawDataLength $
+          LT.insert (tnum tRawData) tRawData $
+          LT.insert (tnum tPossResend) tPossResend $
+          LT.insert (tnum tEncryptMethod) tEncryptMethod $
+          LT.insert (tnum tStopPx) tStopPx $
+          LT.insert (tnum tExDestination) tExDestination $
+          LT.insert (tnum tCxlRejReason) tCxlRejReason $
+          LT.insert (tnum tOrdRejReason) tOrdRejReason $
+          LT.insert (tnum tIOIQualifier) tIOIQualifier $
+          LT.insert (tnum tWaveNo) tWaveNo $
+          LT.insert (tnum tIssuer) tIssuer $
+          LT.insert (tnum tSecurityDesc) tSecurityDesc $
+          LT.insert (tnum tHeartBtInt) tHeartBtInt $
+          LT.insert (tnum tClientID) tClientID $
+          LT.insert (tnum tMinQty) tMinQty $
+          LT.insert (tnum tMaxFloor) tMaxFloor $
+          LT.insert (tnum tTestReqID) tTestReqID $
+          LT.insert (tnum tReportToExch) tReportToExch $
+          LT.insert (tnum tLocateReqd) tLocateReqd $
+          LT.insert (tnum tOnBehalfOfCompID) tOnBehalfOfCompID $
+          LT.insert (tnum tOnBehalfOfSubID) tOnBehalfOfSubID $
+          LT.insert (tnum tQuoteID) tQuoteID $
+          LT.insert (tnum tNetMoney) tNetMoney $
+          LT.insert (tnum tSettlCurrAmt) tSettlCurrAmt $
+          LT.insert (tnum tSettlCurrency) tSettlCurrency $
+          LT.insert (tnum tForexReq) tForexReq $
+          LT.insert (tnum tOrigSendingTime) tOrigSendingTime $
+          LT.insert (tnum tGapFillFlag) tGapFillFlag $
+          LT.insert (tnum tNoExecs) tNoExecs $
+          LT.insert (tnum tCxlType) tCxlType $
+          LT.insert (tnum tExpireTime) tExpireTime $
+          LT.insert (tnum tDKReason) tDKReason $
+          LT.insert (tnum tDeliverToCompID) tDeliverToCompID $
+          LT.insert (tnum tDeliverToSubID) tDeliverToSubID $
+          LT.insert (tnum tIOINaturalFlag) tIOINaturalFlag $
+          LT.insert (tnum tQuoteReqID) tQuoteReqID $
+          LT.insert (tnum tBidPx) tBidPx $
+          LT.insert (tnum tOfferPx) tOfferPx $
+          LT.insert (tnum tBidSize) tBidSize $
+          LT.insert (tnum tOfferSize) tOfferSize $
+          LT.insert (tnum tNoMiscFees) tNoMiscFees $
+          LT.insert (tnum tMiscFeeAmt) tMiscFeeAmt $
+          LT.insert (tnum tMiscFeeCurr) tMiscFeeCurr $
+          LT.insert (tnum tMiscFeeType) tMiscFeeType $
+          LT.insert (tnum tPrevClosePx) tPrevClosePx $
+          LT.insert (tnum tResetSeqNumFlag) tResetSeqNumFlag $
+          LT.insert (tnum tSenderLocationID) tSenderLocationID $
+          LT.insert (tnum tTargetLocationID) tTargetLocationID $
+          LT.insert (tnum tOnBehalfOfLocationID) tOnBehalfOfLocationID $
+          LT.insert (tnum tDeliverToLocationID) tDeliverToLocationID $
+          LT.insert (tnum tNoRelatedSym) tNoRelatedSym $
+          LT.insert (tnum tSubject) tSubject $
+          LT.insert (tnum tHeadline) tHeadline $
+          LT.insert (tnum tURLLink) tURLLink $
+          LT.insert (tnum tExecType) tExecType $
+          LT.insert (tnum tLeavesQty) tLeavesQty $
+          LT.insert (tnum tCashOrderQty) tCashOrderQty $
+          LT.insert (tnum tAllocAvgPx) tAllocAvgPx $
+          LT.insert (tnum tAllocNetMoney) tAllocNetMoney $
+          LT.insert (tnum tSettlCurrFxRate) tSettlCurrFxRate $
+          LT.insert (tnum tSettlCurrFxRateCalc) tSettlCurrFxRateCalc $
+          LT.insert (tnum tNumDaysInterest) tNumDaysInterest $
+          LT.insert (tnum tAccruedInterestRate) tAccruedInterestRate $
+          LT.insert (tnum tAccruedInterestAmt) tAccruedInterestAmt $
+          LT.insert (tnum tSettlInstMode) tSettlInstMode $
+          LT.insert (tnum tAllocText) tAllocText $
+          LT.insert (tnum tSettlInstID) tSettlInstID $
+          LT.insert (tnum tSettlInstTransType) tSettlInstTransType $
+          LT.insert (tnum tEmailThreadID) tEmailThreadID $
+          LT.insert (tnum tSettlInstSource) tSettlInstSource $
+          LT.insert (tnum tSettlLocation) tSettlLocation $
+          LT.insert (tnum tSecurityType) tSecurityType $
+          LT.insert (tnum tEffectiveTime) tEffectiveTime $
+          LT.insert (tnum tStandInstDbType) tStandInstDbType $
+          LT.insert (tnum tStandInstDbName) tStandInstDbName $
+          LT.insert (tnum tStandInstDbID) tStandInstDbID $
+          LT.insert (tnum tSettlDeliveryType) tSettlDeliveryType $
+          LT.insert (tnum tSettlDepositoryCode) tSettlDepositoryCode $
+          LT.insert (tnum tSettlBrkrCode) tSettlBrkrCode $
+          LT.insert (tnum tSettlInstCode) tSettlInstCode $
+          LT.insert (tnum tSecuritySettlAgentName) tSecuritySettlAgentName $
+          LT.insert (tnum tSecuritySettlAgentCode) tSecuritySettlAgentCode $
+          LT.insert (tnum tSecuritySettlAgentAcctNum) tSecuritySettlAgentAcctNum $
+          LT.insert (tnum tSecuritySettlAgentAcctName) tSecuritySettlAgentAcctName $
+          LT.insert (tnum tSecuritySettlAgentContactName) tSecuritySettlAgentContactName $
+          LT.insert (tnum tSecuritySettlAgentContactPhone) tSecuritySettlAgentContactPhone $
+          LT.insert (tnum tCashSettlAgentName) tCashSettlAgentName $
+          LT.insert (tnum tCashSettlAgentCode) tCashSettlAgentCode $
+          LT.insert (tnum tCashSettlAgentAcctNum) tCashSettlAgentAcctNum $
+          LT.insert (tnum tCashSettlAgentAcctName) tCashSettlAgentAcctName $
+          LT.insert (tnum tCashSettlAgentContactName) tCashSettlAgentContactName $
+          LT.insert (tnum tCashSettlAgentContactPhone) tCashSettlAgentContactPhone $
+          LT.insert (tnum tBidSpotRate) tBidSpotRate $
+          LT.insert (tnum tBidForwardPoints) tBidForwardPoints $
+          LT.insert (tnum tOfferSpotRate) tOfferSpotRate $
+          LT.insert (tnum tOfferForwardPoints) tOfferForwardPoints $
+          LT.insert (tnum tOrderQty2) tOrderQty2 $
+          LT.insert (tnum tSettlDate2) tSettlDate2 $
+          LT.insert (tnum tLastSpotRate) tLastSpotRate $
+          LT.insert (tnum tLastForwardPoints) tLastForwardPoints $
+          LT.insert (tnum tAllocLinkID) tAllocLinkID $
+          LT.insert (tnum tAllocLinkType) tAllocLinkType $
+          LT.insert (tnum tSecondaryOrderID) tSecondaryOrderID $
+          LT.insert (tnum tNoIOIQualifiers) tNoIOIQualifiers $
+          LT.insert (tnum tMaturityMonthYear) tMaturityMonthYear $
+          LT.insert (tnum tPutOrCall) tPutOrCall $
+          LT.insert (tnum tStrikePrice) tStrikePrice $
+          LT.insert (tnum tCoveredOrUncovered) tCoveredOrUncovered $
+          LT.insert (tnum tCustomerOrFirm) tCustomerOrFirm $
+          LT.insert (tnum tMaturityDay) tMaturityDay $
+          LT.insert (tnum tOptAttribute) tOptAttribute $
+          LT.insert (tnum tSecurityExchange) tSecurityExchange $
+          LT.insert (tnum tNotifyBrokerOfCredit) tNotifyBrokerOfCredit $
+          LT.insert (tnum tAllocHandlInst) tAllocHandlInst $
+          LT.insert (tnum tMaxShow) tMaxShow $
+          LT.insert (tnum tPegOffsetValue) tPegOffsetValue $
+          LT.insert (tnum tXmlDataLen) tXmlDataLen $
+          LT.insert (tnum tXmlData) tXmlData $
+          LT.insert (tnum tSettlInstRefID) tSettlInstRefID $
+          LT.insert (tnum tNoRoutingIDs) tNoRoutingIDs $
+          LT.insert (tnum tRoutingType) tRoutingType $
+          LT.insert (tnum tRoutingID) tRoutingID $
+          LT.insert (tnum tSpread) tSpread $
+          LT.insert (tnum tBenchmark) tBenchmark $
+          LT.insert (tnum tBenchmarkCurveCurrency) tBenchmarkCurveCurrency $
+          LT.insert (tnum tBenchmarkCurveName) tBenchmarkCurveName $
+          LT.insert (tnum tBenchmarkCurvePoint) tBenchmarkCurvePoint $
+          LT.insert (tnum tCouponRate) tCouponRate $
+          LT.insert (tnum tCouponPaymentDate) tCouponPaymentDate $
+          LT.insert (tnum tIssueDate) tIssueDate $
+          LT.insert (tnum tRepurchaseTerm) tRepurchaseTerm $
+          LT.insert (tnum tRepurchaseRate) tRepurchaseRate $
+          LT.insert (tnum tFactor) tFactor $
+          LT.insert (tnum tTradeOriginationDate) tTradeOriginationDate $
+          LT.insert (tnum tExDate) tExDate $
+          LT.insert (tnum tContractMultiplier) tContractMultiplier $
+          LT.insert (tnum tNoStipulations) tNoStipulations $
+          LT.insert (tnum tStipulationType) tStipulationType $
+          LT.insert (tnum tStipulationValue) tStipulationValue $
+          LT.insert (tnum tYieldType) tYieldType $
+          LT.insert (tnum tYield) tYield $
+          LT.insert (tnum tTotalTakedown) tTotalTakedown $
+          LT.insert (tnum tConcession) tConcession $
+          LT.insert (tnum tRepoCollateralSecurityType) tRepoCollateralSecurityType $
+          LT.insert (tnum tRedemptionDate) tRedemptionDate $
+          LT.insert (tnum tUnderlyingCouponPaymentDate) tUnderlyingCouponPaymentDate $
+          LT.insert (tnum tUnderlyingIssueDate) tUnderlyingIssueDate $
+          LT.insert (tnum tUnderlyingRepoCollateralSecurityType) tUnderlyingRepoCollateralSecurityType $
+          LT.insert (tnum tUnderlyingRepurchaseTerm) tUnderlyingRepurchaseTerm $
+          LT.insert (tnum tUnderlyingRepurchaseRate) tUnderlyingRepurchaseRate $
+          LT.insert (tnum tUnderlyingFactor) tUnderlyingFactor $
+          LT.insert (tnum tUnderlyingRedemptionDate) tUnderlyingRedemptionDate $
+          LT.insert (tnum tLegCouponPaymentDate) tLegCouponPaymentDate $
+          LT.insert (tnum tLegIssueDate) tLegIssueDate $
+          LT.insert (tnum tLegRepoCollateralSecurityType) tLegRepoCollateralSecurityType $
+          LT.insert (tnum tLegRepurchaseTerm) tLegRepurchaseTerm $
+          LT.insert (tnum tLegRepurchaseRate) tLegRepurchaseRate $
+          LT.insert (tnum tLegFactor) tLegFactor $
+          LT.insert (tnum tLegRedemptionDate) tLegRedemptionDate $
+          LT.insert (tnum tCreditRating) tCreditRating $
+          LT.insert (tnum tUnderlyingCreditRating) tUnderlyingCreditRating $
+          LT.insert (tnum tLegCreditRating) tLegCreditRating $
+          LT.insert (tnum tTradedFlatSwitch) tTradedFlatSwitch $
+          LT.insert (tnum tBasisFeatureDate) tBasisFeatureDate $
+          LT.insert (tnum tBasisFeaturePrice) tBasisFeaturePrice $
+          LT.insert (tnum tMDReqID) tMDReqID $
+          LT.insert (tnum tSubscriptionRequestType) tSubscriptionRequestType $
+          LT.insert (tnum tMarketDepth) tMarketDepth $
+          LT.insert (tnum tMDUpdateType) tMDUpdateType $
+          LT.insert (tnum tAggregatedBook) tAggregatedBook $
+          LT.insert (tnum tNoMDEntryTypes) tNoMDEntryTypes $
+          LT.insert (tnum tNoMDEntries) tNoMDEntries $
+          LT.insert (tnum tMDEntryType) tMDEntryType $
+          LT.insert (tnum tMDEntryPx) tMDEntryPx $
+          LT.insert (tnum tMDEntrySize) tMDEntrySize $
+          LT.insert (tnum tMDEntryDate) tMDEntryDate $
+          LT.insert (tnum tMDEntryTime) tMDEntryTime $
+          LT.insert (tnum tTickDirection) tTickDirection $
+          LT.insert (tnum tMDMkt) tMDMkt $
+          LT.insert (tnum tQuoteCondition) tQuoteCondition $
+          LT.insert (tnum tTradeCondition) tTradeCondition $
+          LT.insert (tnum tMDEntryID) tMDEntryID $
+          LT.insert (tnum tMDUpdateAction) tMDUpdateAction $
+          LT.insert (tnum tMDEntryRefID) tMDEntryRefID $
+          LT.insert (tnum tMDReqRejReason) tMDReqRejReason $
+          LT.insert (tnum tMDEntryOriginator) tMDEntryOriginator $
+          LT.insert (tnum tLocationID) tLocationID $
+          LT.insert (tnum tDeskID) tDeskID $
+          LT.insert (tnum tDeleteReason) tDeleteReason $
+          LT.insert (tnum tOpenCloseSettlFlag) tOpenCloseSettlFlag $
+          LT.insert (tnum tSellerDays) tSellerDays $
+          LT.insert (tnum tMDEntryBuyer) tMDEntryBuyer $
+          LT.insert (tnum tMDEntrySeller) tMDEntrySeller $
+          LT.insert (tnum tMDEntryPositionNo) tMDEntryPositionNo $
+          LT.insert (tnum tFinancialStatus) tFinancialStatus $
+          LT.insert (tnum tCorporateAction) tCorporateAction $
+          LT.insert (tnum tDefBidSize) tDefBidSize $
+          LT.insert (tnum tDefOfferSize) tDefOfferSize $
+          LT.insert (tnum tNoQuoteEntries) tNoQuoteEntries $
+          LT.insert (tnum tNoQuoteSets) tNoQuoteSets $
+          LT.insert (tnum tQuoteStatus) tQuoteStatus $
+          LT.insert (tnum tQuoteCancelType) tQuoteCancelType $
+          LT.insert (tnum tQuoteEntryID) tQuoteEntryID $
+          LT.insert (tnum tQuoteRejectReason) tQuoteRejectReason $
+          LT.insert (tnum tQuoteResponseLevel) tQuoteResponseLevel $
+          LT.insert (tnum tQuoteSetID) tQuoteSetID $
+          LT.insert (tnum tQuoteRequestType) tQuoteRequestType $
+          LT.insert (tnum tTotNoQuoteEntries) tTotNoQuoteEntries $
+          LT.insert (tnum tUnderlyingSecurityIDSource) tUnderlyingSecurityIDSource $
+          LT.insert (tnum tUnderlyingIssuer) tUnderlyingIssuer $
+          LT.insert (tnum tUnderlyingSecurityDesc) tUnderlyingSecurityDesc $
+          LT.insert (tnum tUnderlyingSecurityExchange) tUnderlyingSecurityExchange $
+          LT.insert (tnum tUnderlyingSecurityID) tUnderlyingSecurityID $
+          LT.insert (tnum tUnderlyingSecurityType) tUnderlyingSecurityType $
+          LT.insert (tnum tUnderlyingSymbol) tUnderlyingSymbol $
+          LT.insert (tnum tUnderlyingSymbolSfx) tUnderlyingSymbolSfx $
+          LT.insert (tnum tUnderlyingMaturityMonthYear) tUnderlyingMaturityMonthYear $
+          LT.insert (tnum tUnderlyingMaturityDay) tUnderlyingMaturityDay $
+          LT.insert (tnum tUnderlyingPutOrCall) tUnderlyingPutOrCall $
+          LT.insert (tnum tUnderlyingStrikePrice) tUnderlyingStrikePrice $
+          LT.insert (tnum tUnderlyingOptAttribute) tUnderlyingOptAttribute $
+          LT.insert (tnum tUnderlyingCurrency) tUnderlyingCurrency $
+          LT.insert (tnum tRatioQty) tRatioQty $
+          LT.insert (tnum tSecurityReqID) tSecurityReqID $
+          LT.insert (tnum tSecurityRequestType) tSecurityRequestType $
+          LT.insert (tnum tSecurityResponseID) tSecurityResponseID $
+          LT.insert (tnum tSecurityResponseType) tSecurityResponseType $
+          LT.insert (tnum tSecurityStatusReqID) tSecurityStatusReqID $
+          LT.insert (tnum tUnsolicitedIndicator) tUnsolicitedIndicator $
+          LT.insert (tnum tSecurityTradingStatus) tSecurityTradingStatus $
+          LT.insert (tnum tHaltReasonChar) tHaltReasonChar $
+          LT.insert (tnum tInViewOfCommon) tInViewOfCommon $
+          LT.insert (tnum tDueToRelated) tDueToRelated $
+          LT.insert (tnum tBuyVolume) tBuyVolume $
+          LT.insert (tnum tSellVolume) tSellVolume $
+          LT.insert (tnum tHighPx) tHighPx $
+          LT.insert (tnum tLowPx) tLowPx $
+          LT.insert (tnum tAdjustment) tAdjustment $
+          LT.insert (tnum tTradSesReqID) tTradSesReqID $
+          LT.insert (tnum tTradingSessionID) tTradingSessionID $
+          LT.insert (tnum tContraTrader) tContraTrader $
+          LT.insert (tnum tTradSesMethod) tTradSesMethod $
+          LT.insert (tnum tTradSesMode) tTradSesMode $
+          LT.insert (tnum tTradSesStatus) tTradSesStatus $
+          LT.insert (tnum tTradSesStartTime) tTradSesStartTime $
+          LT.insert (tnum tTradSesOpenTime) tTradSesOpenTime $
+          LT.insert (tnum tTradSesPreCloseTime) tTradSesPreCloseTime $
+          LT.insert (tnum tTradSesCloseTime) tTradSesCloseTime $
+          LT.insert (tnum tTradSesEndTime) tTradSesEndTime $
+          LT.insert (tnum tNumberOfOrders) tNumberOfOrders $
+          LT.insert (tnum tMessageEncoding) tMessageEncoding $
+          LT.insert (tnum tEncodedIssuerLen) tEncodedIssuerLen $
+          LT.insert (tnum tEncodedIssuer) tEncodedIssuer $
+          LT.insert (tnum tEncodedSecurityDescLen) tEncodedSecurityDescLen $
+          LT.insert (tnum tEncodedSecurityDesc) tEncodedSecurityDesc $
+          LT.insert (tnum tEncodedListExecInstLen) tEncodedListExecInstLen $
+          LT.insert (tnum tEncodedListExecInst) tEncodedListExecInst $
+          LT.insert (tnum tEncodedTextLen) tEncodedTextLen $
+          LT.insert (tnum tEncodedText) tEncodedText $
+          LT.insert (tnum tEncodedSubjectLen) tEncodedSubjectLen $
+          LT.insert (tnum tEncodedSubject) tEncodedSubject $
+          LT.insert (tnum tEncodedHeadlineLen) tEncodedHeadlineLen $
+          LT.insert (tnum tEncodedHeadline) tEncodedHeadline $
+          LT.insert (tnum tEncodedAllocTextLen) tEncodedAllocTextLen $
+          LT.insert (tnum tEncodedAllocText) tEncodedAllocText $
+          LT.insert (tnum tEncodedUnderlyingIssuerLen) tEncodedUnderlyingIssuerLen $
+          LT.insert (tnum tEncodedUnderlyingIssuer) tEncodedUnderlyingIssuer $
+          LT.insert (tnum tEncodedUnderlyingSecurityDescLen) tEncodedUnderlyingSecurityDescLen $
+          LT.insert (tnum tEncodedUnderlyingSecurityDesc) tEncodedUnderlyingSecurityDesc $
+          LT.insert (tnum tAllocPrice) tAllocPrice $
+          LT.insert (tnum tQuoteSetValidUntilTime) tQuoteSetValidUntilTime $
+          LT.insert (tnum tQuoteEntryRejectReason) tQuoteEntryRejectReason $
+          LT.insert (tnum tLastMsgSeqNumProcessed) tLastMsgSeqNumProcessed $
+          LT.insert (tnum tOnBehalfOfSendingTime) tOnBehalfOfSendingTime $
+          LT.insert (tnum tRefTagID) tRefTagID $
+          LT.insert (tnum tRefMsgType) tRefMsgType $
+          LT.insert (tnum tSessionRejectReason) tSessionRejectReason $
+          LT.insert (tnum tBidRequestTransType) tBidRequestTransType $
+          LT.insert (tnum tContraBroker) tContraBroker $
+          LT.insert (tnum tComplianceID) tComplianceID $
+          LT.insert (tnum tSolicitedFlag) tSolicitedFlag $
+          LT.insert (tnum tExecRestatementReason) tExecRestatementReason $
+          LT.insert (tnum tBusinessRejectRefID) tBusinessRejectRefID $
+          LT.insert (tnum tBusinessRejectReason) tBusinessRejectReason $
+          LT.insert (tnum tGrossTradeAmt) tGrossTradeAmt $
+          LT.insert (tnum tNoContraBrokers) tNoContraBrokers $
+          LT.insert (tnum tMaxMessageSize) tMaxMessageSize $
+          LT.insert (tnum tNoMsgTypes) tNoMsgTypes $
+          LT.insert (tnum tMsgDirection) tMsgDirection $
+          LT.insert (tnum tNoTradingSessions) tNoTradingSessions $
+          LT.insert (tnum tTotalVolumeTraded) tTotalVolumeTraded $
+          LT.insert (tnum tDiscretionInst) tDiscretionInst $
+          LT.insert (tnum tDiscretionOffsetValue) tDiscretionOffsetValue $
+          LT.insert (tnum tBidID) tBidID $
+          LT.insert (tnum tClientBidID) tClientBidID $
+          LT.insert (tnum tListName) tListName $
+          LT.insert (tnum tTotNoRelatedSym) tTotNoRelatedSym $
+          LT.insert (tnum tBidType) tBidType $
+          LT.insert (tnum tNumTickets) tNumTickets $
+          LT.insert (tnum tSideValue1) tSideValue1 $
+          LT.insert (tnum tSideValue2) tSideValue2 $
+          LT.insert (tnum tNoBidDescriptors) tNoBidDescriptors $
+          LT.insert (tnum tBidDescriptorType) tBidDescriptorType $
+          LT.insert (tnum tBidDescriptor) tBidDescriptor $
+          LT.insert (tnum tSideValueInd) tSideValueInd $
+          LT.insert (tnum tLiquidityPctLow) tLiquidityPctLow $
+          LT.insert (tnum tLiquidityPctHigh) tLiquidityPctHigh $
+          LT.insert (tnum tLiquidityValue) tLiquidityValue $
+          LT.insert (tnum tEFPTrackingError) tEFPTrackingError $
+          LT.insert (tnum tFairValue) tFairValue $
+          LT.insert (tnum tOutsideIndexPct) tOutsideIndexPct $
+          LT.insert (tnum tValueOfFutures) tValueOfFutures $
+          LT.insert (tnum tLiquidityIndType) tLiquidityIndType $
+          LT.insert (tnum tWtAverageLiquidity) tWtAverageLiquidity $
+          LT.insert (tnum tExchangeForPhysical) tExchangeForPhysical $
+          LT.insert (tnum tOutMainCntryUIndex) tOutMainCntryUIndex $
+          LT.insert (tnum tCrossPercent) tCrossPercent $
+          LT.insert (tnum tProgRptReqs) tProgRptReqs $
+          LT.insert (tnum tProgPeriodInterval) tProgPeriodInterval $
+          LT.insert (tnum tIncTaxInd) tIncTaxInd $
+          LT.insert (tnum tNumBidders) tNumBidders $
+          LT.insert (tnum tBidTradeType) tBidTradeType $
+          LT.insert (tnum tBasisPxType) tBasisPxType $
+          LT.insert (tnum tNoBidComponents) tNoBidComponents $
+          LT.insert (tnum tCountry) tCountry $
+          LT.insert (tnum tTotNoStrikes) tTotNoStrikes $
+          LT.insert (tnum tPriceType) tPriceType $
+          LT.insert (tnum tDayOrderQty) tDayOrderQty $
+          LT.insert (tnum tDayCumQty) tDayCumQty $
+          LT.insert (tnum tDayAvgPx) tDayAvgPx $
+          LT.insert (tnum tGTBookingInst) tGTBookingInst $
+          LT.insert (tnum tNoStrikes) tNoStrikes $
+          LT.insert (tnum tListStatusType) tListStatusType $
+          LT.insert (tnum tNetGrossInd) tNetGrossInd $
+          LT.insert (tnum tListOrderStatus) tListOrderStatus $
+          LT.insert (tnum tExpireDate) tExpireDate $
+          LT.insert (tnum tListExecInstType) tListExecInstType $
+          LT.insert (tnum tCxlRejResponseTo) tCxlRejResponseTo $
+          LT.insert (tnum tUnderlyingCouponRate) tUnderlyingCouponRate $
+          LT.insert (tnum tUnderlyingContractMultiplier) tUnderlyingContractMultiplier $
+          LT.insert (tnum tContraTradeQty) tContraTradeQty $
+          LT.insert (tnum tContraTradeTime) tContraTradeTime $
+          LT.insert (tnum tClearingFirm) tClearingFirm $
+          LT.insert (tnum tClearingAccount) tClearingAccount $
+          LT.insert (tnum tLiquidityNumSecurities) tLiquidityNumSecurities $
+          LT.insert (tnum tMultiLegReportingType) tMultiLegReportingType $
+          LT.insert (tnum tStrikeTime) tStrikeTime $
+          LT.insert (tnum tListStatusText) tListStatusText $
+          LT.insert (tnum tEncodedListStatusTextLen) tEncodedListStatusTextLen $
+          LT.insert (tnum tEncodedListStatusText) tEncodedListStatusText $
+          LT.insert (tnum tPartyIDSource) tPartyIDSource $
+          LT.insert (tnum tPartyID) tPartyID $
+          LT.insert (tnum tTotalVolumeTradedDate) tTotalVolumeTradedDate $
+          LT.insert (tnum tTotalVolumeTradedTime) tTotalVolumeTradedTime $
+          LT.insert (tnum tNetChgPrevDay) tNetChgPrevDay $
+          LT.insert (tnum tPartyRole) tPartyRole $
+          LT.insert (tnum tNoPartyIDs) tNoPartyIDs $
+          LT.insert (tnum tNoSecurityAltID) tNoSecurityAltID $
+          LT.insert (tnum tSecurityAltID) tSecurityAltID $
+          LT.insert (tnum tSecurityAltIDSource) tSecurityAltIDSource $
+          LT.insert (tnum tNoUnderlyingSecurityAltID) tNoUnderlyingSecurityAltID $
+          LT.insert (tnum tUnderlyingSecurityAltID) tUnderlyingSecurityAltID $
+          LT.insert (tnum tUnderlyingSecurityAltIDSource) tUnderlyingSecurityAltIDSource $
+          LT.insert (tnum tProduct) tProduct $
+          LT.insert (tnum tCFICode) tCFICode $
+          LT.insert (tnum tUnderlyingProduct) tUnderlyingProduct $
+          LT.insert (tnum tUnderlyingCFICode) tUnderlyingCFICode $
+          LT.insert (tnum tTestMessageIndicator) tTestMessageIndicator $
+          LT.insert (tnum tQuantityType) tQuantityType $
+          LT.insert (tnum tBookingRefID) tBookingRefID $
+          LT.insert (tnum tIndividualAllocID) tIndividualAllocID $
+          LT.insert (tnum tRoundingDirection) tRoundingDirection $
+          LT.insert (tnum tRoundingModulus) tRoundingModulus $
+          LT.insert (tnum tCountryOfIssue) tCountryOfIssue $
+          LT.insert (tnum tStateOrProvinceOfIssue) tStateOrProvinceOfIssue $
+          LT.insert (tnum tLocaleOfIssue) tLocaleOfIssue $
+          LT.insert (tnum tNoRegistDtls) tNoRegistDtls $
+          LT.insert (tnum tMailingDtls) tMailingDtls $
+          LT.insert (tnum tInvestorCountryOfResidence) tInvestorCountryOfResidence $
+          LT.insert (tnum tPaymentRef) tPaymentRef $
+          LT.insert (tnum tDistribPaymentMethod) tDistribPaymentMethod $
+          LT.insert (tnum tCashDistribCurr) tCashDistribCurr $
+          LT.insert (tnum tCommCurrency) tCommCurrency $
+          LT.insert (tnum tCancellationRights) tCancellationRights $
+          LT.insert (tnum tMoneyLaunderingStatus) tMoneyLaunderingStatus $
+          LT.insert (tnum tMailingInst) tMailingInst $
+          LT.insert (tnum tTransBkdTime) tTransBkdTime $
+          LT.insert (tnum tExecPriceType) tExecPriceType $
+          LT.insert (tnum tExecPriceAdjustment) tExecPriceAdjustment $
+          LT.insert (tnum tDateOfBirth) tDateOfBirth $
+          LT.insert (tnum tTradeReportTransType) tTradeReportTransType $
+          LT.insert (tnum tCardHolderName) tCardHolderName $
+          LT.insert (tnum tCardNumber) tCardNumber $
+          LT.insert (tnum tCardExpDate) tCardExpDate $
+          LT.insert (tnum tCardIssNum) tCardIssNum $
+          LT.insert (tnum tPaymentMethod) tPaymentMethod $
+          LT.insert (tnum tRegistAcctType) tRegistAcctType $
+          LT.insert (tnum tDesignation) tDesignation $
+          LT.insert (tnum tTaxAdvantageType) tTaxAdvantageType $
+          LT.insert (tnum tRegistRejReasonText) tRegistRejReasonText $
+          LT.insert (tnum tFundRenewWaiv) tFundRenewWaiv $
+          LT.insert (tnum tCashDistribAgentName) tCashDistribAgentName $
+          LT.insert (tnum tCashDistribAgentCode) tCashDistribAgentCode $
+          LT.insert (tnum tCashDistribAgentAcctNumber) tCashDistribAgentAcctNumber $
+          LT.insert (tnum tCashDistribPayRef) tCashDistribPayRef $
+          LT.insert (tnum tCashDistribAgentAcctName) tCashDistribAgentAcctName $
+          LT.insert (tnum tCardStartDate) tCardStartDate $
+          LT.insert (tnum tPaymentDate) tPaymentDate $
+          LT.insert (tnum tPaymentRemitterID) tPaymentRemitterID $
+          LT.insert (tnum tRegistStatus) tRegistStatus $
+          LT.insert (tnum tRegistRejReasonCode) tRegistRejReasonCode $
+          LT.insert (tnum tRegistRefID) tRegistRefID $
+          LT.insert (tnum tRegistDtls) tRegistDtls $
+          LT.insert (tnum tNoDistribInsts) tNoDistribInsts $
+          LT.insert (tnum tRegistEmail) tRegistEmail $
+          LT.insert (tnum tDistribPercentage) tDistribPercentage $
+          LT.insert (tnum tRegistID) tRegistID $
+          LT.insert (tnum tRegistTransType) tRegistTransType $
+          LT.insert (tnum tExecValuationPoint) tExecValuationPoint $
+          LT.insert (tnum tOrderPercent) tOrderPercent $
+          LT.insert (tnum tOwnershipType) tOwnershipType $
+          LT.insert (tnum tNoContAmts) tNoContAmts $
+          LT.insert (tnum tContAmtType) tContAmtType $
+          LT.insert (tnum tContAmtValue) tContAmtValue $
+          LT.insert (tnum tContAmtCurr) tContAmtCurr $
+          LT.insert (tnum tOwnerType) tOwnerType $
+          LT.insert (tnum tPartySubID) tPartySubID $
+          LT.insert (tnum tNestedPartyID) tNestedPartyID $
+          LT.insert (tnum tNestedPartyIDSource) tNestedPartyIDSource $
+          LT.insert (tnum tSecondaryClOrdID) tSecondaryClOrdID $
+          LT.insert (tnum tSecondaryExecID) tSecondaryExecID $
+          LT.insert (tnum tOrderCapacity) tOrderCapacity $
+          LT.insert (tnum tOrderRestrictions) tOrderRestrictions $
+          LT.insert (tnum tMassCancelRequestType) tMassCancelRequestType $
+          LT.insert (tnum tMassCancelResponse) tMassCancelResponse $
+          LT.insert (tnum tMassCancelRejectReason) tMassCancelRejectReason $
+          LT.insert (tnum tTotalAffectedOrders) tTotalAffectedOrders $
+          LT.insert (tnum tNoAffectedOrders) tNoAffectedOrders $
+          LT.insert (tnum tAffectedOrderID) tAffectedOrderID $
+          LT.insert (tnum tAffectedSecondaryOrderID) tAffectedSecondaryOrderID $
+          LT.insert (tnum tQuoteType) tQuoteType $
+          LT.insert (tnum tNestedPartyRole) tNestedPartyRole $
+          LT.insert (tnum tNoNestedPartyIDs) tNoNestedPartyIDs $
+          LT.insert (tnum tTotalAccruedInterestAmt) tTotalAccruedInterestAmt $
+          LT.insert (tnum tMaturityDate) tMaturityDate $
+          LT.insert (tnum tUnderlyingMaturityDate) tUnderlyingMaturityDate $
+          LT.insert (tnum tInstrRegistry) tInstrRegistry $
+          LT.insert (tnum tCashMargin) tCashMargin $
+          LT.insert (tnum tNestedPartySubID) tNestedPartySubID $
+          LT.insert (tnum tScope) tScope $
+          LT.insert (tnum tMDImplicitDelete) tMDImplicitDelete $
+          LT.insert (tnum tCrossID) tCrossID $
+          LT.insert (tnum tCrossType) tCrossType $
+          LT.insert (tnum tCrossPrioritization) tCrossPrioritization $
+          LT.insert (tnum tOrigCrossID) tOrigCrossID $
+          LT.insert (tnum tNoSides) tNoSides $
+          LT.insert (tnum tUsername) tUsername $
+          LT.insert (tnum tPassword) tPassword $
+          LT.insert (tnum tNoLegs) tNoLegs $
+          LT.insert (tnum tLegCurrency) tLegCurrency $
+          LT.insert (tnum tTotNoSecurityTypes) tTotNoSecurityTypes $
+          LT.insert (tnum tNoSecurityTypes) tNoSecurityTypes $
+          LT.insert (tnum tSecurityListRequestType) tSecurityListRequestType $
+          LT.insert (tnum tSecurityRequestResult) tSecurityRequestResult $
+          LT.insert (tnum tRoundLot) tRoundLot $
+          LT.insert (tnum tMinTradeVol) tMinTradeVol $
+          LT.insert (tnum tMultiLegRptTypeReq) tMultiLegRptTypeReq $
+          LT.insert (tnum tLegPositionEffect) tLegPositionEffect $
+          LT.insert (tnum tLegCoveredOrUncovered) tLegCoveredOrUncovered $
+          LT.insert (tnum tLegPrice) tLegPrice $
+          LT.insert (tnum tTradSesStatusRejReason) tTradSesStatusRejReason $
+          LT.insert (tnum tTradeRequestID) tTradeRequestID $
+          LT.insert (tnum tTradeRequestType) tTradeRequestType $
+          LT.insert (tnum tPreviouslyReported) tPreviouslyReported $
+          LT.insert (tnum tTradeReportID) tTradeReportID $
+          LT.insert (tnum tTradeReportRefID) tTradeReportRefID $
+          LT.insert (tnum tMatchStatus) tMatchStatus $
+          LT.insert (tnum tMatchType) tMatchType $
+          LT.insert (tnum tOddLot) tOddLot $
+          LT.insert (tnum tNoClearingInstructions) tNoClearingInstructions $
+          LT.insert (tnum tClearingInstruction) tClearingInstruction $
+          LT.insert (tnum tTradeInputSource) tTradeInputSource $
+          LT.insert (tnum tTradeInputDevice) tTradeInputDevice $
+          LT.insert (tnum tNoDates) tNoDates $
+          LT.insert (tnum tAccountType) tAccountType $
+          LT.insert (tnum tCustOrderCapacity) tCustOrderCapacity $
+          LT.insert (tnum tClOrdLinkID) tClOrdLinkID $
+          LT.insert (tnum tMassStatusReqID) tMassStatusReqID $
+          LT.insert (tnum tMassStatusReqType) tMassStatusReqType $
+          LT.insert (tnum tOrigOrdModTime) tOrigOrdModTime $
+          LT.insert (tnum tLegSettlType) tLegSettlType $
+          LT.insert (tnum tLegSettlDate) tLegSettlDate $
+          LT.insert (tnum tDayBookingInst) tDayBookingInst $
+          LT.insert (tnum tBookingUnit) tBookingUnit $
+          LT.insert (tnum tPreallocMethod) tPreallocMethod $
+          LT.insert (tnum tUnderlyingCountryOfIssue) tUnderlyingCountryOfIssue $
+          LT.insert (tnum tUnderlyingStateOrProvinceOfIssue) tUnderlyingStateOrProvinceOfIssue $
+          LT.insert (tnum tUnderlyingLocaleOfIssue) tUnderlyingLocaleOfIssue $
+          LT.insert (tnum tUnderlyingInstrRegistry) tUnderlyingInstrRegistry $
+          LT.insert (tnum tLegCountryOfIssue) tLegCountryOfIssue $
+          LT.insert (tnum tLegStateOrProvinceOfIssue) tLegStateOrProvinceOfIssue $
+          LT.insert (tnum tLegLocaleOfIssue) tLegLocaleOfIssue $
+          LT.insert (tnum tLegInstrRegistry) tLegInstrRegistry $
+          LT.insert (tnum tLegSymbol) tLegSymbol $
+          LT.insert (tnum tLegSymbolSfx) tLegSymbolSfx $
+          LT.insert (tnum tLegSecurityID) tLegSecurityID $
+          LT.insert (tnum tLegSecurityIDSource) tLegSecurityIDSource $
+          LT.insert (tnum tNoLegSecurityAltID) tNoLegSecurityAltID $
+          LT.insert (tnum tLegSecurityAltID) tLegSecurityAltID $
+          LT.insert (tnum tLegSecurityAltIDSource) tLegSecurityAltIDSource $
+          LT.insert (tnum tLegProduct) tLegProduct $
+          LT.insert (tnum tLegCFICode) tLegCFICode $
+          LT.insert (tnum tLegSecurityType) tLegSecurityType $
+          LT.insert (tnum tLegMaturityMonthYear) tLegMaturityMonthYear $
+          LT.insert (tnum tLegMaturityDate) tLegMaturityDate $
+          LT.insert (tnum tLegStrikePrice) tLegStrikePrice $
+          LT.insert (tnum tLegOptAttribute) tLegOptAttribute $
+          LT.insert (tnum tLegContractMultiplier) tLegContractMultiplier $
+          LT.insert (tnum tLegCouponRate) tLegCouponRate $
+          LT.insert (tnum tLegSecurityExchange) tLegSecurityExchange $
+          LT.insert (tnum tLegIssuer) tLegIssuer $
+          LT.insert (tnum tEncodedLegIssuerLen) tEncodedLegIssuerLen $
+          LT.insert (tnum tEncodedLegIssuer) tEncodedLegIssuer $
+          LT.insert (tnum tLegSecurityDesc) tLegSecurityDesc $
+          LT.insert (tnum tEncodedLegSecurityDescLen) tEncodedLegSecurityDescLen $
+          LT.insert (tnum tEncodedLegSecurityDesc) tEncodedLegSecurityDesc $
+          LT.insert (tnum tLegRatioQty) tLegRatioQty $
+          LT.insert (tnum tLegSide) tLegSide $
+          LT.insert (tnum tTradingSessionSubID) tTradingSessionSubID $
+          LT.insert (tnum tAllocType) tAllocType $
+          LT.insert (tnum tNoHops) tNoHops $
+          LT.insert (tnum tHopCompID) tHopCompID $
+          LT.insert (tnum tHopSendingTime) tHopSendingTime $
+          LT.insert (tnum tHopRefID) tHopRefID $
+          LT.insert (tnum tMidPx) tMidPx $
+          LT.insert (tnum tBidYield) tBidYield $
+          LT.insert (tnum tMidYield) tMidYield $
+          LT.insert (tnum tOfferYield) tOfferYield $
+          LT.insert (tnum tClearingFeeIndicator) tClearingFeeIndicator $
+          LT.insert (tnum tWorkingIndicator) tWorkingIndicator $
+          LT.insert (tnum tLegLastPx) tLegLastPx $
+          LT.insert (tnum tPriorityIndicator) tPriorityIndicator $
+          LT.insert (tnum tPriceImprovement) tPriceImprovement $
+          LT.insert (tnum tPrice2) tPrice2 $
+          LT.insert (tnum tLastForwardPoints2) tLastForwardPoints2 $
+          LT.insert (tnum tBidForwardPoints2) tBidForwardPoints2 $
+          LT.insert (tnum tOfferForwardPoints2) tOfferForwardPoints2 $
+          LT.insert (tnum tRFQReqID) tRFQReqID $
+          LT.insert (tnum tMktBidPx) tMktBidPx $
+          LT.insert (tnum tMktOfferPx) tMktOfferPx $
+          LT.insert (tnum tMinBidSize) tMinBidSize $
+          LT.insert (tnum tMinOfferSize) tMinOfferSize $
+          LT.insert (tnum tQuoteStatusReqID) tQuoteStatusReqID $
+          LT.insert (tnum tLegalConfirm) tLegalConfirm $
+          LT.insert (tnum tUnderlyingLastPx) tUnderlyingLastPx $
+          LT.insert (tnum tUnderlyingLastQty) tUnderlyingLastQty $
+          LT.insert (tnum tSecDefStatus) tSecDefStatus $
+          LT.insert (tnum tLegRefID) tLegRefID $
+          LT.insert (tnum tContraLegRefID) tContraLegRefID $
+          LT.insert (tnum tSettlCurrBidFxRate) tSettlCurrBidFxRate $
+          LT.insert (tnum tSettlCurrOfferFxRate) tSettlCurrOfferFxRate $
+          LT.insert (tnum tQuoteRequestRejectReason) tQuoteRequestRejectReason $
+          LT.insert (tnum tSideComplianceID) tSideComplianceID $
+          LT.insert (tnum tAcctIDSource) tAcctIDSource $
+          LT.insert (tnum tAllocAcctIDSource) tAllocAcctIDSource $
+          LT.insert (tnum tBenchmarkPrice) tBenchmarkPrice $
+          LT.insert (tnum tBenchmarkPriceType) tBenchmarkPriceType $
+          LT.insert (tnum tConfirmID) tConfirmID $
+          LT.insert (tnum tConfirmStatus) tConfirmStatus $
+          LT.insert (tnum tConfirmTransType) tConfirmTransType $
+          LT.insert (tnum tContractSettlMonth) tContractSettlMonth $
+          LT.insert (tnum tDeliveryForm) tDeliveryForm $
+          LT.insert (tnum tLastParPx) tLastParPx $
+          LT.insert (tnum tNoLegAllocs) tNoLegAllocs $
+          LT.insert (tnum tLegAllocAccount) tLegAllocAccount $
+          LT.insert (tnum tLegIndividualAllocID) tLegIndividualAllocID $
+          LT.insert (tnum tLegAllocQty) tLegAllocQty $
+          LT.insert (tnum tLegAllocAcctIDSource) tLegAllocAcctIDSource $
+          LT.insert (tnum tLegSettlCurrency) tLegSettlCurrency $
+          LT.insert (tnum tLegBenchmarkCurveCurrency) tLegBenchmarkCurveCurrency $
+          LT.insert (tnum tLegBenchmarkCurveName) tLegBenchmarkCurveName $
+          LT.insert (tnum tLegBenchmarkCurvePoint) tLegBenchmarkCurvePoint $
+          LT.insert (tnum tLegBenchmarkPrice) tLegBenchmarkPrice $
+          LT.insert (tnum tLegBenchmarkPriceType) tLegBenchmarkPriceType $
+          LT.insert (tnum tLegBidPx) tLegBidPx $
+          LT.insert (tnum tLegIOIQty) tLegIOIQty $
+          LT.insert (tnum tNoLegStipulations) tNoLegStipulations $
+          LT.insert (tnum tLegOfferPx) tLegOfferPx $
+          LT.insert (tnum tLegOrderQty) tLegOrderQty $
+          LT.insert (tnum tLegPriceType) tLegPriceType $
+          LT.insert (tnum tLegQty) tLegQty $
+          LT.insert (tnum tLegStipulationType) tLegStipulationType $
+          LT.insert (tnum tLegStipulationValue) tLegStipulationValue $
+          LT.insert (tnum tLegSwapType) tLegSwapType $
+          LT.insert (tnum tPool) tPool $
+          LT.insert (tnum tQuotePriceType) tQuotePriceType $
+          LT.insert (tnum tQuoteRespID) tQuoteRespID $
+          LT.insert (tnum tQuoteRespType) tQuoteRespType $
+          LT.insert (tnum tQuoteQualifier) tQuoteQualifier $
+          LT.insert (tnum tYieldRedemptionDate) tYieldRedemptionDate $
+          LT.insert (tnum tYieldRedemptionPrice) tYieldRedemptionPrice $
+          LT.insert (tnum tYieldRedemptionPriceType) tYieldRedemptionPriceType $
+          LT.insert (tnum tBenchmarkSecurityID) tBenchmarkSecurityID $
+          LT.insert (tnum tReversalIndicator) tReversalIndicator $
+          LT.insert (tnum tYieldCalcDate) tYieldCalcDate $
+          LT.insert (tnum tNoPositions) tNoPositions $
+          LT.insert (tnum tPosType) tPosType $
+          LT.insert (tnum tLongQty) tLongQty $
+          LT.insert (tnum tShortQty) tShortQty $
+          LT.insert (tnum tPosQtyStatus) tPosQtyStatus $
+          LT.insert (tnum tPosAmtType) tPosAmtType $
+          LT.insert (tnum tPosAmt) tPosAmt $
+          LT.insert (tnum tPosTransType) tPosTransType $
+          LT.insert (tnum tPosReqID) tPosReqID $
+          LT.insert (tnum tNoUnderlyings) tNoUnderlyings $
+          LT.insert (tnum tPosMaintAction) tPosMaintAction $
+          LT.insert (tnum tOrigPosReqRefID) tOrigPosReqRefID $
+          LT.insert (tnum tPosMaintRptRefID) tPosMaintRptRefID $
+          LT.insert (tnum tClearingBusinessDate) tClearingBusinessDate $
+          LT.insert (tnum tSettlSessID) tSettlSessID $
+          LT.insert (tnum tSettlSessSubID) tSettlSessSubID $
+          LT.insert (tnum tAdjustmentType) tAdjustmentType $
+          LT.insert (tnum tContraryInstructionIndicator) tContraryInstructionIndicator $
+          LT.insert (tnum tPriorSpreadIndicator) tPriorSpreadIndicator $
+          LT.insert (tnum tPosMaintRptID) tPosMaintRptID $
+          LT.insert (tnum tPosMaintStatus) tPosMaintStatus $
+          LT.insert (tnum tPosMaintResult) tPosMaintResult $
+          LT.insert (tnum tPosReqType) tPosReqType $
+          LT.insert (tnum tResponseTransportType) tResponseTransportType $
+          LT.insert (tnum tResponseDestination) tResponseDestination $
+          LT.insert (tnum tTotalNumPosReports) tTotalNumPosReports $
+          LT.insert (tnum tPosReqResult) tPosReqResult $
+          LT.insert (tnum tPosReqStatus) tPosReqStatus $
+          LT.insert (tnum tSettlPrice) tSettlPrice $
+          LT.insert (tnum tSettlPriceType) tSettlPriceType $
+          LT.insert (tnum tUnderlyingSettlPrice) tUnderlyingSettlPrice $
+          LT.insert (tnum tUnderlyingSettlPriceType) tUnderlyingSettlPriceType $
+          LT.insert (tnum tPriorSettlPrice) tPriorSettlPrice $
+          LT.insert (tnum tNoQuoteQualifiers) tNoQuoteQualifiers $
+          LT.insert (tnum tAllocSettlCurrency) tAllocSettlCurrency $
+          LT.insert (tnum tAllocSettlCurrAmt) tAllocSettlCurrAmt $
+          LT.insert (tnum tInterestAtMaturity) tInterestAtMaturity $
+          LT.insert (tnum tLegDatedDate) tLegDatedDate $
+          LT.insert (tnum tLegPool) tLegPool $
+          LT.insert (tnum tAllocInterestAtMaturity) tAllocInterestAtMaturity $
+          LT.insert (tnum tAllocAccruedInterestAmt) tAllocAccruedInterestAmt $
+          LT.insert (tnum tDeliveryDate) tDeliveryDate $
+          LT.insert (tnum tAssignmentMethod) tAssignmentMethod $
+          LT.insert (tnum tAssignmentUnit) tAssignmentUnit $
+          LT.insert (tnum tOpenInterest) tOpenInterest $
+          LT.insert (tnum tExerciseMethod) tExerciseMethod $
+          LT.insert (tnum tTotNumTradeReports) tTotNumTradeReports $
+          LT.insert (tnum tTradeRequestResult) tTradeRequestResult $
+          LT.insert (tnum tTradeRequestStatus) tTradeRequestStatus $
+          LT.insert (tnum tTradeReportRejectReason) tTradeReportRejectReason $
+          LT.insert (tnum tSideMultiLegReportingType) tSideMultiLegReportingType $
+          LT.insert (tnum tNoPosAmt) tNoPosAmt $
+          LT.insert (tnum tAutoAcceptIndicator) tAutoAcceptIndicator $
+          LT.insert (tnum tAllocReportID) tAllocReportID $
+          LT.insert (tnum tNoNested2PartyIDs) tNoNested2PartyIDs $
+          LT.insert (tnum tNested2PartyID) tNested2PartyID $
+          LT.insert (tnum tNested2PartyIDSource) tNested2PartyIDSource $
+          LT.insert (tnum tNested2PartyRole) tNested2PartyRole $
+          LT.insert (tnum tNested2PartySubID) tNested2PartySubID $
+          LT.insert (tnum tBenchmarkSecurityIDSource) tBenchmarkSecurityIDSource $
+          LT.insert (tnum tSecuritySubType) tSecuritySubType $
+          LT.insert (tnum tUnderlyingSecuritySubType) tUnderlyingSecuritySubType $
+          LT.insert (tnum tLegSecuritySubType) tLegSecuritySubType $
+          LT.insert (tnum tAllowableOneSidednessPct) tAllowableOneSidednessPct $
+          LT.insert (tnum tAllowableOneSidednessValue) tAllowableOneSidednessValue $
+          LT.insert (tnum tAllowableOneSidednessCurr) tAllowableOneSidednessCurr $
+          LT.insert (tnum tNoTrdRegTimestamps) tNoTrdRegTimestamps $
+          LT.insert (tnum tTrdRegTimestamp) tTrdRegTimestamp $
+          LT.insert (tnum tTrdRegTimestampType) tTrdRegTimestampType $
+          LT.insert (tnum tTrdRegTimestampOrigin) tTrdRegTimestampOrigin $
+          LT.insert (tnum tConfirmRefID) tConfirmRefID $
+          LT.insert (tnum tConfirmType) tConfirmType $
+          LT.insert (tnum tConfirmRejReason) tConfirmRejReason $
+          LT.insert (tnum tBookingType) tBookingType $
+          LT.insert (tnum tIndividualAllocRejCode) tIndividualAllocRejCode $
+          LT.insert (tnum tSettlInstMsgID) tSettlInstMsgID $
+          LT.insert (tnum tNoSettlInst) tNoSettlInst $
+          LT.insert (tnum tLastUpdateTime) tLastUpdateTime $
+          LT.insert (tnum tAllocSettlInstType) tAllocSettlInstType $
+          LT.insert (tnum tNoSettlPartyIDs) tNoSettlPartyIDs $
+          LT.insert (tnum tSettlPartyID) tSettlPartyID $
+          LT.insert (tnum tSettlPartyIDSource) tSettlPartyIDSource $
+          LT.insert (tnum tSettlPartyRole) tSettlPartyRole $
+          LT.insert (tnum tSettlPartySubID) tSettlPartySubID $
+          LT.insert (tnum tSettlPartySubIDType) tSettlPartySubIDType $
+          LT.insert (tnum tDlvyInstType) tDlvyInstType $
+          LT.insert (tnum tTerminationType) tTerminationType $
+          LT.insert (tnum tNextExpectedMsgSeqNum) tNextExpectedMsgSeqNum $
+          LT.insert (tnum tOrdStatusReqID) tOrdStatusReqID $
+          LT.insert (tnum tSettlInstReqID) tSettlInstReqID $
+          LT.insert (tnum tSettlInstReqRejCode) tSettlInstReqRejCode $
+          LT.insert (tnum tSecondaryAllocID) tSecondaryAllocID $
+          LT.insert (tnum tAllocReportType) tAllocReportType $
+          LT.insert (tnum tAllocReportRefID) tAllocReportRefID $
+          LT.insert (tnum tAllocCancReplaceReason) tAllocCancReplaceReason $
+          LT.insert (tnum tCopyMsgIndicator) tCopyMsgIndicator $
+          LT.insert (tnum tAllocAccountType) tAllocAccountType $
+          LT.insert (tnum tOrderAvgPx) tOrderAvgPx $
+          LT.insert (tnum tOrderBookingQty) tOrderBookingQty $
+          LT.insert (tnum tNoSettlPartySubIDs) tNoSettlPartySubIDs $
+          LT.insert (tnum tNoPartySubIDs) tNoPartySubIDs $
+          LT.insert (tnum tPartySubIDType) tPartySubIDType $
+          LT.insert (tnum tNoNestedPartySubIDs) tNoNestedPartySubIDs $
+          LT.insert (tnum tNestedPartySubIDType) tNestedPartySubIDType $
+          LT.insert (tnum tNoNested2PartySubIDs) tNoNested2PartySubIDs $
+          LT.insert (tnum tNested2PartySubIDType) tNested2PartySubIDType $
+          LT.insert (tnum tAllocIntermedReqType) tAllocIntermedReqType $
+          LT.insert (tnum tUnderlyingPx) tUnderlyingPx $
+          LT.insert (tnum tPriceDelta) tPriceDelta $
+          LT.insert (tnum tApplQueueMax) tApplQueueMax $
+          LT.insert (tnum tApplQueueDepth) tApplQueueDepth $
+          LT.insert (tnum tApplQueueResolution) tApplQueueResolution $
+          LT.insert (tnum tApplQueueAction) tApplQueueAction $
+          LT.insert (tnum tNoAltMDSource) tNoAltMDSource $
+          LT.insert (tnum tAltMDSourceID) tAltMDSourceID $
+          LT.insert (tnum tSecondaryTradeReportID) tSecondaryTradeReportID $
+          LT.insert (tnum tAvgPxIndicator) tAvgPxIndicator $
+          LT.insert (tnum tTradeLinkID) tTradeLinkID $
+          LT.insert (tnum tOrderInputDevice) tOrderInputDevice $
+          LT.insert (tnum tUnderlyingTradingSessionID) tUnderlyingTradingSessionID $
+          LT.insert (tnum tUnderlyingTradingSessionSubID) tUnderlyingTradingSessionSubID $
+          LT.insert (tnum tTradeLegRefID) tTradeLegRefID $
+          LT.insert (tnum tExchangeRule) tExchangeRule $
+          LT.insert (tnum tTradeAllocIndicator) tTradeAllocIndicator $
+          LT.insert (tnum tExpirationCycle) tExpirationCycle $
+          LT.insert (tnum tTrdType) tTrdType $
+          LT.insert (tnum tTrdSubType) tTrdSubType $
+          LT.insert (tnum tTransferReason) tTransferReason $
+          LT.insert (tnum tAsgnReqID) tAsgnReqID $
+          LT.insert (tnum tTotNumAssignmentReports) tTotNumAssignmentReports $
+          LT.insert (tnum tAsgnRptID) tAsgnRptID $
+          LT.insert (tnum tThresholdAmount) tThresholdAmount $
+          LT.insert (tnum tPegMoveType) tPegMoveType $
+          LT.insert (tnum tPegOffsetType) tPegOffsetType $
+          LT.insert (tnum tPegLimitType) tPegLimitType $
+          LT.insert (tnum tPegRoundDirection) tPegRoundDirection $
+          LT.insert (tnum tPeggedPrice) tPeggedPrice $
+          LT.insert (tnum tPegScope) tPegScope $
+          LT.insert (tnum tDiscretionMoveType) tDiscretionMoveType $
+          LT.insert (tnum tDiscretionOffsetType) tDiscretionOffsetType $
+          LT.insert (tnum tDiscretionLimitType) tDiscretionLimitType $
+          LT.insert (tnum tDiscretionRoundDirection) tDiscretionRoundDirection $
+          LT.insert (tnum tDiscretionPrice) tDiscretionPrice $
+          LT.insert (tnum tDiscretionScope) tDiscretionScope $
+          LT.insert (tnum tTargetStrategy) tTargetStrategy $
+          LT.insert (tnum tTargetStrategyParameters) tTargetStrategyParameters $
+          LT.insert (tnum tParticipationRate) tParticipationRate $
+          LT.insert (tnum tTargetStrategyPerformance) tTargetStrategyPerformance $
+          LT.insert (tnum tLastLiquidityInd) tLastLiquidityInd $
+          LT.insert (tnum tPublishTrdIndicator) tPublishTrdIndicator $
+          LT.insert (tnum tShortSaleReason) tShortSaleReason $
+          LT.insert (tnum tQtyType) tQtyType $
+          LT.insert (tnum tSecondaryTrdType) tSecondaryTrdType $
+          LT.insert (tnum tTradeReportType) tTradeReportType $
+          LT.insert (tnum tAllocNoOrdersType) tAllocNoOrdersType $
+          LT.insert (tnum tSharedCommission) tSharedCommission $
+          LT.insert (tnum tConfirmReqID) tConfirmReqID $
+          LT.insert (tnum tAvgParPx) tAvgParPx $
+          LT.insert (tnum tReportedPx) tReportedPx $
+          LT.insert (tnum tNoCapacities) tNoCapacities $
+          LT.insert (tnum tOrderCapacityQty) tOrderCapacityQty $
+          LT.insert (tnum tNoEvents) tNoEvents $
+          LT.insert (tnum tEventType) tEventType $
+          LT.insert (tnum tEventDate) tEventDate $
+          LT.insert (tnum tEventPx) tEventPx $
+          LT.insert (tnum tEventText) tEventText $
+          LT.insert (tnum tPctAtRisk) tPctAtRisk $
+          LT.insert (tnum tNoInstrAttrib) tNoInstrAttrib $
+          LT.insert (tnum tInstrAttribType) tInstrAttribType $
+          LT.insert (tnum tInstrAttribValue) tInstrAttribValue $
+          LT.insert (tnum tDatedDate) tDatedDate $
+          LT.insert (tnum tInterestAccrualDate) tInterestAccrualDate $
+          LT.insert (tnum tCPProgram) tCPProgram $
+          LT.insert (tnum tCPRegType) tCPRegType $
+          LT.insert (tnum tUnderlyingCPProgram) tUnderlyingCPProgram $
+          LT.insert (tnum tUnderlyingCPRegType) tUnderlyingCPRegType $
+          LT.insert (tnum tUnderlyingQty) tUnderlyingQty $
+          LT.insert (tnum tTrdMatchID) tTrdMatchID $
+          LT.insert (tnum tSecondaryTradeReportRefID) tSecondaryTradeReportRefID $
+          LT.insert (tnum tUnderlyingDirtyPrice) tUnderlyingDirtyPrice $
+          LT.insert (tnum tUnderlyingEndPrice) tUnderlyingEndPrice $
+          LT.insert (tnum tUnderlyingStartValue) tUnderlyingStartValue $
+          LT.insert (tnum tUnderlyingCurrentValue) tUnderlyingCurrentValue $
+          LT.insert (tnum tUnderlyingEndValue) tUnderlyingEndValue $
+          LT.insert (tnum tNoUnderlyingStips) tNoUnderlyingStips $
+          LT.insert (tnum tUnderlyingStipType) tUnderlyingStipType $
+          LT.insert (tnum tUnderlyingStipValue) tUnderlyingStipValue $
+          LT.insert (tnum tMaturityNetMoney) tMaturityNetMoney $
+          LT.insert (tnum tMiscFeeBasis) tMiscFeeBasis $
+          LT.insert (tnum tTotNoAllocs) tTotNoAllocs $
+          LT.insert (tnum tLastFragment) tLastFragment $
+          LT.insert (tnum tCollReqID) tCollReqID $
+          LT.insert (tnum tCollAsgnReason) tCollAsgnReason $
+          LT.insert (tnum tCollInquiryQualifier) tCollInquiryQualifier $
+          LT.insert (tnum tNoTrades) tNoTrades $
+          LT.insert (tnum tMarginRatio) tMarginRatio $
+          LT.insert (tnum tMarginExcess) tMarginExcess $
+          LT.insert (tnum tTotalNetValue) tTotalNetValue $
+          LT.insert (tnum tCashOutstanding) tCashOutstanding $
+          LT.insert (tnum tCollAsgnID) tCollAsgnID $
+          LT.insert (tnum tCollAsgnTransType) tCollAsgnTransType $
+          LT.insert (tnum tCollRespID) tCollRespID $
+          LT.insert (tnum tCollAsgnRespType) tCollAsgnRespType $
+          LT.insert (tnum tCollAsgnRejectReason) tCollAsgnRejectReason $
+          LT.insert (tnum tCollAsgnRefID) tCollAsgnRefID $
+          LT.insert (tnum tCollRptID) tCollRptID $
+          LT.insert (tnum tCollInquiryID) tCollInquiryID $
+          LT.insert (tnum tCollStatus) tCollStatus $
+          LT.insert (tnum tTotNumReports) tTotNumReports $
+          LT.insert (tnum tLastRptRequested) tLastRptRequested $
+          LT.insert (tnum tAgreementDesc) tAgreementDesc $
+          LT.insert (tnum tAgreementID) tAgreementID $
+          LT.insert (tnum tAgreementDate) tAgreementDate $
+          LT.insert (tnum tStartDate) tStartDate $
+          LT.insert (tnum tEndDate) tEndDate $
+          LT.insert (tnum tAgreementCurrency) tAgreementCurrency $
+          LT.insert (tnum tDeliveryType) tDeliveryType $
+          LT.insert (tnum tEndAccruedInterestAmt) tEndAccruedInterestAmt $
+          LT.insert (tnum tStartCash) tStartCash $
+          LT.insert (tnum tEndCash) tEndCash $
+          LT.insert (tnum tUserRequestID) tUserRequestID $
+          LT.insert (tnum tUserRequestType) tUserRequestType $
+          LT.insert (tnum tNewPassword) tNewPassword $
+          LT.insert (tnum tUserStatus) tUserStatus $
+          LT.insert (tnum tUserStatusText) tUserStatusText $
+          LT.insert (tnum tStatusValue) tStatusValue $
+          LT.insert (tnum tStatusText) tStatusText $
+          LT.insert (tnum tRefCompID) tRefCompID $
+          LT.insert (tnum tRefSubID) tRefSubID $
+          LT.insert (tnum tNetworkResponseID) tNetworkResponseID $
+          LT.insert (tnum tNetworkRequestID) tNetworkRequestID $
+          LT.insert (tnum tLastNetworkResponseID) tLastNetworkResponseID $
+          LT.insert (tnum tNetworkRequestType) tNetworkRequestType $
+          LT.insert (tnum tNoCompIDs) tNoCompIDs $
+          LT.insert (tnum tNetworkStatusResponseType) tNetworkStatusResponseType $
+          LT.insert (tnum tNoCollInquiryQualifier) tNoCollInquiryQualifier $
+          LT.insert (tnum tTrdRptStatus) tTrdRptStatus $
+          LT.insert (tnum tAffirmStatus) tAffirmStatus $
+          LT.insert (tnum tUnderlyingStrikeCurrency) tUnderlyingStrikeCurrency $
+          LT.insert (tnum tLegStrikeCurrency) tLegStrikeCurrency $
+          LT.insert (tnum tTimeBracket) tTimeBracket $
+          LT.insert (tnum tCollAction) tCollAction $
+          LT.insert (tnum tCollInquiryStatus) tCollInquiryStatus $
+          LT.insert (tnum tCollInquiryResult) tCollInquiryResult $
+          LT.insert (tnum tStrikeCurrency) tStrikeCurrency $
+          LT.insert (tnum tNoNested3PartyIDs) tNoNested3PartyIDs $
+          LT.insert (tnum tNested3PartyID) tNested3PartyID $
+          LT.insert (tnum tNested3PartyIDSource) tNested3PartyIDSource $
+          LT.insert (tnum tNested3PartyRole) tNested3PartyRole $
+          LT.insert (tnum tNoNested3PartySubIDs) tNoNested3PartySubIDs $
+          LT.insert (tnum tNested3PartySubID) tNested3PartySubID $
+          LT.insert (tnum tNested3PartySubIDType) tNested3PartySubIDType $
+          LT.insert (tnum tLegContractSettlMonth) tLegContractSettlMonth $
+          LT.insert (tnum tLegInterestAccrualDate) tLegInterestAccrualDate $
+          LT.new 
diff --git a/src/Data/LookupTable.hs b/src/Data/LookupTable.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/LookupTable.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE FunctionalDependencies, ExistentialQuantification, MultiParamTypeClasses, FlexibleInstances #-}
+
+-- Module   : Data.LookupTable
+-- License  : GPLv2
+
+module Data.LookupTable 
+    ( LookupTable
+    , new
+    , lookup
+    , insert
+    , toList
+    , fromList 
+    ) where
+
+import Prelude hiding (lookup)
+
+import Data.Map (Map)
+import qualified Data.Map as Map
+import qualified Data.List as List
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as IntMap
+
+class Ord k => LookupTable k v t 
+        | t -> k
+        , t -> v 
+    where
+    new :: t
+    lookup :: k -> t -> Maybe v
+    insert :: k -> v -> t -> t
+    toList :: t -> [(k, v)]
+    fromList :: [(k, v)] -> t
+
+instance Ord k => LookupTable k v (Map k v) where 
+    new      = Map.empty
+    lookup   = Map.lookup
+    insert   = Map.insert
+    toList   = Map.toList
+    fromList = Map.fromList
+
+instance Ord k => LookupTable k v [(k,v)] where
+    new      = []
+    lookup   = List.lookup  
+    insert   = curry (:)
+    toList   = id
+    fromList = id
+
+instance LookupTable Int v (IntMap v) where
+    new      = IntMap.empty
+    lookup   = IntMap.lookup
+    insert   = IntMap.insert
+    toList   = IntMap.toList
+    fromList = IntMap.fromList
diff --git a/src/Utils/Generator.hs b/src/Utils/Generator.hs
new file mode 100644
--- /dev/null
+++ b/src/Utils/Generator.hs
@@ -0,0 +1,383 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving, FlexibleContexts #-}
+
+import Text.XML.HaXml
+import qualified Text.XML.HaXml.Pretty as P 
+import System.Environment ( getArgs )
+import Data.LookupTable ( LookupTable )
+import qualified Data.LookupTable as LT
+import Data.Map ( Map )
+import Data.Maybe ( fromMaybe )
+import Control.Monad ( liftM )
+import Control.Applicative ( (<$>) )
+import Data.FIX.Parser ( tBeginString, tBodyLength, tCheckSum, tMsgType )
+import qualified Data.FIX.Message as FM ( tName ) 
+
+
+main = do
+    args <- getArgs
+    xmlContent <- readFile $ xmlFile args
+    let xmlDoc = xmlParse "/dev/null" xmlContent
+        modName = moduleName args in 
+        do --- print the module header with all the imports ---  
+           putStr $ moduleHeader modName xmlDoc ++ "\n\n"
+           {-putStr $ concatMap (show . P.content) $ content $ getFieldSpec xmlDoc-}
+
+           --- declare all FIX Tags ---
+           putStr $ genFIXFields xmlDoc
+
+           --- declare the FIX header ---
+           putStr $ genFIXHeader xmlDoc
+
+           --- declare the FIX trailer ---
+           putStr $ genFIXTrailer xmlDoc
+
+           --- declare all FIX messages ---
+           putStr $ genFIXMessages xmlDoc
+
+           {-putStr $ genFIXGroups xmlDoc-}
+           putStr $ genFIXSpec xmlDoc
+    where
+        moduleHeader mod' doc = 
+            "module " ++ mod' ++ " ( " ++ fixSpecName doc ++ " ) where\n" ++
+            "import qualified Data.ByteString.Char8 as C\n" ++ 
+            "import qualified Data.LookupTable as LT ( new, insert )\n" ++
+            "import Data.FIX.Message\n" ++ 
+            "import Data.FIX.Parser\n" ++
+            "import Data.Functor ( (<$>) )\n" ++
+            "import Data.FIX.Arbitrary \n" ++
+            "import Test.QuickCheck ( arbitrary )\n" 
+
+        -- command line options 
+        xmlFile :: [String] -> String
+        xmlFile = head 
+
+        moduleName :: [String] -> String
+        moduleName xs | length xs > 1 = head $ tail xs
+                      | otherwise = error 
+                            "you need to specify a name for the module"
+
+_commonTag :: Content a -> Bool
+_commonTag (CElem e _) = 
+               let tags = map FM.tName [tBeginString, tBodyLength, tCheckSum, tMsgType]
+                   tag = getNameAttr e
+               in 
+                   elem tag tags
+_commonTag _ = False
+
+genFIXHeader :: Document a -> String
+genFIXHeader doc = let name = headerName doc in
+    name ++ " :: FIXTags\n" ++
+    name ++ " = \n" ++ tags' ++ "\n\n"
+    where   
+        tags' = let h = getHeaderSpec doc 
+                    header = filter (not . _commonTag) $ content h 
+                in 
+                    fieldsOf 1 header
+
+genFIXTrailer :: Document a -> String
+genFIXTrailer doc = let name = trailerName doc in 
+    name ++ " :: FIXTags\n" ++
+    name ++ " = \n" ++ tags' ++ "\n\n"
+    where   
+        tags' = let h = getTrailerSpec doc 
+                    trailer = filter (not . _commonTag) $ content h 
+                in 
+                    fieldsOf 1 trailer
+
+genFIXMessages :: Document a -> String
+genFIXMessages doc = concatMap genMessage $ messagesOf doc
+    where
+        genMessage :: Content a -> String
+        genMessage (CElem e _) = 
+            let msg' = getNameAttr e
+                msg = mName msg'
+                msgBody' = msg ++ "Body"
+                mType = getMsgTypeAttr e 
+                tags' = fieldsOf 2 $ content e
+                indent = replicate 3 ' '
+            in 
+                msg ++ " :: FIXMessageSpec\n" ++
+                msg ++ " = FMSpec\n" ++
+                indent ++ "{ msName = \"" ++ msg' ++ "\"\n" ++
+                indent ++ ", msType = C.pack \"" ++ mType ++ "\"\n" ++
+                indent ++ ", msHeader = " ++ headerName doc ++ '\n' :
+                indent ++ ", msBody = " ++ msgBody' ++  '\n' :
+                indent ++ ", msTrailer = " ++ trailerName doc ++ " }\n" ++
+                indent ++ "where\n" ++
+                indent ++ msgBody' ++ " = \n" ++ tags' ++ "\n\n"
+
+        getMsgTypeAttr = getAttr "msgtype"
+
+genFIXFields :: Document a -> String
+genFIXFields doc = let fields = filter (not . _commonTag) $ 
+                                    content $ getFieldSpec doc 
+                    in concatMap fieldDef fields
+
+genFIXSpec :: Document a -> String
+genFIXSpec doc = let 
+                spec' = fixSpecName doc 
+                fix = getFIXSpec doc
+                major = getAttr "major" fix
+                minor = getAttr "minor" fix
+
+               in  
+                   spec' ++ " :: FIXSpec\n" ++
+                   spec' ++ " = FSpec\n" ++
+                   "   { fsVersion = \"FIX." ++ 
+                        major ++ "." ++ minor++ "\"\n" ++ 
+                   "   , fsHeader = " ++ headerName doc ++ '\n' :
+                   "   , fsTrailer = " ++ trailerName doc ++ '\n' : 
+                   "   , fsMessages = " ++ spec' ++ "Messages \n" ++
+		   "   , fsTags = " ++ spec' ++ "Tags }\n" ++
+                   "   where\n" ++
+                   "      " ++ spec' ++ "Messages =\n" ++ messageMap ++
+                   "          LT.new \n" ++
+		   "      " ++ spec' ++ "Tags =\n" ++ tagsMap ++
+                   "          LT.new \n" 
+               where
+                rmLastNewline text | length text > 2 = init . init $ text
+                                   | otherwise = text
+                messageMap = rmLastNewline (concatMap _insertMsg $ messagesOf doc)
+                _insertMsg (CElem e _) = 
+                    let msg' = mName $ getNameAttr e in 
+                        "          LT.insert (msType " ++ msg' ++ ") " ++ 
+                        msg' ++ " $\n" 
+                _insertMsg _ = undefined
+		tagsMap = concatMap _insertTag $ content $ getFieldSpec doc 
+		_insertTag (CElem e _) = let fname = tName (getNameAttr e) in
+                        "          LT.insert (tnum " ++ fname ++ ") " ++ fname ++ " $\n"
+		_insertTag _ = ""
+
+type Groups a = Map String [Content a]
+
+-- ?Name :: String -> String 
+tName = (:) 't'
+mName = (:) 'm'
+fName = (:) 'f'
+gName = (:) 'g'
+
+versionFIX :: Document a -> String
+versionFIX doc = major ++ minor 
+               where 
+                  fix = getFIXSpec doc 
+                  major = getAttr "major" fix
+                  minor = getAttr "minor" fix
+
+-- *Name :: Document a -> String 
+headerName  d = "headerFIX" ++ versionFIX d
+trailerName d = "trailerFIX" ++ versionFIX d
+fixSpecName a = "fix" ++ versionFIX a
+
+content :: Element a -> [Content a]
+content (Elem _ _ cs) = cs
+
+cElement :: Content a -> Element a
+cElement (CElem e _) = e
+cElement _ = error "not an element"
+
+attributes :: Element a -> [Attribute]
+attributes (Elem _ as _) = as
+
+getFIXSpec :: Document a -> Element a
+getFIXSpec doc = case doc of
+    Document _ _ (es@(Elem (N n) _ _)) _ 
+        -> if n == "fix" then es else error "no specification for fix" 
+    _   -> error "unknown error"
+
+
+_matchName :: String -> Content a -> Bool
+_matchName name (CElem (Elem (N n) _ _) _) = n == name
+_matchName name _ = False
+
+_lookup :: Show k => LookupTable k v t => k -> t -> v
+_lookup key t = fromMaybe (error $ "couldn't find key " ++ show key)
+                    $ LT.lookup key t
+
+getSpec :: String -> Document a -> Maybe (Element a)
+getSpec name doc = 
+    let fix = getFIXSpec doc in
+        case filter (_matchName name) (content fix)  of 
+            CElem es _ : _ -> Just es
+            _ -> Nothing
+
+getFieldSpec = fromMaybe (error "fields not defined") . getSpec "fields"
+getHeaderSpec = fromMaybe (error "header not defined") . getSpec "header"
+getTrailerSpec = fromMaybe (error "trailer not defined") . getSpec "trailer"
+getMessagesSpec = fromMaybe (error "messages not defined") . getSpec "messages"
+getComponentsSpec = fromMaybe (Elem (N "components") [] []) . getSpec "components"
+
+getAttr :: String -> Element a -> String
+getAttr name e = _lookup name $ fromAttributes $ attributes e 
+
+getNameAttr = getAttr "name"
+
+fromAttributes :: [Attribute] -> Map String String 
+fromAttributes = foldr _insert LT.new 
+    where 
+        _insert :: Attribute -> Map String String -> Map String String
+        _insert (N k, AttValue (Left v : _)) = LT.insert k v 
+        _insert (N k, _) = LT.insert k ""
+
+
+
+fieldDef :: Content a -> String
+fieldDef (CElem e _) = 
+    let name = getNameAttr e
+        fname = tName name
+        fenum = getAttr "number" e
+        ftype = getAttr "type" e
+        tparser = "to" ++ typeOfFIX ftype
+	arbValue' = let t' = typeOfFIX ftype in 
+		case t' of 
+		"FIXChar" -> "FIXChar <$> (return 'A')"
+		"FIXDouble" -> "FIXDouble <$> (return (-2.112 :: Double))"
+		_ -> t' ++ " <$> arbitrary" 
+    in
+        fname ++ " :: FIXTag\n" ++ 
+        fname ++ " = FIXTag \n" ++ 
+            "   { tName = \"" ++ name ++ "\"\n" ++
+            "   , tnum = " ++ fenum ++ '\n' :
+            "   , tparser = "  ++ tparser ++ '\n' :
+            "   , arbitraryValue = " ++ arbValue' ++ " }\n\n"
+    where
+
+        typeOfFIX :: String -> String
+        typeOfFIX x = fromMaybe (error $ "unknown type " ++ x) $ 
+                        LT.lookup x values' 
+            where
+                values' :: Map String String
+                values' = 
+                    LT.insert "INT" "FIXInt" $
+                    LT.insert "STRING" "FIXString" $
+                    LT.insert "DAYOFMONTH" "FIXInt" $
+                    LT.insert "CHAR" "FIXChar" $
+                    LT.insert "FLOAT" "FIXDouble" $
+                    LT.insert "QTY" "FIXDouble" $
+                    LT.insert "PRICE" "FIXDouble" $
+                    LT.insert "QUANTITY" "FIXDouble" $
+                    LT.insert "PRICEOFFSET" "FIXDouble" $
+                    LT.insert "AMT" "FIXDouble" $
+                    LT.insert "BOOLEAN" "FIXBool" $
+                    LT.insert "MULTIPLEVALUESTRING" "FIXMultipleValueString" $
+                    LT.insert "CURRENCY" "FIXString" $
+                    LT.insert "EXCHANGE" "FIXString" $
+                    LT.insert "UTCTIMESTAMP" "FIXTimestamp" $
+                    LT.insert "UTCTIMEONLY" "FIXTimeOnly" $
+                    LT.insert "UTCDATE" "FIXDateOnly" $
+                    LT.insert "MONTHYEAR" "FIXMonthYear" $
+                    LT.insert "LOCALMKTDATE" "FIXDateOnly" $
+                    LT.insert "DATA" "FIXData" $
+                    LT.insert "LENGTH" "FIXInt" $
+                    LT.insert "TIME" "FIXTimestamp" $ 
+                    LT.insert "SEQNUM" "FIXInt"  $
+                    LT.insert "NUMINGROUP" "FIXInt" $
+                    LT.insert "PERCENTAGE" "FIXDouble" $
+                    LT.insert "COUNTRY" "FIXString" $ 
+                    LT.insert "UTCDATEONLY" "FIXDateOnly" $
+                    LT.insert "DATE" "FIXDateOnly" 
+                    LT.new
+fieldDef _ = ""
+
+type Components a = [(String, [Content a])]
+
+componentsOf :: Document a -> Components a
+componentsOf doc = let spec' = getComponentsSpec doc in
+    foldr _insert LT.new $ content spec'
+        where
+            _insert c t 
+                | _matchName "component" c = let elem = cElement c in
+                          LT.insert (getNameAttr elem) (content elem) t
+                | otherwise = t
+
+expandComp :: Components a -> Content a -> Content a
+expandComp comps c@(CElem (Elem n as cs) i) = 
+    CElem (Elem n as (concatMap _expand cs)) i
+    where
+        _expand c | _matchName "component" c = 
+                    let name = getNameAttr $ cElement c
+                        compCont = _lookup name comps 
+                    in
+                        concatMap _expand compCont
+                  | otherwise = [ expandComp comps c ]
+expandComp comps c = c
+
+messagesOf :: Document a -> [Content a]
+messagesOf doc = 
+    let all = getMessagesSpec doc 
+        msgOnly = filter (_matchName "message") (content all) 
+    in
+        map (expandComp (componentsOf doc)) msgOnly
+
+fieldsOf :: Int -> [Content a] -> String
+fieldsOf l cs = 
+    let groups = LT.toList $ groupsOf cs 
+        rmLastNewline text | length text > 2 = init . init $ text
+                           | otherwise = text
+    in 
+        rmLastNewline (concatMap _insertTag cs) ++ 
+        indent ++ "LT.new\n" ++
+            if not (null groups) then
+               indent ++ "where\n" ++ concatMap (genGroups (l + 1)) groups
+            else ""
+                
+    where 
+        indent = replicate (l * 3)  ' '
+        suffix = replicate (l + 1) '\''
+        _insertTag c
+            | _matchName "field" c = 
+                    let n' = tName $ getNameAttr $ cElement c
+                    in indent ++ "LT.insert (tnum " ++ n' ++ ") " ++ n' ++ " $\n"
+            | _matchName "group" c = 
+                    let n = getNameAttr $ cElement c
+                    in indent ++ "LT.insert (tnum " ++ tName n ++ ") " ++ gName n ++ suffix ++ " $\n"
+            | otherwise = ""
+        
+        genGroups _ (_, _:[]) = error "group should have a sperator"
+        genGroups l (n, gcs') = 
+            let (s, gcs) = getSepAndCont gcs'
+                sname = tName $ getNameAttr $ cElement s 
+                gname = gName n
+                indent' = replicate (l * 3)  ' '
+                indent'' = replicate ((l + 1) * 3)  ' '
+                suffix' = replicate l '\''
+                tags' = fieldsOf (l + 2) gcs
+            in
+                indent' ++ gname ++ suffix' ++ " = FIXTag\n" ++
+                indent'' ++ "{ tName = \"" ++ n ++ "\"\n" ++
+                indent'' ++ ", tnum = tnum " ++ tName n ++ '\n' :
+                indent'' ++ ", tparser = " ++ gname ++ "P" ++ suffix' ++ '\n' : 
+                indent'' ++ ", arbitraryValue = arbibtraryFIXGroup " ++ 
+                                gname ++ "Spec" ++ suffix' ++ " }\n\n" ++
+                indent' ++ gname ++ "P" ++ suffix' ++ " = groupP " ++ gname ++ "Spec" ++ suffix' ++ '\n' :
+                indent' ++ gname ++ "Spec" ++ suffix' ++ " = FGSpec\n" ++
+                indent'' ++ "{ gsLength = " ++ tName n ++ '\n' :
+                indent'' ++ ", gsSeperator = " ++ sname ++ '\n' :
+                indent'' ++ ", gsBody = " ++ gname ++ "Body" ++ suffix' ++ " }\n" ++
+                indent'' ++ "where\n" ++
+                indent'' ++ gname ++ "Body" ++ suffix' ++ " = \n"  ++ tags' ++ "\n"
+
+            where
+                getSepAndCont [] = undefined
+                getSepAndCont (c@(CElem _ _):ds) = (c, ds)
+                getSepAndCont (_ : ds) = getSepAndCont ds
+
+groupsOf :: [Content a] -> Groups a
+groupsOf cs = addGroups LT.new cs
+    where
+        addGroups :: Groups a -> [Content a] -> Groups a
+        addGroups t = foldr _insert t 
+            where 
+                _insert :: Content a -> Groups a -> Groups a
+                _insert c@(CElem e _) gs
+                          | _matchName "group" c = 
+                                let gname = getNameAttr e
+                                    gcontent = content e
+                                in LT.insert gname gcontent gs
+                          | _matchName "message" c = 
+                                let mcontent = content e in 
+                                    addGroups gs mcontent 
+                          | otherwise = gs
+                _insert _ gs = gs 
+
+
+
