    -- This file is generated. See Makefile's spdx rule
    {- FOURMOLU_DISABLE -}
    {-# LANGUAGE DeriveDataTypeable #-}
    {-# LANGUAGE DeriveGeneric      #-}
    module Distribution.SPDX.LicenseExceptionId (
        LicenseExceptionId (..),
        licenseExceptionId,
        licenseExceptionName,
        mkLicenseExceptionId,
        licenseExceptionIdList,
        ) where

    import Distribution.Compat.Prelude
    import Prelude ()

    import Distribution.Compat.Lens (set)
    import Distribution.Pretty
    import Distribution.Parsec
    import Distribution.Utils.Generic (isAsciiAlphaNum)
    import Distribution.Utils.Structured (Structured (..), nominalStructure, typeVersion)
    import Distribution.SPDX.LicenseListVersion

    import qualified Data.Binary.Get as Binary
    import qualified Data.Binary.Put as Binary
    import qualified Data.Map.Strict as Map
    import qualified Distribution.Compat.CharParsing as P
    import qualified Text.PrettyPrint as Disp

    -------------------------------------------------------------------------------
    -- LicenseExceptionId
    -------------------------------------------------------------------------------

    -- | SPDX License Exceptions identifiers list v3.23
    data LicenseExceptionId
        = DS389_exception -- ^ @389-exception@, 389 Directory Server Exception
        | Asterisk_exception -- ^ @Asterisk-exception@, Asterisk exception, SPDX License List 3.23
        | Autoconf_exception_2_0 -- ^ @Autoconf-exception-2.0@, Autoconf exception 2.0
        | Autoconf_exception_3_0 -- ^ @Autoconf-exception-3.0@, Autoconf exception 3.0
        | Autoconf_exception_generic_3_0 -- ^ @Autoconf-exception-generic-3.0@, Autoconf generic exception for GPL-3.0, SPDX License List 3.23
        | Autoconf_exception_generic -- ^ @Autoconf-exception-generic@, Autoconf generic exception, SPDX License List 3.23
        | Autoconf_exception_macro -- ^ @Autoconf-exception-macro@, Autoconf macro exception, SPDX License List 3.23
        | Bison_exception_1_24 -- ^ @Bison-exception-1.24@, Bison exception 1.24, SPDX License List 3.23
        | Bison_exception_2_2 -- ^ @Bison-exception-2.2@, Bison exception 2.2
        | Bootloader_exception -- ^ @Bootloader-exception@, Bootloader Distribution Exception
        | Classpath_exception_2_0 -- ^ @Classpath-exception-2.0@, Classpath exception 2.0
        | CLISP_exception_2_0 -- ^ @CLISP-exception-2.0@, CLISP exception 2.0
        | Cryptsetup_OpenSSL_exception -- ^ @cryptsetup-OpenSSL-exception@, cryptsetup OpenSSL exception, SPDX License List 3.23
        | DigiRule_FOSS_exception -- ^ @DigiRule-FOSS-exception@, DigiRule FOSS License Exception
        | ECos_exception_2_0 -- ^ @eCos-exception-2.0@, eCos exception 2.0
        | Fawkes_Runtime_exception -- ^ @Fawkes-Runtime-exception@, Fawkes Runtime Exception
        | FLTK_exception -- ^ @FLTK-exception@, FLTK exception
        | Fmt_exception -- ^ @fmt-exception@, fmt exception, SPDX License List 3.23
        | Font_exception_2_0 -- ^ @Font-exception-2.0@, Font exception 2.0
        | Freertos_exception_2_0 -- ^ @freertos-exception-2.0@, FreeRTOS Exception 2.0
        | GCC_exception_2_0_note -- ^ @GCC-exception-2.0-note@, GCC    Runtime Library exception 2.0 - note variant, SPDX License List 3.23
        | GCC_exception_2_0 -- ^ @GCC-exception-2.0@, GCC Runtime Library exception 2.0
        | GCC_exception_3_1 -- ^ @GCC-exception-3.1@, GCC Runtime Library exception 3.1
        | Gmsh_exception -- ^ @Gmsh-exception@, Gmsh exception>, SPDX License List 3.23
        | GNAT_exception -- ^ @GNAT-exception@, GNAT exception, SPDX License List 3.23
        | GNOME_examples_exception -- ^ @GNOME-examples-exception@, GNOME examples exception, SPDX License List 3.23
        | GNU_compiler_exception -- ^ @GNU-compiler-exception@, GNU Compiler Exception, SPDX License List 3.23
        | Gnu_javamail_exception -- ^ @gnu-javamail-exception@, GNU JavaMail exception
        | GPL_3_0_interface_exception -- ^ @GPL-3.0-interface-exception@, GPL-3.0 Interface Exception, SPDX License List 3.23
        | GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | GStreamer_exception_2005 -- ^ @GStreamer-exception-2005@, GStreamer Exception (2005), SPDX License List 3.23
        | GStreamer_exception_2008 -- ^ @GStreamer-exception-2008@, GStreamer Exception (2008), SPDX License List 3.23
        | I2p_gpl_java_exception -- ^ @i2p-gpl-java-exception@, i2p GPL+Java Exception
        | KiCad_libraries_exception -- ^ @KiCad-libraries-exception@, KiCad Libraries Exception, SPDX License List 3.23
        | LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Libpri_OpenH323_exception -- ^ @libpri-OpenH323-exception@, libpri OpenH323 exception, SPDX License List 3.23
        | Libtool_exception -- ^ @Libtool-exception@, Libtool Exception
        | Linux_syscall_note -- ^ @Linux-syscall-note@, Linux Syscall Note
        | LLGPL -- ^ @LLGPL@, LLGPL Preamble, SPDX License List 3.23
        | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | LZMA_exception -- ^ @LZMA-exception@, LZMA exception
        | Mif_exception -- ^ @mif-exception@, Macros and Inline Functions Exception
        | Nokia_Qt_exception_1_1 -- ^ @Nokia-Qt-exception-1.1@, Nokia Qt LGPL exception 1.1, SPDX License List 3.0, SPDX License List 3.2
        | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | OCCT_exception_1_0 -- ^ @OCCT-exception-1.0@, Open CASCADE Exception 1.0
        | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Openvpn_openssl_exception -- ^ @openvpn-openssl-exception@, OpenVPN OpenSSL Exception
        | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | QPL_1_0_INRIA_2004_exception -- ^ @QPL-1.0-INRIA-2004-exception@, INRIA QPL 1.0 2004 variant exception, SPDX License List 3.23
        | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Qwt_exception_1_0 -- ^ @Qwt-exception-1.0@, Qwt exception 1.0
        | SANE_exception -- ^ @SANE-exception@, SANE Exception, SPDX License List 3.23
        | SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Stunnel_exception -- ^ @stunnel-exception@, stunnel Exception, SPDX License List 3.23
        | SWI_exception -- ^ @SWI-exception@, SWI exception, SPDX License List 3.23
        | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Texinfo_exception -- ^ @Texinfo-exception@, Texinfo exception, SPDX License List 3.23
        | U_boot_exception_2_0 -- ^ @u-boot-exception-2.0@, U-Boot exception 2.0
        | UBDL_exception -- ^ @UBDL-exception@, Unmodified Binary Distribution exception, SPDX License List 3.23
        | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23
        | Vsftpd_openssl_exception -- ^ @vsftpd-openssl-exception@, vsftpd OpenSSL exception, SPDX License List 3.23
        | WxWindows_exception_3_1 -- ^ @WxWindows-exception-3.1@, WxWindows Library Exception 3.1
        | X11vnc_openssl_exception -- ^ @x11vnc-openssl-exception@, x11vnc OpenSSL Exception, SPDX License List 3.23
      deriving (LicenseExceptionId -> LicenseExceptionId -> Bool
    (LicenseExceptionId -> LicenseExceptionId -> Bool)
    -> (LicenseExceptionId -> LicenseExceptionId -> Bool)
    -> Eq LicenseExceptionId
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: LicenseExceptionId -> LicenseExceptionId -> Bool
    == :: LicenseExceptionId -> LicenseExceptionId -> Bool
    $c/= :: LicenseExceptionId -> LicenseExceptionId -> Bool
    /= :: LicenseExceptionId -> LicenseExceptionId -> Bool
    Eq, Eq LicenseExceptionId
    Eq LicenseExceptionId =>
    (LicenseExceptionId -> LicenseExceptionId -> Ordering)
    -> (LicenseExceptionId -> LicenseExceptionId -> Bool)
    -> (LicenseExceptionId -> LicenseExceptionId -> Bool)
    -> (LicenseExceptionId -> LicenseExceptionId -> Bool)
    -> (LicenseExceptionId -> LicenseExceptionId -> Bool)
    -> (LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId)
    -> (LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId)
    -> Ord LicenseExceptionId
    LicenseExceptionId -> LicenseExceptionId -> Bool
    LicenseExceptionId -> LicenseExceptionId -> Ordering
    LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: LicenseExceptionId -> LicenseExceptionId -> Ordering
    compare :: LicenseExceptionId -> LicenseExceptionId -> Ordering
    $c< :: LicenseExceptionId -> LicenseExceptionId -> Bool
    < :: LicenseExceptionId -> LicenseExceptionId -> Bool
    $c<= :: LicenseExceptionId -> LicenseExceptionId -> Bool
    <= :: LicenseExceptionId -> LicenseExceptionId -> Bool
    $c> :: LicenseExceptionId -> LicenseExceptionId -> Bool
    > :: LicenseExceptionId -> LicenseExceptionId -> Bool
    $c>= :: LicenseExceptionId -> LicenseExceptionId -> Bool
    >= :: LicenseExceptionId -> LicenseExceptionId -> Bool
    $cmax :: LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId
    max :: LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId
    $cmin :: LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId
    min :: LicenseExceptionId -> LicenseExceptionId -> LicenseExceptionId
    Ord, Int -> LicenseExceptionId
    LicenseExceptionId -> Int
    LicenseExceptionId -> [LicenseExceptionId]
    LicenseExceptionId -> LicenseExceptionId
    LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    LicenseExceptionId
    -> LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    (LicenseExceptionId -> LicenseExceptionId)
    -> (LicenseExceptionId -> LicenseExceptionId)
    -> (Int -> LicenseExceptionId)
    -> (LicenseExceptionId -> Int)
    -> (LicenseExceptionId -> [LicenseExceptionId])
    -> (LicenseExceptionId
        -> LicenseExceptionId -> [LicenseExceptionId])
    -> (LicenseExceptionId
        -> LicenseExceptionId -> [LicenseExceptionId])
    -> (LicenseExceptionId
        -> LicenseExceptionId
        -> LicenseExceptionId
        -> [LicenseExceptionId])
    -> Enum LicenseExceptionId
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: LicenseExceptionId -> LicenseExceptionId
    succ :: LicenseExceptionId -> LicenseExceptionId
    $cpred :: LicenseExceptionId -> LicenseExceptionId
    pred :: LicenseExceptionId -> LicenseExceptionId
    $ctoEnum :: Int -> LicenseExceptionId
    toEnum :: Int -> LicenseExceptionId
    $cfromEnum :: LicenseExceptionId -> Int
    fromEnum :: LicenseExceptionId -> Int
    $cenumFrom :: LicenseExceptionId -> [LicenseExceptionId]
    enumFrom :: LicenseExceptionId -> [LicenseExceptionId]
    $cenumFromThen :: LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    enumFromThen :: LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    $cenumFromTo :: LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    enumFromTo :: LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    $cenumFromThenTo :: LicenseExceptionId
    -> LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    enumFromThenTo :: LicenseExceptionId
    -> LicenseExceptionId -> LicenseExceptionId -> [LicenseExceptionId]
    Enum, LicenseExceptionId
    LicenseExceptionId
    -> LicenseExceptionId -> Bounded LicenseExceptionId
    forall a. a -> a -> Bounded a
    $cminBound :: LicenseExceptionId
    minBound :: LicenseExceptionId
    $cmaxBound :: LicenseExceptionId
    maxBound :: LicenseExceptionId
    Bounded, Int -> LicenseExceptionId -> ShowS
    [LicenseExceptionId] -> ShowS
    LicenseExceptionId -> String
    (Int -> LicenseExceptionId -> ShowS)
    -> (LicenseExceptionId -> String)
    -> ([LicenseExceptionId] -> ShowS)
    -> Show LicenseExceptionId
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> LicenseExceptionId -> ShowS
    showsPrec :: Int -> LicenseExceptionId -> ShowS
    $cshow :: LicenseExceptionId -> String
    show :: LicenseExceptionId -> String
    $cshowList :: [LicenseExceptionId] -> ShowS
    showList :: [LicenseExceptionId] -> ShowS
    Show, ReadPrec [LicenseExceptionId]
    ReadPrec LicenseExceptionId
    Int -> ReadS LicenseExceptionId
    ReadS [LicenseExceptionId]
    (Int -> ReadS LicenseExceptionId)
    -> ReadS [LicenseExceptionId]
    -> ReadPrec LicenseExceptionId
    -> ReadPrec [LicenseExceptionId]
    -> Read LicenseExceptionId
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS LicenseExceptionId
    readsPrec :: Int -> ReadS LicenseExceptionId
    $creadList :: ReadS [LicenseExceptionId]
    readList :: ReadS [LicenseExceptionId]
    $creadPrec :: ReadPrec LicenseExceptionId
    readPrec :: ReadPrec LicenseExceptionId
    $creadListPrec :: ReadPrec [LicenseExceptionId]
    readListPrec :: ReadPrec [LicenseExceptionId]
    Read, Typeable, Typeable LicenseExceptionId
    Typeable LicenseExceptionId =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g)
     -> LicenseExceptionId
     -> c LicenseExceptionId)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c LicenseExceptionId)
    -> (LicenseExceptionId -> Constr)
    -> (LicenseExceptionId -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c LicenseExceptionId))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e))
        -> Maybe (c LicenseExceptionId))
    -> ((forall b. Data b => b -> b)
        -> LicenseExceptionId -> LicenseExceptionId)
    -> (forall r r'.
        (r -> r' -> r)
        -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r)
    -> (forall r r'.
        (r' -> r -> r)
        -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r)
    -> (forall u.
        (forall d. Data d => d -> u) -> LicenseExceptionId -> [u])
    -> (forall u.
        Int -> (forall d. Data d => d -> u) -> LicenseExceptionId -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d)
        -> LicenseExceptionId -> m LicenseExceptionId)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d)
        -> LicenseExceptionId -> m LicenseExceptionId)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d)
        -> LicenseExceptionId -> m LicenseExceptionId)
    -> Data LicenseExceptionId
    LicenseExceptionId -> Constr
    LicenseExceptionId -> DataType
    (forall b. Data b => b -> b)
    -> LicenseExceptionId -> LicenseExceptionId
    forall a.
    Typeable a =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> a -> c a)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c a)
    -> (a -> Constr)
    -> (a -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c a))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
    -> ((forall b. Data b => b -> b) -> a -> a)
    -> (forall r r'.
        (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall r r'.
        (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall u. (forall d. Data d => d -> u) -> a -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> Data a
    forall u.
    Int -> (forall d. Data d => d -> u) -> LicenseExceptionId -> u
    forall u. (forall d. Data d => d -> u) -> LicenseExceptionId -> [u]
    forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r
    forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c LicenseExceptionId
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> LicenseExceptionId
    -> c LicenseExceptionId
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c LicenseExceptionId)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c LicenseExceptionId)
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> LicenseExceptionId
    -> c LicenseExceptionId
    gfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> LicenseExceptionId
    -> c LicenseExceptionId
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c LicenseExceptionId
    gunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c LicenseExceptionId
    $ctoConstr :: LicenseExceptionId -> Constr
    toConstr :: LicenseExceptionId -> Constr
    $cdataTypeOf :: LicenseExceptionId -> DataType
    dataTypeOf :: LicenseExceptionId -> DataType
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c LicenseExceptionId)
    dataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c LicenseExceptionId)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c LicenseExceptionId)
    dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c LicenseExceptionId)
    $cgmapT :: (forall b. Data b => b -> b)
    -> LicenseExceptionId -> LicenseExceptionId
    gmapT :: (forall b. Data b => b -> b)
    -> LicenseExceptionId -> LicenseExceptionId
    $cgmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r
    gmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r
    gmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> LicenseExceptionId -> r
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> LicenseExceptionId -> [u]
    gmapQ :: forall u. (forall d. Data d => d -> u) -> LicenseExceptionId -> [u]
    $cgmapQi :: forall u.
    Int -> (forall d. Data d => d -> u) -> LicenseExceptionId -> u
    gmapQi :: forall u.
    Int -> (forall d. Data d => d -> u) -> LicenseExceptionId -> u
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    gmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    gmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    gmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> LicenseExceptionId -> m LicenseExceptionId
    Data, (forall x. LicenseExceptionId -> Rep LicenseExceptionId x)
    -> (forall x. Rep LicenseExceptionId x -> LicenseExceptionId)
    -> Generic LicenseExceptionId
    forall x. Rep LicenseExceptionId x -> LicenseExceptionId
    forall x. LicenseExceptionId -> Rep LicenseExceptionId x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. LicenseExceptionId -> Rep LicenseExceptionId x
    from :: forall x. LicenseExceptionId -> Rep LicenseExceptionId x
    $cto :: forall x. Rep LicenseExceptionId x -> LicenseExceptionId
    to :: forall x. Rep LicenseExceptionId x -> LicenseExceptionId
    Generic)

    instance Binary LicenseExceptionId where
        put :: LicenseExceptionId -> Put
    put = Word8 -> Put
    Binary.putWord8 (Word8 -> Put)
    -> (LicenseExceptionId -> Word8) -> LicenseExceptionId -> Put
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Int -> Word8
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> Word8)
    -> (LicenseExceptionId -> Int) -> LicenseExceptionId -> Word8
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . LicenseExceptionId -> Int
    forall a. Enum a => a -> Int
    fromEnum
        get :: Get LicenseExceptionId
    get = do
            i <- Get Word8
    Binary.getWord8
            if i > fromIntegral (fromEnum (maxBound :: LicenseExceptionId))
            then fail "Too large LicenseExceptionId tag"
            else return (toEnum (fromIntegral i))

    -- note: remember to bump version each time the definition changes
    instance Structured LicenseExceptionId where
        structure :: Proxy LicenseExceptionId -> Structure
    structure Proxy LicenseExceptionId
    p = ASetter Structure Structure TypeVersion TypeVersion
    -> TypeVersion -> Structure -> Structure
    forall s t a b. ASetter s t a b -> b -> s -> t
    set ASetter Structure Structure TypeVersion TypeVersion
    forall (f :: * -> *).
    Functor f =>
    (TypeVersion -> f TypeVersion) -> Structure -> f Structure
    typeVersion TypeVersion
    306 (Structure -> Structure) -> Structure -> Structure
    forall a b. (a -> b) -> a -> b
    $ Proxy LicenseExceptionId -> Structure
    forall {k} (a :: k). Typeable a => Proxy a -> Structure
    nominalStructure Proxy LicenseExceptionId
    p

    instance Pretty LicenseExceptionId where
        pretty :: LicenseExceptionId -> Doc
    pretty = String -> Doc
    Disp.text (String -> Doc)
    -> (LicenseExceptionId -> String) -> LicenseExceptionId -> Doc
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . LicenseExceptionId -> String
    licenseExceptionId

    instance Parsec LicenseExceptionId where
        parsec :: forall (m :: * -> *). CabalParsing m => m LicenseExceptionId
    parsec = do
            n <- m Char -> m String
    forall a. m a -> m [a]
    forall (f :: * -> *) a. Alternative f => f a -> f [a]
    some (m Char -> m String) -> m Char -> m String
    forall a b. (a -> b) -> a -> b
    $ (Char -> Bool) -> m Char
    forall (m :: * -> *). CharParsing m => (Char -> Bool) -> m Char
    P.satisfy ((Char -> Bool) -> m Char) -> (Char -> Bool) -> m Char
    forall a b. (a -> b) -> a -> b
    $ \Char
    c -> Char -> Bool
    isAsciiAlphaNum Char
    c Bool -> Bool -> Bool
    || Char
    c Char -> Char -> Bool
    forall a. Eq a => a -> a -> Bool
    == Char
    '-' Bool -> Bool -> Bool
    || Char
    c Char -> Char -> Bool
    forall a. Eq a => a -> a -> Bool
    == Char
    '.'
            v <- askCabalSpecVersion
            maybe (fail $ "Unknown SPDX license exception identifier: " ++ n) return $
                mkLicenseExceptionId (cabalSpecVersionToSPDXListVersion v) n

    instance NFData LicenseExceptionId where
        rnf :: LicenseExceptionId -> ()
    rnf LicenseExceptionId
    l = LicenseExceptionId
    l LicenseExceptionId -> () -> ()
    forall a b. a -> b -> b
    `seq` ()

    -------------------------------------------------------------------------------
    -- License Data
    -------------------------------------------------------------------------------

    -- | License SPDX identifier, e.g. @"BSD-3-Clause"@.
    licenseExceptionId :: LicenseExceptionId -> String
    licenseExceptionId :: LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    DS389_exception = String
    "389-exception"
    licenseExceptionId LicenseExceptionId
    Asterisk_exception = String
    "Asterisk-exception"
    licenseExceptionId LicenseExceptionId
    Autoconf_exception_2_0 = String
    "Autoconf-exception-2.0"
    licenseExceptionId LicenseExceptionId
    Autoconf_exception_3_0 = String
    "Autoconf-exception-3.0"
    licenseExceptionId LicenseExceptionId
    Autoconf_exception_generic_3_0 = String
    "Autoconf-exception-generic-3.0"
    licenseExceptionId LicenseExceptionId
    Autoconf_exception_generic = String
    "Autoconf-exception-generic"
    licenseExceptionId LicenseExceptionId
    Autoconf_exception_macro = String
    "Autoconf-exception-macro"
    licenseExceptionId LicenseExceptionId
    Bison_exception_1_24 = String
    "Bison-exception-1.24"
    licenseExceptionId LicenseExceptionId
    Bison_exception_2_2 = String
    "Bison-exception-2.2"
    licenseExceptionId LicenseExceptionId
    Bootloader_exception = String
    "Bootloader-exception"
    licenseExceptionId LicenseExceptionId
    Classpath_exception_2_0 = String
    "Classpath-exception-2.0"
    licenseExceptionId LicenseExceptionId
    CLISP_exception_2_0 = String
    "CLISP-exception-2.0"
    licenseExceptionId LicenseExceptionId
    Cryptsetup_OpenSSL_exception = String
    "cryptsetup-OpenSSL-exception"
    licenseExceptionId LicenseExceptionId
    DigiRule_FOSS_exception = String
    "DigiRule-FOSS-exception"
    licenseExceptionId LicenseExceptionId
    ECos_exception_2_0 = String
    "eCos-exception-2.0"
    licenseExceptionId LicenseExceptionId
    Fawkes_Runtime_exception = String
    "Fawkes-Runtime-exception"
    licenseExceptionId LicenseExceptionId
    FLTK_exception = String
    "FLTK-exception"
    licenseExceptionId LicenseExceptionId
    Fmt_exception = String
    "fmt-exception"
    licenseExceptionId LicenseExceptionId
    Font_exception_2_0 = String
    "Font-exception-2.0"
    licenseExceptionId LicenseExceptionId
    Freertos_exception_2_0 = String
    "freertos-exception-2.0"
    licenseExceptionId LicenseExceptionId
    GCC_exception_2_0_note = String
    "GCC-exception-2.0-note"
    licenseExceptionId LicenseExceptionId
    GCC_exception_2_0 = String
    "GCC-exception-2.0"
    licenseExceptionId LicenseExceptionId
    GCC_exception_3_1 = String
    "GCC-exception-3.1"
    licenseExceptionId LicenseExceptionId
    Gmsh_exception = String
    "Gmsh-exception"
    licenseExceptionId LicenseExceptionId
    GNAT_exception = String
    "GNAT-exception"
    licenseExceptionId LicenseExceptionId
    GNOME_examples_exception = String
    "GNOME-examples-exception"
    licenseExceptionId LicenseExceptionId
    GNU_compiler_exception = String
    "GNU-compiler-exception"
    licenseExceptionId LicenseExceptionId
    Gnu_javamail_exception = String
    "gnu-javamail-exception"
    licenseExceptionId LicenseExceptionId
    GPL_3_0_interface_exception = String
    "GPL-3.0-interface-exception"
    licenseExceptionId LicenseExceptionId
    GPL_3_0_linking_exception = String
    "GPL-3.0-linking-exception"
    licenseExceptionId LicenseExceptionId
    GPL_3_0_linking_source_exception = String
    "GPL-3.0-linking-source-exception"
    licenseExceptionId LicenseExceptionId
    GPL_CC_1_0 = String
    "GPL-CC-1.0"
    licenseExceptionId LicenseExceptionId
    GStreamer_exception_2005 = String
    "GStreamer-exception-2005"
    licenseExceptionId LicenseExceptionId
    GStreamer_exception_2008 = String
    "GStreamer-exception-2008"
    licenseExceptionId LicenseExceptionId
    I2p_gpl_java_exception = String
    "i2p-gpl-java-exception"
    licenseExceptionId LicenseExceptionId
    KiCad_libraries_exception = String
    "KiCad-libraries-exception"
    licenseExceptionId LicenseExceptionId
    LGPL_3_0_linking_exception = String
    "LGPL-3.0-linking-exception"
    licenseExceptionId LicenseExceptionId
    Libpri_OpenH323_exception = String
    "libpri-OpenH323-exception"
    licenseExceptionId LicenseExceptionId
    Libtool_exception = String
    "Libtool-exception"
    licenseExceptionId LicenseExceptionId
    Linux_syscall_note = String
    "Linux-syscall-note"
    licenseExceptionId LicenseExceptionId
    LLGPL = String
    "LLGPL"
    licenseExceptionId LicenseExceptionId
    LLVM_exception = String
    "LLVM-exception"
    licenseExceptionId LicenseExceptionId
    LZMA_exception = String
    "LZMA-exception"
    licenseExceptionId LicenseExceptionId
    Mif_exception = String
    "mif-exception"
    licenseExceptionId LicenseExceptionId
    Nokia_Qt_exception_1_1 = String
    "Nokia-Qt-exception-1.1"
    licenseExceptionId LicenseExceptionId
    OCaml_LGPL_linking_exception = String
    "OCaml-LGPL-linking-exception"
    licenseExceptionId LicenseExceptionId
    OCCT_exception_1_0 = String
    "OCCT-exception-1.0"
    licenseExceptionId LicenseExceptionId
    OpenJDK_assembly_exception_1_0 = String
    "OpenJDK-assembly-exception-1.0"
    licenseExceptionId LicenseExceptionId
    Openvpn_openssl_exception = String
    "openvpn-openssl-exception"
    licenseExceptionId LicenseExceptionId
    PS_or_PDF_font_exception_20170817 = String
    "PS-or-PDF-font-exception-20170817"
    licenseExceptionId LicenseExceptionId
    QPL_1_0_INRIA_2004_exception = String
    "QPL-1.0-INRIA-2004-exception"
    licenseExceptionId LicenseExceptionId
    Qt_GPL_exception_1_0 = String
    "Qt-GPL-exception-1.0"
    licenseExceptionId LicenseExceptionId
    Qt_LGPL_exception_1_1 = String
    "Qt-LGPL-exception-1.1"
    licenseExceptionId LicenseExceptionId
    Qwt_exception_1_0 = String
    "Qwt-exception-1.0"
    licenseExceptionId LicenseExceptionId
    SANE_exception = String
    "SANE-exception"
    licenseExceptionId LicenseExceptionId
    SHL_2_0 = String
    "SHL-2.0"
    licenseExceptionId LicenseExceptionId
    SHL_2_1 = String
    "SHL-2.1"
    licenseExceptionId LicenseExceptionId
    Stunnel_exception = String
    "stunnel-exception"
    licenseExceptionId LicenseExceptionId
    SWI_exception = String
    "SWI-exception"
    licenseExceptionId LicenseExceptionId
    Swift_exception = String
    "Swift-exception"
    licenseExceptionId LicenseExceptionId
    Texinfo_exception = String
    "Texinfo-exception"
    licenseExceptionId LicenseExceptionId
    U_boot_exception_2_0 = String
    "u-boot-exception-2.0"
    licenseExceptionId LicenseExceptionId
    UBDL_exception = String
    "UBDL-exception"
    licenseExceptionId LicenseExceptionId
    Universal_FOSS_exception_1_0 = String
    "Universal-FOSS-exception-1.0"
    licenseExceptionId LicenseExceptionId
    Vsftpd_openssl_exception = String
    "vsftpd-openssl-exception"
    licenseExceptionId LicenseExceptionId
    WxWindows_exception_3_1 = String
    "WxWindows-exception-3.1"
    licenseExceptionId LicenseExceptionId
    X11vnc_openssl_exception = String
    "x11vnc-openssl-exception"

    -- | License name, e.g. @"GNU General Public License v2.0 only"@
    licenseExceptionName :: LicenseExceptionId -> String
    licenseExceptionName :: LicenseExceptionId -> String
    licenseExceptionName LicenseExceptionId
    DS389_exception = String
    "389 Directory Server Exception"
    licenseExceptionName LicenseExceptionId
    Asterisk_exception = String
    "Asterisk exception"
    licenseExceptionName LicenseExceptionId
    Autoconf_exception_2_0 = String
    "Autoconf exception 2.0"
    licenseExceptionName LicenseExceptionId
    Autoconf_exception_3_0 = String
    "Autoconf exception 3.0"
    licenseExceptionName LicenseExceptionId
    Autoconf_exception_generic_3_0 = String
    "Autoconf generic exception for GPL-3.0"
    licenseExceptionName LicenseExceptionId
    Autoconf_exception_generic = String
    "Autoconf generic exception"
    licenseExceptionName LicenseExceptionId
    Autoconf_exception_macro = String
    "Autoconf macro exception"
    licenseExceptionName LicenseExceptionId
    Bison_exception_1_24 = String
    "Bison exception 1.24"
    licenseExceptionName LicenseExceptionId
    Bison_exception_2_2 = String
    "Bison exception 2.2"
    licenseExceptionName LicenseExceptionId
    Bootloader_exception = String
    "Bootloader Distribution Exception"
    licenseExceptionName LicenseExceptionId
    Classpath_exception_2_0 = String
    "Classpath exception 2.0"
    licenseExceptionName LicenseExceptionId
    CLISP_exception_2_0 = String
    "CLISP exception 2.0"
    licenseExceptionName LicenseExceptionId
    Cryptsetup_OpenSSL_exception = String
    "cryptsetup OpenSSL exception"
    licenseExceptionName LicenseExceptionId
    DigiRule_FOSS_exception = String
    "DigiRule FOSS License Exception"
    licenseExceptionName LicenseExceptionId
    ECos_exception_2_0 = String
    "eCos exception 2.0"
    licenseExceptionName LicenseExceptionId
    Fawkes_Runtime_exception = String
    "Fawkes Runtime Exception"
    licenseExceptionName LicenseExceptionId
    FLTK_exception = String
    "FLTK exception"
    licenseExceptionName LicenseExceptionId
    Fmt_exception = String
    "fmt exception"
    licenseExceptionName LicenseExceptionId
    Font_exception_2_0 = String
    "Font exception 2.0"
    licenseExceptionName LicenseExceptionId
    Freertos_exception_2_0 = String
    "FreeRTOS Exception 2.0"
    licenseExceptionName LicenseExceptionId
    GCC_exception_2_0_note = String
    "GCC    Runtime Library exception 2.0 - note variant"
    licenseExceptionName LicenseExceptionId
    GCC_exception_2_0 = String
    "GCC Runtime Library exception 2.0"
    licenseExceptionName LicenseExceptionId
    GCC_exception_3_1 = String
    "GCC Runtime Library exception 3.1"
    licenseExceptionName LicenseExceptionId
    Gmsh_exception = String
    "Gmsh exception>"
    licenseExceptionName LicenseExceptionId
    GNAT_exception = String
    "GNAT exception"
    licenseExceptionName LicenseExceptionId
    GNOME_examples_exception = String
    "GNOME examples exception"
    licenseExceptionName LicenseExceptionId
    GNU_compiler_exception = String
    "GNU Compiler Exception"
    licenseExceptionName LicenseExceptionId
    Gnu_javamail_exception = String
    "GNU JavaMail exception"
    licenseExceptionName LicenseExceptionId
    GPL_3_0_interface_exception = String
    "GPL-3.0 Interface Exception"
    licenseExceptionName LicenseExceptionId
    GPL_3_0_linking_exception = String
    "GPL-3.0 Linking Exception"
    licenseExceptionName LicenseExceptionId
    GPL_3_0_linking_source_exception = String
    "GPL-3.0 Linking Exception (with Corresponding Source)"
    licenseExceptionName LicenseExceptionId
    GPL_CC_1_0 = String
    "GPL Cooperation Commitment 1.0"
    licenseExceptionName LicenseExceptionId
    GStreamer_exception_2005 = String
    "GStreamer Exception (2005)"
    licenseExceptionName LicenseExceptionId
    GStreamer_exception_2008 = String
    "GStreamer Exception (2008)"
    licenseExceptionName LicenseExceptionId
    I2p_gpl_java_exception = String
    "i2p GPL+Java Exception"
    licenseExceptionName LicenseExceptionId
    KiCad_libraries_exception = String
    "KiCad Libraries Exception"
    licenseExceptionName LicenseExceptionId
    LGPL_3_0_linking_exception = String
    "LGPL-3.0 Linking Exception"
    licenseExceptionName LicenseExceptionId
    Libpri_OpenH323_exception = String
    "libpri OpenH323 exception"
    licenseExceptionName LicenseExceptionId
    Libtool_exception = String
    "Libtool Exception"
    licenseExceptionName LicenseExceptionId
    Linux_syscall_note = String
    "Linux Syscall Note"
    licenseExceptionName LicenseExceptionId
    LLGPL = String
    "LLGPL Preamble"
    licenseExceptionName LicenseExceptionId
    LLVM_exception = String
    "LLVM Exception"
    licenseExceptionName LicenseExceptionId
    LZMA_exception = String
    "LZMA exception"
    licenseExceptionName LicenseExceptionId
    Mif_exception = String
    "Macros and Inline Functions Exception"
    licenseExceptionName LicenseExceptionId
    Nokia_Qt_exception_1_1 = String
    "Nokia Qt LGPL exception 1.1"
    licenseExceptionName LicenseExceptionId
    OCaml_LGPL_linking_exception = String
    "OCaml LGPL Linking Exception"
    licenseExceptionName LicenseExceptionId
    OCCT_exception_1_0 = String
    "Open CASCADE Exception 1.0"
    licenseExceptionName LicenseExceptionId
    OpenJDK_assembly_exception_1_0 = String
    "OpenJDK Assembly exception 1.0"
    licenseExceptionName LicenseExceptionId
    Openvpn_openssl_exception = String
    "OpenVPN OpenSSL Exception"
    licenseExceptionName LicenseExceptionId
    PS_or_PDF_font_exception_20170817 = String
    "PS/PDF font exception (2017-08-17)"
    licenseExceptionName LicenseExceptionId
    QPL_1_0_INRIA_2004_exception = String
    "INRIA QPL 1.0 2004 variant exception"
    licenseExceptionName LicenseExceptionId
    Qt_GPL_exception_1_0 = String
    "Qt GPL exception 1.0"
    licenseExceptionName LicenseExceptionId
    Qt_LGPL_exception_1_1 = String
    "Qt LGPL exception 1.1"
    licenseExceptionName LicenseExceptionId
    Qwt_exception_1_0 = String
    "Qwt exception 1.0"
    licenseExceptionName LicenseExceptionId
    SANE_exception = String
    "SANE Exception"
    licenseExceptionName LicenseExceptionId
    SHL_2_0 = String
    "Solderpad Hardware License v2.0"
    licenseExceptionName LicenseExceptionId
    SHL_2_1 = String
    "Solderpad Hardware License v2.1"
    licenseExceptionName LicenseExceptionId
    Stunnel_exception = String
    "stunnel Exception"
    licenseExceptionName LicenseExceptionId
    SWI_exception = String
    "SWI exception"
    licenseExceptionName LicenseExceptionId
    Swift_exception = String
    "Swift Exception"
    licenseExceptionName LicenseExceptionId
    Texinfo_exception = String
    "Texinfo exception"
    licenseExceptionName LicenseExceptionId
    U_boot_exception_2_0 = String
    "U-Boot exception 2.0"
    licenseExceptionName LicenseExceptionId
    UBDL_exception = String
    "Unmodified Binary Distribution exception"
    licenseExceptionName LicenseExceptionId
    Universal_FOSS_exception_1_0 = String
    "Universal FOSS Exception, Version 1.0"
    licenseExceptionName LicenseExceptionId
    Vsftpd_openssl_exception = String
    "vsftpd OpenSSL exception"
    licenseExceptionName LicenseExceptionId
    WxWindows_exception_3_1 = String
    "WxWindows Library Exception 3.1"
    licenseExceptionName LicenseExceptionId
    X11vnc_openssl_exception = String
    "x11vnc OpenSSL Exception"

    -------------------------------------------------------------------------------
    -- Creation
    -------------------------------------------------------------------------------

    licenseExceptionIdList :: LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList :: LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_0 =
        [ LicenseExceptionId
    Nokia_Qt_exception_1_1
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_2 =
        [ LicenseExceptionId
    LLVM_exception
        , LicenseExceptionId
    Nokia_Qt_exception_1_1
        , LicenseExceptionId
    OpenJDK_assembly_exception_1_0
        , LicenseExceptionId
    PS_or_PDF_font_exception_20170817
        , LicenseExceptionId
    Qt_GPL_exception_1_0
        , LicenseExceptionId
    Qt_LGPL_exception_1_1
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_6 =
        [ LicenseExceptionId
    GPL_CC_1_0
        , LicenseExceptionId
    LLVM_exception
        , LicenseExceptionId
    OCaml_LGPL_linking_exception
        , LicenseExceptionId
    OpenJDK_assembly_exception_1_0
        , LicenseExceptionId
    PS_or_PDF_font_exception_20170817
        , LicenseExceptionId
    Qt_GPL_exception_1_0
        , LicenseExceptionId
    Qt_LGPL_exception_1_1
        , LicenseExceptionId
    Swift_exception
        , LicenseExceptionId
    Universal_FOSS_exception_1_0
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_9 =
        [ LicenseExceptionId
    GPL_3_0_linking_exception
        , LicenseExceptionId
    GPL_3_0_linking_source_exception
        , LicenseExceptionId
    GPL_CC_1_0
        , LicenseExceptionId
    LGPL_3_0_linking_exception
        , LicenseExceptionId
    LLVM_exception
        , LicenseExceptionId
    OCaml_LGPL_linking_exception
        , LicenseExceptionId
    OpenJDK_assembly_exception_1_0
        , LicenseExceptionId
    PS_or_PDF_font_exception_20170817
        , LicenseExceptionId
    Qt_GPL_exception_1_0
        , LicenseExceptionId
    Qt_LGPL_exception_1_1
        , LicenseExceptionId
    SHL_2_0
        , LicenseExceptionId
    SHL_2_1
        , LicenseExceptionId
    Swift_exception
        , LicenseExceptionId
    Universal_FOSS_exception_1_0
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_10 =
        [ LicenseExceptionId
    GPL_3_0_linking_exception
        , LicenseExceptionId
    GPL_3_0_linking_source_exception
        , LicenseExceptionId
    GPL_CC_1_0
        , LicenseExceptionId
    LGPL_3_0_linking_exception
        , LicenseExceptionId
    LLVM_exception
        , LicenseExceptionId
    OCaml_LGPL_linking_exception
        , LicenseExceptionId
    OpenJDK_assembly_exception_1_0
        , LicenseExceptionId
    PS_or_PDF_font_exception_20170817
        , LicenseExceptionId
    Qt_GPL_exception_1_0
        , LicenseExceptionId
    Qt_LGPL_exception_1_1
        , LicenseExceptionId
    SHL_2_0
        , LicenseExceptionId
    SHL_2_1
        , LicenseExceptionId
    Swift_exception
        , LicenseExceptionId
    Universal_FOSS_exception_1_0
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_16 =
        [ LicenseExceptionId
    GPL_3_0_linking_exception
        , LicenseExceptionId
    GPL_3_0_linking_source_exception
        , LicenseExceptionId
    GPL_CC_1_0
        , LicenseExceptionId
    LGPL_3_0_linking_exception
        , LicenseExceptionId
    LLVM_exception
        , LicenseExceptionId
    OCaml_LGPL_linking_exception
        , LicenseExceptionId
    OpenJDK_assembly_exception_1_0
        , LicenseExceptionId
    PS_or_PDF_font_exception_20170817
        , LicenseExceptionId
    Qt_GPL_exception_1_0
        , LicenseExceptionId
    Qt_LGPL_exception_1_1
        , LicenseExceptionId
    SHL_2_0
        , LicenseExceptionId
    SHL_2_1
        , LicenseExceptionId
    Swift_exception
        , LicenseExceptionId
    Universal_FOSS_exception_1_0
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_23 =
        [ LicenseExceptionId
    Asterisk_exception
        , LicenseExceptionId
    Autoconf_exception_generic_3_0
        , LicenseExceptionId
    Autoconf_exception_generic
        , LicenseExceptionId
    Autoconf_exception_macro
        , LicenseExceptionId
    Bison_exception_1_24
        , LicenseExceptionId
    Cryptsetup_OpenSSL_exception
        , LicenseExceptionId
    Fmt_exception
        , LicenseExceptionId
    GCC_exception_2_0_note
        , LicenseExceptionId
    Gmsh_exception
        , LicenseExceptionId
    GNAT_exception
        , LicenseExceptionId
    GNOME_examples_exception
        , LicenseExceptionId
    GNU_compiler_exception
        , LicenseExceptionId
    GPL_3_0_interface_exception
        , LicenseExceptionId
    GPL_3_0_linking_exception
        , LicenseExceptionId
    GPL_3_0_linking_source_exception
        , LicenseExceptionId
    GPL_CC_1_0
        , LicenseExceptionId
    GStreamer_exception_2005
        , LicenseExceptionId
    GStreamer_exception_2008
        , LicenseExceptionId
    KiCad_libraries_exception
        , LicenseExceptionId
    LGPL_3_0_linking_exception
        , LicenseExceptionId
    Libpri_OpenH323_exception
        , LicenseExceptionId
    LLGPL
        , LicenseExceptionId
    LLVM_exception
        , LicenseExceptionId
    OCaml_LGPL_linking_exception
        , LicenseExceptionId
    OpenJDK_assembly_exception_1_0
        , LicenseExceptionId
    PS_or_PDF_font_exception_20170817
        , LicenseExceptionId
    QPL_1_0_INRIA_2004_exception
        , LicenseExceptionId
    Qt_GPL_exception_1_0
        , LicenseExceptionId
    Qt_LGPL_exception_1_1
        , LicenseExceptionId
    SANE_exception
        , LicenseExceptionId
    SHL_2_0
        , LicenseExceptionId
    SHL_2_1
        , LicenseExceptionId
    Stunnel_exception
        , LicenseExceptionId
    SWI_exception
        , LicenseExceptionId
    Swift_exception
        , LicenseExceptionId
    Texinfo_exception
        , LicenseExceptionId
    UBDL_exception
        , LicenseExceptionId
    Universal_FOSS_exception_1_0
        , LicenseExceptionId
    Vsftpd_openssl_exception
        , LicenseExceptionId
    X11vnc_openssl_exception
        ]
        [LicenseExceptionId]
    -> [LicenseExceptionId] -> [LicenseExceptionId]
    forall a. [a] -> [a] -> [a]
    ++ [LicenseExceptionId]
    bulkOfLicenses

    -- | Create a 'LicenseExceptionId' from a 'String'.
    mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId
    mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_0  String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_0
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_2  String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_2
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_6  String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_6
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_9  String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_9
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_10 String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_10
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_16 String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_16
    mkLicenseExceptionId LicenseListVersion
    LicenseListVersion_3_23 String
    s = String -> Map String LicenseExceptionId -> Maybe LicenseExceptionId
    forall k a. Ord k => k -> Map k a -> Maybe a
    Map.lookup String
    s Map String LicenseExceptionId
    stringLookup_3_23

    stringLookup_3_0 :: Map String LicenseExceptionId
    stringLookup_3_0 :: Map String LicenseExceptionId
    stringLookup_3_0 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_0

    stringLookup_3_2 :: Map String LicenseExceptionId
    stringLookup_3_2 :: Map String LicenseExceptionId
    stringLookup_3_2 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_2

    stringLookup_3_6 :: Map String LicenseExceptionId
    stringLookup_3_6 :: Map String LicenseExceptionId
    stringLookup_3_6 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_6

    stringLookup_3_9 :: Map String LicenseExceptionId
    stringLookup_3_9 :: Map String LicenseExceptionId
    stringLookup_3_9 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_9

    stringLookup_3_10 :: Map String LicenseExceptionId
    stringLookup_3_10 :: Map String LicenseExceptionId
    stringLookup_3_10 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_10

    stringLookup_3_16 :: Map String LicenseExceptionId
    stringLookup_3_16 :: Map String LicenseExceptionId
    stringLookup_3_16 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_16

    stringLookup_3_23 :: Map String LicenseExceptionId
    stringLookup_3_23 :: Map String LicenseExceptionId
    stringLookup_3_23 = [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall k a. Ord k => [(k, a)] -> Map k a
    Map.fromList ([(String, LicenseExceptionId)] -> Map String LicenseExceptionId)
    -> [(String, LicenseExceptionId)] -> Map String LicenseExceptionId
    forall a b. (a -> b) -> a -> b
    $ (LicenseExceptionId -> (String, LicenseExceptionId))
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> [a] -> [b]
    map (\LicenseExceptionId
    i -> (LicenseExceptionId -> String
    licenseExceptionId LicenseExceptionId
    i, LicenseExceptionId
    i)) ([LicenseExceptionId] -> [(String, LicenseExceptionId)])
    -> [LicenseExceptionId] -> [(String, LicenseExceptionId)]
    forall a b. (a -> b) -> a -> b
    $
        LicenseListVersion -> [LicenseExceptionId]
    licenseExceptionIdList LicenseListVersion
    LicenseListVersion_3_23

    --  | License exceptions in all SPDX License lists
    bulkOfLicenses :: [LicenseExceptionId]
    bulkOfLicenses :: [LicenseExceptionId]
    bulkOfLicenses =
        [ LicenseExceptionId
    DS389_exception
        , LicenseExceptionId
    Autoconf_exception_2_0
        , LicenseExceptionId
    Autoconf_exception_3_0
        , LicenseExceptionId
    Bison_exception_2_2
        , LicenseExceptionId
    Bootloader_exception
        , LicenseExceptionId
    Classpath_exception_2_0
        , LicenseExceptionId
    CLISP_exception_2_0
        , LicenseExceptionId
    DigiRule_FOSS_exception
        , LicenseExceptionId
    ECos_exception_2_0
        , LicenseExceptionId
    Fawkes_Runtime_exception
        , LicenseExceptionId
    FLTK_exception
        , LicenseExceptionId
    Font_exception_2_0
        , LicenseExceptionId
    Freertos_exception_2_0
        , LicenseExceptionId
    GCC_exception_2_0
        , LicenseExceptionId
    GCC_exception_3_1
        , LicenseExceptionId
    Gnu_javamail_exception
        , LicenseExceptionId
    I2p_gpl_java_exception
        , LicenseExceptionId
    Libtool_exception
        , LicenseExceptionId
    Linux_syscall_note
        , LicenseExceptionId
    LZMA_exception
        , LicenseExceptionId
    Mif_exception
        , LicenseExceptionId
    OCCT_exception_1_0
        , LicenseExceptionId
    Openvpn_openssl_exception
        , LicenseExceptionId
    Qwt_exception_1_0
        , LicenseExceptionId
    U_boot_exception_2_0
        , LicenseExceptionId
    WxWindows_exception_3_1
        ]